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;
|
private final String tag;
|
||||||
|
|
||||||
@Getter
|
@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);
|
super(source);
|
||||||
this.topic = topic;
|
this.topic = topic;
|
||||||
this.tag = tag;
|
this.tag = tag;
|
||||||
|
@ -8,7 +8,9 @@ import cn.lili.cache.CachePrefix;
|
|||||||
import cn.lili.common.context.ThreadContextHolder;
|
import cn.lili.common.context.ThreadContextHolder;
|
||||||
import cn.lili.common.enums.ClientTypeEnum;
|
import cn.lili.common.enums.ClientTypeEnum;
|
||||||
import cn.lili.common.enums.ResultCode;
|
import cn.lili.common.enums.ResultCode;
|
||||||
|
import cn.lili.common.event.TransactionCommitSendMQEvent;
|
||||||
import cn.lili.common.exception.ServiceException;
|
import cn.lili.common.exception.ServiceException;
|
||||||
|
import cn.lili.common.properties.RocketmqCustomProperties;
|
||||||
import cn.lili.common.security.AuthUser;
|
import cn.lili.common.security.AuthUser;
|
||||||
import cn.lili.common.security.context.UserContext;
|
import cn.lili.common.security.context.UserContext;
|
||||||
import cn.lili.common.security.token.Token;
|
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.dto.connect.dto.WechatConnectSettingItem;
|
||||||
import cn.lili.modules.system.entity.enums.SettingEnum;
|
import cn.lili.modules.system.entity.enums.SettingEnum;
|
||||||
import cn.lili.modules.system.service.SettingService;
|
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.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.ApplicationEventPublisher;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@ -66,6 +70,14 @@ public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> impl
|
|||||||
private MemberTokenGenerate memberTokenGenerate;
|
private MemberTokenGenerate memberTokenGenerate;
|
||||||
@Autowired
|
@Autowired
|
||||||
private Cache cache;
|
private Cache cache;
|
||||||
|
/**
|
||||||
|
* RocketMQ 配置
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
private RocketmqCustomProperties rocketmqCustomProperties;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ApplicationEventPublisher applicationEventPublisher;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@ -235,6 +247,8 @@ public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> impl
|
|||||||
memberService.save(newMember);
|
memberService.save(newMember);
|
||||||
newMember = memberService.findByUsername(newMember.getUsername());
|
newMember = memberService.findByUsername(newMember.getUsername());
|
||||||
bindMpMember(openId, unionId, newMember);
|
bindMpMember(openId, unionId, newMember);
|
||||||
|
// 发送会员注册信息
|
||||||
|
applicationEventPublisher.publishEvent(new TransactionCommitSendMQEvent("new member register", rocketmqCustomProperties.getMemberTopic(), MemberTagsEnum.MEMBER_REGISTER.name(), newMember));
|
||||||
return memberTokenGenerate.createToken(newMember, true);
|
return memberTokenGenerate.createToken(newMember, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -262,9 +276,9 @@ public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> impl
|
|||||||
* 这样,微信小程序注册之后,其他app 公众号页面,都可以实现绑定自动登录功能
|
* 这样,微信小程序注册之后,其他app 公众号页面,都可以实现绑定自动登录功能
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param openId 微信openid
|
* @param openId 微信openid
|
||||||
* @param unionId 微信unionid
|
* @param unionId 微信unionid
|
||||||
* @param member 会员
|
* @param member 会员
|
||||||
*/
|
*/
|
||||||
private void bindMpMember(String openId, String unionId, Member member) {
|
private void bindMpMember(String openId, String unionId, Member member) {
|
||||||
|
|
||||||
|
@ -82,6 +82,14 @@ public interface GoodsSkuService extends IService<GoodsSku> {
|
|||||||
*/
|
*/
|
||||||
GoodsSku getGoodsSkuByIdFromCache(String id);
|
GoodsSku getGoodsSkuByIdFromCache(String id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从缓存中获取可参与促销商品
|
||||||
|
*
|
||||||
|
* @param skuId skuid
|
||||||
|
* @return 商品详情
|
||||||
|
*/
|
||||||
|
GoodsSku getCanPromotionGoodsSkuByIdFromCache(String skuId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取商品sku详情
|
* 获取商品sku详情
|
||||||
*
|
*
|
||||||
@ -143,7 +151,7 @@ public interface GoodsSkuService extends IService<GoodsSku> {
|
|||||||
/**
|
/**
|
||||||
* 分页查询商品sku信息
|
* 分页查询商品sku信息
|
||||||
*
|
*
|
||||||
* @param page 分页参数
|
* @param page 分页参数
|
||||||
* @param queryWrapper 查询参数
|
* @param queryWrapper 查询参数
|
||||||
* @return 商品sku信息
|
* @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.GoodsSkuDTO;
|
||||||
import cn.lili.modules.goods.entity.dto.GoodsSkuStockDTO;
|
import cn.lili.modules.goods.entity.dto.GoodsSkuStockDTO;
|
||||||
import cn.lili.modules.goods.entity.enums.GoodsAuthEnum;
|
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.enums.GoodsStatusEnum;
|
||||||
import cn.lili.modules.goods.entity.vos.GoodsSkuSpecVO;
|
import cn.lili.modules.goods.entity.vos.GoodsSkuSpecVO;
|
||||||
import cn.lili.modules.goods.entity.vos.GoodsSkuVO;
|
import cn.lili.modules.goods.entity.vos.GoodsSkuVO;
|
||||||
@ -237,6 +238,15 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
|
|||||||
return goodsSku;
|
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
|
@Override
|
||||||
public Map<String, Object> getGoodsSkuDetail(String goodsId, String skuId) {
|
public Map<String, Object> getGoodsSkuDetail(String goodsId, String skuId) {
|
||||||
Map<String, Object> map = new HashMap<>(16);
|
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.context.ThreadContextHolder;
|
||||||
import cn.lili.common.enums.ResultCode;
|
import cn.lili.common.enums.ResultCode;
|
||||||
import cn.lili.common.enums.SwitchEnum;
|
import cn.lili.common.enums.SwitchEnum;
|
||||||
|
import cn.lili.common.event.TransactionCommitSendMQEvent;
|
||||||
import cn.lili.common.exception.ServiceException;
|
import cn.lili.common.exception.ServiceException;
|
||||||
import cn.lili.common.properties.RocketmqCustomProperties;
|
import cn.lili.common.properties.RocketmqCustomProperties;
|
||||||
import cn.lili.common.security.AuthUser;
|
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.entity.enums.StoreStatusEnum;
|
||||||
import cn.lili.modules.store.service.StoreService;
|
import cn.lili.modules.store.service.StoreService;
|
||||||
import cn.lili.mybatis.util.PageUtil;
|
import cn.lili.mybatis.util.PageUtil;
|
||||||
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
|
||||||
import cn.lili.rocketmq.tags.MemberTagsEnum;
|
import cn.lili.rocketmq.tags.MemberTagsEnum;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
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.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
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.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.ApplicationEventPublisher;
|
||||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@ -88,11 +88,9 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
|||||||
*/
|
*/
|
||||||
@Autowired
|
@Autowired
|
||||||
private RocketmqCustomProperties rocketmqCustomProperties;
|
private RocketmqCustomProperties rocketmqCustomProperties;
|
||||||
/**
|
|
||||||
* RocketMQ
|
|
||||||
*/
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RocketMQTemplate rocketMQTemplate;
|
private ApplicationEventPublisher applicationEventPublisher;
|
||||||
/**
|
/**
|
||||||
* 缓存
|
* 缓存
|
||||||
*/
|
*/
|
||||||
@ -182,6 +180,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public Token autoRegister(ConnectAuthUser authUser) {
|
public Token autoRegister(ConnectAuthUser authUser) {
|
||||||
|
|
||||||
if (CharSequenceUtil.isEmpty(authUser.getNickname())) {
|
if (CharSequenceUtil.isEmpty(authUser.getNickname())) {
|
||||||
@ -225,6 +224,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public Token mobilePhoneLogin(String mobilePhone) {
|
public Token mobilePhoneLogin(String mobilePhone) {
|
||||||
QueryWrapper<Member> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<Member> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.eq("mobile", mobilePhone);
|
queryWrapper.eq("mobile", mobilePhone);
|
||||||
@ -243,12 +243,13 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
|||||||
*
|
*
|
||||||
* @param member
|
* @param member
|
||||||
*/
|
*/
|
||||||
private void registerHandler(Member member) {
|
@Transactional
|
||||||
|
public void registerHandler(Member member) {
|
||||||
member.setId(SnowFlake.getIdStr());
|
member.setId(SnowFlake.getIdStr());
|
||||||
//保存会员
|
//保存会员
|
||||||
this.save(member);
|
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
|
@Override
|
||||||
@ -288,10 +289,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
|||||||
throw new ServiceException(ResultCode.USER_NOT_LOGIN);
|
throw new ServiceException(ResultCode.USER_NOT_LOGIN);
|
||||||
}
|
}
|
||||||
Member member = this.getById(tokenUser.getId());
|
Member member = this.getById(tokenUser.getId());
|
||||||
if (member.getPassword().equals(DEFAULT_PASSWORD)) {
|
return member.getPassword().equals(DEFAULT_PASSWORD);
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,6 +341,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public Token register(String userName, String password, String mobilePhone) {
|
public Token register(String userName, String password, String mobilePhone) {
|
||||||
//检测会员信息
|
//检测会员信息
|
||||||
checkMember(userName, 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);
|
Member member = new Member(userName, new BCryptPasswordEncoder().encode(password), mobilePhone);
|
||||||
//注册成功后用户自动登录
|
//注册成功后用户自动登录
|
||||||
registerHandler(member);
|
registerHandler(member);
|
||||||
Token token = memberTokenGenerate.createToken(member, false);
|
return memberTokenGenerate.createToken(member, false);
|
||||||
return token;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -388,6 +386,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public Member addMember(MemberAddDTO memberAddDTO) {
|
public Member addMember(MemberAddDTO memberAddDTO) {
|
||||||
|
|
||||||
//检测会员信息
|
//检测会员信息
|
||||||
@ -463,8 +462,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
|||||||
memberPointMessage.setPoint(point);
|
memberPointMessage.setPoint(point);
|
||||||
memberPointMessage.setType(type);
|
memberPointMessage.setType(type);
|
||||||
memberPointMessage.setMemberId(memberId);
|
memberPointMessage.setMemberId(memberId);
|
||||||
String destination = rocketmqCustomProperties.getMemberTopic() + ":" + MemberTagsEnum.MEMBER_POINT_CHANGE.name();
|
applicationEventPublisher.publishEvent(new TransactionCommitSendMQEvent("update member point", rocketmqCustomProperties.getMemberTopic(), MemberTagsEnum.MEMBER_POINT_CHANGE.name(), memberPointMessage));
|
||||||
rocketMQTemplate.asyncSend(destination, memberPointMessage, RocketmqSendCallbackBuilder.commonCallback());
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -134,7 +134,7 @@ public class CheckDataRender implements CartRenderStep {
|
|||||||
cartSkuVO.setErrorMessage("商品库存不足,现有库存数量[" + dataSku.getQuantity() + "]");
|
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()));
|
cartSkuVO.setPromotionMap(this.promotionGoodsService.getCurrentGoodsPromotion(cartSkuVO.getGoodsSku(), tradeDTO.getCartTypeEnum().name()));
|
||||||
//设定商品价格
|
//设定商品价格
|
||||||
|
@ -42,7 +42,7 @@ public class SystemLogVO implements Serializable {
|
|||||||
|
|
||||||
@ApiModelProperty(value = "日志记录时间")
|
@ApiModelProperty(value = "日志记录时间")
|
||||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
@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();
|
private Date createTime = new Date();
|
||||||
|
|
||||||
@ApiModelProperty(value = "请求用户")
|
@ApiModelProperty(value = "请求用户")
|
||||||
|
@ -291,7 +291,7 @@ public class CouponServiceImpl extends AbstractPromotionsServiceImpl<CouponMappe
|
|||||||
throw new ServiceException(ResultCode.COUPON_SCOPE_ERROR);
|
throw new ServiceException(ResultCode.COUPON_SCOPE_ERROR);
|
||||||
}
|
}
|
||||||
for (String id : split) {
|
for (String id : split) {
|
||||||
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(id);
|
GoodsSku goodsSku = goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(id);
|
||||||
if (goodsSku == null) {
|
if (goodsSku == null) {
|
||||||
throw new ServiceException(ResultCode.GOODS_NOT_EXIST);
|
throw new ServiceException(ResultCode.GOODS_NOT_EXIST);
|
||||||
}
|
}
|
||||||
|
@ -120,7 +120,7 @@ public class KanjiaActivityGoodsServiceImpl extends AbstractPromotionsServiceImp
|
|||||||
* @return 商品sku
|
* @return 商品sku
|
||||||
*/
|
*/
|
||||||
private GoodsSku checkSkuExist(String skuId) {
|
private GoodsSku checkSkuExist(String skuId) {
|
||||||
GoodsSku goodsSku = this.goodsSkuService.getGoodsSkuByIdFromCache(skuId);
|
GoodsSku goodsSku = this.goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(skuId);
|
||||||
if (goodsSku == null) {
|
if (goodsSku == null) {
|
||||||
log.error("商品ID为" + skuId + "的商品不存在!");
|
log.error("商品ID为" + skuId + "的商品不存在!");
|
||||||
throw new ServiceException();
|
throw new ServiceException();
|
||||||
@ -206,7 +206,7 @@ public class KanjiaActivityGoodsServiceImpl extends AbstractPromotionsServiceImp
|
|||||||
}
|
}
|
||||||
KanjiaActivityGoodsDTO kanjiaActivityGoodsDTO = new KanjiaActivityGoodsDTO();
|
KanjiaActivityGoodsDTO kanjiaActivityGoodsDTO = new KanjiaActivityGoodsDTO();
|
||||||
BeanUtils.copyProperties(kanjiaActivityGoods, kanjiaActivityGoodsDTO);
|
BeanUtils.copyProperties(kanjiaActivityGoods, kanjiaActivityGoodsDTO);
|
||||||
GoodsSku goodsSku = this.goodsSkuService.getGoodsSkuByIdFromCache(kanjiaActivityGoods.getSkuId());
|
GoodsSku goodsSku = this.goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(kanjiaActivityGoods.getSkuId());
|
||||||
if (goodsSku != null) {
|
if (goodsSku != null) {
|
||||||
kanjiaActivityGoodsDTO.setGoodsSku(goodsSku);
|
kanjiaActivityGoodsDTO.setGoodsSku(goodsSku);
|
||||||
}
|
}
|
||||||
@ -233,7 +233,7 @@ public class KanjiaActivityGoodsServiceImpl extends AbstractPromotionsServiceImp
|
|||||||
//获取砍价商品
|
//获取砍价商品
|
||||||
KanjiaActivityGoods kanJiaActivityGoods = this.getById(id);
|
KanjiaActivityGoods kanJiaActivityGoods = this.getById(id);
|
||||||
//获取商品SKU
|
//获取商品SKU
|
||||||
GoodsSku goodsSku = this.goodsSkuService.getGoodsSkuByIdFromCache(kanJiaActivityGoods.getSkuId());
|
GoodsSku goodsSku = this.goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(kanJiaActivityGoods.getSkuId());
|
||||||
//填写活动商品价格、剩余数量
|
//填写活动商品价格、剩余数量
|
||||||
kanJiaActivityGoodsVO.setGoodsSku(goodsSku);
|
kanJiaActivityGoodsVO.setGoodsSku(goodsSku);
|
||||||
kanJiaActivityGoodsVO.setStock(kanJiaActivityGoods.getStock());
|
kanJiaActivityGoodsVO.setStock(kanJiaActivityGoods.getStock());
|
||||||
|
@ -115,7 +115,7 @@ public class KanjiaActivityServiceImpl extends ServiceImpl<KanJiaActivityMapper,
|
|||||||
}
|
}
|
||||||
KanjiaActivity kanJiaActivity = new KanjiaActivity();
|
KanjiaActivity kanJiaActivity = new KanjiaActivity();
|
||||||
//获取商品信息
|
//获取商品信息
|
||||||
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(kanJiaActivityGoods.getSkuId());
|
GoodsSku goodsSku = goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(kanJiaActivityGoods.getSkuId());
|
||||||
if (goodsSku != null) {
|
if (goodsSku != null) {
|
||||||
kanJiaActivity.setSkuId(kanJiaActivityGoods.getSkuId());
|
kanJiaActivity.setSkuId(kanJiaActivityGoods.getSkuId());
|
||||||
kanJiaActivity.setGoodsName(goodsSku.getGoodsName());
|
kanJiaActivity.setGoodsName(goodsSku.getGoodsName());
|
||||||
|
@ -297,7 +297,7 @@ public class PintuanServiceImpl extends AbstractPromotionsServiceImpl<PintuanMap
|
|||||||
if (pintuan.getPromotionGoodsList() != null && !pintuan.getPromotionGoodsList().isEmpty()) {
|
if (pintuan.getPromotionGoodsList() != null && !pintuan.getPromotionGoodsList().isEmpty()) {
|
||||||
List<PromotionGoods> promotionGoods = PromotionTools.promotionGoodsInit(pintuan.getPromotionGoodsList(), pintuan, PromotionTypeEnum.PINTUAN);
|
List<PromotionGoods> promotionGoods = PromotionTools.promotionGoodsInit(pintuan.getPromotionGoodsList(), pintuan, PromotionTypeEnum.PINTUAN);
|
||||||
for (PromotionGoods promotionGood : promotionGoods) {
|
for (PromotionGoods promotionGood : promotionGoods) {
|
||||||
if (goodsSkuService.getGoodsSkuByIdFromCache(promotionGood.getSkuId()) == null) {
|
if (goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(promotionGood.getSkuId()) == null) {
|
||||||
log.error("商品[" + promotionGood.getGoodsName() + "]不存在或处于不可售卖状态!");
|
log.error("商品[" + promotionGood.getGoodsName() + "]不存在或处于不可售卖状态!");
|
||||||
throw new ServiceException("商品[" + promotionGood.getGoodsName() + "]不存在或处于不可售卖状态!");
|
throw new ServiceException("商品[" + promotionGood.getGoodsName() + "]不存在或处于不可售卖状态!");
|
||||||
}
|
}
|
||||||
|
@ -278,7 +278,7 @@ public class PointsGoodsServiceImpl extends AbstractPromotionsServiceImpl<Points
|
|||||||
* @return 商品sku
|
* @return 商品sku
|
||||||
*/
|
*/
|
||||||
private GoodsSku checkSkuExist(String skuId) {
|
private GoodsSku checkSkuExist(String skuId) {
|
||||||
GoodsSku goodsSku = this.goodsSkuService.getGoodsSkuByIdFromCache(skuId);
|
GoodsSku goodsSku = this.goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(skuId);
|
||||||
if (goodsSku == null) {
|
if (goodsSku == null) {
|
||||||
log.error("商品ID为" + skuId + "的商品不存在!");
|
log.error("商品ID为" + skuId + "的商品不存在!");
|
||||||
throw new ServiceException();
|
throw new ServiceException();
|
||||||
|
@ -5,11 +5,8 @@ import cn.hutool.core.text.CharSequenceUtil;
|
|||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import cn.lili.common.enums.PromotionTypeEnum;
|
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.common.vo.PageVO;
|
||||||
import cn.lili.modules.goods.entity.dos.GoodsSku;
|
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.entity.vos.GoodsVO;
|
||||||
import cn.lili.modules.goods.service.GoodsService;
|
import cn.lili.modules.goods.service.GoodsService;
|
||||||
import cn.lili.modules.goods.service.GoodsSkuService;
|
import cn.lili.modules.goods.service.GoodsSkuService;
|
||||||
@ -75,7 +72,7 @@ public class PromotionGoodsServiceImpl extends ServiceImpl<PromotionGoodsMapper,
|
|||||||
@Override
|
@Override
|
||||||
public List<PromotionGoods> findSkuValidPromotion(String skuId, String storeIds) {
|
public List<PromotionGoods> findSkuValidPromotion(String skuId, String storeIds) {
|
||||||
|
|
||||||
GoodsSku sku = goodsSkuService.getGoodsSkuByIdFromCache(skuId);
|
GoodsSku sku = goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(skuId);
|
||||||
if (sku == null) {
|
if (sku == null) {
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
@ -316,40 +313,6 @@ public class PromotionGoodsServiceImpl extends ServiceImpl<PromotionGoodsMapper,
|
|||||||
return promotionMap;
|
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) {
|
private void setGoodsPromotionInfo(GoodsSku dataSku, Map.Entry<String, Object> promotionInfo) {
|
||||||
JSONObject promotionsObj = JSONUtil.parseObj(promotionInfo.getValue());
|
JSONObject promotionsObj = JSONUtil.parseObj(promotionInfo.getValue());
|
||||||
PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams();
|
PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams();
|
||||||
|
@ -161,7 +161,7 @@ public class SeckillApplyServiceImpl extends ServiceImpl<SeckillApplyMapper, Sec
|
|||||||
List<PromotionGoods> promotionGoodsList = new ArrayList<>();
|
List<PromotionGoods> promotionGoodsList = new ArrayList<>();
|
||||||
for (SeckillApplyVO seckillApply : seckillApplyList) {
|
for (SeckillApplyVO seckillApply : seckillApplyList) {
|
||||||
//获取参与活动的商品信息
|
//获取参与活动的商品信息
|
||||||
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(seckillApply.getSkuId());
|
GoodsSku goodsSku = goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(seckillApply.getSkuId());
|
||||||
if (!goodsSku.getStoreId().equals(storeId)) {
|
if (!goodsSku.getStoreId().equals(storeId)) {
|
||||||
continue;
|
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());
|
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) {
|
for (SeckillApply seckillApply : list) {
|
||||||
//获取参与活动的商品信息
|
//获取参与活动的商品信息
|
||||||
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(seckillApply.getSkuId());
|
GoodsSku goodsSku = goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(seckillApply.getSkuId());
|
||||||
//获取促销商品
|
//获取促销商品
|
||||||
PromotionGoods promotionGoods = this.setSeckillGoods(goodsSku, seckillApply, seckill);
|
PromotionGoods promotionGoods = this.setSeckillGoods(goodsSku, seckillApply, seckill);
|
||||||
promotionGoodsList.add(promotionGoods);
|
promotionGoodsList.add(promotionGoods);
|
||||||
@ -373,7 +373,7 @@ public class SeckillApplyServiceImpl extends ServiceImpl<SeckillApplyMapper, Sec
|
|||||||
if (!seckillApplyList.isEmpty()) {
|
if (!seckillApplyList.isEmpty()) {
|
||||||
List<SeckillApply> collect = seckillApplyList.stream().filter(i -> i.getTimeLine().equals(startTimeline) && i.getPromotionApplyStatus().equals(PromotionsApplyStatusEnum.PASS.name())).collect(Collectors.toList());
|
List<SeckillApply> collect = seckillApplyList.stream().filter(i -> i.getTimeLine().equals(startTimeline) && i.getPromotionApplyStatus().equals(PromotionsApplyStatusEnum.PASS.name())).collect(Collectors.toList());
|
||||||
for (SeckillApply seckillApply : collect) {
|
for (SeckillApply seckillApply : collect) {
|
||||||
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(seckillApply.getSkuId());
|
GoodsSku goodsSku = goodsSkuService.getCanPromotionGoodsSkuByIdFromCache(seckillApply.getSkuId());
|
||||||
if (goodsSku != null) {
|
if (goodsSku != null) {
|
||||||
SeckillGoodsVO goodsVO = new SeckillGoodsVO();
|
SeckillGoodsVO goodsVO = new SeckillGoodsVO();
|
||||||
BeanUtil.copyProperties(seckillApply, goodsVO);
|
BeanUtil.copyProperties(seckillApply, goodsVO);
|
||||||
|
@ -11,7 +11,6 @@ import lombok.NoArgsConstructor;
|
|||||||
import org.hibernate.validator.constraints.Length;
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
import javax.validation.constraints.NotEmpty;
|
import javax.validation.constraints.NotEmpty;
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自定义分词
|
* 自定义分词
|
||||||
@ -38,12 +37,12 @@ public class CustomWords extends BaseEntity {
|
|||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "是否禁用")
|
@ApiModelProperty(value = "是否禁用: 0,禁用;1,不禁用")
|
||||||
private Integer disabled;
|
private Integer disabled;
|
||||||
|
|
||||||
|
|
||||||
public CustomWords(String name) {
|
public CustomWords(String name) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.disabled = 0;
|
this.disabled = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package cn.lili.modules.search.mapper;
|
package cn.lili.modules.search.mapper;
|
||||||
|
|
||||||
import cn.lili.modules.search.entity.dos.CustomWords;
|
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;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -62,6 +62,12 @@ public interface CustomWordsService extends IService<CustomWords> {
|
|||||||
*/
|
*/
|
||||||
boolean deleteBathByName(List<String> names);
|
boolean deleteBathByName(List<String> names);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量插入自定义分词
|
||||||
|
*
|
||||||
|
* @param customWordsList 自定义分词列表
|
||||||
|
* @return 受影响行数
|
||||||
|
*/
|
||||||
long insertBatchCustomWords(List<CustomWords> customWordsList);
|
long insertBatchCustomWords(List<CustomWords> customWordsList);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package cn.lili.mybatis.mybatisplus;
|
package cn.lili.mybatis.mybatisplus.external;
|
||||||
|
|
||||||
import java.util.List;
|
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.AbstractMethod;
|
||||||
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
|
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
|
Loading…
x
Reference in New Issue
Block a user