Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop
# Conflicts: # framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java
This commit is contained in:
commit
bb171f6e23
651
deploy-api.yml
Normal file
651
deploy-api.yml
Normal file
@ -0,0 +1,651 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: lilishop-service
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: buyer-api-service
|
||||
namespace: lilishop-service
|
||||
labels:
|
||||
app.kubernetes.io/name: buyer-api-service
|
||||
app.kubernetes.io/instance: api
|
||||
app.kubernetes.io/version: "4.2.4.1"
|
||||
app.kubernetes.io/component: api
|
||||
app.kubernetes.io/part-of: lilishop
|
||||
tier: "api-service"
|
||||
spec:
|
||||
type: NodePort
|
||||
ports:
|
||||
- name: "8888"
|
||||
nodePort: 30888
|
||||
port: 8888
|
||||
targetPort: buyer8888
|
||||
selector:
|
||||
lilishop.service: buyer-api
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: common-api-service
|
||||
namespace: lilishop-service
|
||||
labels:
|
||||
app.kubernetes.io/name: common-api-service
|
||||
app.kubernetes.io/instance: api
|
||||
app.kubernetes.io/version: "4.2.4.1"
|
||||
app.kubernetes.io/component: api
|
||||
app.kubernetes.io/part-of: lilishop
|
||||
tier: "api-service"
|
||||
spec:
|
||||
type: NodePort
|
||||
ports:
|
||||
- name: "8890"
|
||||
nodePort: 30890
|
||||
port: 8890
|
||||
targetPort: common8890
|
||||
selector:
|
||||
lilishop.service: common-api
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: seller-api-service
|
||||
namespace: lilishop-service
|
||||
labels:
|
||||
app.kubernetes.io/name: seller-api-service
|
||||
app.kubernetes.io/instance: api
|
||||
app.kubernetes.io/version: "4.2.4.1"
|
||||
app.kubernetes.io/component: api
|
||||
app.kubernetes.io/part-of: lilishop
|
||||
tier: "api-service"
|
||||
spec:
|
||||
type: NodePort
|
||||
ports:
|
||||
- name: "8889"
|
||||
nodePort: 30889
|
||||
port: 8889
|
||||
targetPort: seller8889
|
||||
selector:
|
||||
lilishop.service: seller-api
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: manager-api-service
|
||||
namespace: lilishop-service
|
||||
labels:
|
||||
app.kubernetes.io/name: manager-api-service
|
||||
app.kubernetes.io/instance: api
|
||||
app.kubernetes.io/version: "4.2.4.1"
|
||||
app.kubernetes.io/component: api
|
||||
app.kubernetes.io/part-of: lilishop
|
||||
tier: "api-service"
|
||||
spec:
|
||||
type: NodePort
|
||||
ports:
|
||||
- name: "8887"
|
||||
nodePort: 30887
|
||||
port: 8887
|
||||
targetPort: manager8887
|
||||
selector:
|
||||
lilishop.service: manager-api
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: api-config
|
||||
namespace: lilishop-service
|
||||
labels:
|
||||
app.kubernetes.io/name: mysql-db-config
|
||||
app.kubernetes.io/instance: mysql-single
|
||||
app.kubernetes.io/version: "8.0.28"
|
||||
app.kubernetes.io/component: database
|
||||
app.kubernetes.io/part-of: lilishop
|
||||
data:
|
||||
application.yml: |
|
||||
server:
|
||||
servlet:
|
||||
context-path: /
|
||||
|
||||
tomcat:
|
||||
uri-encoding: UTF-8
|
||||
threads:
|
||||
min-spare: 50
|
||||
max: 1000
|
||||
|
||||
# 与Spring Boot 2一样,默认情况下,大多数端点都不通过http公开,我们公开了所有端点。对于生产,您应该仔细选择要公开的端点。
|
||||
management:
|
||||
# health:
|
||||
# elasticsearch:
|
||||
# enabled: false
|
||||
# datasource:
|
||||
# enabled: false
|
||||
endpoints:
|
||||
web:
|
||||
exposure:
|
||||
include: '*'
|
||||
spring:
|
||||
# 要在其中注册的Spring Boot Admin Server的URL。
|
||||
boot:
|
||||
admin:
|
||||
client:
|
||||
url: http://192.168.0.116:8000
|
||||
cache:
|
||||
type: redis
|
||||
# Redis
|
||||
redis:
|
||||
host: redis-service.lilishop-middleware
|
||||
port: 6379
|
||||
password: lilishop
|
||||
lettuce:
|
||||
pool:
|
||||
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
||||
max-active: 200
|
||||
# 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
|
||||
max-wait: 20
|
||||
# 连接池中的最大空闲连接 默认 8
|
||||
max-idle: 10
|
||||
# 连接池中的最小空闲连接 默认 8
|
||||
min-idle: 8
|
||||
# 文件大小上传配置
|
||||
servlet:
|
||||
multipart:
|
||||
max-file-size: 20MB
|
||||
max-request-size: 20MB
|
||||
jackson:
|
||||
time-zone: GMT+8
|
||||
serialization:
|
||||
#关闭jackson 对json做解析
|
||||
fail-on-empty-beans: false
|
||||
|
||||
shardingsphere:
|
||||
datasource:
|
||||
# 数据库名称,可自定义,可以为多个,以逗号隔开,每个在这里定义的库,都要在下面定义连接属性
|
||||
names: default-datasource
|
||||
default-datasource:
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://mysql.lilishop-middleware:3306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||
username: root
|
||||
password: lilishop
|
||||
maxActive: 50
|
||||
initialSize: 20
|
||||
maxWait: 60000
|
||||
minIdle: 5
|
||||
timeBetweenEvictionRunsMillis: 60000
|
||||
minEvictableIdleTimeMillis: 300000
|
||||
validationQuery: SELECT 1 FROM DUAL
|
||||
testWhileIdle: true
|
||||
testOnBorrow: false
|
||||
testOnReturn: false
|
||||
#是否缓存preparedStatement,也就是PSCache。在mysql下建议关闭。 PSCache对支持游标的数据库性能提升巨大,比如说oracle。
|
||||
poolPreparedStatements: false
|
||||
#要启用PSCache,-1为关闭 必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true 可以把这个数值配置大一些,比如说100
|
||||
maxOpenPreparedStatements: -1
|
||||
#配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
|
||||
filters: stat,wall,log4j2
|
||||
#通过connectProperties属性来打开mergeSql功能;慢SQL记录
|
||||
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
|
||||
#合并多个DruidDataSource的监控数据
|
||||
useGlobalDataSourceStat: true
|
||||
loginUsername: druid
|
||||
loginPassword: druid
|
||||
# sharding:
|
||||
# default-data-source-name: default-datasource
|
||||
# #需要拆分的表,可以设置多个 在 li_order 级别即可
|
||||
# tables:
|
||||
# #需要进行分表的逻辑表名
|
||||
# li_order:
|
||||
# #实际的表结点,下面代表的是li_order_为开头的所有表,如果能确定表的范围例如按月份分表,这里的写法是data2020.li_order_$->{2020..2021}_$->{01..12} 表示例如 li_order_2020_01 li_order_2020_03 li_order_2021_01
|
||||
# actual-data-nodes: data2020.li_order_$->{2019..2021}_$->{01..12}
|
||||
# table-strategy:
|
||||
# # 分表策略,根据创建日期
|
||||
# standard:
|
||||
# sharding-column: create_time
|
||||
# #分表策略
|
||||
# precise-algorithm-class-name: cn.lili.mybatis.sharding.CreateTimeShardingTableAlgorithm
|
||||
# #范围查询实现
|
||||
# range-algorithm-class-name: cn.lili.mybatis.sharding.CreateTimeShardingTableAlgorithm
|
||||
props:
|
||||
#是否打印逻辑SQL语句和实际SQL语句,建议调试时打印,在生产环境关闭
|
||||
sql:
|
||||
show: true
|
||||
|
||||
# 忽略鉴权url
|
||||
ignored:
|
||||
urls:
|
||||
- /editor-app/**
|
||||
- /actuator**
|
||||
- /actuator/**
|
||||
- /MP_verify_qSyvBPhDsPdxvOhC.txt
|
||||
- /weixin/**
|
||||
- /source/**
|
||||
- /store/passport/login/**
|
||||
- /store/passport/login/refresh/**
|
||||
- /common/common/slider/**
|
||||
- /common/common/sms/**
|
||||
- /buyer/payment/cashier/**
|
||||
- /buyer/other/pageData/**
|
||||
- /buyer/other/article/**
|
||||
- /buyer/goods/**
|
||||
- /buyer/store/**
|
||||
- /buyer/passport/connect/**
|
||||
- /buyer/members/**
|
||||
- /buyer/passport/member/**
|
||||
- /buyer/passport/member/refresh/**
|
||||
- /buyer/promotion/pintuan/**
|
||||
- /buyer/promotion/seckill/**
|
||||
- /buyer/promotion/pointsGoods/**
|
||||
- /buyer/promotion/coupon
|
||||
- /buyer/member/evaluation/**/goodsEvaluation
|
||||
- /buyer/member/evaluation/**/evaluationNumber
|
||||
- /buyer/other/appVersion/**
|
||||
- /buyer/broadcast/studio/**
|
||||
- /manager/passport/user/login
|
||||
- /manager/passport/user/refresh/**
|
||||
- /manager/other/elasticsearch
|
||||
- /manager/other/customWords
|
||||
- /druid/**
|
||||
- /swagger-ui.html
|
||||
- /doc.html
|
||||
- /swagger-resources/**
|
||||
- /swagger/**
|
||||
- /webjars/**
|
||||
- /v2/api-docs**
|
||||
- /configuration/ui
|
||||
- /boot-admin
|
||||
- /manager/promotion/seckill/init
|
||||
- /**/*.js
|
||||
- /**/*.css
|
||||
- /**/*.png
|
||||
- /**/*.ico
|
||||
|
||||
# Swagger界面内容配置
|
||||
swagger:
|
||||
title: lilishop API接口文档
|
||||
description: lilishop Api Documentation
|
||||
version: 4.2.2
|
||||
termsOfServiceUrl: https://pickmall.cn
|
||||
contact:
|
||||
name: lili
|
||||
url: https://pickmall.cn
|
||||
email: admin@pickmall.com
|
||||
|
||||
# Mybatis-plus
|
||||
mybatis-plus:
|
||||
mapper-locations: classpath*:mapper/*.xml
|
||||
configuration:
|
||||
#缓存开启
|
||||
cache-enabled: true
|
||||
#日志
|
||||
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||
|
||||
# 日志
|
||||
logging:
|
||||
# 输出级别
|
||||
level:
|
||||
cn.lili: info
|
||||
# org.hibernate: debug
|
||||
# org.springframework: debug
|
||||
file:
|
||||
# 指定路径
|
||||
path: logs
|
||||
logback:
|
||||
rollingpolicy:
|
||||
# 最大保存天数
|
||||
max-history: 7
|
||||
# 每个文件最大大小
|
||||
max-file-size: 5MB
|
||||
#加密参数
|
||||
jasypt:
|
||||
encryptor:
|
||||
password: lili
|
||||
|
||||
|
||||
lili:
|
||||
#验证码设置
|
||||
verification-code:
|
||||
#图形验证码有效时间 秒 包含滑块验证码有效时间, 以及验证通过之后,缓存中存储的验证结果有效时间
|
||||
effectiveTime: 300
|
||||
#水印
|
||||
watermark: LILI-SHOP
|
||||
#干扰项数量 最大2 默认0
|
||||
interfereNum: 1
|
||||
#允许误差像素
|
||||
faultTolerant: 3
|
||||
#短信模版配置
|
||||
sms:
|
||||
#登录
|
||||
LOGIN: SMS_205755300
|
||||
#注册
|
||||
REGISTER: SMS_205755298
|
||||
#找回密码
|
||||
FIND_USER: SMS_205755301
|
||||
#设置密码
|
||||
UPDATE_PASSWORD: SMS_205755297
|
||||
#支付密码
|
||||
WALLET_PASSWORD: SMS_205755301
|
||||
system:
|
||||
isDemoSite: false
|
||||
isTestModel: true
|
||||
# 脱敏级别:
|
||||
# 0:不做脱敏处理
|
||||
# 1:管理端用户手机号等信息脱敏
|
||||
# 2:商家端信息脱敏(为2时,表示管理端,商家端同时脱敏)
|
||||
sensitiveLevel: 1
|
||||
|
||||
statistics:
|
||||
# 在线人数统计 X 小时。这里设置48,即统计过去48小时每小时在线人数
|
||||
onlineMember: 48
|
||||
# 当前在线人数刷新时间间隔,单位秒,设置为600,则每10分钟刷新一次
|
||||
currentOnlineUpdate: 600
|
||||
#qq lbs 申请
|
||||
lbs:
|
||||
key: 4BYBZ-7MT6S-PUAOA-6BNWL-FJUD7-UUFXT
|
||||
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
||||
#域名
|
||||
domain:
|
||||
pc: http://192.168.0.116:8888
|
||||
wap: http://192.168.0.116:8888
|
||||
seller: http://192.168.0.116:8888
|
||||
admin: http://192.168.0.116:8888
|
||||
#api地址
|
||||
api:
|
||||
buyer: http://192.168.0.116:8888
|
||||
base: http://192.168.0.116:8888
|
||||
manager: http://192.168.0.116:8888
|
||||
seller: http://192.168.0.116:8888
|
||||
|
||||
# jwt 细节设定
|
||||
jwt-setting:
|
||||
# token过期时间(分钟)
|
||||
tokenExpireTime: 30
|
||||
|
||||
# 使用Spring @Cacheable注解失效时间
|
||||
cache:
|
||||
# 过期时间 单位秒 永久不过期设为-1
|
||||
timeout: 1500
|
||||
#多线程配置
|
||||
thread:
|
||||
corePoolSize: 5
|
||||
maxPoolSize: 50
|
||||
queueCapacity: 50
|
||||
data:
|
||||
elasticsearch:
|
||||
cluster-name: elasticsearch
|
||||
cluster-nodes: elasticsearch.lilishop-middleware:9200
|
||||
index:
|
||||
number-of-replicas: 0
|
||||
number-of-shards: 3
|
||||
index-prefix: lili
|
||||
schema: http
|
||||
# account:
|
||||
# username: elastic
|
||||
# password: LiLiShopES
|
||||
|
||||
logstash:
|
||||
server: logstash-service.lilishop-middleware:4560
|
||||
rocketmq:
|
||||
promotion-topic: lili_promotion_topic
|
||||
promotion-group: lili_promotion_group
|
||||
msg-ext-topic: lili_msg_topic
|
||||
msg-ext-group: lili_msg_group
|
||||
goods-topic: lili_goods_topic
|
||||
goods-group: lili_goods_group
|
||||
order-topic: lili_order_topic
|
||||
order-group: lili_order_group
|
||||
member-topic: lili_member_topic
|
||||
member-group: lili_member_group
|
||||
other-topic: lili_other_topic
|
||||
other-group: lili_other_group
|
||||
notice-topic: lili_notice_topic
|
||||
notice-group: lili_notice_group
|
||||
notice-send-topic: lili_send_notice_topic
|
||||
notice-send-group: lili_send_notice_group
|
||||
after-sale-topic: lili_after_sale_topic
|
||||
after-sale-group: lili_after_sale_group
|
||||
rocketmq:
|
||||
name-server: rocketmq.lilishop-middleware:9876
|
||||
isVIPChannel: false
|
||||
producer:
|
||||
group: lili_group
|
||||
send-message-timeout: 30000
|
||||
|
||||
xxl:
|
||||
job:
|
||||
admin:
|
||||
addresses: http://xxl-job-service.lilishop-middleware:9001/xxl-job-admin
|
||||
executor:
|
||||
appname: xxl-job-executor-lilishop
|
||||
address:
|
||||
ip:
|
||||
port: 8891
|
||||
logpath: ./xxl-job/executor
|
||||
logretentiondays: 7
|
||||
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: buyer-api
|
||||
namespace: lilishop-service
|
||||
labels:
|
||||
app.kubernetes.io/name: buyer-api-service
|
||||
app.kubernetes.io/instance: buyer-api
|
||||
app.kubernetes.io/version: "4.2.4.1"
|
||||
app.kubernetes.io/component: api
|
||||
app.kubernetes.io/part-of: lilishop
|
||||
tier: "api-service"
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
lilishop.service: buyer-api
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
lilishop.service: buyer-api
|
||||
spec:
|
||||
containers:
|
||||
- image: 192.168.0.108:31320/buyer-api:4.2.4.1
|
||||
name: buyer-api
|
||||
env:
|
||||
- name: TZ
|
||||
value: Asia/Shanghai
|
||||
- name: JAVA_OPTS
|
||||
value: -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m -Xms128m -Xmx256m -Xmn128m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC
|
||||
ports:
|
||||
- name: buyer8888
|
||||
containerPort: 8888
|
||||
volumeMounts:
|
||||
- mountPath: /application.yml
|
||||
name: application-yml
|
||||
subPath: application.yml
|
||||
restartPolicy: Always
|
||||
volumes:
|
||||
- configMap:
|
||||
name: api-config
|
||||
name: application-yml
|
||||
|
||||
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: common-api
|
||||
namespace: lilishop-service
|
||||
labels:
|
||||
app.kubernetes.io/name: common-api-service
|
||||
app.kubernetes.io/instance: common-api
|
||||
app.kubernetes.io/version: "4.2.4.1"
|
||||
app.kubernetes.io/component: api
|
||||
app.kubernetes.io/part-of: lilishop
|
||||
tier: "api-service"
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
lilishop.service: common-api
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
lilishop.service: common-api
|
||||
spec:
|
||||
containers:
|
||||
- image: 192.168.0.108:31320/common-api:4.2.4.1
|
||||
name: common-api
|
||||
env:
|
||||
- name: TZ
|
||||
value: Asia/Shanghai
|
||||
- name: JAVA_OPTS
|
||||
value: -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m -Xms128m -Xmx256m -Xmn128m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC
|
||||
ports:
|
||||
- name: common8890
|
||||
containerPort: 8890
|
||||
volumeMounts:
|
||||
- mountPath: /application.yml
|
||||
name: application-yml
|
||||
subPath: application.yml
|
||||
restartPolicy: Always
|
||||
volumes:
|
||||
- configMap:
|
||||
name: api-config
|
||||
name: application-yml
|
||||
|
||||
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: seller-api
|
||||
namespace: lilishop-service
|
||||
labels:
|
||||
app.kubernetes.io/name: seller-api-service
|
||||
app.kubernetes.io/instance: seller-api
|
||||
app.kubernetes.io/version: "4.2.4.1"
|
||||
app.kubernetes.io/component: api
|
||||
app.kubernetes.io/part-of: lilishop
|
||||
tier: "api-service"
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
lilishop.service: seller-api
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
lilishop.service: seller-api
|
||||
spec:
|
||||
containers:
|
||||
- image: 192.168.0.108:31320/seller-api:4.2.4.1
|
||||
name: seller-api
|
||||
env:
|
||||
- name: TZ
|
||||
value: Asia/Shanghai
|
||||
- name: JAVA_OPTS
|
||||
value: -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m -Xms128m -Xmx256m -Xmn128m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC
|
||||
ports:
|
||||
- name: seller8889
|
||||
containerPort: 8889
|
||||
volumeMounts:
|
||||
- mountPath: /application.yml
|
||||
name: application-yml
|
||||
subPath: application.yml
|
||||
restartPolicy: Always
|
||||
volumes:
|
||||
- configMap:
|
||||
name: api-config
|
||||
name: application-yml
|
||||
|
||||
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: manager-api
|
||||
namespace: lilishop-service
|
||||
labels:
|
||||
app.kubernetes.io/name: manager-api-service
|
||||
app.kubernetes.io/instance: manager-api
|
||||
app.kubernetes.io/version: "4.2.4.1"
|
||||
app.kubernetes.io/component: api
|
||||
app.kubernetes.io/part-of: lilishop
|
||||
tier: "api-service"
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
lilishop.service: manager-api
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
lilishop.service: manager-api
|
||||
spec:
|
||||
containers:
|
||||
- image: 192.168.0.108:31320/manager-api:4.2.4.1
|
||||
name: manager-api
|
||||
env:
|
||||
- name: TZ
|
||||
value: Asia/Shanghai
|
||||
- name: JAVA_OPTS
|
||||
value: -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m -Xms128m -Xmx256m -Xmn128m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC
|
||||
ports:
|
||||
- name: manager8887
|
||||
containerPort: 8887
|
||||
volumeMounts:
|
||||
- mountPath: /application.yml
|
||||
name: application-yml
|
||||
subPath: application.yml
|
||||
restartPolicy: Always
|
||||
volumes:
|
||||
- configMap:
|
||||
name: api-config
|
||||
name: application-yml
|
||||
|
||||
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: consumer
|
||||
namespace: lilishop-service
|
||||
labels:
|
||||
app.kubernetes.io/name: consumer-service
|
||||
app.kubernetes.io/instance: buyer-api
|
||||
app.kubernetes.io/version: "4.2.4.1"
|
||||
app.kubernetes.io/component: api
|
||||
app.kubernetes.io/part-of: lilishop
|
||||
tier: "api-service"
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
lilishop.service: consumer
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
lilishop.service: consumer
|
||||
spec:
|
||||
containers:
|
||||
- image: 192.168.0.108:31320/consumer:4.2.4.1
|
||||
name: consumer
|
||||
env:
|
||||
- name: TZ
|
||||
value: Asia/Shanghai
|
||||
- name: JAVA_OPTS
|
||||
value: -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m -Xms128m -Xmx256m -Xmn128m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC
|
||||
volumeMounts:
|
||||
- mountPath: /application.yml
|
||||
name: application-yml
|
||||
subPath: application.yml
|
||||
restartPolicy: Always
|
||||
volumes:
|
||||
- configMap:
|
||||
name: api-config
|
||||
name: application-yml
|
@ -21,9 +21,9 @@ public class TransactionCommitSendMQEvent extends ApplicationEvent {
|
||||
private final String tag;
|
||||
|
||||
@Getter
|
||||
private final String message;
|
||||
private final Object message;
|
||||
|
||||
public TransactionCommitSendMQEvent(Object source, String topic, String tag, String message) {
|
||||
public TransactionCommitSendMQEvent(Object source, String topic, String tag, Object message) {
|
||||
super(source);
|
||||
this.topic = topic;
|
||||
this.tag = tag;
|
||||
|
@ -8,7 +8,9 @@ import cn.lili.cache.CachePrefix;
|
||||
import cn.lili.common.context.ThreadContextHolder;
|
||||
import cn.lili.common.enums.ClientTypeEnum;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.event.TransactionCommitSendMQEvent;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.properties.RocketmqCustomProperties;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.security.token.Token;
|
||||
@ -29,11 +31,13 @@ import cn.lili.modules.system.entity.dto.connect.WechatConnectSetting;
|
||||
import cn.lili.modules.system.entity.dto.connect.dto.WechatConnectSettingItem;
|
||||
import cn.lili.modules.system.entity.enums.SettingEnum;
|
||||
import cn.lili.modules.system.service.SettingService;
|
||||
import cn.lili.rocketmq.tags.MemberTagsEnum;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@ -66,6 +70,14 @@ public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> impl
|
||||
private MemberTokenGenerate memberTokenGenerate;
|
||||
@Autowired
|
||||
private Cache cache;
|
||||
/**
|
||||
* RocketMQ 配置
|
||||
*/
|
||||
@Autowired
|
||||
private RocketmqCustomProperties rocketmqCustomProperties;
|
||||
|
||||
@Autowired
|
||||
private ApplicationEventPublisher applicationEventPublisher;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@ -235,6 +247,8 @@ public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> impl
|
||||
memberService.save(newMember);
|
||||
newMember = memberService.findByUsername(newMember.getUsername());
|
||||
bindMpMember(openId, unionId, newMember);
|
||||
// 发送会员注册信息
|
||||
applicationEventPublisher.publishEvent(new TransactionCommitSendMQEvent("new member register", rocketmqCustomProperties.getMemberTopic(), MemberTagsEnum.MEMBER_REGISTER.name(), newMember));
|
||||
return memberTokenGenerate.createToken(newMember, true);
|
||||
}
|
||||
|
||||
@ -262,9 +276,9 @@ public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> impl
|
||||
* 这样,微信小程序注册之后,其他app 公众号页面,都可以实现绑定自动登录功能
|
||||
* </p>
|
||||
*
|
||||
* @param openId 微信openid
|
||||
* @param unionId 微信unionid
|
||||
* @param member 会员
|
||||
* @param openId 微信openid
|
||||
* @param unionId 微信unionid
|
||||
* @param member 会员
|
||||
*/
|
||||
private void bindMpMember(String openId, String unionId, Member member) {
|
||||
|
||||
|
@ -82,6 +82,14 @@ public interface GoodsSkuService extends IService<GoodsSku> {
|
||||
*/
|
||||
GoodsSku getGoodsSkuByIdFromCache(String id);
|
||||
|
||||
/**
|
||||
* 从缓存中获取可参与促销商品
|
||||
*
|
||||
* @param skuId skuid
|
||||
* @return 商品详情
|
||||
*/
|
||||
GoodsSku getCanPromotionGoodsSkuByIdFromCache(String skuId);
|
||||
|
||||
/**
|
||||
* 获取商品sku详情
|
||||
*
|
||||
@ -143,7 +151,7 @@ public interface GoodsSkuService extends IService<GoodsSku> {
|
||||
/**
|
||||
* 分页查询商品sku信息
|
||||
*
|
||||
* @param page 分页参数
|
||||
* @param page 分页参数
|
||||
* @param queryWrapper 查询参数
|
||||
* @return 商品sku信息
|
||||
*/
|
||||
|
@ -22,6 +22,7 @@ import cn.lili.modules.goods.entity.dto.GoodsSearchParams;
|
||||
import cn.lili.modules.goods.entity.dto.GoodsSkuDTO;
|
||||
import cn.lili.modules.goods.entity.dto.GoodsSkuStockDTO;
|
||||
import cn.lili.modules.goods.entity.enums.GoodsAuthEnum;
|
||||
import cn.lili.modules.goods.entity.enums.GoodsSalesModeEnum;
|
||||
import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
|
||||
import cn.lili.modules.goods.entity.vos.GoodsSkuSpecVO;
|
||||
import cn.lili.modules.goods.entity.vos.GoodsSkuVO;
|
||||
@ -237,6 +238,15 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
|
||||
return goodsSku;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GoodsSku getCanPromotionGoodsSkuByIdFromCache(String skuId) {
|
||||
GoodsSku goodsSku = this.getGoodsSkuByIdFromCache(skuId);
|
||||
if (goodsSku != null && GoodsSalesModeEnum.WHOLESALE.name().equals(goodsSku.getSalesModel())) {
|
||||
throw new ServiceException(ResultCode.PROMOTION_GOODS_DO_NOT_JOIN_WHOLESALE, goodsSku.getGoodsName());
|
||||
}
|
||||
return goodsSku;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getGoodsSkuDetail(String goodsId, String skuId) {
|
||||
Map<String, Object> map = new HashMap<>(16);
|
||||
|
@ -8,6 +8,7 @@ import cn.lili.cache.CachePrefix;
|
||||
import cn.lili.common.context.ThreadContextHolder;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.SwitchEnum;
|
||||
import cn.lili.common.event.TransactionCommitSendMQEvent;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.properties.RocketmqCustomProperties;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
@ -35,7 +36,6 @@ import cn.lili.modules.store.entity.dos.Store;
|
||||
import cn.lili.modules.store.entity.enums.StoreStatusEnum;
|
||||
import cn.lili.modules.store.service.StoreService;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
||||
import cn.lili.rocketmq.tags.MemberTagsEnum;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
@ -43,8 +43,8 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -88,11 +88,9 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
||||
*/
|
||||
@Autowired
|
||||
private RocketmqCustomProperties rocketmqCustomProperties;
|
||||
/**
|
||||
* RocketMQ
|
||||
*/
|
||||
|
||||
@Autowired
|
||||
private RocketMQTemplate rocketMQTemplate;
|
||||
private ApplicationEventPublisher applicationEventPublisher;
|
||||
/**
|
||||
* 缓存
|
||||
*/
|
||||
@ -182,6 +180,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Token autoRegister(ConnectAuthUser authUser) {
|
||||
|
||||
if (CharSequenceUtil.isEmpty(authUser.getNickname())) {
|
||||
@ -225,6 +224,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Token mobilePhoneLogin(String mobilePhone) {
|
||||
QueryWrapper<Member> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("mobile", mobilePhone);
|
||||
@ -243,12 +243,13 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
||||
*
|
||||
* @param member
|
||||
*/
|
||||
private void registerHandler(Member member) {
|
||||
@Transactional
|
||||
public void registerHandler(Member member) {
|
||||
member.setId(SnowFlake.getIdStr());
|
||||
//保存会员
|
||||
this.save(member);
|
||||
String destination = rocketmqCustomProperties.getMemberTopic() + ":" + MemberTagsEnum.MEMBER_REGISTER.name();
|
||||
rocketMQTemplate.asyncSend(destination, member, RocketmqSendCallbackBuilder.commonCallback());
|
||||
// 发送会员注册信息
|
||||
applicationEventPublisher.publishEvent(new TransactionCommitSendMQEvent("new member register", rocketmqCustomProperties.getMemberTopic(), MemberTagsEnum.MEMBER_REGISTER.name(), member));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -288,10 +289,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
||||
throw new ServiceException(ResultCode.USER_NOT_LOGIN);
|
||||
}
|
||||
Member member = this.getById(tokenUser.getId());
|
||||
if (member.getPassword().equals(DEFAULT_PASSWORD)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return member.getPassword().equals(DEFAULT_PASSWORD);
|
||||
|
||||
}
|
||||
|
||||
@ -343,6 +341,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Token register(String userName, String password, String mobilePhone) {
|
||||
//检测会员信息
|
||||
checkMember(userName, mobilePhone);
|
||||
@ -350,8 +349,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
||||
Member member = new Member(userName, new BCryptPasswordEncoder().encode(password), mobilePhone);
|
||||
//注册成功后用户自动登录
|
||||
registerHandler(member);
|
||||
Token token = memberTokenGenerate.createToken(member, false);
|
||||
return token;
|
||||
return memberTokenGenerate.createToken(member, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -388,6 +386,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Member addMember(MemberAddDTO memberAddDTO) {
|
||||
|
||||
//检测会员信息
|
||||
@ -463,8 +462,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
||||
memberPointMessage.setPoint(point);
|
||||
memberPointMessage.setType(type);
|
||||
memberPointMessage.setMemberId(memberId);
|
||||
String destination = rocketmqCustomProperties.getMemberTopic() + ":" + MemberTagsEnum.MEMBER_POINT_CHANGE.name();
|
||||
rocketMQTemplate.asyncSend(destination, memberPointMessage, RocketmqSendCallbackBuilder.commonCallback());
|
||||
applicationEventPublisher.publishEvent(new TransactionCommitSendMQEvent("update member point", rocketmqCustomProperties.getMemberTopic(), MemberTagsEnum.MEMBER_POINT_CHANGE.name(), memberPointMessage));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -134,7 +134,7 @@ public class CheckDataRender implements CartRenderStep {
|
||||
cartSkuVO.setErrorMessage("商品库存不足,现有库存数量[" + dataSku.getQuantity() + "]");
|
||||
}
|
||||
//如果存在商品促销活动,则判定商品促销状态
|
||||
if (CollUtil.isNotEmpty(cartSkuVO.getNotFilterPromotionMap()) || Boolean.TRUE.equals(cartSkuVO.getGoodsSku().getPromotionFlag())) {
|
||||
if (!cartSkuVO.getCartType().equals(CartTypeEnum.POINTS) && (CollUtil.isNotEmpty(cartSkuVO.getNotFilterPromotionMap()) || Boolean.TRUE.equals(cartSkuVO.getGoodsSku().getPromotionFlag()))) {
|
||||
//获取当前最新的促销信息
|
||||
cartSkuVO.setPromotionMap(this.promotionGoodsService.getCurrentGoodsPromotion(cartSkuVO.getGoodsSku(), tradeDTO.getCartTypeEnum().name()));
|
||||
//设定商品价格
|
||||
|
@ -42,7 +42,7 @@ public class SystemLogVO implements Serializable {
|
||||
|
||||
@ApiModelProperty(value = "日志记录时间")
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@Field(type = FieldType.Date, format = DateFormat.basic_date_time)
|
||||
@Field(type = FieldType.Date, format = DateFormat.basic_date_time, fielddata = true)
|
||||
private Date createTime = new Date();
|
||||
|
||||
@ApiModelProperty(value = "请求用户")
|
||||
|
@ -291,7 +291,7 @@ public class CouponServiceImpl extends AbstractPromotionsServiceImpl<CouponMappe
|
||||
throw new ServiceException(ResultCode.COUPON_SCOPE_ERROR);
|
||||
}
|
||||
for (String id : split) {
|
||||
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(id);
|
||||
GoodsSku goodsSku = goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(id);
|
||||
if (goodsSku == null) {
|
||||
throw new ServiceException(ResultCode.GOODS_NOT_EXIST);
|
||||
}
|
||||
|
@ -120,7 +120,7 @@ public class KanjiaActivityGoodsServiceImpl extends AbstractPromotionsServiceImp
|
||||
* @return 商品sku
|
||||
*/
|
||||
private GoodsSku checkSkuExist(String skuId) {
|
||||
GoodsSku goodsSku = this.goodsSkuService.getGoodsSkuByIdFromCache(skuId);
|
||||
GoodsSku goodsSku = this.goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(skuId);
|
||||
if (goodsSku == null) {
|
||||
log.error("商品ID为" + skuId + "的商品不存在!");
|
||||
throw new ServiceException();
|
||||
@ -206,7 +206,7 @@ public class KanjiaActivityGoodsServiceImpl extends AbstractPromotionsServiceImp
|
||||
}
|
||||
KanjiaActivityGoodsDTO kanjiaActivityGoodsDTO = new KanjiaActivityGoodsDTO();
|
||||
BeanUtils.copyProperties(kanjiaActivityGoods, kanjiaActivityGoodsDTO);
|
||||
GoodsSku goodsSku = this.goodsSkuService.getGoodsSkuByIdFromCache(kanjiaActivityGoods.getSkuId());
|
||||
GoodsSku goodsSku = this.goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(kanjiaActivityGoods.getSkuId());
|
||||
if (goodsSku != null) {
|
||||
kanjiaActivityGoodsDTO.setGoodsSku(goodsSku);
|
||||
}
|
||||
@ -233,7 +233,7 @@ public class KanjiaActivityGoodsServiceImpl extends AbstractPromotionsServiceImp
|
||||
//获取砍价商品
|
||||
KanjiaActivityGoods kanJiaActivityGoods = this.getById(id);
|
||||
//获取商品SKU
|
||||
GoodsSku goodsSku = this.goodsSkuService.getGoodsSkuByIdFromCache(kanJiaActivityGoods.getSkuId());
|
||||
GoodsSku goodsSku = this.goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(kanJiaActivityGoods.getSkuId());
|
||||
//填写活动商品价格、剩余数量
|
||||
kanJiaActivityGoodsVO.setGoodsSku(goodsSku);
|
||||
kanJiaActivityGoodsVO.setStock(kanJiaActivityGoods.getStock());
|
||||
|
@ -115,7 +115,7 @@ public class KanjiaActivityServiceImpl extends ServiceImpl<KanJiaActivityMapper,
|
||||
}
|
||||
KanjiaActivity kanJiaActivity = new KanjiaActivity();
|
||||
//获取商品信息
|
||||
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(kanJiaActivityGoods.getSkuId());
|
||||
GoodsSku goodsSku = goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(kanJiaActivityGoods.getSkuId());
|
||||
if (goodsSku != null) {
|
||||
kanJiaActivity.setSkuId(kanJiaActivityGoods.getSkuId());
|
||||
kanJiaActivity.setGoodsName(goodsSku.getGoodsName());
|
||||
|
@ -297,7 +297,7 @@ public class PintuanServiceImpl extends AbstractPromotionsServiceImpl<PintuanMap
|
||||
if (pintuan.getPromotionGoodsList() != null && !pintuan.getPromotionGoodsList().isEmpty()) {
|
||||
List<PromotionGoods> promotionGoods = PromotionTools.promotionGoodsInit(pintuan.getPromotionGoodsList(), pintuan, PromotionTypeEnum.PINTUAN);
|
||||
for (PromotionGoods promotionGood : promotionGoods) {
|
||||
if (goodsSkuService.getGoodsSkuByIdFromCache(promotionGood.getSkuId()) == null) {
|
||||
if (goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(promotionGood.getSkuId()) == null) {
|
||||
log.error("商品[" + promotionGood.getGoodsName() + "]不存在或处于不可售卖状态!");
|
||||
throw new ServiceException("商品[" + promotionGood.getGoodsName() + "]不存在或处于不可售卖状态!");
|
||||
}
|
||||
|
@ -278,7 +278,7 @@ public class PointsGoodsServiceImpl extends AbstractPromotionsServiceImpl<Points
|
||||
* @return 商品sku
|
||||
*/
|
||||
private GoodsSku checkSkuExist(String skuId) {
|
||||
GoodsSku goodsSku = this.goodsSkuService.getGoodsSkuByIdFromCache(skuId);
|
||||
GoodsSku goodsSku = this.goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(skuId);
|
||||
if (goodsSku == null) {
|
||||
log.error("商品ID为" + skuId + "的商品不存在!");
|
||||
throw new ServiceException();
|
||||
|
@ -5,11 +5,8 @@ import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.common.enums.PromotionTypeEnum;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.modules.goods.entity.dos.GoodsSku;
|
||||
import cn.lili.modules.goods.entity.enums.GoodsSalesModeEnum;
|
||||
import cn.lili.modules.goods.entity.vos.GoodsVO;
|
||||
import cn.lili.modules.goods.service.GoodsService;
|
||||
import cn.lili.modules.goods.service.GoodsSkuService;
|
||||
@ -75,7 +72,7 @@ public class PromotionGoodsServiceImpl extends ServiceImpl<PromotionGoodsMapper,
|
||||
@Override
|
||||
public List<PromotionGoods> findSkuValidPromotion(String skuId, String storeIds) {
|
||||
|
||||
GoodsSku sku = goodsSkuService.getGoodsSkuByIdFromCache(skuId);
|
||||
GoodsSku sku = goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(skuId);
|
||||
if (sku == null) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
@ -316,40 +313,6 @@ public class PromotionGoodsServiceImpl extends ServiceImpl<PromotionGoodsMapper,
|
||||
return promotionMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean save(PromotionGoods entity) {
|
||||
this.checkGoodsSku(entity.getSkuId());
|
||||
return super.save(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean saveBatch(Collection<PromotionGoods> entityList) {
|
||||
for (PromotionGoods promotionGoods : entityList) {
|
||||
this.checkGoodsSku(promotionGoods.getSkuId());
|
||||
}
|
||||
return super.saveBatch(entityList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean saveOrUpdateBatch(Collection<PromotionGoods> entityList) {
|
||||
for (PromotionGoods promotionGoods : entityList) {
|
||||
this.checkGoodsSku(promotionGoods.getSkuId());
|
||||
}
|
||||
return super.saveOrUpdateBatch(entityList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查是否为不能参加促销活动的商品
|
||||
*
|
||||
* @param skuId 商品skuId
|
||||
*/
|
||||
private void checkGoodsSku(String skuId) {
|
||||
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(skuId);
|
||||
if (goodsSku != null && GoodsSalesModeEnum.WHOLESALE.name().equals(goodsSku.getSalesModel())) {
|
||||
throw new ServiceException(ResultCode.PROMOTION_GOODS_DO_NOT_JOIN_WHOLESALE, goodsSku.getGoodsName());
|
||||
}
|
||||
}
|
||||
|
||||
private void setGoodsPromotionInfo(GoodsSku dataSku, Map.Entry<String, Object> promotionInfo) {
|
||||
JSONObject promotionsObj = JSONUtil.parseObj(promotionInfo.getValue());
|
||||
PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams();
|
||||
|
@ -161,7 +161,7 @@ public class SeckillApplyServiceImpl extends ServiceImpl<SeckillApplyMapper, Sec
|
||||
List<PromotionGoods> promotionGoodsList = new ArrayList<>();
|
||||
for (SeckillApplyVO seckillApply : seckillApplyList) {
|
||||
//获取参与活动的商品信息
|
||||
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(seckillApply.getSkuId());
|
||||
GoodsSku goodsSku = goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(seckillApply.getSkuId());
|
||||
if (!goodsSku.getStoreId().equals(storeId)) {
|
||||
continue;
|
||||
}
|
||||
@ -262,7 +262,7 @@ public class SeckillApplyServiceImpl extends ServiceImpl<SeckillApplyMapper, Sec
|
||||
List<SeckillApply> list = this.list(queryWrapper).stream().filter(i -> i.getTimeLine() != null && seckill.getHours().contains(i.getTimeLine().toString())).collect(Collectors.toList());
|
||||
for (SeckillApply seckillApply : list) {
|
||||
//获取参与活动的商品信息
|
||||
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(seckillApply.getSkuId());
|
||||
GoodsSku goodsSku = goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(seckillApply.getSkuId());
|
||||
//获取促销商品
|
||||
PromotionGoods promotionGoods = this.setSeckillGoods(goodsSku, seckillApply, seckill);
|
||||
promotionGoodsList.add(promotionGoods);
|
||||
@ -373,7 +373,7 @@ public class SeckillApplyServiceImpl extends ServiceImpl<SeckillApplyMapper, Sec
|
||||
if (!seckillApplyList.isEmpty()) {
|
||||
List<SeckillApply> collect = seckillApplyList.stream().filter(i -> i.getTimeLine().equals(startTimeline) && i.getPromotionApplyStatus().equals(PromotionsApplyStatusEnum.PASS.name())).collect(Collectors.toList());
|
||||
for (SeckillApply seckillApply : collect) {
|
||||
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(seckillApply.getSkuId());
|
||||
GoodsSku goodsSku = goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(seckillApply.getSkuId());
|
||||
if (goodsSku != null) {
|
||||
SeckillGoodsVO goodsVO = new SeckillGoodsVO();
|
||||
BeanUtil.copyProperties(seckillApply, goodsVO);
|
||||
|
@ -11,7 +11,6 @@ import lombok.NoArgsConstructor;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 自定义分词
|
||||
@ -38,12 +37,12 @@ public class CustomWords extends BaseEntity {
|
||||
private String name;
|
||||
|
||||
|
||||
@ApiModelProperty(value = "是否禁用")
|
||||
@ApiModelProperty(value = "是否禁用: 0,禁用;1,不禁用")
|
||||
private Integer disabled;
|
||||
|
||||
|
||||
public CustomWords(String name) {
|
||||
this.name = name;
|
||||
this.disabled = 0;
|
||||
this.disabled = 1;
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
package cn.lili.modules.search.mapper;
|
||||
|
||||
import cn.lili.modules.search.entity.dos.CustomWords;
|
||||
import cn.lili.mybatis.mybatisplus.SpiceBaseMapper;
|
||||
import cn.lili.mybatis.mybatisplus.external.SpiceBaseMapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
|
@ -62,6 +62,12 @@ public interface CustomWordsService extends IService<CustomWords> {
|
||||
*/
|
||||
boolean deleteBathByName(List<String> names);
|
||||
|
||||
/**
|
||||
* 批量插入自定义分词
|
||||
*
|
||||
* @param customWordsList 自定义分词列表
|
||||
* @return 受影响行数
|
||||
*/
|
||||
long insertBatchCustomWords(List<CustomWords> customWordsList);
|
||||
|
||||
/**
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.lili.mybatis.mybatisplus;
|
||||
package cn.lili.mybatis.mybatisplus.external;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.lili.mybatis.mybatisplus;
|
||||
package cn.lili.mybatis.mybatisplus.external;
|
||||
|
||||
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
|
||||
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
|
Loading…
x
Reference in New Issue
Block a user