Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
67f8b61f
提交
67f8b61f
authored
7月 26, 2020
作者:
wuwenbin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix promotion优惠券工程继续迁移,未完成,再提交下
上级
ac5ab0b7
隐藏空白字符变更
内嵌
并排
正在显示
24 个修改的文件
包含
1222 行增加
和
6 行删除
+1222
-6
PromotionActivityRpc.java
...mall/promotion/api/rpc/activity/PromotionActivityRpc.java
+1
-1
BannerRpc.java
...a/cn/iocoder/mall/promotion/api/rpc/banner/BannerRpc.java
+1
-1
CouponRpc.java
...a/cn/iocoder/mall/promotion/api/rpc/coupon/CouponRpc.java
+1
-1
CouponCardSpuRespDTO.java
...ll/promotion/api/rpc/coupon/dto/CouponCardSpuRespDTO.java
+2
-2
ProductRecommendRpc.java
...mall/promotion/api/rpc/recommend/ProductRecommendRpc.java
+1
-1
pom.xml
promotion-service-project/promotion-service-app/pom.xml
+31
-0
PromotionServiceApplication.java
...er/mall/promotionservice/PromotionServiceApplication.java
+14
-0
AsyncConfiguration.java
...oder/mall/promotionservice/config/AsyncConfiguration.java
+9
-0
DatabaseConfiguration.java
...r/mall/promotionservice/config/DatabaseConfiguration.java
+28
-0
PromotionActivityConvert.java
...ionservice/convert/activity/PromotionActivityConvert.java
+35
-0
PromotionActivityDO.java
...ce/dal/mysql/dataobject/activity/PromotionActivityDO.java
+188
-0
BannerDO.java
...romotionservice/dal/mysql/dataobject/banner/BannerDO.java
+47
-0
CouponCardDO.java
...tionservice/dal/mysql/dataobject/coupon/CouponCardDO.java
+119
-0
CouponCodeDO.java
...tionservice/dal/mysql/dataobject/coupon/CouponCodeDO.java
+43
-0
CouponTemplateDO.java
...service/dal/mysql/dataobject/coupon/CouponTemplateDO.java
+220
-0
ProductRecommendDO.java
...ce/dal/mysql/dataobject/recommend/ProductRecommendDO.java
+46
-0
PromotionActivityMapper.java
...ce/dal/mysql/mapper/activity/PromotionActivityMapper.java
+29
-0
BannerMapper.java
...romotionservice/dal/mysql/mapper/banner/BannerMapper.java
+27
-0
CouponCardMapper.java
...tionservice/dal/mysql/mapper/coupon/CouponCardMapper.java
+36
-0
CouponTemplateMapper.java
...service/dal/mysql/mapper/coupon/CouponTemplateMapper.java
+35
-0
ProductRecommendMapper.java
...ce/dal/mysql/mapper/recommend/ProductRecommendMapper.java
+31
-0
PromotionActivityService.java
...ionservice/service/activity/PromotionActivityService.java
+102
-0
PromotionActivityBO.java
...otionservice/service/activity/bo/PromotionActivityBO.java
+151
-0
PromotionActivityPageBO.java
...nservice/service/activity/bo/PromotionActivityPageBO.java
+25
-0
没有找到文件。
promotion-service-project/promotion-service-api/src/main/java/cn/iocoder/mall/promotion/api/rpc/activity/PromotionActivity
Service
.java
→
promotion-service-project/promotion-service-api/src/main/java/cn/iocoder/mall/promotion/api/rpc/activity/PromotionActivity
Rpc
.java
浏览文件 @
67f8b61f
...
@@ -3,7 +3,7 @@ package cn.iocoder.mall.promotion.api.rpc.activity.dto;
...
@@ -3,7 +3,7 @@ package cn.iocoder.mall.promotion.api.rpc.activity.dto;
import
java.util.Collection
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.List
;
public
interface
PromotionActivity
Service
{
public
interface
PromotionActivity
Rpc
{
List
<
PromotionActivityRespDTO
>
getPromotionActivityListBySpuId
(
Integer
spuId
,
List
<
PromotionActivityRespDTO
>
getPromotionActivityListBySpuId
(
Integer
spuId
,
Collection
<
Integer
>
activityStatuses
);
Collection
<
Integer
>
activityStatuses
);
...
...
promotion-service-project/promotion-service-api/src/main/java/cn/iocoder/mall/promotion/api/rpc/banner/Banner
Service
.java
→
promotion-service-project/promotion-service-api/src/main/java/cn/iocoder/mall/promotion/api/rpc/banner/Banner
Rpc
.java
浏览文件 @
67f8b61f
...
@@ -10,7 +10,7 @@ import cn.iocoder.mall.promotion.api.rpc.banner.dto.BannerUpdateReqDTO;
...
@@ -10,7 +10,7 @@ import cn.iocoder.mall.promotion.api.rpc.banner.dto.BannerUpdateReqDTO;
import
java.util.List
;
import
java.util.List
;
public
interface
Banner
Service
{
public
interface
Banner
Rpc
{
List
<
BannerRespDTO
>
getBannerListByStatus
(
Integer
status
);
List
<
BannerRespDTO
>
getBannerListByStatus
(
Integer
status
);
...
...
promotion-service-project/promotion-service-api/src/main/java/cn/iocoder/mall/promotion/api/rpc/coupon/Coupon
Service
.java
→
promotion-service-project/promotion-service-api/src/main/java/cn/iocoder/mall/promotion/api/rpc/coupon/Coupon
Rpc
.java
浏览文件 @
67f8b61f
...
@@ -7,7 +7,7 @@ import cn.iocoder.mall.promotion.api.rpc.coupon.dto.*;
...
@@ -7,7 +7,7 @@ import cn.iocoder.mall.promotion.api.rpc.coupon.dto.*;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
import
java.util.List
;
public
interface
Coupon
Service
{
public
interface
Coupon
Rpc
{
// ========== 优惠劵(码)模板 ==========
// ========== 优惠劵(码)模板 ==========
...
...
promotion-service-project/promotion-service-api/src/main/java/cn/iocoder/mall/promotion/api/rpc/coupon/dto/CouponCardSpuRespDTO.java
浏览文件 @
67f8b61f
package
cn
.
iocoder
.
mall
.
promotion
.
api
.
rpc
.
coupon
.
dto
;
package
cn
.
iocoder
.
mall
.
promotion
.
api
.
rpc
.
coupon
.
dto
;
import
cn.iocoder.mall.promotion.api.rpc.coupon.Coupon
Service
;
import
cn.iocoder.mall.promotion.api.rpc.coupon.Coupon
Rpc
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
lombok.experimental.Accessors
;
...
@@ -10,7 +10,7 @@ import java.util.List;
...
@@ -10,7 +10,7 @@ import java.util.List;
/**
/**
* 优惠劵商品 DTO
* 优惠劵商品 DTO
*
*
* 主要用于 {@link Coupon
Service
#getCouponCardList(Integer, List)}
* 主要用于 {@link Coupon
Rpc
#getCouponCardList(Integer, List)}
*/
*/
@Data
@Data
@Accessors
(
chain
=
true
)
@Accessors
(
chain
=
true
)
...
...
promotion-service-project/promotion-service-api/src/main/java/cn/iocoder/mall/promotion/api/rpc/recommend/ProductRecommend
Service
.java
→
promotion-service-project/promotion-service-api/src/main/java/cn/iocoder/mall/promotion/api/rpc/recommend/ProductRecommend
Rpc
.java
浏览文件 @
67f8b61f
...
@@ -6,7 +6,7 @@ import cn.iocoder.common.framework.validator.InEnum;
...
@@ -6,7 +6,7 @@ import cn.iocoder.common.framework.validator.InEnum;
import
java.util.List
;
import
java.util.List
;
public
interface
ProductRecommend
Service
{
public
interface
ProductRecommend
Rpc
{
List
<
ProductRecommendRespDTO
>
getProductRecommendList
(
Integer
type
,
Integer
status
);
List
<
ProductRecommendRespDTO
>
getProductRecommendList
(
Integer
type
,
Integer
status
);
...
...
promotion-service-project/promotion-service-app/pom.xml
浏览文件 @
67f8b61f
...
@@ -12,10 +12,40 @@
...
@@ -12,10 +12,40 @@
<artifactId>
promotion-service-app
</artifactId>
<artifactId>
promotion-service-app
</artifactId>
<dependencies>
<dependencies>
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
mall-spring-boot-starter-dubbo
</artifactId>
</dependency>
<dependency>
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
promotion-service-api
</artifactId>
<artifactId>
promotion-service-api
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-autoconfigure
</artifactId>
</dependency>
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
druid-spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
mall-spring-boot-starter-mybatis
</artifactId>
</dependency>
</dependencies>
</dependencies>
</project>
</project>
\ No newline at end of file
promotion-service-project/promotion-service-app/src/main/java/cn/iocoder/mall/promotionservice/PromotionServiceApplication.java
0 → 100644
浏览文件 @
67f8b61f
package
cn
.
iocoder
.
mall
.
promotionservice
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
@SpringBootApplication
public
class
PromotionServiceApplication
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
PromotionServiceApplication
.
class
,
args
);
}
}
promotion-service-project/promotion-service-app/src/main/java/cn/iocoder/mall/promotionservice/config/AsyncConfiguration.java
0 → 100644
浏览文件 @
67f8b61f
package
cn
.
iocoder
.
mall
.
promotionservice
.
config
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.annotation.EnableAsync
;
@Configuration
@EnableAsync
(
proxyTargetClass
=
true
)
// 开启 Spring Async 异步的功能
public
class
AsyncConfiguration
{
}
promotion-service-project/promotion-service-app/src/main/java/cn/iocoder/mall/promotionservice/config/DatabaseConfiguration.java
0 → 100644
浏览文件 @
67f8b61f
package
cn
.
iocoder
.
mall
.
promotionservice
.
config
;
import
com.baomidou.mybatisplus.core.injector.DefaultSqlInjector
;
import
com.baomidou.mybatisplus.core.injector.ISqlInjector
;
import
com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
@Configuration
@MapperScan
(
"cn.iocoder.mall.promotionservice.dal.mysql.mapper"
)
// 扫描对应的 Mapper 接口
@EnableTransactionManagement
(
proxyTargetClass
=
true
)
// 启动事务管理。
public
class
DatabaseConfiguration
{
// 数据库连接池 Druid
@Bean
public
ISqlInjector
sqlInjector
()
{
return
new
DefaultSqlInjector
();
// MyBatis Plus 逻辑删除
}
@Bean
public
PaginationInterceptor
paginationInterceptor
()
{
return
new
PaginationInterceptor
();
// MyBatis Plus 分页插件
}
}
promotion-service-project/promotion-service-app/src/main/java/cn/iocoder/mall/promotionservice/convert/activity/PromotionActivityConvert.java
0 → 100644
浏览文件 @
67f8b61f
package
cn
.
iocoder
.
mall
.
promotionservice
.
convert
.
activity
;
import
cn.iocoder.mall.promotion.api.rpc.activity.dto.PromotionActivityRespDTO
;
import
cn.iocoder.mall.promotionservice.dal.mysql.dataobject.activity.PromotionActivityDO
;
import
cn.iocoder.mall.promotionservice.service.activity.bo.PromotionActivityBO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mappings
;
import
org.mapstruct.factory.Mappers
;
import
java.util.List
;
@Mapper
public
interface
PromotionActivityConvert
{
PromotionActivityConvert
INSTANCE
=
Mappers
.
getMapper
(
PromotionActivityConvert
.
class
);
@Mappings
({})
PromotionActivityBO
convertToBO
(
PromotionActivityDO
activity
);
@Mappings
({})
List
<
PromotionActivityBO
>
convertToBO
(
List
<
PromotionActivityDO
>
activityList
);
@Mappings
({})
List
<
PromotionActivityDO
>
convertToDO
(
List
<
PromotionActivityBO
>
activityList
);
@Mappings
({})
List
<
PromotionActivityRespDTO
>
convertToRespDTO
(
List
<
PromotionActivityDO
>
activityList
);
// @Mappings({})
// PromotionActivityDO convert(PromotionActivityAddDTO activityAddDTO);
//
// @Mappings({})
// PromotionActivityDO convert(PromotionActivityUpdateDTO activityUpdateDTO);
}
promotion-service-project/promotion-service-app/src/main/java/cn/iocoder/mall/promotionservice/dal/mysql/dataobject/activity/PromotionActivityDO.java
0 → 100644
浏览文件 @
67f8b61f
package
cn
.
iocoder
.
mall
.
promotionservice
.
dal
.
mysql
.
dataobject
.
activity
;
import
cn.iocoder.mall.mybatis.core.dataobject.BaseDO
;
import
cn.iocoder.mall.mybatis.core.dataobject.DeletableDO
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
import
java.util.List
;
/**
* 促销活动 DO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
PromotionActivityDO
extends
DeletableDO
{
/**
* 活动编号
*/
private
Integer
id
;
/**
* 活动标题
*/
private
String
title
;
/**
* 活动类型
*
* 参见 {@link cn.iocoder.mall.promotion.api.enums.PromotionActivityTypeEnum} 枚举
*/
private
Integer
activityType
;
// /**
// * 促销类型
// * // TODO 芋艿 https://jos.jd.com/api/complexTemplate.htm?webPamer=promotion_v_o&groupName=%E4%BF%83%E9%94%80API&id=54&restName=jingdong.seller.promotion.list&isMulti=false 促销类型,可选值:单品促销(1),赠品促销(4),套装促销(6),总价促销(10)
// */
// private Integer promotionType;
/**
* 活动状态
*
* 参见 {@link cn.iocoder.mall.promotion.api.enums.PromotionActivityStatusEnum} 枚举
*/
private
Integer
status
;
/**
* 开始时间
*/
private
Date
startTime
;
/**
* 结束时间
*/
private
Date
endTime
;
/**
* 失效时间
*/
private
Date
invalidTime
;
/**
* 删除时间
*/
private
Date
deleteTime
;
/**
* 限制折扣字符串,使用 JSON 序列化成字符串存储
*/
private
TimeLimitedDiscount
timeLimitedDiscount
;
/**
* 满减送字符串,使用 JSON 序列化成字符串存储
*/
private
FullPrivilege
fullPrivilege
;
/**
* 限制折扣
*/
@Data
@Accessors
(
chain
=
true
)
public
static
class
TimeLimitedDiscount
{
/**
* 商品折扣
*/
@Data
@Accessors
(
chain
=
true
)
public
static
class
Item
{
/**
* 商品 SPU 编号
*/
private
Integer
spuId
;
/**
* 优惠类型
*/
private
Integer
preferentialType
;
/**
* 优惠值
*/
private
Integer
preferentialValue
;
}
/**
* 每人每种限购多少
*
* 当 quota = 0 时,表示不限购
*/
private
Integer
quota
;
/**
* 商品折扣数组
*/
private
List
<
Item
>
items
;
}
/**
* 满减送
*/
@Data
@Accessors
(
chain
=
true
)
public
static
class
FullPrivilege
{
/**
* 优惠
*/
@Data
@Accessors
(
chain
=
true
)
public
static
class
Privilege
{
/**
* 满足类型
*
* 1 - 金额
* 2 - 件数
*/
private
Integer
meetType
;
/**
* 满足值
*/
private
Integer
meetValue
;
/**
* 优惠类型
*/
private
Integer
preferentialType
;
/**
* 优惠值
*/
private
Integer
preferentialValue
;
// /**
// * 是否包邮
// */
// private Boolean isPostage;
// /**
// * 积分
// */
// private Integer score;
// /**
// * 优惠劵(码)分组编号
// */
// private Integer couponTemplateId;
// /**
// * 优惠劵(码)数量
// */
// private Integer couponNum;
// /**
// * 赠品编号
// */
// private Integer presentId;
}
/**
* 可用范围的类型
*
* 参见 {@link cn.iocoder.mall.promotion.api.enums.RangeTypeEnum} 枚举
* 暂时只用 “所有可用” + “PRODUCT_INCLUDE_PRT”
*/
private
Integer
rangeType
;
/**
* 指定可用商品列表
*/
private
List
<
Integer
>
rangeValues
;
/**
* 是否循环
*/
private
Boolean
cycled
;
/**
* 优惠数组
*/
private
List
<
Privilege
>
privileges
;
}
}
promotion-service-project/promotion-service-app/src/main/java/cn/iocoder/mall/promotionservice/dal/mysql/dataobject/banner/BannerDO.java
0 → 100644
浏览文件 @
67f8b61f
package
cn
.
iocoder
.
mall
.
promotionservice
.
dal
.
mysql
.
dataobject
.
banner
;
import
cn.iocoder.mall.mybatis.core.dataobject.DeletableDO
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* Banner 广告页
*/
@Data
@Accessors
(
chain
=
true
)
public
class
BannerDO
extends
DeletableDO
{
/**
* 编号
*/
private
Integer
id
;
/**
* 标题
*/
private
String
title
;
/**
* 跳转链接
*/
private
String
url
;
/**
* 图片链接
*/
private
String
picUrl
;
/**
* 排序
*/
private
Integer
sort
;
/**
* 状态
*
* {@link cn.iocoder.common.framework.enums.CommonStatusEnum}
*/
private
Integer
status
;
/**
* 备注
*/
private
String
memo
;
// TODO 芋艿 点击次数。&& 其他数据相关
}
promotion-service-project/promotion-service-app/src/main/java/cn/iocoder/mall/promotionservice/dal/mysql/dataobject/coupon/CouponCardDO.java
0 → 100644
浏览文件 @
67f8b61f
package
cn
.
iocoder
.
mall
.
promotionservice
.
dal
.
mysql
.
dataobject
.
coupon
;
import
cn.iocoder.mall.mybatis.core.dataobject.BaseDO
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
/**
* 优惠劵 DO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
CouponCardDO
extends
BaseDO
{
// ========== 基本信息 BEGIN ==========
/**
* 优惠劵编号
*/
private
Integer
id
;
/**
* 优惠劵(码)分组编号,{@link CouponTemplateDO} 的 id
*/
private
Integer
templateId
;
/**
* 优惠劵名
*
* 冗余自 {@link CouponTemplateDO} 的 title
*
* TODO 芋艿,暂时不考虑冗余的更新
*/
private
String
title
;
// /**
// * 核销码
// */
// private String verifyCode;
/**
* 优惠码状态
*
* 1-未使用
* 2-已使用
* 3-已失效
*/
private
Integer
status
;
// ========== 基本信息 END ==========
// ========== 领取情况 BEGIN ==========
/**
* 用户编号
*/
private
Integer
userId
;
/**
* 领取类型
*
* 1 - 用户主动领取
* 2 - 后台自动发放
*/
private
Integer
takeType
;
// ========== 领取情况 END ==========
// ========== 使用规则 BEGIN ==========
/**
* 是否设置满多少金额可用,单位:分
*/
private
Integer
priceAvailable
;
/**
* 生效开始时间
*/
private
Date
validStartTime
;
/**
* 生效结束时间
*/
private
Date
validEndTime
;
// ========== 使用规则 END ==========
// ========== 使用效果 BEGIN ==========
/**
* 优惠类型
*
* 1-代金卷
* 2-折扣卷
*/
private
Integer
preferentialType
;
/**
* 折扣
*/
private
Integer
percentOff
;
/**
* 优惠金额,单位:分。
*/
private
Integer
priceOff
;
/**
* 折扣上限,仅在 {@link #preferentialType} 等于 2 时生效。
*
* 例如,折扣上限为 20 元,当使用 8 折优惠券,订单金额为 1000 元时,最高只可折扣 20 元,而非 80 元。
*/
private
Integer
discountPriceLimit
;
// ========== 使用效果 END ==========
// ========== 使用情况 BEGIN ==========
// /**
// * 使用订单号
// */
// private Integer usedOrderId; // TODO 芋艿,暂时不考虑这个字段
// /**
// * 订单中优惠面值,单位:分
// */
// private Integer usedPrice; // TODO 芋艿,暂时不考虑这个字段
/**
* 使用时间
*/
private
Date
usedTime
;
// TODO 芋艿,后续要加优惠劵的使用日志,因为下单后,可能会取消。
// ========== 使用情况 END ==========
}
promotion-service-project/promotion-service-app/src/main/java/cn/iocoder/mall/promotionservice/dal/mysql/dataobject/coupon/CouponCodeDO.java
0 → 100644
浏览文件 @
67f8b61f
package
cn
.
iocoder
.
mall
.
promotionservice
.
dal
.
mysql
.
dataobject
.
coupon
;
import
cn.iocoder.mall.mybatis.core.dataobject.BaseDO
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
/**
* 优惠码
*/
@Data
@Accessors
(
chain
=
true
)
public
class
CouponCodeDO
extends
BaseDO
{
/**
* 编号
*/
private
Integer
id
;
/**
* 模板编号 {@link CouponTemplateDO} 的 id
*/
private
Integer
templateId
;
/**
* 优惠码
*/
private
Integer
code
;
/**
* 领取时间
*/
private
Date
takeTime
;
/**
* 领取用户编号
*/
private
Integer
userId
;
/**
* 领取的优惠劵编号
*/
private
Integer
couponId
;
// TODO 芋艿,后续要考虑状态的追踪
}
promotion-service-project/promotion-service-app/src/main/java/cn/iocoder/mall/promotionservice/dal/mysql/dataobject/coupon/CouponTemplateDO.java
0 → 100644
浏览文件 @
67f8b61f
package
cn
.
iocoder
.
mall
.
promotionservice
.
dal
.
mysql
.
dataobject
.
coupon
;
import
cn.iocoder.mall.mybatis.core.dataobject.BaseDO
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
/**
* 优惠劵(码)模板 DO
*
* 当用户领取时,会生成 {@link CouponCardDO} 优惠劵(码)。
*/
@Data
@Accessors
(
chain
=
true
)
public
class
CouponTemplateDO
extends
BaseDO
{
// ========== 基本信息 BEGIN ==========
/**
* 模板编号,自增唯一。
*/
private
Integer
id
;
/**
* 标题
*/
private
String
title
;
/**
* 使用说明
*/
private
String
description
;
/**
* 类型
*
* 1-优惠劵
* 2-优惠码
*/
private
Integer
type
;
/**
* 优惠码状态
*
* {@link cn.iocoder.mall.promotion.api.enums.CouponTemplateStatusEnum}
*
* 当优惠劵(码)开启中,可以手动操作,设置禁用中。
*/
private
Integer
status
;
// /**
// * 是否可分享领取链接
// */
// private Boolean isShare;
// /**
// * 设置为失效时间
// */
// private Date invalidTime;
// /**
// * 删除时间
// */
// private Date deleteTime;
// ========== 基本信息 END ==========
// ========== 领取规则 BEGIN ==========
// /**
// * 是否限制领用者的等级
// *
// * 0-不限制
// * 大于0-领用者必须是这个等级编号
// *
// * 【优惠劵独有】
// */
// private Integer needUserLevel;
/**
* 每人限领个数
*
* null - 则表示不限制
*/
private
Integer
quota
;
/**
* 发行总量
*/
private
Integer
total
;
// ========== 领取规则 END ==========
// ========== 使用规则 BEGIN ==========
// /**
// * 是否仅原价购买商品时可用
// *
// * true-是
// * false-否
// */
// private Boolean isForbidPreference;
/**
* 是否设置满多少金额可用,单位:分
*
* 0-不限制
* 大于0-多少金额可用
*/
private
Integer
priceAvailable
;
/**
* 可用范围的类型
*
* 10-全部(ALL):所有可用
* 20-部分(PART):部分商品可用,或指定商品可用
* 21-部分(PART):部分商品不可用,或指定商品可用
* 30-部分(PART):部分分类可用,或指定商品可用
* 31-部分(PART):部分分类不可用,或指定商品可用
*/
private
Integer
rangeType
;
/**
* 指定商品 / 分类列表,使用逗号分隔商品编号
*/
private
String
rangeValues
;
/**
* 生效日期类型
*
* 1-固定日期
* 2-领取日期:领到券 {@link #fixedStartTerm} 日开始 N 天内有效
*/
private
Integer
dateType
;
/**
* 固定日期-生效开始时间
*/
private
Date
validStartTime
;
/**
* 固定日期-生效结束时间
*/
private
Date
validEndTime
;
/**
* 领取日期-开始天数
*
* 例如,0-当天;1-次天
*/
private
Integer
fixedStartTerm
;
/**
* 领取日期-结束天数
*/
private
Integer
fixedEndTerm
;
// /**
// * 是否到期前4天发送提醒
// *
// * true-发送
// * false-不发送
// */
// private Boolean expireNotice;
// ========== 使用规则 END ==========
// ========== 使用效果 BEGIN ==========
/**
* 优惠类型
*
* 1-代金卷
* 2-折扣卷
*/
private
Integer
preferentialType
;
/**
* 折扣百分比。
*
* 例如,80% 为 80。
* 当 100% 为 100 ,则代表免费。
*/
private
Integer
percentOff
;
// /**
// * 是否是随机优惠券
// *
// * true-随机
// * false-不随机
// *
// * 【优惠劵独有】
// */
// private Boolean isRandom;
/**
* 优惠金额,单位:分
*/
// * 当 {@link #isRandom} 为 true 时,代表随机优惠金额的下限
private
Integer
priceOff
;
// /**
// * 优惠金额上限
// *
// * 【优惠劵独有】
// */
// private Integer valueRandomTo;
/**
* 折扣上限,仅在 {@link #preferentialType} 等于 2 时生效。
*
* 例如,折扣上限为 20 元,当使用 8 折优惠券,订单金额为 1000 元时,最高只可折扣 20 元,而非 80 元。
*/
private
Integer
discountPriceLimit
;
// ========== 使用效果 END ==========
// ========== 统计信息 BEGIN ==========
// /**
// * 领取优惠券的人数
// */
// private Integer statFetchUserNum;
/**
* 领取优惠券的次数
*/
private
Integer
statFetchNum
;
// /**
// * 使用优惠券的次数
// */
// private Integer statUseNum;
// ========== 统计信息 END ==========
// ========== 优惠码 BEGIN ==========
/**
* 码类型
*
* 1-一卡一码(UNIQUE)
* 2-通用码(GENERAL)
*
* 【优惠码独有】 @see CouponCodeDO
*/
private
Integer
codeType
;
/**
* 通用码
*/
private
String
commonCode
;
// ========== 优惠码 BEGIN ==========
}
promotion-service-project/promotion-service-app/src/main/java/cn/iocoder/mall/promotionservice/dal/mysql/dataobject/recommend/ProductRecommendDO.java
0 → 100644
浏览文件 @
67f8b61f
package
cn
.
iocoder
.
mall
.
promotionservice
.
dal
.
mysql
.
dataobject
.
recommend
;
import
cn.iocoder.mall.mybatis.core.dataobject.DeletableDO
;
import
cn.iocoder.mall.promotion.api.enums.ProductRecommendTypeEnum
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* 商品推荐 DO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ProductRecommendDO
extends
DeletableDO
{
/**
* 编号
*/
private
Integer
id
;
/**
* 类型
*
* {@link ProductRecommendTypeEnum}
*/
private
Integer
type
;
/**
* 商品 Spu 编号
*/
private
Integer
productSpuId
;
// TODO 芋艿,商品 spu 名
/**
* 排序
*/
private
Integer
sort
;
/**
* 状态
*
* {@link cn.iocoder.common.framework.enums.CommonStatusEnum}
*/
private
Integer
status
;
/**
* 备注
*/
private
String
memo
;
}
promotion-service-project/promotion-service-app/src/main/java/cn/iocoder/mall/promotionservice/dal/mysql/mapper/activity/PromotionActivityMapper.java
0 → 100644
浏览文件 @
67f8b61f
package
cn
.
iocoder
.
mall
.
promotionservice
.
dal
.
mysql
.
mapper
.
activity
;
import
cn.iocoder.mall.promotionservice.dal.mysql.dataobject.activity.PromotionActivityDO
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.Collection
;
import
java.util.List
;
@Repository
public
interface
PromotionActivityMapper
{
PromotionActivityDO
selectById
(
@Param
(
"id"
)
Integer
id
);
List
<
PromotionActivityDO
>
selectListByStatus
(
@Param
(
"statuses"
)
Collection
<
Integer
>
statuses
);
void
insert
(
PromotionActivityDO
activity
);
List
<
PromotionActivityDO
>
selectListByPage
(
@Param
(
"title"
)
String
title
,
@Param
(
"activityType"
)
Integer
activityType
,
@Param
(
"statuses"
)
Collection
<
Integer
>
statuses
,
@Param
(
"offset"
)
Integer
offset
,
@Param
(
"limit"
)
Integer
limit
);
Integer
selectCountByPage
(
@Param
(
"title"
)
String
title
,
@Param
(
"activityType"
)
Integer
activityType
,
@Param
(
"statuses"
)
Collection
<
Integer
>
statuses
);
}
promotion-service-project/promotion-service-app/src/main/java/cn/iocoder/mall/promotionservice/dal/mysql/mapper/banner/BannerMapper.java
0 → 100644
浏览文件 @
67f8b61f
package
cn
.
iocoder
.
mall
.
promotionservice
.
dal
.
mysql
.
mapper
.
banner
;
import
cn.iocoder.mall.promotionservice.dal.mysql.dataobject.banner.BannerDO
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
interface
BannerMapper
{
BannerDO
selectById
(
@Param
(
"id"
)
Integer
id
);
List
<
BannerDO
>
selectListByStatus
(
@Param
(
"status"
)
Integer
status
);
List
<
BannerDO
>
selectListByTitleLike
(
@Param
(
"title"
)
String
title
,
@Param
(
"offset"
)
Integer
offset
,
@Param
(
"limit"
)
Integer
limit
);
Integer
selectCountByTitleLike
(
@Param
(
"title"
)
String
title
);
void
insert
(
BannerDO
bannerDO
);
int
update
(
BannerDO
bannerDO
);
}
\ No newline at end of file
promotion-service-project/promotion-service-app/src/main/java/cn/iocoder/mall/promotionservice/dal/mysql/mapper/coupon/CouponCardMapper.java
0 → 100644
浏览文件 @
67f8b61f
package
cn
.
iocoder
.
mall
.
promotionservice
.
dal
.
mysql
.
mapper
.
coupon
;
import
cn.iocoder.mall.promotionservice.dal.mysql.dataobject.coupon.CouponCardDO
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
interface
CouponCardMapper
{
CouponCardDO
selectById
(
@Param
(
"id"
)
Integer
id
);
List
<
CouponCardDO
>
selectListByUserIdAndStatus
(
@Param
(
"userId"
)
Integer
userId
,
@Param
(
"status"
)
Integer
status
);
List
<
CouponCardDO
>
selectListByPage
(
@Param
(
"userId"
)
Integer
userId
,
@Param
(
"status"
)
Integer
status
,
@Param
(
"offset"
)
Integer
offset
,
@Param
(
"limit"
)
Integer
limit
);
Integer
selectCountByPage
(
@Param
(
"userId"
)
Integer
userId
,
@Param
(
"status"
)
Integer
status
);
int
selectCountByUserIdAndTemplateId
(
@Param
(
"userId"
)
Integer
userId
,
@Param
(
"templateId"
)
Integer
templateId
);
void
insert
(
CouponCardDO
couponCardDO
);
int
update
(
CouponCardDO
couponCardDO
);
int
updateByIdAndStatus
(
@Param
(
"id"
)
Integer
id
,
@Param
(
"status"
)
Integer
status
,
@Param
(
"updateObj"
)
CouponCardDO
updateObj
);
}
promotion-service-project/promotion-service-app/src/main/java/cn/iocoder/mall/promotionservice/dal/mysql/mapper/coupon/CouponTemplateMapper.java
0 → 100644
浏览文件 @
67f8b61f
package
cn
.
iocoder
.
mall
.
promotionservice
.
dal
.
mysql
.
mapper
.
coupon
;
import
cn.iocoder.mall.promotionservice.dal.mysql.dataobject.coupon.CouponTemplateDO
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.Collection
;
import
java.util.List
;
@Repository
public
interface
CouponTemplateMapper
{
CouponTemplateDO
selectById
(
@Param
(
"id"
)
Integer
id
);
List
<
CouponTemplateDO
>
selectListByIds
(
@Param
(
"ids"
)
Collection
<
Integer
>
ids
);
List
<
CouponTemplateDO
>
selectListByPage
(
@Param
(
"type"
)
Integer
type
,
@Param
(
"title"
)
String
title
,
@Param
(
"status"
)
Integer
status
,
@Param
(
"preferentialType"
)
Integer
preferentialType
,
@Param
(
"offset"
)
Integer
offset
,
@Param
(
"limit"
)
Integer
limit
);
Integer
selectCountByPage
(
@Param
(
"type"
)
Integer
type
,
@Param
(
"title"
)
String
title
,
@Param
(
"status"
)
Integer
status
,
@Param
(
"preferentialType"
)
Integer
preferentialType
);
void
insert
(
CouponTemplateDO
couponTemplate
);
int
update
(
CouponTemplateDO
couponTemplate
);
int
updateStatFetchNumIncr
(
@Param
(
"id"
)
Integer
id
);
}
promotion-service-project/promotion-service-app/src/main/java/cn/iocoder/mall/promotionservice/dal/mysql/mapper/recommend/ProductRecommendMapper.java
0 → 100644
浏览文件 @
67f8b61f
package
cn
.
iocoder
.
mall
.
promotionservice
.
dal
.
mysql
.
mapper
.
recommend
;
import
cn.iocoder.mall.promotionservice.dal.mysql.dataobject.recommend.ProductRecommendDO
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
interface
ProductRecommendMapper
{
ProductRecommendDO
selectById
(
@Param
(
"id"
)
Integer
id
);
ProductRecommendDO
selectByProductSpuIdAndType
(
@Param
(
"productSpuId"
)
Integer
productSpuId
,
@Param
(
"type"
)
Integer
type
);
List
<
ProductRecommendDO
>
selectListByTypeAndStatus
(
@Param
(
"type"
)
Integer
type
,
@Param
(
"status"
)
Integer
status
);
List
<
ProductRecommendDO
>
selectPageByType
(
@Param
(
"type"
)
Integer
type
,
@Param
(
"offset"
)
Integer
offset
,
@Param
(
"limit"
)
Integer
limit
);
Integer
selectCountByType
(
@Param
(
"type"
)
Integer
type
);
void
insert
(
ProductRecommendDO
bannerDO
);
int
update
(
ProductRecommendDO
bannerDO
);
}
\ No newline at end of file
promotion-service-project/promotion-service-app/src/main/java/cn/iocoder/mall/promotionservice/service/activity/PromotionActivityService.java
0 → 100644
浏览文件 @
67f8b61f
package
cn
.
iocoder
.
mall
.
promotionservice
.
service
.
activity
;
import
cn.iocoder.common.framework.exception.util.ServiceExceptionUtil
;
import
cn.iocoder.mall.promotion.api.enums.PromotionActivityTypeEnum
;
import
cn.iocoder.mall.promotion.api.enums.RangeTypeEnum
;
import
cn.iocoder.mall.promotionservice.convert.activity.PromotionActivityConvert
;
import
cn.iocoder.mall.promotionservice.dal.mysql.dataobject.activity.PromotionActivityDO
;
import
cn.iocoder.mall.promotionservice.dal.mysql.mapper.activity.PromotionActivityMapper
;
import
cn.iocoder.mall.promotionservice.service.activity.bo.PromotionActivityPageBO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.Assert
;
import
org.springframework.validation.annotation.Validated
;
import
javax.validation.Valid
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.Iterator
;
import
java.util.List
;
@Service
@Validated
public
class
PromotionActivityService
{
@Autowired
private
PromotionActivityMapper
promotionActivityMapper
;
public
List
<
PromotionActivityDO
>
getPromotionActivityListBySpuId
(
Integer
spuId
,
Collection
<
Integer
>
activityStatuses
)
{
return
this
.
getPromotionActivityListBySpuIds
(
Collections
.
singleton
(
spuId
),
activityStatuses
);
}
public
List
<
PromotionActivityDO
>
getPromotionActivityListBySpuIds
(
Collection
<
Integer
>
spuIds
,
Collection
<
Integer
>
activityStatuses
)
{
if
(
spuIds
.
isEmpty
()
||
activityStatuses
.
isEmpty
())
{
return
Collections
.
emptyList
();
}
// 查询指定状态的促销活动
List
<
PromotionActivityDO
>
activityList
=
promotionActivityMapper
.
selectListByStatus
(
activityStatuses
);
if
(
activityList
.
isEmpty
())
{
return
Collections
.
emptyList
();
}
// 匹配商品
for
(
Iterator
<
PromotionActivityDO
>
iterator
=
activityList
.
iterator
();
iterator
.
hasNext
();)
{
PromotionActivityDO
activity
=
iterator
.
next
();
boolean
matched
=
false
;
for
(
Integer
spuId
:
spuIds
)
{
if
(
PromotionActivityTypeEnum
.
TIME_LIMITED_DISCOUNT
.
getValue
().
equals
(
activity
.
getActivityType
()))
{
matched
=
isSpuMatchTimeLimitDiscount
(
spuId
,
activity
);
}
else
if
(
PromotionActivityTypeEnum
.
FULL_PRIVILEGE
.
getValue
().
equals
(
activity
.
getActivityType
()))
{
matched
=
isSpuMatchFullPrivilege
(
spuId
,
activity
);
}
if
(
matched
)
{
break
;
}
}
// 不匹配,则进行移除
if
(!
matched
)
{
iterator
.
remove
();
}
else
{
// 匹配,则做一些后续的处理
// 如果是限时折扣,移除不在 spuId 数组中的折扣规则
if
(
PromotionActivityTypeEnum
.
TIME_LIMITED_DISCOUNT
.
getValue
().
equals
(
activity
.
getActivityType
()))
{
activity
.
getTimeLimitedDiscount
().
getItems
().
removeIf
(
item
->
!
spuIds
.
contains
(
item
.
getSpuId
()));
}
}
}
// 返回最终结果
return
activityList
;
}
public
PromotionActivityPageBO
getPromotionActivityPage
(
Integer
pageNo
,
Integer
pageSize
,
String
title
,
Integer
activityType
,
Collection
<
Integer
>
statuses
)
{
PromotionActivityPageBO
promotionActivityPageBO
=
new
PromotionActivityPageBO
();
// 查询分页数据
int
offset
=
(
pageNo
-
1
)
*
pageSize
;
promotionActivityPageBO
.
setList
(
PromotionActivityConvert
.
INSTANCE
.
convertToRespDTO
(
promotionActivityMapper
.
selectListByPage
(
title
,
activityType
,
statuses
,
offset
,
pageSize
)));
// 查询分页总数
promotionActivityPageBO
.
setTotal
(
promotionActivityMapper
.
selectCountByPage
(
title
,
activityType
,
statuses
));
return
promotionActivityPageBO
;
}
private
boolean
isSpuMatchTimeLimitDiscount
(
Integer
spuId
,
PromotionActivityDO
activity
)
{
Assert
.
isTrue
(
PromotionActivityTypeEnum
.
TIME_LIMITED_DISCOUNT
.
getValue
().
equals
(
activity
.
getActivityType
()),
"传入的必须的促销活动必须是限时折扣"
);
return
activity
.
getTimeLimitedDiscount
().
getItems
().
stream
()
.
anyMatch
(
item
->
spuId
.
equals
(
item
.
getSpuId
()));
}
private
boolean
isSpuMatchFullPrivilege
(
Integer
spuId
,
PromotionActivityDO
activity
)
{
Assert
.
isTrue
(
PromotionActivityTypeEnum
.
FULL_PRIVILEGE
.
getValue
().
equals
(
activity
.
getActivityType
()),
"传入的必须的促销活动必须是满减送"
);
PromotionActivityDO
.
FullPrivilege
fullPrivilege
=
activity
.
getFullPrivilege
();
if
(
RangeTypeEnum
.
ALL
.
getValue
().
equals
(
fullPrivilege
.
getRangeType
()))
{
return
true
;
}
else
if
(
RangeTypeEnum
.
PRODUCT_INCLUDE_PART
.
getValue
().
equals
(
fullPrivilege
.
getRangeType
()))
{
return
fullPrivilege
.
getRangeValues
().
contains
(
spuId
);
}
else
{
throw
new
IllegalArgumentException
(
String
.
format
(
"促销活动(%s) 可用范围的类型是不正确"
,
activity
.
toString
()));
}
}
}
promotion-service-project/promotion-service-app/src/main/java/cn/iocoder/mall/promotionservice/service/activity/bo/PromotionActivityBO.java
0 → 100644
浏览文件 @
67f8b61f
package
cn
.
iocoder
.
mall
.
promotionservice
.
service
.
activity
.
bo
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.List
;
@Data
@Accessors
(
chain
=
true
)
public
class
PromotionActivityBO
implements
Serializable
{
/**
* 活动编号
*/
private
Integer
id
;
/**
* 活动标题
*/
private
String
title
;
/**
* 活动类型
*
* 参见 {@link cn.iocoder.mall.promotion.api.enums.PromotionActivityTypeEnum} 枚举
*/
private
Integer
activityType
;
/**
* 活动状态
*
* 参见 {@link cn.iocoder.mall.promotion.api.enums.PromotionActivityStatusEnum} 枚举
*/
private
Integer
status
;
/**
* 开始时间
*/
private
Date
startTime
;
/**
* 结束时间
*/
private
Date
endTime
;
/**
* 限制折扣
*/
private
TimeLimitedDiscount
timeLimitedDiscount
;
/**
* 满减送
*/
private
FullPrivilege
fullPrivilege
;
/**
* 限时折扣
*/
@Data
@Accessors
(
chain
=
true
)
public
static
class
TimeLimitedDiscount
implements
Serializable
{
/**
* 商品折扣
*/
@Data
@Accessors
(
chain
=
true
)
public
static
class
Item
implements
Serializable
{
/**
* 商品 SPU 编号
*/
private
Integer
spuId
;
/**
* 优惠类型
*/
private
Integer
preferentialType
;
/**
* 优惠值
*/
private
Integer
preferentialValue
;
}
/**
* 每人每种限购多少
*
* 当 quota = 0 时,表示不限购
*/
private
Integer
quota
;
/**
* 商品折扣数组
*/
private
List
<
Item
>
items
;
}
/**
* 满减送
*/
@Data
@Accessors
(
chain
=
true
)
public
static
class
FullPrivilege
implements
Serializable
{
/**
* 优惠
*/
@Data
@Accessors
(
chain
=
true
)
public
static
class
Privilege
implements
Serializable
{
/**
* 满足类型
*
* 1 - 金额
* 2 - 件数
*/
private
Integer
meetType
;
/**
* 满足值
*/
private
Integer
meetValue
;
/**
* 优惠类型
*/
private
Integer
preferentialType
;
/**
* 优惠值
*/
private
Integer
preferentialValue
;
}
/**
* 可用范围的类型
*
* 参见 {@link cn.iocoder.mall.promotion.api.enums.RangeTypeEnum} 枚举
* 暂时只用 “所有可用” + “PRODUCT_INCLUDE_PRT”
*/
private
Integer
rangeType
;
/**
* 指定可用商品列表
*/
private
List
<
Integer
>
rangeValues
;
/**
* 是否循环
*/
private
Boolean
cycled
;
/**
* 优惠数组
*/
private
List
<
Privilege
>
privileges
;
}
}
promotion-service-project/promotion-service-app/src/main/java/cn/iocoder/mall/promotionservice/service/activity/bo/PromotionActivityPageBO.java
0 → 100644
浏览文件 @
67f8b61f
package
cn
.
iocoder
.
mall
.
promotionservice
.
service
.
activity
.
bo
;
import
cn.iocoder.mall.promotion.api.rpc.activity.dto.PromotionActivityRespDTO
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.List
;
/**
* 促销活动分页 BO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
PromotionActivityPageBO
{
/**
* PromotionActivityBO 数组
*/
private
List
<
PromotionActivityRespDTO
>
list
;
/**
* 总量
*/
private
Integer
total
;
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论