Browse Source

基础配置

master
张彭杰 2 years ago
parent
commit
0dc6f37072
22 changed files with 552 additions and 0 deletions
  1. 15
      dating-agency-mall-constant/pom.xml
  2. 40
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java
  3. 35
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductStatusEnum.java
  4. 44
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java
  5. 35
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductTypeEnum.java
  6. 40
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/productspec/constant/ProductSpecTermNameEnum.java
  7. 45
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/productspec/constant/ProductSpecTermUnitEnum.java
  8. 11
      dating-agency-mall-entity/pom.xml
  9. 38
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/product/entity/Product.java
  10. 34
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/productspec/entity/ProductSpec.java
  11. 30
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/productspec/entity/ProductSpecTerm.java
  12. 5
      dating-agency-mall-server/pom.xml
  13. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/product/ProductAggregate.java
  14. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/product/repository/ProductRepository.java
  15. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/productspec/ProductSpecAggregate.java
  16. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/productspec/repository/ProductSpecRepository.java
  17. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/ProductDao.java
  18. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/ProductSpecDao.java
  19. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/ProductSpecTermDao.java
  20. 31
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ProductRepositoryImpl.java
  21. 60
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ProductSpecRepositoryImpl.java
  22. 40
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/utils/CompareEntityUtil.java

15
dating-agency-mall-constant/pom.xml

@ -17,4 +17,19 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.qniao</groupId>
<artifactId>mybatis-plus-starter</artifactId>
</dependency>
</dependencies>
</project>

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

@ -0,0 +1,40 @@
package com.qniao.dam.domian.aggregate.product.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 ProductMainCategoryEnum {
/**
* 认证资料编辑解锁信息线下服务
*/
AUTHENTICATION(1, "认证"),
DATE_EDITING(2, "资料编辑"),
UNLOCKING_INFORMATION(3, "解锁信息"),
OFFLINE_SERVICES(4, "线下服务");
@EnumValue
@JsonValue
private final Integer value;
private final String desc;
ProductMainCategoryEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
@JsonCreator
public static ProductMainCategoryEnum get(Object code) {
for (ProductMainCategoryEnum e : ProductMainCategoryEnum.values()) {
if (e.getValue().equals(code)) {
return e;
}
}
return null;
}
}

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

@ -0,0 +1,35 @@
package com.qniao.dam.domian.aggregate.product.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 ProductStatusEnum {
PHYSICAL(1, "实物"),
VIRTUAL(2, "虚拟物品");
@EnumValue
@JsonValue
private final Integer value;
private final String desc;
ProductStatusEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
@JsonCreator
public static ProductStatusEnum get(Object code) {
for (ProductStatusEnum e : ProductStatusEnum.values()) {
if (e.getValue().equals(code)) {
return e;
}
}
return null;
}
}

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

@ -0,0 +1,44 @@
package com.qniao.dam.domian.aggregate.product.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 ProductSubCategoryEnum {
/**
* 学历认证解锁更多人数头像修改高级搜索线下约见面
*/
EDUCATION_CERTIFICATION(101, "学历认证"),
PROFILE_MODIFICATION(201, "头像修改"),
UNLOCK_MORE_PEOPLE(301, "解锁更多人数"),
ADVANCED_SEARCH(302, "高级搜索"),
OFFLINE_MEET(401, "线下约见面");
@EnumValue
@JsonValue
private final Integer value;
private final String desc;
ProductSubCategoryEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
@JsonCreator
public static ProductSubCategoryEnum get(Object code) {
for (ProductSubCategoryEnum e : ProductSubCategoryEnum.values()) {
if (e.getValue().equals(code)) {
return e;
}
}
return null;
}
}

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

@ -0,0 +1,35 @@
package com.qniao.dam.domian.aggregate.product.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 ProductTypeEnum {
PHYSICAL(1, "实物"),
VIRTUAL(2, "虚拟物品");
@EnumValue
@JsonValue
private final Integer value;
private final String desc;
ProductTypeEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
@JsonCreator
public static ProductTypeEnum get(Object code) {
for (ProductTypeEnum e : ProductTypeEnum.values()) {
if (e.getValue().equals(code)) {
return e;
}
}
return null;
}
}

40
dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/productspec/constant/ProductSpecTermNameEnum.java

@ -0,0 +1,40 @@
package com.qniao.dam.domian.aggregate.productspec.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 ProductSpecTermNameEnum {
SPEC(1, "规格"),
PURCHASE_TIME(2,"购买次数"),
VALIDITY_PERIOD(3,"有效期"),
DAILY_USE_LIMIT(4,"单日使用上限");
@EnumValue
@JsonValue
private final Integer value;
private final String desc;
ProductSpecTermNameEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
@JsonCreator
public static ProductSpecTermNameEnum get(Object code) {
for (ProductSpecTermNameEnum e : ProductSpecTermNameEnum.values()) {
if (e.getValue().equals(code)) {
return e;
}
}
return null;
}
}

45
dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/productspec/constant/ProductSpecTermUnitEnum.java

@ -0,0 +1,45 @@
package com.qniao.dam.domian.aggregate.productspec.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 ProductSpecTermUnitEnum {
/**
* 1 规格
*/
SPEC_PERIOD(101, "周期"),
SPEC_TIME(102, "次数"),
/**
* 3 有效期
*/
VALIDITY_PERIOD_DAYS(301, "有效期天数");
@EnumValue
@JsonValue
private final Integer value;
private final String desc;
ProductSpecTermUnitEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
@JsonCreator
public static ProductSpecTermUnitEnum get(Object code) {
for (ProductSpecTermUnitEnum e : ProductSpecTermUnitEnum.values()) {
if (e.getValue().equals(code)) {
return e;
}
}
return null;
}
}

11
dating-agency-mall-entity/pom.xml

@ -17,4 +17,15 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
</dependency>
<dependency>
<groupId>com.qniao</groupId>
<artifactId>dating-agency-mall-constant</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>

38
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/product/entity/Product.java

@ -0,0 +1,38 @@
package com.qniao.dam.domain.aggregate.product.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qniao.dam.domian.aggregate.product.constant.ProductMainCategoryEnum;
import com.qniao.dam.domian.aggregate.product.constant.ProductStatusEnum;
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum;
import com.qniao.dam.domian.aggregate.product.constant.ProductTypeEnum;
import com.qniao.domain.Entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("da_product")
public class Product extends Entity<Product> {
@ApiModelProperty("产品类型(实物、虚拟物品)")
private ProductTypeEnum productType;
@ApiModelProperty("产品主分类")
private ProductMainCategoryEnum mainCategory;
@ApiModelProperty("产品次分类")
private ProductSubCategoryEnum subCategory;
@ApiModelProperty("产品标题")
private String productTitle;
@ApiModelProperty("产品描述")
private String productDesc;
@ApiModelProperty("详情描述")
private String detailDesc;
@ApiModelProperty("状态(已上架、已下架)")
private ProductStatusEnum status;
}

34
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/productspec/entity/ProductSpec.java

@ -0,0 +1,34 @@
package com.qniao.dam.domain.aggregate.productspec.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qniao.domain.Entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.List;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("da_product_spec")
public class ProductSpec extends Entity<ProductSpec> {
@ApiModelProperty("产品标识")
private Long productId;
@ApiModelProperty("原价")
private BigDecimal unitOriginalPrice;
@ApiModelProperty("售价")
private BigDecimal unitSellingPrice;
@ApiModelProperty("可用库存数量")
private Integer availableStockNumber;
private transient List<ProductSpecTerm> productSpecTermList;
private transient List<ProductSpecTerm> insertProductSpecTermList;
private transient List<ProductSpecTerm> updateProductSpecTermList;
private transient List<ProductSpecTerm> deleteProductSpecTermList;
}

30
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/productspec/entity/ProductSpecTerm.java

@ -0,0 +1,30 @@
package com.qniao.dam.domain.aggregate.productspec.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermNameEnum;
import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermUnitEnum;
import com.qniao.domain.Entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("da_product_spec_term")
public class ProductSpecTerm extends Entity<ProductSpecTerm> {
@ApiModelProperty("产品规格标识")
private Long productSpecId;
@ApiModelProperty("展示名称")
private String displayName;
@ApiModelProperty("名称")
private ProductSpecTermNameEnum name;
@ApiModelProperty("单位")
private ProductSpecTermUnitEnum unit;
@ApiModelProperty("值")
private String value;
}

5
dating-agency-mall-server/pom.xml

@ -56,6 +56,11 @@
<groupId>com.qniao</groupId>
<artifactId>redis-starter</artifactId>
</dependency>
<dependency>
<groupId>com.qniao</groupId>
<artifactId>dating-agency-mall-entity</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>

7
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/product/ProductAggregate.java

@ -0,0 +1,7 @@
package com.qniao.dam.domain.aggregate.product;
import org.springframework.stereotype.Service;
@Service
public class ProductAggregate {
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/product/repository/ProductRepository.java

@ -0,0 +1,7 @@
package com.qniao.dam.domain.aggregate.product.repository;
import com.qniao.dam.domain.aggregate.product.entity.Product;
import com.qniao.domain.Repository;
public interface ProductRepository extends Repository<Product,Long> {
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/productspec/ProductSpecAggregate.java

@ -0,0 +1,7 @@
package com.qniao.dam.domain.aggregate.productspec;
import org.springframework.stereotype.Service;
@Service
public class ProductSpecAggregate {
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/productspec/repository/ProductSpecRepository.java

@ -0,0 +1,7 @@
package com.qniao.dam.domain.aggregate.productspec.repository;
import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec;
import com.qniao.domain.Repository;
public interface ProductSpecRepository extends Repository<ProductSpec,Long> {
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/ProductDao.java

@ -0,0 +1,7 @@
package com.qniao.dam.infrastructure.persistent.dao.domain;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qniao.dam.domain.aggregate.product.entity.Product;
public interface ProductDao extends BaseMapper<Product> {
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/ProductSpecDao.java

@ -0,0 +1,7 @@
package com.qniao.dam.infrastructure.persistent.dao.domain;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec;
public interface ProductSpecDao extends BaseMapper<ProductSpec> {
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/ProductSpecTermDao.java

@ -0,0 +1,7 @@
package com.qniao.dam.infrastructure.persistent.dao.domain;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpecTerm;
public interface ProductSpecTermDao extends BaseMapper<ProductSpecTerm> {
}

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

@ -0,0 +1,31 @@
package com.qniao.dam.infrastructure.persistent.repository.impl;
import com.qniao.dam.domain.aggregate.product.entity.Product;
import com.qniao.dam.domain.aggregate.product.repository.ProductRepository;
import com.qniao.dam.infrastructure.persistent.dao.domain.ProductDao;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Objects;
@Service
public class ProductRepositoryImpl implements ProductRepository {
@Resource
private ProductDao productDao;
@Override
public Product load(Long id) {
return productDao.selectById(id);
}
@Override
public Long save(Product entity) {
if (Objects.isNull(entity) || Objects.isNull(productDao.selectById(entity.getId()))) {
productDao.insert(entity);
} else {
productDao.updateById(entity);
}
return entity.getId();
}
}

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

@ -0,0 +1,60 @@
package com.qniao.dam.infrastructure.persistent.repository.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec;
import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpecTerm;
import com.qniao.dam.domain.aggregate.productspec.repository.ProductSpecRepository;
import com.qniao.dam.infrastructure.persistent.dao.domain.ProductSpecDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.ProductSpecTermDao;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
public class ProductSpecRepositoryImpl implements ProductSpecRepository {
@Resource
private ProductSpecDao productSpecDao;
@Resource
private ProductSpecTermDao productSpecTermDao;
@Override
public ProductSpec load(Long id) {
ProductSpec productSpec = productSpecDao.selectById(id);
if (Objects.nonNull(productSpec)) {
productSpec.setProductSpecTermList(productSpecTermDao.selectList(new LambdaQueryWrapper<ProductSpecTerm>()
.eq(ProductSpecTerm::getProductSpecId, productSpec.getId())));
}
return productSpec;
}
@Transactional(rollbackFor = Exception.class)
@Override
public Long save(ProductSpec entity) {
if (Objects.isNull(entity) || Objects.isNull(productSpecDao.selectById(entity.getId()))) {
productSpecDao.insert(entity);
} else {
productSpecDao.updateById(entity);
}
if (CollUtil.isNotEmpty(entity.getInsertProductSpecTermList())) {
entity.getInsertProductSpecTermList().forEach(term -> {
term.setProductSpecId(entity.getId());
productSpecTermDao.insert(term);
});
}
if (CollUtil.isNotEmpty(entity.getUpdateProductSpecTermList())) {
entity.getUpdateProductSpecTermList().forEach(term -> {
term.setProductSpecId(entity.getId());
productSpecTermDao.updateById(term);
});
}
if (CollUtil.isNotEmpty(entity.getDeleteProductSpecTermList())) {
productSpecTermDao.deleteBatchIds(entity.getDeleteProductSpecTermList().stream().map(ProductSpecTerm::getId).collect(Collectors.toList()));
}
return entity.getId();
}
}

40
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/utils/CompareEntityUtil.java

@ -0,0 +1,40 @@
package com.qniao.dam.infrastructure.utils;
import cn.hutool.core.lang.Tuple;
import com.qniao.domain.Entity;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* @author Derran
* @date 2023/7/19 15:57
**/
public class CompareEntityUtil {
public static <T extends Entity<T>> Tuple compareEntityList(List<T> newList, List<T> oldList) {
List<T> insertList = new ArrayList<>();
List<T> updateList = new ArrayList<>();
List<T> deleteList;
for (T newT : newList) {
if (Objects.isNull(newT.getId())) {
insertList.add(newT);
} else {
T updateT = null;
for (T oldT : oldList) {
if (oldT.getId().equals(newT.getId())) {
updateT = oldT;
updateList.add(newT);
}
}
if (Objects.nonNull(updateT)) {
oldList.remove(updateT);
}
}
}
deleteList = oldList;
return new Tuple(insertList, updateList, deleteList);
}
}
Loading…
Cancel
Save