Browse Source

Merge branch 'release'

release
张彭杰 1 year ago
parent
commit
3d56e7fa93
49 changed files with 1358 additions and 8 deletions
  1. 37
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/prc/constant/PointRewardConfigAttributeEnum.java
  2. 49
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/prc/constant/PointRewardConfigTypeEnum.java
  3. 3
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java
  4. 11
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java
  5. 51
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/entity/PointAccount.java
  6. 48
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/entity/PointAccountRecord.java
  7. 48
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/prc/entity/PointRewardConfig.java
  8. 2
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java
  9. 34
      dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/pointaccount/event/PointRewardCreatedMQ.java
  10. 47
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/prc/user/PointRewardConfigUserCommandController.java
  11. 30
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/prc/user/request/UserCreatePointRewardConfigDto.java
  12. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/prc/user/request/UserDeletePointRewardConfigDto.java
  13. 33
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/prc/user/request/UserEditPointRewardConfigDto.java
  14. 11
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/prc/user/request/UserEnablePointRewardConfigDto.java
  15. 54
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/PointAccountUserQueryController.java
  16. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/request/PagePointAccountRecordQueryParams.java
  17. 32
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/response/GetUnreadPointAccountRecordVo.java
  18. 31
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/response/PagePointAccountRecordVo.java
  19. 24
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/response/PointAccountVo.java
  20. 36
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/prc/user/PointRewardConfigUserQueryController.java
  21. 10
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/prc/user/request/UserPagePointRewardConfigQueryParams.java
  22. 31
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/prc/user/response/UserPagePointRewardConfigVo.java
  23. 86
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/marriagebounty/MarriageBountyOrderEventHandle.java
  24. 60
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/pointaccount/PointAccountEventHandler.java
  25. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java
  26. 26
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/pointaccount/PointAccountApplicationService.java
  27. 38
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/prc/PointRewardConfigApplicationService.java
  28. 19
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java
  29. 31
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/PointAccountAggregate.java
  30. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/repository/PointAccountRepository.java
  31. 32
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/prc/PointRewardConfigAggregate.java
  32. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/prc/repository/PointRewardConfigRepository.java
  33. 1
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java
  34. 1
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqQueue.java
  35. 14
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/par/PointAccountRecordDao.java
  36. 19
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/pointaccount/PointAccountDao.java
  37. 19
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/prc/PointRewardConfigDao.java
  38. 51
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/PointAccountRepositoryImpl.java
  39. 41
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/PointRewardConfigRepositoryImpl.java
  40. 5
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/par/PointAccountRecordQueryService.java
  41. 9
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/par/impl/PointAccountRecordQueryServiceImpl.java
  42. 20
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/pointaccount/PointAccountQueryService.java
  43. 86
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/pointaccount/impl/PointAccountQueryServiceImpl.java
  44. 15
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/prc/PointRewardConfigQueryService.java
  45. 35
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/prc/impl/PointRewardConfigQueryServiceImpl.java
  46. 26
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/impl/RewardConfigQueryServiceImpl.java
  47. 13
      dating-agency-mall-server/src/main/resources/mapper/par/PointAccountRecordMapper.xml
  48. 23
      dating-agency-mall-server/src/main/resources/mapper/pointaccount/PointAccountMapper.xml
  49. 24
      dating-agency-mall-server/src/main/resources/mapper/prc/PointRewardConfigMapper.xml

37
dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/prc/constant/PointRewardConfigAttributeEnum.java

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

49
dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/prc/constant/PointRewardConfigTypeEnum.java

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

3
dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java

@ -44,8 +44,9 @@ public enum ProductSubCategoryEnum {
MATCHMAKER_FRANCHISE_FEE(88801, "红娘合伙人加盟费"), MATCHMAKER_FRANCHISE_FEE(88801, "红娘合伙人加盟费"),
MATCHMAKER_ONLINE_FEE(88802, "线上红娘加盟费");
MATCHMAKER_ONLINE_FEE(88802, "线上红娘加盟费"),
MATCHMAKER_TRAINEE_FEE(88803, "实习红娘加盟费");
@EnumValue @EnumValue
@JsonValue @JsonValue

11
dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java

@ -38,6 +38,17 @@ public enum RewardTypeEnum {
MATCHMAKER_JOIN_RECOMMEND_BY_ONLINE(114, "红娘入驻推荐红娘奖励"), MATCHMAKER_JOIN_RECOMMEND_BY_ONLINE(114, "红娘入驻推荐红娘奖励"),
/**
* 实习红娘
*/
GUEST_CERTIFICATION_BY_TRAINEE(115, "嘉宾实名认证"),
PUBLISH_MARRIAGE_BOUNTY_BY_TRAINEE(116, "发布悬赏招亲"),
MATCH_MARRIAGE_BOUNTY_BY_TRAINEE(117, "匹配悬赏招亲"),
MATCHMAKER_JOIN_RECOMMEND_BY_TRAINEE(118, "红娘入驻推荐红娘奖励"),
/** /**
* 红娘入驻推荐奖励 * 红娘入驻推荐奖励
*/ */

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

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

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

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

48
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/prc/entity/PointRewardConfig.java

@ -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();
}
}
}

2
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java

@ -32,6 +32,8 @@ public class RewardConfig extends Entity<RewardConfig> {
return RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND; return RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND;
} else if (ProductSubCategoryEnum.MATCHMAKER_ONLINE_FEE.equals(type)) { } else if (ProductSubCategoryEnum.MATCHMAKER_ONLINE_FEE.equals(type)) {
return RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_BY_ONLINE; return RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_BY_ONLINE;
} else if (ProductSubCategoryEnum.MATCHMAKER_TRAINEE_FEE.equals(type)) {
return RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_BY_TRAINEE;
} }
return null; return null;
} }

34
dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/pointaccount/event/PointRewardCreatedMQ.java

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

47
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/prc/user/PointRewardConfigUserCommandController.java

@ -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());
}
}

30
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/prc/user/request/UserCreatePointRewardConfigDto.java

@ -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);
}
}

12
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/prc/user/request/UserDeletePointRewardConfigDto.java

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

33
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/prc/user/request/UserEditPointRewardConfigDto.java

@ -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);
}
}

11
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/prc/user/request/UserEnablePointRewardConfigDto.java

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

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

@ -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);
}
}

12
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/request/PagePointAccountRecordQueryParams.java

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

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

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

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

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

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

@ -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);
}
}

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

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

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

86
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/marriagebounty/MarriageBountyOrderEventHandle.java

@ -15,11 +15,20 @@ import com.qniao.dam.domian.aggregate.marriagebounty.event.MarriageBountyOrderCo
import com.qniao.dam.domian.aggregate.marriagebounty.event.MarriageBountyOrderConfirmedMeetingEvent; import com.qniao.dam.domian.aggregate.marriagebounty.event.MarriageBountyOrderConfirmedMeetingEvent;
import com.qniao.dam.domian.aggregate.marriagebounty.event.MarriageBountyOrderCreatedEvent; import com.qniao.dam.domian.aggregate.marriagebounty.event.MarriageBountyOrderCreatedEvent;
import com.qniao.dam.domian.aggregate.marriagebounty.event.MarriageBountyOrderCreatedMQ; import com.qniao.dam.domian.aggregate.marriagebounty.event.MarriageBountyOrderCreatedMQ;
import com.qniao.dam.domian.aggregate.paymentorderrefund.constant.PaymentOrderRefundStatusEnum;
import com.qniao.dam.domian.aggregate.pointaccount.event.PointRewardCreatedMQ;
import com.qniao.dam.domian.aggregate.prc.constant.PointRewardConfigTypeEnum;
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum;
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum;
import com.qniao.dam.infrastructure.constant.MqExchange; import com.qniao.dam.infrastructure.constant.MqExchange;
import com.qniao.dam.infrastructure.constant.MqQueue; import com.qniao.dam.infrastructure.constant.MqQueue;
import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageBountyOrderDao; import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageBountyOrderDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageInformationDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.MatchmakerDao;
import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService; import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService;
import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation;
import com.qniao.das.domian.aggregate.marriageseekingreward.event.MatchSuccessfullyEvent; import com.qniao.das.domian.aggregate.marriageseekingreward.event.MatchSuccessfullyEvent;
import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker;
import com.qniao.domain.BaseApplicationService; import com.qniao.domain.BaseApplicationService;
import com.qniao.framework.utils.TypeConvertUtils; import com.qniao.framework.utils.TypeConvertUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -51,6 +60,10 @@ public class MarriageBountyOrderEventHandle extends BaseApplicationService {
private MarriageBountyOrderDao marriageBountyOrderDao; private MarriageBountyOrderDao marriageBountyOrderDao;
@Resource @Resource
private MarriageBountyOrderAggregate marriageBountyOrderAggregate; private MarriageBountyOrderAggregate marriageBountyOrderAggregate;
@Resource
private MatchmakerDao matchmakerDao;
@Resource
private MarriageInformationDao marriageInformationDao;
@Subscribe @Subscribe
public void handle(MarriageBountyOrderCreatedEvent event) { public void handle(MarriageBountyOrderCreatedEvent event) {
@ -64,6 +77,27 @@ public class MarriageBountyOrderEventHandle extends BaseApplicationService {
} }
} }
@Subscribe
public void handle2(MarriageBountyOrderCreatedEvent event) {
try {
MarriageInformation marriageInformation = marriageInformationDao.selectById(event.getMiId());
MarriageBountyOrder marriageBountyOrder = marriageBountyOrderDao.selectById(event.getId());
PointRewardCreatedMQ mq = new PointRewardCreatedMQ();
Matchmaker matchmaker = matchmakerDao.selectById(event.getMatchmakerId());
mq.setOwnId(matchmaker.getUserId());
mq.setIdentityType(IdentityTypeEnum.INDIVIDUAL);
mq.setPointType(PointRewardConfigTypeEnum.INVITE_BOUNTY);
mq.setContent("邀请发榜:" + marriageInformation.getNickName() + "榜单");
mq.setIsIncome(true);
mq.setAssociateId(event.getId());
mq.setAmount(marriageBountyOrder.getPaidAmount());
// 发送mq事件
amqpTemplate.convertAndSend(MqExchange.POINT_REWARD_CREATED, null, mq);
} catch (Exception e) {
log.error("悬赏招亲订单已创建事件处理异常", e);
}
}
@Subscribe @Subscribe
public void handle(MarriageBountyOrderConfirmedMeetingEvent event) { public void handle(MarriageBountyOrderConfirmedMeetingEvent event) {
try { try {
@ -114,6 +148,35 @@ public class MarriageBountyOrderEventHandle extends BaseApplicationService {
} }
} }
@Subscribe
public void handle2(MarriageBountyOrderConfirmedMatchEvent event) {
try {
//红娘获取奖励
if (Objects.nonNull(event.getMarriageBountyOrderRewardId()) && CollUtil.isNotEmpty(event.getRewardReceiveRecordList())) {
MarriageBountyOrder marriageBountyOrder = marriageBountyOrderDao.selectById(event.getId());
for (MarriageBountyOrderConfirmedMatchEvent.MarriageBountyOrderRewardReceiveRecordEvent rewardReceiveRecordEvent : event.getRewardReceiveRecordList()) {
if (Objects.nonNull(rewardReceiveRecordEvent.getReceivedAmount()) && rewardReceiveRecordEvent.getReceivedAmount().compareTo(BigDecimal.ZERO) > 0) {
//处理积分奖励
//积分奖励
MarriageInformation marriageInformation = marriageInformationDao.selectById(marriageBountyOrder.getMiId());
PointRewardCreatedMQ mq = new PointRewardCreatedMQ();
mq.setOwnId(rewardReceiveRecordEvent.getReceiver());
mq.setIdentityType(IdentityTypeEnum.INDIVIDUAL);
mq.setPointType(transformPointRewardConfigType(rewardReceiveRecordEvent.getRewardType()));
mq.setContent("完成榜单:" + marriageInformation.getNickName() + "榜单");
mq.setIsIncome(true);
mq.setAssociateId(event.getId());
mq.setAmount(rewardReceiveRecordEvent.getReceivedAmount());
// 发送mq事件
amqpTemplate.convertAndSend(MqExchange.POINT_REWARD_CREATED, null, mq);
}
}
}
} catch (Exception e) {
log.error("悬赏招亲订单确认匹配事件处理异常", e);
}
}
@RabbitListener(bindings = @QueueBinding(value = @Queue(MqQueue.REWARD_SELECTED_GUEST), @RabbitListener(bindings = @QueueBinding(value = @Queue(MqQueue.REWARD_SELECTED_GUEST),
exchange = @Exchange(value = MqExchange.REWARD_SELECTED_GUEST, exchange = @Exchange(value = MqExchange.REWARD_SELECTED_GUEST,
@ -142,4 +205,27 @@ public class MarriageBountyOrderEventHandle extends BaseApplicationService {
log.error("悬赏招亲匹配成功处理异常", e); log.error("悬赏招亲匹配成功处理异常", e);
} }
} }
public PointRewardConfigTypeEnum transformPointRewardConfigType(RewardTypeEnum rewardType) {
PointRewardConfigTypeEnum pointRewardConfigType = null;
switch (rewardType) {
case GUEST_CERTIFICATION:
case GUEST_CERTIFICATION_BY_ONLINE:
case GUEST_CERTIFICATION_BY_TRAINEE:
pointRewardConfigType = PointRewardConfigTypeEnum.COMPLETE_BOUNTY_AUTHENTICATION;
break;
case PUBLISH_MARRIAGE_BOUNTY:
case PUBLISH_MARRIAGE_BOUNTY_BY_ONLINE:
case PUBLISH_MARRIAGE_BOUNTY_BY_TRAINEE:
pointRewardConfigType = PointRewardConfigTypeEnum.COMPLETE_BOUNTY_PUBLISH;
break;
case MATCH_MARRIAGE_BOUNTY:
case MATCH_MARRIAGE_BOUNTY_BY_ONLINE:
case MATCH_MARRIAGE_BOUNTY_BY_TRAINEE:
pointRewardConfigType = PointRewardConfigTypeEnum.COMPLETE_BOUNTY_MATCH;
break;
default:
}
return pointRewardConfigType;
}
} }

60
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/pointaccount/PointAccountEventHandler.java

@ -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);
}
}
}

2
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java

@ -525,7 +525,7 @@ public class OrderApplicationService extends BaseApplicationService {
RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_UPGRADE_PROTECTION_PERIOD); RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_UPGRADE_PROTECTION_PERIOD);
if (Objects.nonNull(rewardConfig)) { if (Objects.nonNull(rewardConfig)) {
//仍在保护期内则红娘升级补充差价 //仍在保护期内则红娘升级补充差价
if (LocalDateTime.now().isBefore(rewardConfig.getPeriodTime(matchmaker.getCreateTime()))) {
if (LocalDateTime.now().isBefore(rewardConfig.getPeriodTime(matchmaker.getEffectiveTime()))) {
discountAmount = matchmaker.getFranchiseFee(); discountAmount = matchmaker.getFranchiseFee();
} }
} }

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

38
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/prc/PointRewardConfigApplicationService.java

@ -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);
}
}
}

19
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java

@ -5,12 +5,16 @@ import cn.hutool.core.util.StrUtil;
import com.qniao.dam.api.command.reward.user.request.AcquireMatchmakerConfirmMatchRewardDto; import com.qniao.dam.api.command.reward.user.request.AcquireMatchmakerConfirmMatchRewardDto;
import com.qniao.dam.api.command.reward.user.request.AcquireMatchmakerConfirmMeetingRewardDto; import com.qniao.dam.api.command.reward.user.request.AcquireMatchmakerConfirmMeetingRewardDto;
import com.qniao.dam.api.command.reward.user.request.UserAcquireMatchmakerJoinRecommendRewardDto; import com.qniao.dam.api.command.reward.user.request.UserAcquireMatchmakerJoinRecommendRewardDto;
import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder;
import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward; import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward;
import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardAssociateOrderRecord; import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardAssociateOrderRecord;
import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardRecord; import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardRecord;
import com.qniao.dam.domain.service.revenuereward.AcquireRevenueRewardDomainService; import com.qniao.dam.domain.service.revenuereward.AcquireRevenueRewardDomainService;
import com.qniao.dam.domian.aggregate.pointaccount.event.PointRewardCreatedMQ;
import com.qniao.dam.domian.aggregate.prc.constant.PointRewardConfigTypeEnum;
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum;
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum;
import com.qniao.dam.infrastructure.constant.MqExchange;
import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageInformationDao; import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageInformationDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.OrderDao; import com.qniao.dam.infrastructure.persistent.dao.domain.OrderDao;
import com.qniao.dam.query.matchmaker.MatchmakerQueryService; import com.qniao.dam.query.matchmaker.MatchmakerQueryService;
@ -29,6 +33,7 @@ import com.qniao.dam.query.rewardconfig.RewardConfigQueryService;
import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation; import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation;
import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker; import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker;
import com.qniao.dau.domain.aggregate.store.entity.Store; import com.qniao.dau.domain.aggregate.store.entity.Store;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -58,6 +63,8 @@ public class RewardApplicationService {
private MatchmakerQueryService matchmakerQueryService; private MatchmakerQueryService matchmakerQueryService;
@Resource @Resource
private StoreQueryService storeQueryService; private StoreQueryService storeQueryService;
@Resource
private AmqpTemplate amqpTemplate;
/** /**
* 获得红娘推荐奖励 * 获得红娘推荐奖励
@ -96,6 +103,18 @@ public class RewardApplicationService {
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true, originalBalance, walletAccount.getTotalBalance()); WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true, originalBalance, walletAccount.getTotalBalance());
walletAccount.setRecordList(Collections.singletonList(record)); walletAccount.setRecordList(Collections.singletonList(record));
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); acquireRevenueRewardDomainService.handle(revenueReward, walletAccount);
//积分奖励
PointRewardCreatedMQ mq = new PointRewardCreatedMQ();
mq.setOwnId(dto.getInitiatorUserId());
mq.setIdentityType(IdentityTypeEnum.INDIVIDUAL);
mq.setPointType(PointRewardConfigTypeEnum.INVITE_MATCHMAKER);
mq.setContent("邀请红娘:" + dto.getReceiveUserName());
mq.setIsIncome(true);
mq.setAssociateId(dto.getAssociateOrderId());
mq.setAmount(rewardAmount);
// 发送mq事件
amqpTemplate.convertAndSend(MqExchange.POINT_REWARD_CREATED, null, mq);
} }
} }
} }

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> {
}

32
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/prc/PointRewardConfigAggregate.java

@ -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);
}
}

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

@ -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> {
}

1
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java

@ -16,4 +16,5 @@ public interface MqExchange {
String CANCEL_SITE_ACTIVITY = "fanout.cancelSiteActivity"; String CANCEL_SITE_ACTIVITY = "fanout.cancelSiteActivity";
String POINT_REWARD_CREATED = "fanout.pointRewardCreated";
} }

1
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqQueue.java

@ -16,4 +16,5 @@ public interface MqQueue {
String CANCEL_SITE_ACTIVITY = MqExchange.CANCEL_SITE_ACTIVITY + serviceName; String CANCEL_SITE_ACTIVITY = MqExchange.CANCEL_SITE_ACTIVITY + serviceName;
String POINT_REWARD_CREATED = MqExchange.POINT_REWARD_CREATED + serviceName;
} }

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

@ -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);
}

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

@ -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);
}

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

@ -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);
}

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

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

@ -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);
}
}

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 {
}

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

@ -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);
}

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

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

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

@ -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);
}

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

@ -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"));
}
}

26
dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/impl/RewardConfigQueryServiceImpl.java

@ -58,6 +58,11 @@ public class RewardConfigQueryServiceImpl implements RewardConfigQueryService {
.in(RewardConfig::getRewardType, Arrays.asList(RewardTypeEnum.GUEST_CERTIFICATION_BY_ONLINE, RewardTypeEnum.PUBLISH_MARRIAGE_BOUNTY_BY_ONLINE, .in(RewardConfig::getRewardType, Arrays.asList(RewardTypeEnum.GUEST_CERTIFICATION_BY_ONLINE, RewardTypeEnum.PUBLISH_MARRIAGE_BOUNTY_BY_ONLINE,
RewardTypeEnum.MATCH_MARRIAGE_BOUNTY_BY_ONLINE, RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_BY_ONLINE))); RewardTypeEnum.MATCH_MARRIAGE_BOUNTY_BY_ONLINE, RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_BY_ONLINE)));
voList = TypeConvertUtils.convert(list, RewardConfigVo.class); voList = TypeConvertUtils.convert(list, RewardConfigVo.class);
} else if (ProductSubCategoryEnum.MATCHMAKER_TRAINEE_FEE.getValue().equals(type)) {
List<RewardConfig> list = rewardConfigDao.selectList(new LambdaQueryWrapper<RewardConfig>()
.in(RewardConfig::getRewardType, Arrays.asList(RewardTypeEnum.GUEST_CERTIFICATION_BY_TRAINEE, RewardTypeEnum.PUBLISH_MARRIAGE_BOUNTY_BY_TRAINEE,
RewardTypeEnum.MATCH_MARRIAGE_BOUNTY_BY_TRAINEE, RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_BY_TRAINEE)));
voList = TypeConvertUtils.convert(list, RewardConfigVo.class);
} }
return voList; return voList;
} }
@ -65,7 +70,10 @@ public class RewardConfigQueryServiceImpl implements RewardConfigQueryService {
@Override @Override
public RewardConfig queryGuestCertificationReward(Matchmaker matchmaker) { public RewardConfig queryGuestCertificationReward(Matchmaker matchmaker) {
if (Objects.nonNull(matchmaker)) { if (Objects.nonNull(matchmaker)) {
if (ProductSubCategoryEnum.MATCHMAKER_ONLINE_FEE.equals(matchmaker.getType())) {
if (ProductSubCategoryEnum.MATCHMAKER_TRAINEE_FEE.equals(matchmaker.getType())) {
//实习红娘
return queryByRewardType(RewardTypeEnum.GUEST_CERTIFICATION_BY_TRAINEE);
} else if (ProductSubCategoryEnum.MATCHMAKER_ONLINE_FEE.equals(matchmaker.getType())) {
//线上红娘 //线上红娘
return queryByRewardType(RewardTypeEnum.GUEST_CERTIFICATION_BY_ONLINE); return queryByRewardType(RewardTypeEnum.GUEST_CERTIFICATION_BY_ONLINE);
} else { } else {
@ -79,7 +87,10 @@ public class RewardConfigQueryServiceImpl implements RewardConfigQueryService {
@Override @Override
public RewardConfig queryPublishMarriageBountyReward(Matchmaker matchmaker) { public RewardConfig queryPublishMarriageBountyReward(Matchmaker matchmaker) {
if (Objects.nonNull(matchmaker)) { if (Objects.nonNull(matchmaker)) {
if (ProductSubCategoryEnum.MATCHMAKER_ONLINE_FEE.equals(matchmaker.getType())) {
if (ProductSubCategoryEnum.MATCHMAKER_TRAINEE_FEE.equals(matchmaker.getType())) {
//实习红娘
return queryByRewardType(RewardTypeEnum.PUBLISH_MARRIAGE_BOUNTY_BY_TRAINEE);
} else if (ProductSubCategoryEnum.MATCHMAKER_ONLINE_FEE.equals(matchmaker.getType())) {
//线上红娘 //线上红娘
return queryByRewardType(RewardTypeEnum.PUBLISH_MARRIAGE_BOUNTY_BY_ONLINE); return queryByRewardType(RewardTypeEnum.PUBLISH_MARRIAGE_BOUNTY_BY_ONLINE);
} else { } else {
@ -93,7 +104,10 @@ public class RewardConfigQueryServiceImpl implements RewardConfigQueryService {
@Override @Override
public RewardConfig queryMatchMarriageBountyReward(Matchmaker matchmaker) { public RewardConfig queryMatchMarriageBountyReward(Matchmaker matchmaker) {
if (Objects.nonNull(matchmaker)) { if (Objects.nonNull(matchmaker)) {
if (ProductSubCategoryEnum.MATCHMAKER_ONLINE_FEE.equals(matchmaker.getType())) {
if (ProductSubCategoryEnum.MATCHMAKER_TRAINEE_FEE.equals(matchmaker.getType())) {
//实习红娘
return queryByRewardType(RewardTypeEnum.MATCH_MARRIAGE_BOUNTY_BY_TRAINEE);
} else if (ProductSubCategoryEnum.MATCHMAKER_ONLINE_FEE.equals(matchmaker.getType())) {
//线上红娘 //线上红娘
return queryByRewardType(RewardTypeEnum.MATCH_MARRIAGE_BOUNTY_BY_ONLINE); return queryByRewardType(RewardTypeEnum.MATCH_MARRIAGE_BOUNTY_BY_ONLINE);
} else { } else {
@ -109,7 +123,7 @@ public class RewardConfigQueryServiceImpl implements RewardConfigQueryService {
MatchmakerLevelEnum receiveLevel) { MatchmakerLevelEnum receiveLevel) {
BigDecimal pct = BigDecimal.ZERO; BigDecimal pct = BigDecimal.ZERO;
if (Objects.nonNull(initiatorLevel) && Objects.nonNull(receiveLevel)) { if (Objects.nonNull(initiatorLevel) && Objects.nonNull(receiveLevel)) {
int diffValue = initiatorLevel.getLevel() - receiveLevel.getValue();
int diffValue = initiatorLevel.getLevel() - receiveLevel.getLevel();
RewardConfig equalLevelConfig = queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_EQUAL_LEVEL); RewardConfig equalLevelConfig = queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_EQUAL_LEVEL);
if (Objects.nonNull(equalLevelConfig)) { if (Objects.nonNull(equalLevelConfig)) {
//平级推荐 //平级推荐
@ -126,8 +140,8 @@ public class RewardConfigQueryServiceImpl implements RewardConfigQueryService {
pct = pct.compareTo(downMaxPct) < 0 ? pct : downMaxPct; pct = pct.compareTo(downMaxPct) < 0 ? pct : downMaxPct;
} }
} }
//向上推荐
if (diffValue < 0) {
//向上推荐 只能一级
if (diffValue == -1) {
RewardConfig upLevelConfig = queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_UP_LEVEL); RewardConfig upLevelConfig = queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_UP_LEVEL);
RewardConfig upMinConfig = queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_UP_MIN); RewardConfig upMinConfig = queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_UP_MIN);
if (Objects.nonNull(upLevelConfig) && Objects.nonNull(upMinConfig)) { if (Objects.nonNull(upLevelConfig) && Objects.nonNull(upMinConfig)) {

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>

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

@ -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>

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

@ -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>
Loading…
Cancel
Save