diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/right/user/RightUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/right/user/RightUserQueryController.java index 600337c..9ad6a96 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/right/user/RightUserQueryController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/right/user/RightUserQueryController.java @@ -2,9 +2,12 @@ package com.qniao.dam.api.query.right.user; import com.qniao.dam.api.query.right.user.request.UserCheckEnableRightBySdkQueryParam; import com.qniao.dam.api.query.right.user.request.UserListRightByCustomerQueryParam; +import com.qniao.dam.api.query.right.user.request.UserListRightByOperatorQueryParam; import com.qniao.dam.api.query.right.user.response.UserCheckEnableRightBySdkVo; import com.qniao.dam.api.query.right.user.response.UserListRightByCustomerVo; +import com.qniao.dam.api.query.right.user.response.UserListRightByOperatorVo; import com.qniao.dam.query.right.RightQueryService; +import com.qniao.dau.infrastructure.constant.RequestHeaderFields; import com.qniao.framework.annotation.IgnoreResponseAdvice; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,4 +39,12 @@ public class RightUserQueryController { public UserCheckEnableRightBySdkVo userCheckEnableRightBySdk(@RequestBody @Validated UserCheckEnableRightBySdkQueryParam queryParam) { return rightQueryService.checkEnableRight(queryParam); } + + @GetMapping("list/right/by/operator") + @ApiOperation("运营获取权益列表") + public List userListRightByOperator(@Validated UserListRightByOperatorQueryParam queryParam, + @RequestParam("userId") Long userId, + @RequestHeader(name = RequestHeaderFields.FIELD_ORGANIZATION_ID) Long orgId) { + return rightQueryService.listRightByOperator(queryParam); + } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/right/user/request/UserListRightByOperatorQueryParam.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/right/user/request/UserListRightByOperatorQueryParam.java new file mode 100644 index 0000000..3e156c0 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/right/user/request/UserListRightByOperatorQueryParam.java @@ -0,0 +1,20 @@ +package com.qniao.dam.api.query.right.user.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class UserListRightByOperatorQueryParam { + + @ApiModelProperty("用户标识") + private Long queryUserId; + + @ApiModelProperty("征婚资料标识") + @NotNull(message = "征婚资料标识不能为空") + private Long miId; + + @ApiModelProperty("权益类型") + private Integer type; +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/right/user/response/UserListRightByOperatorVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/right/user/response/UserListRightByOperatorVo.java new file mode 100644 index 0000000..b530998 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/right/user/response/UserListRightByOperatorVo.java @@ -0,0 +1,41 @@ +package com.qniao.dam.api.query.right.user.response; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.qniao.dam.domian.aggregate.right.constant.RightTypeEnum; +import com.qniao.dam.domian.aggregate.right.constant.RightUnitEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data + +public class UserListRightByOperatorVo { + + @ApiModelProperty("权益名称") + private String rightName; + + @ApiModelProperty("权益类型") + private RightTypeEnum type; + + @ApiModelProperty("权益规格 101周期 102次数") + private RightUnitEnum rightSpecUnit; + + @ApiModelProperty("开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime startTime; + + @ApiModelProperty("结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime endTime; + + @ApiModelProperty("剩余天数") + private Integer remainingDays; + + @ApiModelProperty("权益额度") + private Integer rightLimit; + + @ApiModelProperty("权益剩余额度") + private Integer rightCount; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/RightQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/RightQueryService.java index ea94cc8..0f454f3 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/RightQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/RightQueryService.java @@ -2,8 +2,10 @@ package com.qniao.dam.query.right; import com.qniao.dam.api.query.right.user.request.UserCheckEnableRightBySdkQueryParam; import com.qniao.dam.api.query.right.user.request.UserListRightByCustomerQueryParam; +import com.qniao.dam.api.query.right.user.request.UserListRightByOperatorQueryParam; import com.qniao.dam.api.query.right.user.response.UserCheckEnableRightBySdkVo; import com.qniao.dam.api.query.right.user.response.UserListRightByCustomerVo; +import com.qniao.dam.api.query.right.user.response.UserListRightByOperatorVo; import com.qniao.dam.domain.aggregate.right.entity.Right; import com.qniao.dam.domain.aggregate.right.entity.RightTerm; import com.qniao.dam.domian.aggregate.right.constant.RightNameEnum; @@ -30,4 +32,6 @@ public interface RightQueryService { boolean checkEnable(Right right); Boolean checkRightUseLimit(Right right); + + List listRightByOperator(UserListRightByOperatorQueryParam queryParam); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/impl/RightQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/impl/RightQueryServiceImpl.java index 805a8f7..283062d 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/impl/RightQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/impl/RightQueryServiceImpl.java @@ -5,8 +5,10 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.qniao.dam.api.query.right.user.request.UserCheckEnableRightBySdkQueryParam; import com.qniao.dam.api.query.right.user.request.UserListRightByCustomerQueryParam; +import com.qniao.dam.api.query.right.user.request.UserListRightByOperatorQueryParam; import com.qniao.dam.api.query.right.user.response.UserCheckEnableRightBySdkVo; import com.qniao.dam.api.query.right.user.response.UserListRightByCustomerVo; +import com.qniao.dam.api.query.right.user.response.UserListRightByOperatorVo; import com.qniao.dam.domain.aggregate.right.entity.Right; import com.qniao.dam.domain.aggregate.right.entity.RightTerm; import com.qniao.dam.domain.aggregate.right.repository.RightRepository; @@ -42,6 +44,19 @@ public class RightQueryServiceImpl implements RightQueryService { @Resource private RightConsumeRelQueryService rightConsumeRelQueryService; + @Override + public List listRightByOperator(UserListRightByOperatorQueryParam queryParam) { + List operatorVolist = new ArrayList<>(); + List allRightList = listEnableRightBy(queryParam.getQueryUserId(), queryParam.getMiId(), RightTypeEnum.get(queryParam.getType())); + if (CollUtil.isNotEmpty(allRightList)) { + for (Right right : allRightList) { + UserListRightByOperatorVo operatorVo = transformOperatorRight(right); + operatorVolist.add(operatorVo); + } + } + return operatorVolist; + } + @Override public List listRightByCustomer(UserListRightByCustomerQueryParam queryParam) { List customerVolist = new ArrayList<>(); @@ -97,6 +112,27 @@ public class RightQueryServiceImpl implements RightQueryService { return customerVo; } + private UserListRightByOperatorVo transformOperatorRight(Right right) { + UserListRightByOperatorVo operatorVo = new UserListRightByOperatorVo(); + operatorVo.setType(right.getType()); + operatorVo.setRightName(right.getType().getDesc()); + //权益规格 + RightTerm specRightTerm = getRightTermByName(right, RightNameEnum.SPEC); + operatorVo.setRightSpecUnit(Objects.nonNull(specRightTerm) ? specRightTerm.getUnit() : null); + //时间 + operatorVo.setStartTime(right.getStartTime()); + operatorVo.setEndTime(right.getEndTime()); + operatorVo.setRemainingDays((int) (Duration.between(LocalDateTime.now(), operatorVo.getEndTime()).toDays() + 1)); + operatorVo.setRemainingDays(operatorVo.getRemainingDays() > 0 ? operatorVo.getRemainingDays() : 0); + //权益上限额度 + RightTerm rightLimitRightTerm = getRightTermByName(right, RightNameEnum.RIGHT_LIMIT); + operatorVo.setRightLimit(Objects.nonNull(rightLimitRightTerm) ? Integer.parseInt(rightLimitRightTerm.getValue()) : -1); + //权益剩余额度 + RightTerm rightCountRightTerm = getRightTermByName(right, RightNameEnum.RIGHT_COUNT); + operatorVo.setRightCount(Objects.nonNull(rightCountRightTerm) ? Integer.parseInt(rightCountRightTerm.getValue()) : -1); + return operatorVo; + } + public Right getEnableRight(Long userId, Long miId, RightTypeEnum type, RightUnitEnum unit) { Right right = null; Long rightId = rightDao.getEnableSpecPeriodRightId(userId, miId, type, unit);