30 changed files with 782 additions and 6 deletions
Unified View
Diff Options
-
36dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/activity/constant/ActivityStatusEnum.java
-
4dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java
-
66dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/activity/entity/Activity.java
-
72dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/activity/entity/ActivityProduct.java
-
4dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java
-
29dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/activity/user/ActivityUserCommandController.java
-
42dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/activity/user/request/ActivityDto.java
-
10dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java
-
47dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserBatchSubmitOrderDto.java
-
38dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/ActivityUserQueryController.java
-
7dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/request/ActivityQueryDto.java
-
18dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/response/ActivityDetailsVo.java
-
20dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/response/ActivityProductListVo.java
-
12dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/activity/user/response/ActivityVo.java
-
8dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/ProductUserQueryController.java
-
4dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/request/UserPageProductByOperatorQueryParam.java
-
18dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByCustomerExtendVo.java
-
35dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByCustomerGroupVo.java
-
74dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/activity/ActivityApplicationService.java
-
12dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java
-
18dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/activity/ActivityAggregate.java
-
7dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/activity/repository/ActivityRepository.java
-
24dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/activity/ActivityDao.java
-
12dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/activity/ActivityProductDao.java
-
7dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/ProductViewDao.java
-
53dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ActivityRepositoryImpl.java
-
3dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java
-
29dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java
-
15dating-agency-mall-server/src/main/resources/mapper/activity/ActivityMapper.xml
-
64dating-agency-mall-server/src/main/resources/mapper/product/ProductViewMapper.xml
@ -0,0 +1,36 @@ |
|||||
|
package com.qniao.dam.domian.aggregate.activity.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 com.qniao.dam.domian.aggregate.product.constant.ProductMainCategoryEnum; |
||||
|
import lombok.Getter; |
||||
|
|
||||
|
@Getter |
||||
|
@JsonFormat(shape = JsonFormat.Shape.OBJECT) |
||||
|
public enum ActivityStatusEnum { |
||||
|
|
||||
|
ENABLE(1, "启用"), |
||||
|
DISABLE(0, "停用"); |
||||
|
|
||||
|
@EnumValue |
||||
|
@JsonValue |
||||
|
private final Integer value; |
||||
|
private final String desc; |
||||
|
|
||||
|
ActivityStatusEnum(Integer value, String desc) { |
||||
|
this.value = value; |
||||
|
this.desc = desc; |
||||
|
} |
||||
|
|
||||
|
@JsonCreator |
||||
|
public static ActivityStatusEnum get(Object code) { |
||||
|
for (ActivityStatusEnum e : ActivityStatusEnum.values()) { |
||||
|
if (e.getValue().equals(code)) { |
||||
|
return e; |
||||
|
} |
||||
|
} |
||||
|
return null; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,66 @@ |
|||||
|
package com.qniao.dam.domain.aggregate.activity.entity; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.*; |
||||
|
import com.baomidou.mybatisplus.extension.activerecord.Model; |
||||
|
import com.qniao.domain.Entity; |
||||
|
import io.swagger.annotations.Api; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
import org.springframework.util.Assert; |
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import java.io.Serializable; |
||||
|
import java.time.LocalDateTime; |
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* 活动表 |
||||
|
* |
||||
|
* @date 2024/04/07 |
||||
|
*/ |
||||
|
@Data |
||||
|
@EqualsAndHashCode(callSuper = true) |
||||
|
@TableName("da_activity") |
||||
|
public class Activity extends Entity<Activity> { |
||||
|
|
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 活动标题 |
||||
|
*/ |
||||
|
@ApiModelProperty("活动标题") |
||||
|
private String activityName; |
||||
|
|
||||
|
/** |
||||
|
* 活动描述 |
||||
|
*/ |
||||
|
@ApiModelProperty("活动描述") |
||||
|
private String explain; |
||||
|
|
||||
|
/** |
||||
|
* 活动开始时间 |
||||
|
*/ |
||||
|
@ApiModelProperty("活动开始时间") |
||||
|
private LocalDateTime startTime; |
||||
|
|
||||
|
/** |
||||
|
* 活动结束时间 |
||||
|
*/ |
||||
|
@ApiModelProperty("活动结束时间") |
||||
|
private LocalDateTime endTime; |
||||
|
|
||||
|
/** |
||||
|
* 状态 |
||||
|
*/ |
||||
|
@ApiModelProperty("状态") |
||||
|
private Integer status; |
||||
|
|
||||
|
|
||||
|
private transient List<ActivityProduct> activityProductList; |
||||
|
|
||||
|
public static void check(Activity entity){ |
||||
|
Assert.notNull(entity, "活动表不存在"); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,72 @@ |
|||||
|
package com.qniao.dam.domain.aggregate.activity.entity; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.*; |
||||
|
import com.baomidou.mybatisplus.extension.activerecord.Model; |
||||
|
import com.qniao.domain.Entity; |
||||
|
import io.swagger.annotations.Api; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
import org.springframework.util.Assert; |
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import java.io.Serializable; |
||||
|
import java.math.BigDecimal; |
||||
|
import java.time.LocalDateTime; |
||||
|
|
||||
|
/** |
||||
|
* 活动产品表 |
||||
|
* |
||||
|
* @date 2024/04/07 |
||||
|
*/ |
||||
|
@Data |
||||
|
@EqualsAndHashCode(callSuper = true) |
||||
|
@TableName("da_activity_product") |
||||
|
public class ActivityProduct extends Entity<ActivityProduct> { |
||||
|
|
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
@ApiModelProperty("活动id") |
||||
|
private Long activityId; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 产品id |
||||
|
*/ |
||||
|
@ApiModelProperty("产品id") |
||||
|
private Long productId; |
||||
|
|
||||
|
/** |
||||
|
* 产品规格 |
||||
|
*/ |
||||
|
@ApiModelProperty("产品规格") |
||||
|
private Long productSpecId; |
||||
|
|
||||
|
/** |
||||
|
* 是否赠品 |
||||
|
*/ |
||||
|
@ApiModelProperty("是否赠品") |
||||
|
private Boolean freebie; |
||||
|
|
||||
|
@ApiModelProperty("活动原价") |
||||
|
private BigDecimal activityUnitOriginalPrice; |
||||
|
|
||||
|
@ApiModelProperty("活动售价") |
||||
|
private BigDecimal activityUnitSellingPrice; |
||||
|
|
||||
|
/** |
||||
|
* |
||||
|
*/ |
||||
|
@ApiModelProperty("") |
||||
|
private LocalDateTime createTime; |
||||
|
|
||||
|
/** |
||||
|
* |
||||
|
*/ |
||||
|
@ApiModelProperty("") |
||||
|
private LocalDateTime updateTime; |
||||
|
|
||||
|
public static void check(ActivityProduct entity){ |
||||
|
Assert.notNull(entity, "活动产品表不存在"); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,29 @@ |
|||||
|
package com.qniao.dam.api.command.activity.user; |
||||
|
|
||||
|
import com.qniao.dam.api.command.activity.user.request.ActivityDto; |
||||
|
import com.qniao.dam.application.service.activity.ActivityApplicationService; |
||||
|
import com.qniao.dam.domain.aggregate.activity.entity.Activity; |
||||
|
import io.swagger.annotations.Api; |
||||
|
import io.swagger.annotations.ApiOperation; |
||||
|
import org.springframework.web.bind.annotation.PostMapping; |
||||
|
import org.springframework.web.bind.annotation.RequestBody; |
||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||
|
import org.springframework.web.bind.annotation.RestController; |
||||
|
|
||||
|
import javax.annotation.Resource; |
||||
|
|
||||
|
@Api(tags = "活动") |
||||
|
@RestController |
||||
|
@RequestMapping("user") |
||||
|
public class ActivityUserCommandController { |
||||
|
|
||||
|
@Resource |
||||
|
private ActivityApplicationService activityApplicationService; |
||||
|
|
||||
|
@ApiOperation("保存活动") |
||||
|
@PostMapping("save/activity") |
||||
|
public String saveActivity(@RequestBody ActivityDto activityDto){ |
||||
|
Activity activity = activityDto.trans2Domain(); |
||||
|
return activityApplicationService.saveActivity(activity); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,42 @@ |
|||||
|
package com.qniao.dam.api.command.activity.user.request; |
||||
|
|
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
import com.qniao.dam.domain.aggregate.activity.entity.Activity; |
||||
|
import com.qniao.dam.domain.aggregate.activity.entity.ActivityProduct; |
||||
|
import com.qniao.dam.domian.aggregate.activity.constant.ActivityStatusEnum; |
||||
|
import com.qniao.framework.utils.TypeConvertUtils; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.time.LocalDateTime; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@Data |
||||
|
public class ActivityDto { |
||||
|
|
||||
|
@ApiModelProperty("活动id") |
||||
|
private Long id; |
||||
|
|
||||
|
@ApiModelProperty("活动标题") |
||||
|
private String activityName; |
||||
|
|
||||
|
@ApiModelProperty("活动描述") |
||||
|
private String explain; |
||||
|
|
||||
|
@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 List<ActivityProduct> activityProductList; |
||||
|
|
||||
|
public Activity trans2Domain(){ |
||||
|
Activity activity = TypeConvertUtils.convert(this,Activity.class); |
||||
|
activity.setStatus(ActivityStatusEnum.ENABLE.getValue()); |
||||
|
return activity; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,47 @@ |
|||||
|
package com.qniao.dam.api.command.order.user.request; |
||||
|
|
||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; |
||||
|
import com.qniao.dam.domain.aggregate.order.entity.Order; |
||||
|
import com.qniao.dam.domain.aggregate.order.entity.OrderItem; |
||||
|
import com.qniao.domain.Trans2DomainAssembler; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import javax.validation.constraints.NotNull; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@Data |
||||
|
public class UserBatchSubmitOrderDto { |
||||
|
|
||||
|
@ApiModelProperty("征婚资料标识") |
||||
|
@NotNull(message = "征婚资料标识不能为空") |
||||
|
private Long miId; |
||||
|
|
||||
|
@ApiModelProperty("产品规格标识集合") |
||||
|
@NotNull(message = "产品规格标识集合不能为空") |
||||
|
private List<Long> productSpecIds; |
||||
|
|
||||
|
@ApiModelProperty("活动id") |
||||
|
private Long activityId; |
||||
|
|
||||
|
@ApiModelProperty("商品组类型 0 商品 1 活动产品") |
||||
|
private Integer groupType; |
||||
|
|
||||
|
public Order trans2Domain() { |
||||
|
Order order = new Order(); |
||||
|
order.setMiId(miId); |
||||
|
order.setActivityId(activityId); |
||||
|
order.setGroupType(groupType); |
||||
|
List<OrderItem> orderItemList = new ArrayList<>(); |
||||
|
productSpecIds.forEach(e->{ |
||||
|
OrderItem orderItem = new OrderItem(); |
||||
|
orderItem.setProductSpecId(e); |
||||
|
orderItem.setQuantity(1); |
||||
|
orderItemList.add(orderItem); |
||||
|
}); |
||||
|
order.setOrderItemList(orderItemList); |
||||
|
return order; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,38 @@ |
|||||
|
package com.qniao.dam.api.query.activity.user; |
||||
|
|
||||
|
import com.qniao.dam.api.query.activity.user.request.ActivityQueryDto; |
||||
|
import com.qniao.dam.api.query.activity.user.response.ActivityDetailsVo; |
||||
|
import com.qniao.dam.api.query.activity.user.response.ActivityVo; |
||||
|
import com.qniao.dam.application.service.activity.ActivityApplicationService; |
||||
|
import com.qniao.dau.infrastructure.constant.RequestHeaderFields; |
||||
|
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; |
||||
|
|
||||
|
@RestController |
||||
|
@RequestMapping("user") |
||||
|
@Api(tags = "活动查询") |
||||
|
public class ActivityUserQueryController { |
||||
|
|
||||
|
@Resource |
||||
|
private ActivityApplicationService activityApplicationService; |
||||
|
|
||||
|
@GetMapping("get/activity/by/operator/page") |
||||
|
@ApiOperation("运营获取活动列表") |
||||
|
public QnPage<ActivityVo> pageActivityOperation(PageUtil pageUtil, |
||||
|
ActivityQueryDto dto, |
||||
|
@RequestParam("userId") Long userId, |
||||
|
@RequestHeader(name = RequestHeaderFields.FIELD_ORGANIZATION_ID) Long orgId){ |
||||
|
return activityApplicationService.pageActivityOperation(pageUtil,dto,userId,orgId); |
||||
|
} |
||||
|
|
||||
|
@GetMapping("get/activity/by/operator/details") |
||||
|
@ApiOperation("运营获取活动详情") |
||||
|
public ActivityDetailsVo getActivityDetails(Long id){ |
||||
|
return activityApplicationService.getActivityDetails(id); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,7 @@ |
|||||
|
package com.qniao.dam.api.query.activity.user.request; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
@Data |
||||
|
public class ActivityQueryDto { |
||||
|
} |
||||
@ -0,0 +1,18 @@ |
|||||
|
package com.qniao.dam.api.query.activity.user.response; |
||||
|
|
||||
|
import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo; |
||||
|
import com.qniao.dam.domain.aggregate.activity.entity.Activity; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@Data |
||||
|
public class ActivityDetailsVo extends Activity { |
||||
|
|
||||
|
@ApiModelProperty("产品集合") |
||||
|
private List<ActivityProductListVo> activityProductListVos; |
||||
|
|
||||
|
|
||||
|
} |
||||
@ -0,0 +1,20 @@ |
|||||
|
package com.qniao.dam.api.query.activity.user.response; |
||||
|
|
||||
|
import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
|
||||
|
@Data |
||||
|
public class ActivityProductListVo extends UserPageProductByOperatorVo { |
||||
|
|
||||
|
@ApiModelProperty("是否赠品") |
||||
|
private Boolean freebie; |
||||
|
|
||||
|
@ApiModelProperty("活动原价") |
||||
|
private BigDecimal activityUnitOriginalPrice; |
||||
|
|
||||
|
@ApiModelProperty("活动售价") |
||||
|
private BigDecimal activityUnitSellingPrice; |
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
package com.qniao.dam.api.query.activity.user.response; |
||||
|
|
||||
|
import com.qniao.dam.domain.aggregate.activity.entity.Activity; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
@Data |
||||
|
public class ActivityVo extends Activity { |
||||
|
|
||||
|
@ApiModelProperty("活动状态 0 未开始 1 进行中 2 已结束") |
||||
|
private Integer activeState; |
||||
|
} |
||||
@ -0,0 +1,18 @@ |
|||||
|
package com.qniao.dam.api.query.product.user.response; |
||||
|
|
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import io.swagger.models.auth.In; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
@Data |
||||
|
public class UserPageProductByCustomerExtendVo extends UserPageProductByCustomerVo{ |
||||
|
|
||||
|
@ApiModelProperty("分组类型 0 商品 1 活动") |
||||
|
private Integer groupType; |
||||
|
|
||||
|
@ApiModelProperty("商品名称") |
||||
|
private String productName; |
||||
|
|
||||
|
@ApiModelProperty("数据id") |
||||
|
private Long id; |
||||
|
} |
||||
@ -0,0 +1,35 @@ |
|||||
|
package com.qniao.dam.api.query.product.user.response; |
||||
|
|
||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@Data |
||||
|
public class UserPageProductByCustomerGroupVo { |
||||
|
|
||||
|
@ApiModelProperty("活动id") |
||||
|
@JsonSerialize(using = ToStringSerializer.class) |
||||
|
private Long activityId; |
||||
|
|
||||
|
@ApiModelProperty("商品组类型 0 商品 1 活动产品") |
||||
|
private Integer groupType; |
||||
|
|
||||
|
@ApiModelProperty("商品名称") |
||||
|
private String productName; |
||||
|
|
||||
|
@ApiModelProperty("原价") |
||||
|
private BigDecimal unitOriginalPrice; |
||||
|
|
||||
|
@ApiModelProperty("售价") |
||||
|
private BigDecimal unitSellingPrice; |
||||
|
|
||||
|
@ApiModelProperty("有效期") |
||||
|
private String validityPeriodValue; |
||||
|
|
||||
|
@ApiModelProperty("商品集合") |
||||
|
private List<UserPageProductByCustomerVo> productList; |
||||
|
} |
||||
@ -0,0 +1,74 @@ |
|||||
|
package com.qniao.dam.application.service.activity; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
||||
|
import com.qniao.dam.api.query.activity.user.request.ActivityQueryDto; |
||||
|
import com.qniao.dam.api.query.activity.user.response.ActivityDetailsVo; |
||||
|
import com.qniao.dam.api.query.activity.user.response.ActivityProductListVo; |
||||
|
import com.qniao.dam.api.query.activity.user.response.ActivityVo; |
||||
|
import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam; |
||||
|
import com.qniao.dam.domain.aggregate.activity.ActivityAggregate; |
||||
|
import com.qniao.dam.domain.aggregate.activity.entity.Activity; |
||||
|
import com.qniao.dam.domain.aggregate.activity.entity.ActivityProduct; |
||||
|
import com.qniao.dam.infrastructure.persistent.dao.activity.ActivityDao; |
||||
|
import com.qniao.dam.infrastructure.persistent.dao.activity.ActivityProductDao; |
||||
|
import com.qniao.dam.infrastructure.persistent.dao.view.ProductViewDao; |
||||
|
import com.qniao.domain.BaseApplicationService; |
||||
|
import com.qniao.domain.QnPage; |
||||
|
import com.qniao.framework.utils.PageUtil; |
||||
|
import com.qniao.framework.utils.TypeConvertUtils; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
import javax.annotation.Resource; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.Arrays; |
||||
|
import java.util.List; |
||||
|
import java.util.Map; |
||||
|
import java.util.stream.Collectors; |
||||
|
|
||||
|
@Service |
||||
|
@Slf4j |
||||
|
public class ActivityApplicationService extends BaseApplicationService { |
||||
|
|
||||
|
@Resource |
||||
|
private ActivityAggregate aggregate; |
||||
|
|
||||
|
@Resource |
||||
|
private ActivityDao activityDao; |
||||
|
|
||||
|
@Resource |
||||
|
private ProductViewDao productViewDao; |
||||
|
|
||||
|
@Resource |
||||
|
private ActivityProductDao activityProductDao; |
||||
|
|
||||
|
public String saveActivity(Activity activity){ |
||||
|
return aggregate.saveActivity(activity); |
||||
|
} |
||||
|
|
||||
|
public QnPage<ActivityVo> pageActivityOperation(PageUtil pageUtil, |
||||
|
ActivityQueryDto dto, |
||||
|
Long userId, |
||||
|
Long orgId){ |
||||
|
return PageUtil.convert(activityDao.pageActivityOperation(pageUtil.toPageWithoutOrders(),dto,userId,orgId)); |
||||
|
} |
||||
|
|
||||
|
public ActivityDetailsVo getActivityDetails(Long id){ |
||||
|
ActivityDetailsVo vo = TypeConvertUtils.convert(activityDao.selectById(id),ActivityDetailsVo.class); |
||||
|
List<ActivityProduct> activityProductList = activityProductDao.selectList(Wrappers.lambdaQuery(new ActivityProduct()).eq(ActivityProduct::getActivityId,vo.getId())); |
||||
|
Map<Long,ActivityProduct> map = activityProductList.stream().collect(Collectors.toMap(ActivityProduct::getProductId,ActivityProduct -> ActivityProduct)); |
||||
|
UserPageProductByOperatorQueryParam queryParam = new UserPageProductByOperatorQueryParam(); |
||||
|
queryParam.setProductIds(new ArrayList<>(map.keySet())); |
||||
|
List<ActivityProductListVo> activityProductListVo = TypeConvertUtils.convert(productViewDao.selectProductByOperator(queryParam),ActivityProductListVo.class); |
||||
|
activityProductListVo.forEach(v->{ |
||||
|
ActivityProduct av = map.get(v.getProductId()); |
||||
|
v.setFreebie(av.getFreebie()); |
||||
|
v.setActivityUnitOriginalPrice(av.getActivityUnitOriginalPrice()); |
||||
|
v.setUnitOriginalPrice(av.getActivityUnitOriginalPrice()); |
||||
|
}); |
||||
|
vo.setActivityProductListVos(activityProductListVo); |
||||
|
return vo; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
@ -0,0 +1,18 @@ |
|||||
|
package com.qniao.dam.domain.aggregate.activity; |
||||
|
|
||||
|
import com.qniao.dam.domain.aggregate.activity.entity.Activity; |
||||
|
import com.qniao.dam.domain.aggregate.activity.repository.ActivityRepository; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
import javax.annotation.Resource; |
||||
|
|
||||
|
@Service |
||||
|
public class ActivityAggregate { |
||||
|
|
||||
|
@Resource |
||||
|
private ActivityRepository activityRepository; |
||||
|
|
||||
|
public String saveActivity(Activity activity){ |
||||
|
return activityRepository.save(activity).toString(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,7 @@ |
|||||
|
package com.qniao.dam.domain.aggregate.activity.repository; |
||||
|
|
||||
|
import com.qniao.dam.domain.aggregate.activity.entity.Activity; |
||||
|
import com.qniao.domain.Repository; |
||||
|
|
||||
|
public interface ActivityRepository extends Repository<Activity, Long> { |
||||
|
} |
||||
@ -0,0 +1,24 @@ |
|||||
|
package com.qniao.dam.infrastructure.persistent.dao.activity; |
||||
|
|
||||
|
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.activity.user.request.ActivityQueryDto; |
||||
|
import com.qniao.dam.api.query.activity.user.response.ActivityVo; |
||||
|
import com.qniao.dam.domain.aggregate.activity.entity.Activity; |
||||
|
import com.qniao.domain.QnPage; |
||||
|
import com.qniao.framework.utils.PageUtil; |
||||
|
import org.apache.ibatis.annotations.Param; |
||||
|
|
||||
|
/** |
||||
|
* 活动表 |
||||
|
* |
||||
|
* @date 2024/04/07 |
||||
|
*/ |
||||
|
public interface ActivityDao extends BaseMapper<Activity> { |
||||
|
|
||||
|
IPage<ActivityVo> pageActivityOperation(Page<Object> pageWithoutOrders, |
||||
|
@Param("dto") ActivityQueryDto dto, |
||||
|
@Param("userId") Long userId, |
||||
|
@Param("orgId") Long orgId); |
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
package com.qniao.dam.infrastructure.persistent.dao.activity; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
|
import com.qniao.dam.domain.aggregate.activity.entity.ActivityProduct; |
||||
|
|
||||
|
/** |
||||
|
* 活动产品表 |
||||
|
* |
||||
|
* @date 2024/04/07 |
||||
|
*/ |
||||
|
public interface ActivityProductDao extends BaseMapper<ActivityProduct> { |
||||
|
} |
||||
@ -0,0 +1,53 @@ |
|||||
|
package com.qniao.dam.infrastructure.persistent.repository.impl; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
||||
|
import com.qniao.dam.domain.aggregate.activity.entity.Activity; |
||||
|
import com.qniao.dam.domain.aggregate.activity.entity.ActivityProduct; |
||||
|
import com.qniao.dam.domain.aggregate.activity.repository.ActivityRepository; |
||||
|
import com.qniao.dam.infrastructure.persistent.dao.activity.ActivityDao; |
||||
|
import com.qniao.dam.infrastructure.persistent.dao.activity.ActivityProductDao; |
||||
|
import com.qniao.framework.utils.SnowFlake; |
||||
|
|
||||
|
import javax.annotation.Resource; |
||||
|
|
||||
|
public class ActivityRepositoryImpl implements ActivityRepository { |
||||
|
|
||||
|
@Resource |
||||
|
private ActivityDao activityDao; |
||||
|
|
||||
|
@Resource |
||||
|
private ActivityProductDao activityProductDao; |
||||
|
|
||||
|
@Resource |
||||
|
private SnowFlake snowFlake; |
||||
|
|
||||
|
@Override |
||||
|
public Activity load(Long id) { |
||||
|
Activity activity = activityDao.selectById(id); |
||||
|
return activity; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public Long save(Activity entity) { |
||||
|
if(entity.getId() != null){ |
||||
|
entity.setId(snowFlake.nextId()); |
||||
|
activityDao.insert(entity); |
||||
|
if(entity.getActivityProductList() != null){ |
||||
|
entity.getActivityProductList().forEach(e->{ |
||||
|
e.setActivityId(entity.getId()); |
||||
|
activityProductDao.insert(e); |
||||
|
}); |
||||
|
} |
||||
|
}else{ |
||||
|
activityDao.updateById(entity); |
||||
|
activityProductDao.delete(Wrappers.lambdaUpdate(new ActivityProduct()).eq(ActivityProduct::getActivityId,entity.getId())); |
||||
|
if(entity.getActivityProductList() != null){ |
||||
|
entity.getActivityProductList().forEach(e->{ |
||||
|
e.setActivityId(entity.getId()); |
||||
|
activityProductDao.insert(e); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
return entity.getId(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,15 @@ |
|||||
|
<?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.activity.ActivityDao"> |
||||
|
<select id="pageActivityOperation" resultType="com.qniao.dam.api.query.activity.user.response.ActivityVo"> |
||||
|
SELECT *, |
||||
|
CASE |
||||
|
WHEN start_time > NOW() AND end_time > NOW() THEN 0 |
||||
|
WHEN start_time <= NOW() AND end_time >= NOW() THEN 1 |
||||
|
WHEN start_time < NOW() AND end_time < NOW() THEN 2 |
||||
|
ELSE |
||||
|
-1 |
||||
|
END activeState |
||||
|
FROM da_activity |
||||
|
</select> |
||||
|
</mapper> |
||||
Write
Preview
Loading…
Cancel
Save