更新,BUG修改
This commit is contained in:
parent
c62f31c387
commit
a52b672e9b
@ -16,6 +16,6 @@ spring.mail.username=1814994716@qq.com
|
|||||||
spring.mail.password=abcdefg123456!@#$%^
|
spring.mail.password=abcdefg123456!@#$%^
|
||||||
# 日志文件路径
|
# 日志文件路径
|
||||||
logging.file.path=lili-logs/admin
|
logging.file.path=lili-logs/admin
|
||||||
lili.data.logstash.server=192.168.2.122:4560
|
lili.data.logstash.server=106.124.130.167:4560
|
||||||
# 文件格式
|
# 文件格式
|
||||||
logging.pattern.file=%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID}){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx
|
logging.pattern.file=%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID}){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx
|
||||||
|
|||||||
@ -29,6 +29,7 @@ public class BuyerApiApplication {
|
|||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
System.setProperty("es.set.netty.runtime.available.processors", "false");
|
System.setProperty("es.set.netty.runtime.available.processors", "false");
|
||||||
|
System.setProperty("rocketmq.client.logUseSlf4j","true");
|
||||||
SpringApplication.run(BuyerApiApplication.class, args);
|
SpringApplication.run(BuyerApiApplication.class, args);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,6 +39,16 @@ public class MemberBuyerController {
|
|||||||
private VerificationService verificationService;
|
private VerificationService verificationService;
|
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation(value = "手机号登录")
|
||||||
|
@ApiImplicitParams({
|
||||||
|
@ApiImplicitParam(name = "mobile", value = "手机号", required = true, paramType = "query")
|
||||||
|
})
|
||||||
|
@PostMapping("/phoneLogin")
|
||||||
|
public ResultMessage<Object> phoneLogin(@NotNull(message = "手机号为空") @RequestParam String mobile) {
|
||||||
|
return ResultUtil.data(memberService.mobilePhoneLogin(mobile));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@ApiOperation(value = "登录接口")
|
@ApiOperation(value = "登录接口")
|
||||||
@ApiImplicitParams({
|
@ApiImplicitParams({
|
||||||
@ApiImplicitParam(name = "username", value = "用户名", required = true, paramType = "query"),
|
@ApiImplicitParam(name = "username", value = "用户名", required = true, paramType = "query"),
|
||||||
|
|||||||
@ -51,9 +51,9 @@ spring:
|
|||||||
|
|
||||||
# Redis
|
# Redis
|
||||||
redis:
|
redis:
|
||||||
host: 192.168.2.122
|
host: 120.71.145.134
|
||||||
port: 6379
|
port: 6379
|
||||||
password: Gb84505016
|
password: ekLhvPGraSj8DGO0
|
||||||
lettuce:
|
lettuce:
|
||||||
pool:
|
pool:
|
||||||
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
||||||
@ -72,9 +72,9 @@ spring:
|
|||||||
default-datasource:
|
default-datasource:
|
||||||
type: com.alibaba.druid.pool.DruidDataSource
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
driverClassName: com.mysql.cj.jdbc.Driver
|
driverClassName: com.mysql.cj.jdbc.Driver
|
||||||
url: jdbc:mysql://192.168.2.126:3306/rx-shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
url: jdbc:mysql://120.71.183.195:3306/zyt_shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
||||||
username: rx-shop
|
username: zyt_shop
|
||||||
password: J2xEZ42HwPXrDXt3
|
password: Gb84505016@zytshop
|
||||||
maxActive: 50
|
maxActive: 50
|
||||||
initialSize: 10
|
initialSize: 10
|
||||||
maxWait: 60000
|
maxWait: 60000
|
||||||
@ -135,6 +135,7 @@ ignored:
|
|||||||
- /buyer/passport/connect/**
|
- /buyer/passport/connect/**
|
||||||
- /buyer/members/**
|
- /buyer/members/**
|
||||||
- /buyer/passport/member/**
|
- /buyer/passport/member/**
|
||||||
|
- /buyer/passport/member/refresh/**
|
||||||
- /buyer/promotion/pintuan/**
|
- /buyer/promotion/pintuan/**
|
||||||
- /buyer/promotion/seckill/**
|
- /buyer/promotion/seckill/**
|
||||||
- /buyer/promotion/pointsGoods/**
|
- /buyer/promotion/pointsGoods/**
|
||||||
@ -218,10 +219,10 @@ lili:
|
|||||||
admin: https://admin-b2b2c.pickmall.cn
|
admin: https://admin-b2b2c.pickmall.cn
|
||||||
#api地址
|
#api地址
|
||||||
api:
|
api:
|
||||||
buyer: https://buyer-api.pickmall.cn
|
buyer: https://zshop-api.sx1788.cn/buyer-api
|
||||||
common: https://common-api.pickmall.cn
|
common: https://zshop-api.sx1788.cn/common-api
|
||||||
manager: https://admin-api.pickmall.cn
|
manager: https://zshop-api.sx1788.cn/manager-api
|
||||||
store: https://store-api.pickmall.cn
|
store: https://zshop-api.sx1788.cn/seller-api
|
||||||
|
|
||||||
# jwt 细节设定
|
# jwt 细节设定
|
||||||
jwt-setting:
|
jwt-setting:
|
||||||
@ -240,7 +241,7 @@ lili:
|
|||||||
data:
|
data:
|
||||||
elasticsearch:
|
elasticsearch:
|
||||||
cluster-name: elasticsearch
|
cluster-name: elasticsearch
|
||||||
cluster-nodes: 192.168.2.122:9200
|
cluster-nodes: 106.124.130.167:9200
|
||||||
index:
|
index:
|
||||||
number-of-replicas: 0
|
number-of-replicas: 0
|
||||||
number-of-shards: 3
|
number-of-shards: 3
|
||||||
@ -250,7 +251,7 @@ lili:
|
|||||||
# username: elastic
|
# username: elastic
|
||||||
# password: LiLiShopES
|
# password: LiLiShopES
|
||||||
logstash:
|
logstash:
|
||||||
server: 192.168.2.122:4560
|
server: 106.124.130.167:4560
|
||||||
rocketmq:
|
rocketmq:
|
||||||
promotion-topic: lili_promotion_topic
|
promotion-topic: lili_promotion_topic
|
||||||
promotion-group: lili_promotion_group
|
promotion-group: lili_promotion_group
|
||||||
@ -271,7 +272,7 @@ lili:
|
|||||||
after-sale-topic: lili_after_sale_topic
|
after-sale-topic: lili_after_sale_topic
|
||||||
after-sale-group: lili_after_sale_group
|
after-sale-group: lili_after_sale_group
|
||||||
rocketmq:
|
rocketmq:
|
||||||
name-server: 192.168.2.122:9876
|
name-server: 106.124.130.167:9876
|
||||||
producer:
|
producer:
|
||||||
group: lili_group
|
group: lili_group
|
||||||
send-message-timeout: 30000
|
send-message-timeout: 30000
|
||||||
@ -279,7 +280,7 @@ rocketmq:
|
|||||||
xxl:
|
xxl:
|
||||||
job:
|
job:
|
||||||
admin:
|
admin:
|
||||||
addresses: http://192.168.2.122:9001/xxl-job-admin
|
addresses: http://127.0.0.1:9001/xxl-job-admin
|
||||||
executor:
|
executor:
|
||||||
appname: xxl-job-executor-lilishop
|
appname: xxl-job-executor-lilishop
|
||||||
address:
|
address:
|
||||||
|
|||||||
@ -20,6 +20,23 @@
|
|||||||
</encoder>
|
</encoder>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
|
<appender name="RocketmqClientAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${LOG_FILE_PATH}/rocketmq.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${LOG_FILE_PATH}/rocketmq/rocketmq-%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<maxHistory>30</maxHistory>
|
||||||
|
<totalSizeCap>30MB</totalSizeCap>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
<logger name="RocketmqClient" additivity="false">
|
||||||
|
<level value="info" />
|
||||||
|
<appender-ref ref="RocketmqClientAppender"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
|
||||||
<!--输出到elk的LOGSTASH-->
|
<!--输出到elk的LOGSTASH-->
|
||||||
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
|
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
|
||||||
<!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址-->
|
<!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址-->
|
||||||
|
|||||||
@ -28,7 +28,7 @@ spring:
|
|||||||
# mongodb
|
# mongodb
|
||||||
data:
|
data:
|
||||||
mongodb:
|
mongodb:
|
||||||
host: 192.168.2.122
|
host: 106.124.130.167
|
||||||
port: 27017
|
port: 27017
|
||||||
database: rx-shop
|
database: rx-shop
|
||||||
username: goboo
|
username: goboo
|
||||||
@ -39,12 +39,12 @@ spring:
|
|||||||
type: redis
|
type: redis
|
||||||
#amqp
|
#amqp
|
||||||
# rabbitmq:
|
# rabbitmq:
|
||||||
# host: 192.168.2.122
|
# host: 106.124.130.167
|
||||||
# Redis
|
# Redis
|
||||||
redis:
|
redis:
|
||||||
host: 192.168.2.122
|
host: 120.71.145.134
|
||||||
port: 6379
|
port: 6379
|
||||||
password: Gb84505016
|
password: ekLhvPGraSj8DGO0
|
||||||
lettuce:
|
lettuce:
|
||||||
pool:
|
pool:
|
||||||
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
||||||
@ -73,9 +73,9 @@ spring:
|
|||||||
default-datasource:
|
default-datasource:
|
||||||
type: com.alibaba.druid.pool.DruidDataSource
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
driverClassName: com.mysql.cj.jdbc.Driver
|
driverClassName: com.mysql.cj.jdbc.Driver
|
||||||
url: jdbc:mysql://192.168.2.126:3306/rx-shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
url: jdbc:mysql://120.71.183.195:3306/zyt_shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
||||||
username: rx-shop
|
username: zyt_shop
|
||||||
password: J2xEZ42HwPXrDXt3
|
password: Gb84505016@zytshop
|
||||||
maxActive: 20
|
maxActive: 20
|
||||||
initialSize: 5
|
initialSize: 5
|
||||||
maxWait: 60000
|
maxWait: 60000
|
||||||
@ -213,16 +213,16 @@ lili:
|
|||||||
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
||||||
#域名
|
#域名
|
||||||
domain:
|
domain:
|
||||||
pc: http://192.168.2.122:8885
|
pc: http://106.124.130.167:8885
|
||||||
wap: http://192.168.2.122:8885
|
wap: http://106.124.130.167:8885
|
||||||
seller: http://192.168.2.122:8885
|
seller: http://106.124.130.167:8885
|
||||||
admin: http://192.168.2.122:8885
|
admin: http://106.124.130.167:8885
|
||||||
#api地址
|
#api地址
|
||||||
api:
|
api:
|
||||||
buyer: https://z171l91606.51mypc.cn
|
buyer: https://z171l91606.51mypc.cn
|
||||||
base: http://192.168.2.122:8885
|
base: http://106.124.130.167:8885
|
||||||
manager: http://192.168.2.122:8885
|
manager: http://106.124.130.167:8885
|
||||||
seller: http://192.168.2.122:8885
|
seller: http://106.124.130.167:8885
|
||||||
|
|
||||||
# jwt 细节设定
|
# jwt 细节设定
|
||||||
jwt-setting:
|
jwt-setting:
|
||||||
@ -241,7 +241,7 @@ lili:
|
|||||||
data:
|
data:
|
||||||
elasticsearch:
|
elasticsearch:
|
||||||
cluster-name: elasticsearch
|
cluster-name: elasticsearch
|
||||||
cluster-nodes: 192.168.2.122:9200
|
cluster-nodes: 106.124.130.167:9200
|
||||||
index:
|
index:
|
||||||
number-of-replicas: 0
|
number-of-replicas: 0
|
||||||
number-of-shards: 3
|
number-of-shards: 3
|
||||||
@ -269,7 +269,7 @@ lili:
|
|||||||
notice-send-topic: lili_send_notice_topic
|
notice-send-topic: lili_send_notice_topic
|
||||||
notice-send-group: lili_send_notice_group
|
notice-send-group: lili_send_notice_group
|
||||||
rocketmq:
|
rocketmq:
|
||||||
name-server: 192.168.2.122:9876
|
name-server: 106.124.130.167:9876
|
||||||
producer:
|
producer:
|
||||||
group: lili_group
|
group: lili_group
|
||||||
send-message-timeout: 30000
|
send-message-timeout: 30000
|
||||||
@ -277,7 +277,7 @@ rocketmq:
|
|||||||
xxl:
|
xxl:
|
||||||
job:
|
job:
|
||||||
admin:
|
admin:
|
||||||
addresses: http://192.168.2.122:9001/xxl-job-admin
|
addresses: http://127.0.0.1:9001/xxl-job-admin
|
||||||
executor:
|
executor:
|
||||||
appname: xxl-job-executor-lilishop
|
appname: xxl-job-executor-lilishop
|
||||||
address:
|
address:
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import org.springframework.cache.annotation.EnableCaching;
|
|||||||
public class CommonApiApplication {
|
public class CommonApiApplication {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
System.setProperty("rocketmq.client.logUseSlf4j","true");
|
||||||
SpringApplication.run(CommonApiApplication.class, args);
|
SpringApplication.run(CommonApiApplication.class, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -39,7 +39,7 @@ public class IMController {
|
|||||||
try {
|
try {
|
||||||
Setting imSettingVal = settingService.get(SettingEnum.IM_SETTING.name());
|
Setting imSettingVal = settingService.get(SettingEnum.IM_SETTING.name());
|
||||||
ImSetting imSetting = JSONUtil.toBean(imSettingVal.getSettingValue(), ImSetting.class);
|
ImSetting imSetting = JSONUtil.toBean(imSettingVal.getSettingValue(), ImSetting.class);
|
||||||
imUrl = imSetting.getHttpUrl() + "?tenant_id=" + imSetting.getTenantId()+"&merchant_euid=";
|
imUrl = imSetting.getHttpUrl();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new ServiceException(ResultCode.PLATFORM_NOT_SUPPORTED_IM);
|
throw new ServiceException(ResultCode.PLATFORM_NOT_SUPPORTED_IM);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,9 +32,9 @@ spring:
|
|||||||
type: redis
|
type: redis
|
||||||
# Redis
|
# Redis
|
||||||
redis:
|
redis:
|
||||||
host: 192.168.2.122
|
host: 120.71.145.134
|
||||||
port: 6379
|
port: 6379
|
||||||
password: Gb84505016
|
password: ekLhvPGraSj8DGO0
|
||||||
lettuce:
|
lettuce:
|
||||||
pool:
|
pool:
|
||||||
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
||||||
@ -63,9 +63,9 @@ spring:
|
|||||||
default-datasource:
|
default-datasource:
|
||||||
type: com.alibaba.druid.pool.DruidDataSource
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
driverClassName: com.mysql.cj.jdbc.Driver
|
driverClassName: com.mysql.cj.jdbc.Driver
|
||||||
url: jdbc:mysql://192.168.2.126:3306/rx-shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
url: jdbc:mysql://120.71.183.195:3306/zyt_shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
||||||
username: rx-shop
|
username: zyt_shop
|
||||||
password: J2xEZ42HwPXrDXt3
|
password: Gb84505016@zytshop
|
||||||
maxActive: 20
|
maxActive: 20
|
||||||
initialSize: 5
|
initialSize: 5
|
||||||
maxWait: 60000
|
maxWait: 60000
|
||||||
@ -190,17 +190,17 @@ lili:
|
|||||||
#短信模版配置
|
#短信模版配置
|
||||||
sms:
|
sms:
|
||||||
#登录
|
#登录
|
||||||
LOGIN: SMS_205755300
|
LOGIN: SMS_185821482
|
||||||
#注册
|
#注册
|
||||||
REGISTER: SMS_205755298
|
REGISTER: SMS_185821482
|
||||||
#找回密码
|
#找回密码
|
||||||
FIND_USER: SMS_205755301
|
FIND_USER: SMS_185821482
|
||||||
#设置密码
|
#设置密码
|
||||||
UPDATE_PASSWORD: SMS_205755297
|
UPDATE_PASSWORD: SMS_185821482
|
||||||
#支付密码
|
#支付密码
|
||||||
WALLET_PASSWORD: SMS_205755301
|
WALLET_PASSWORD: SMS_185821482
|
||||||
system:
|
system:
|
||||||
isTestModel: true
|
isTestModel: false
|
||||||
statistics:
|
statistics:
|
||||||
# 在线人数统计 X 小时。这里设置48,即统计过去48小时每小时在线人数
|
# 在线人数统计 X 小时。这里设置48,即统计过去48小时每小时在线人数
|
||||||
onlineMember: 48
|
onlineMember: 48
|
||||||
@ -212,16 +212,16 @@ lili:
|
|||||||
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
||||||
#域名
|
#域名
|
||||||
domain:
|
domain:
|
||||||
pc: https://pc.b2b2c.pickmall.cn
|
pc: http://zbuyer.sx1788.cn/buyer
|
||||||
wap: https://m.b2b2c.pickmall.cn
|
wap: http://zshop.sx1788.cn/
|
||||||
store: https://store.b2b2c.pickmall.cn
|
store: http://zseller.sx1788.cn/login
|
||||||
admin: https://admin.b2b2c.pickmall.cn
|
admin: http://zmanager.sx1788.cn/login
|
||||||
#api地址
|
#api地址
|
||||||
api:
|
api:
|
||||||
buyer: https://buyer-api.pickmall.cn
|
buyer: https://zshop-api.sx1788.cn/buyer-api
|
||||||
common: https://common-api.pickmall.cn
|
common: https://zshop-api.sx1788.cn/common-api
|
||||||
manager: https://admin-api.pickmall.cn
|
manager: https://zshop-api.sx1788.cn/manager-api
|
||||||
store: https://store-api.pickmall.cn
|
store: https://zshop-api.sx1788.cn/seller-api
|
||||||
|
|
||||||
# jwt 细节设定
|
# jwt 细节设定
|
||||||
jwt-setting:
|
jwt-setting:
|
||||||
@ -240,7 +240,7 @@ lili:
|
|||||||
data:
|
data:
|
||||||
elasticsearch:
|
elasticsearch:
|
||||||
cluster-name: elasticsearch
|
cluster-name: elasticsearch
|
||||||
cluster-nodes: 192.168.2.122:9200
|
cluster-nodes: 106.124.130.167:9200
|
||||||
index:
|
index:
|
||||||
number-of-replicas: 0
|
number-of-replicas: 0
|
||||||
number-of-shards: 3
|
number-of-shards: 3
|
||||||
@ -250,7 +250,7 @@ lili:
|
|||||||
# username: elastic
|
# username: elastic
|
||||||
# password: LiLiShopES
|
# password: LiLiShopES
|
||||||
logstash:
|
logstash:
|
||||||
server: 192.168.2.122:4560
|
server: 106.124.130.167:4560
|
||||||
rocketmq:
|
rocketmq:
|
||||||
promotion-topic: lili_promotion_topic
|
promotion-topic: lili_promotion_topic
|
||||||
promotion-group: lili_promotion_group
|
promotion-group: lili_promotion_group
|
||||||
@ -269,7 +269,7 @@ lili:
|
|||||||
notice-send-topic: lili_send_notice_topic
|
notice-send-topic: lili_send_notice_topic
|
||||||
notice-send-group: lili_send_notice_group
|
notice-send-group: lili_send_notice_group
|
||||||
rocketmq:
|
rocketmq:
|
||||||
name-server: 192.168.2.122:9876
|
name-server: 106.124.130.167:9876
|
||||||
producer:
|
producer:
|
||||||
group: lili_group
|
group: lili_group
|
||||||
send-message-timeout: 30000
|
send-message-timeout: 30000
|
||||||
@ -277,7 +277,7 @@ rocketmq:
|
|||||||
xxl:
|
xxl:
|
||||||
job:
|
job:
|
||||||
admin:
|
admin:
|
||||||
addresses: http://192.168.2.122:9001/xxl-job-admin
|
addresses: http://127.0.0.1:9001/xxl-job-admin
|
||||||
executor:
|
executor:
|
||||||
appname: xxl-job-executor-lilishop
|
appname: xxl-job-executor-lilishop
|
||||||
address:
|
address:
|
||||||
|
|||||||
@ -20,6 +20,22 @@
|
|||||||
</encoder>
|
</encoder>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
|
<appender name="RocketmqClientAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${LOG_FILE_PATH}/rocketmq.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${LOG_FILE_PATH}/rocketmq/rocketmq-%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<maxHistory>30</maxHistory>
|
||||||
|
<totalSizeCap>30MB</totalSizeCap>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
<logger name="RocketmqClient" additivity="false">
|
||||||
|
<level value="info" />
|
||||||
|
<appender-ref ref="RocketmqClientAppender"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
<!--输出到elk的LOGSTASH-->
|
<!--输出到elk的LOGSTASH-->
|
||||||
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
|
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
|
||||||
<!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址-->
|
<!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址-->
|
||||||
|
|||||||
@ -28,7 +28,7 @@ spring:
|
|||||||
# mongodb
|
# mongodb
|
||||||
data:
|
data:
|
||||||
mongodb:
|
mongodb:
|
||||||
host: 192.168.2.122
|
host: 106.124.130.167
|
||||||
port: 27017
|
port: 27017
|
||||||
database: rx-shop
|
database: rx-shop
|
||||||
username: goboo
|
username: goboo
|
||||||
@ -39,9 +39,9 @@ spring:
|
|||||||
type: redis
|
type: redis
|
||||||
# Redis
|
# Redis
|
||||||
redis:
|
redis:
|
||||||
host: 192.168.2.122
|
host: 120.71.145.134
|
||||||
port: 6379
|
port: 6379
|
||||||
password: Gb84505016
|
password: ekLhvPGraSj8DGO0
|
||||||
lettuce:
|
lettuce:
|
||||||
pool:
|
pool:
|
||||||
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
||||||
@ -70,9 +70,9 @@ spring:
|
|||||||
default-datasource:
|
default-datasource:
|
||||||
type: com.alibaba.druid.pool.DruidDataSource
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
driverClassName: com.mysql.cj.jdbc.Driver
|
driverClassName: com.mysql.cj.jdbc.Driver
|
||||||
url: jdbc:mysql://192.168.2.126:3306/rx-shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
url: jdbc:mysql://120.71.183.195:3306/zyt_shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
||||||
username: rx-shop
|
username: zyt_shop
|
||||||
password: J2xEZ42HwPXrDXt3
|
password: Gb84505016@zytshop
|
||||||
maxActive: 50
|
maxActive: 50
|
||||||
initialSize: 20
|
initialSize: 20
|
||||||
maxWait: 60000
|
maxWait: 60000
|
||||||
@ -126,6 +126,7 @@ ignored:
|
|||||||
- /weixin/**
|
- /weixin/**
|
||||||
- /source/**
|
- /source/**
|
||||||
- /store/passport/login/**
|
- /store/passport/login/**
|
||||||
|
- /store/passport/login/refresh/**
|
||||||
- /common/common/slider/**
|
- /common/common/slider/**
|
||||||
- /common/common/sms/**
|
- /common/common/sms/**
|
||||||
- /buyer/payment/cashier/**
|
- /buyer/payment/cashier/**
|
||||||
@ -136,6 +137,7 @@ ignored:
|
|||||||
- /buyer/passport/connect/**
|
- /buyer/passport/connect/**
|
||||||
- /buyer/members/**
|
- /buyer/members/**
|
||||||
- /buyer/passport/member/**
|
- /buyer/passport/member/**
|
||||||
|
- /buyer/passport/member/refresh/**
|
||||||
- /buyer/promotion/pintuan/**
|
- /buyer/promotion/pintuan/**
|
||||||
- /buyer/promotion/seckill/**
|
- /buyer/promotion/seckill/**
|
||||||
- /buyer/promotion/pointsGoods/**
|
- /buyer/promotion/pointsGoods/**
|
||||||
@ -220,18 +222,18 @@ lili:
|
|||||||
#短信模版配置
|
#短信模版配置
|
||||||
sms:
|
sms:
|
||||||
#登录
|
#登录
|
||||||
LOGIN: SMS_205755300
|
LOGIN: SMS_185821482
|
||||||
#注册
|
#注册
|
||||||
REGISTER: SMS_205755298
|
REGISTER: SMS_185821482
|
||||||
#找回密码
|
#找回密码
|
||||||
FIND_USER: SMS_205755301
|
FIND_USER: SMS_185821482
|
||||||
#设置密码
|
#设置密码
|
||||||
UPDATE_PASSWORD: SMS_205755297
|
UPDATE_PASSWORD: SMS_185821482
|
||||||
#支付密码
|
#支付密码
|
||||||
WALLET_PASSWORD: SMS_205755301
|
WALLET_PASSWORD: SMS_185821482
|
||||||
system:
|
system:
|
||||||
isDemoSite: false
|
isDemoSite: false
|
||||||
isTestModel: true
|
isTestModel: false
|
||||||
# 脱敏级别:
|
# 脱敏级别:
|
||||||
# 0:不做脱敏处理
|
# 0:不做脱敏处理
|
||||||
# 1:管理端用户手机号等信息脱敏
|
# 1:管理端用户手机号等信息脱敏
|
||||||
@ -249,16 +251,16 @@ lili:
|
|||||||
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
||||||
#域名
|
#域名
|
||||||
domain:
|
domain:
|
||||||
pc: http://192.168.2.122:8885
|
pc: http://106.124.130.167:8885
|
||||||
wap: http://192.168.2.122:8885
|
wap: http://106.124.130.167:8885
|
||||||
seller: http://192.168.2.122:8885
|
seller: http://106.124.130.167:8885
|
||||||
admin: http://192.168.2.122:8885
|
admin: http://106.124.130.167:8885
|
||||||
#api地址
|
#api地址
|
||||||
api:
|
api:
|
||||||
buyer: https://z171l91606.51mypc.cn
|
buyer: https://z171l91606.51mypc.cn
|
||||||
base: http://192.168.2.122:8885
|
base: http://106.124.130.167:8885
|
||||||
manager: http://192.168.2.122:8885
|
manager: http://106.124.130.167:8885
|
||||||
seller: http://192.168.2.122:8885
|
seller: http://106.124.130.167:8885
|
||||||
|
|
||||||
# jwt 细节设定
|
# jwt 细节设定
|
||||||
jwt-setting:
|
jwt-setting:
|
||||||
@ -277,7 +279,7 @@ lili:
|
|||||||
data:
|
data:
|
||||||
elasticsearch:
|
elasticsearch:
|
||||||
cluster-name: elasticsearch
|
cluster-name: elasticsearch
|
||||||
cluster-nodes: 192.168.2.122:9200
|
cluster-nodes: 106.124.130.167:9200
|
||||||
index:
|
index:
|
||||||
number-of-replicas: 0
|
number-of-replicas: 0
|
||||||
number-of-shards: 3
|
number-of-shards: 3
|
||||||
@ -288,7 +290,7 @@ lili:
|
|||||||
# password: LiLiShopES
|
# password: LiLiShopES
|
||||||
|
|
||||||
logstash:
|
logstash:
|
||||||
server: 192.168.2.122:4560
|
server: 106.124.130.167:4560
|
||||||
rocketmq:
|
rocketmq:
|
||||||
promotion-topic: lili_promotion_topic
|
promotion-topic: lili_promotion_topic
|
||||||
promotion-group: lili_promotion_group
|
promotion-group: lili_promotion_group
|
||||||
@ -306,8 +308,10 @@ lili:
|
|||||||
notice-group: lili_notice_group
|
notice-group: lili_notice_group
|
||||||
notice-send-topic: lili_send_notice_topic
|
notice-send-topic: lili_send_notice_topic
|
||||||
notice-send-group: lili_send_notice_group
|
notice-send-group: lili_send_notice_group
|
||||||
|
after-sale-topic: lili_after_sale_topic
|
||||||
|
after-sale-group: lili_after_sale_group
|
||||||
rocketmq:
|
rocketmq:
|
||||||
name-server: 192.168.2.122:9876
|
name-server: 106.124.130.167:9876
|
||||||
isVIPChannel: false
|
isVIPChannel: false
|
||||||
producer:
|
producer:
|
||||||
group: lili_group
|
group: lili_group
|
||||||
@ -316,7 +320,7 @@ rocketmq:
|
|||||||
xxl:
|
xxl:
|
||||||
job:
|
job:
|
||||||
admin:
|
admin:
|
||||||
addresses: http://192.168.2.122:9001/xxl-job-admin
|
addresses: http://127.0.0.1:9001/xxl-job-admin
|
||||||
executor:
|
executor:
|
||||||
appname: xxl-job-executor-lilishop
|
appname: xxl-job-executor-lilishop
|
||||||
address:
|
address:
|
||||||
|
|||||||
@ -14,6 +14,7 @@ public class ConsumerApplication {
|
|||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
System.setProperty("es.set.netty.runtime.available.processors", "false");
|
System.setProperty("es.set.netty.runtime.available.processors", "false");
|
||||||
|
System.setProperty("rocketmq.client.logUseSlf4j","true");
|
||||||
SpringApplication.run(ConsumerApplication.class, args);
|
SpringApplication.run(ConsumerApplication.class, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,18 @@
|
|||||||
|
package cn.lili.sucurity;
|
||||||
|
|
||||||
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||||
|
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author paulG
|
||||||
|
* @since 2022/2/18
|
||||||
|
**/
|
||||||
|
@Component
|
||||||
|
public class ConsumerSecurityConfig extends WebSecurityConfigurerAdapter {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void configure(HttpSecurity http) throws Exception {
|
||||||
|
http.formLogin().disable();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -8,6 +8,7 @@ import cn.lili.modules.system.entity.dto.SeckillSetting;
|
|||||||
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.timetask.handler.EveryDayExecute;
|
import cn.lili.timetask.handler.EveryDayExecute;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -44,24 +45,40 @@ public class PromotionEverydayExecute implements EveryDayExecute {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void execute() {
|
public void execute() {
|
||||||
//清除所以商品索引的无效促销活动
|
try {
|
||||||
this.esGoodsIndexService.cleanInvalidPromotion();
|
//清除所有商品索引的无效促销活动
|
||||||
//定时创建活动
|
this.esGoodsIndexService.cleanInvalidPromotion();
|
||||||
addSeckill();
|
} catch (Exception e) {
|
||||||
|
log.error("清楚商品索引中无效促销异常", e);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
//定时创建活动
|
||||||
|
addSeckill();
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("秒杀活动添加异常", e);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加秒杀活动
|
* 添加秒杀活动
|
||||||
* 从系统设置中获取秒杀活动的配置
|
* 从系统设置中获取秒杀活动的配置
|
||||||
* 添加30天后的秒杀活动
|
* 添加明天后的秒杀活动
|
||||||
*/
|
*/
|
||||||
private void addSeckill() {
|
private void addSeckill() {
|
||||||
Setting setting = settingService.get(SettingEnum.SECKILL_SETTING.name());
|
Setting setting = settingService.get(SettingEnum.SECKILL_SETTING.name());
|
||||||
SeckillSetting seckillSetting = new Gson().fromJson(setting.getSettingValue(), SeckillSetting.class);
|
SeckillSetting seckillSetting = new Gson().fromJson(setting.getSettingValue(), SeckillSetting.class);
|
||||||
|
log.info("生成秒杀活动设置:{}", seckillSetting);
|
||||||
for (int i = 1; i <= SeckillService.PRE_CREATION; i++) {
|
for (int i = 1; i <= SeckillService.PRE_CREATION; i++) {
|
||||||
Seckill seckill = new Seckill(i, seckillSetting.getHours(), seckillSetting.getSeckillRule());
|
Seckill seckill = new Seckill(i, seckillSetting.getHours(), seckillSetting.getSeckillRule());
|
||||||
seckillService.savePromotions(seckill);
|
|
||||||
|
LambdaQueryWrapper<Seckill> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
lambdaQueryWrapper.eq(Seckill::getStartTime, seckill.getStartTime());
|
||||||
|
//如果已经存在促销,则不再次保存
|
||||||
|
if (seckillService.list(lambdaQueryWrapper).isEmpty()) {
|
||||||
|
boolean result = seckillService.savePromotions(seckill);
|
||||||
|
log.info("生成秒杀活动参数:{},结果:{}", seckill, result);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,9 +35,9 @@ spring:
|
|||||||
type: redis
|
type: redis
|
||||||
# Redis
|
# Redis
|
||||||
redis:
|
redis:
|
||||||
host: 192.168.2.122
|
host: 120.71.145.134
|
||||||
port: 6379
|
port: 6379
|
||||||
password: Gb84505016
|
password: ekLhvPGraSj8DGO0
|
||||||
lettuce:
|
lettuce:
|
||||||
pool:
|
pool:
|
||||||
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
||||||
@ -66,9 +66,9 @@ spring:
|
|||||||
default-datasource:
|
default-datasource:
|
||||||
type: com.alibaba.druid.pool.DruidDataSource
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
driverClassName: com.mysql.cj.jdbc.Driver
|
driverClassName: com.mysql.cj.jdbc.Driver
|
||||||
url: jdbc:mysql://192.168.2.126:3306/rx-shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
url: jdbc:mysql://120.71.183.195:3306/zyt_shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
||||||
username: rx-shop
|
username: zyt_shop
|
||||||
password: J2xEZ42HwPXrDXt3
|
password: Gb84505016@zytshop
|
||||||
maxActive: 20
|
maxActive: 20
|
||||||
initialSize: 5
|
initialSize: 5
|
||||||
maxWait: 60000
|
maxWait: 60000
|
||||||
@ -209,16 +209,16 @@ lili:
|
|||||||
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
||||||
#域名
|
#域名
|
||||||
domain:
|
domain:
|
||||||
pc: https://pc.b2b2c.pickmall.cn
|
pc: http://zbuyer.sx1788.cn/buyer
|
||||||
wap: https://m.b2b2c.pickmall.cn
|
wap: http://zshop.sx1788.cn/
|
||||||
store: https://store.b2b2c.pickmall.cn
|
store: http://zseller.sx1788.cn/login
|
||||||
admin: https://admin.b2b2c.pickmall.cn
|
admin: http://zmanager.sx1788.cn/login
|
||||||
#api地址
|
#api地址
|
||||||
api:
|
api:
|
||||||
buyer: https://buyer-api.pickmall.cn
|
buyer: https://zshop-api.sx1788.cn/buyer-api
|
||||||
common: https://common-api.pickmall.cn
|
common: https://zshop-api.sx1788.cn/common-api
|
||||||
manager: https://admin-api.pickmall.cn
|
manager: https://zshop-api.sx1788.cn/manager-api
|
||||||
store: https://store-api.pickmall.cn
|
store: https://zshop-api.sx1788.cn/seller-api
|
||||||
|
|
||||||
# jwt 细节设定
|
# jwt 细节设定
|
||||||
jwt-setting:
|
jwt-setting:
|
||||||
@ -237,7 +237,7 @@ lili:
|
|||||||
data:
|
data:
|
||||||
elasticsearch:
|
elasticsearch:
|
||||||
cluster-name: elasticsearch
|
cluster-name: elasticsearch
|
||||||
cluster-nodes: 192.168.2.122:9200
|
cluster-nodes: 106.124.130.167:9200
|
||||||
index:
|
index:
|
||||||
number-of-replicas: 0
|
number-of-replicas: 0
|
||||||
number-of-shards: 3
|
number-of-shards: 3
|
||||||
@ -247,7 +247,7 @@ lili:
|
|||||||
# username: elastic
|
# username: elastic
|
||||||
# password: LiLiShopES
|
# password: LiLiShopES
|
||||||
logstash:
|
logstash:
|
||||||
server: 192.168.2.122:4560
|
server: 106.124.130.167:4560
|
||||||
rocketmq:
|
rocketmq:
|
||||||
promotion-topic: lili_promotion_topic
|
promotion-topic: lili_promotion_topic
|
||||||
promotion-group: lili_promotion_group
|
promotion-group: lili_promotion_group
|
||||||
@ -268,7 +268,7 @@ lili:
|
|||||||
after-sale-topic: lili_after_sale_topic
|
after-sale-topic: lili_after_sale_topic
|
||||||
after-sale-group: lili_after_sale_group
|
after-sale-group: lili_after_sale_group
|
||||||
rocketmq:
|
rocketmq:
|
||||||
name-server: 192.168.2.122:9876
|
name-server: 106.124.130.167:9876
|
||||||
producer:
|
producer:
|
||||||
group: lili_group
|
group: lili_group
|
||||||
send-message-timeout: 30000
|
send-message-timeout: 30000
|
||||||
@ -276,7 +276,7 @@ rocketmq:
|
|||||||
xxl:
|
xxl:
|
||||||
job:
|
job:
|
||||||
admin:
|
admin:
|
||||||
addresses: http://192.168.2.122:9001/xxl-job-admin
|
addresses: http://127.0.0.1:9001/xxl-job-admin
|
||||||
executor:
|
executor:
|
||||||
appname: xxl-job-executor-lilishop
|
appname: xxl-job-executor-lilishop
|
||||||
address:
|
address:
|
||||||
|
|||||||
@ -20,6 +20,22 @@
|
|||||||
</encoder>
|
</encoder>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
|
<appender name="RocketmqClientAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${LOG_FILE_PATH}/rocketmq.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${LOG_FILE_PATH}/rocketmq/rocketmq-%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<maxHistory>30</maxHistory>
|
||||||
|
<totalSizeCap>30MB</totalSizeCap>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
<logger name="RocketmqClient" additivity="false">
|
||||||
|
<level value="info" />
|
||||||
|
<appender-ref ref="RocketmqClientAppender"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
<!--输出到elk的LOGSTASH-->
|
<!--输出到elk的LOGSTASH-->
|
||||||
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
|
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
|
||||||
<!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址-->
|
<!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址-->
|
||||||
@ -34,7 +50,7 @@
|
|||||||
<customFields>{"appName":"${APP_NAME}"}</customFields>
|
<customFields>{"appName":"${APP_NAME}"}</customFields>
|
||||||
</encoder>
|
</encoder>
|
||||||
</appender>
|
</appender>
|
||||||
<root >
|
<root level="INFO">
|
||||||
<appender-ref ref="CONSOLE"/>
|
<appender-ref ref="CONSOLE"/>
|
||||||
<appender-ref ref="FILE"/>
|
<appender-ref ref="FILE"/>
|
||||||
<appender-ref ref="LOGSTASH"/>
|
<appender-ref ref="LOGSTASH"/>
|
||||||
|
|||||||
@ -0,0 +1,30 @@
|
|||||||
|
package cn.lili.common.fulu.core;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Auther: chenYing
|
||||||
|
* @Date: 2019/8/26 0026 15:08
|
||||||
|
*/
|
||||||
|
public interface MethodConst {
|
||||||
|
//卡密下单接口method方法
|
||||||
|
String OPEN_API_CARD_ORDER_ADD = "fulu.order.card.add";
|
||||||
|
// 根据话费查询归属地和城市编码,面值,城市等信息
|
||||||
|
String OPEN_API_CHECK_PHONE = "fulu.mobile.info.get";
|
||||||
|
// 直充下单接口method方法
|
||||||
|
String OPEN_API_DIRECT_ORDER_ADD = "fulu.order.direct.add";
|
||||||
|
// 获取商品信息接口method方法
|
||||||
|
String OPEN_API_GOODS_GET = "fulu.goods.info.get";
|
||||||
|
// 获取商品模板信息接口method方法
|
||||||
|
String OPEN_API_GOODS_TEMPLATE_GET = "fulu.goods.template.get";
|
||||||
|
// 查单接口method方法
|
||||||
|
String OPEN_API_ORDER_GET = "fulu.order.info.get";
|
||||||
|
// 话费下单接口method方法
|
||||||
|
String OPEN_API_PHONE_ORDER_ADD = "fulu.order.mobile.add";
|
||||||
|
// 流量下单接口method方法
|
||||||
|
String OPEN_API_TRAFFIC_ORDER_ADD = "fulu.order.data.add";
|
||||||
|
// 获取用户信息接口method方法
|
||||||
|
String OPEN_API_USER_INFO_GET = "fulu.user.info.get";
|
||||||
|
//获取商品列表method方法
|
||||||
|
String OPEN_API_GOODS_LIST = "fulu.goods.list.get";
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,58 @@
|
|||||||
|
package cn.lili.common.fulu.core.http;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.lili.common.fulu.core.utils.HttpUtil;
|
||||||
|
|
||||||
|
import java.util.concurrent.Callable;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Auther: chenYing
|
||||||
|
* @Date: 2019/8/19 0019 16:16
|
||||||
|
*/
|
||||||
|
public class FuluClient implements IFuluClient {
|
||||||
|
private static volatile ExecutorService executor;
|
||||||
|
private String url;
|
||||||
|
|
||||||
|
public FuluClient() {
|
||||||
|
this.url = "http://openapi.fulu.com/api/getway";
|
||||||
|
}
|
||||||
|
|
||||||
|
public FuluClient(String url) {
|
||||||
|
this.url = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建线程池
|
||||||
|
*/
|
||||||
|
private static void createThreadPool() {
|
||||||
|
if (executor == null) {
|
||||||
|
synchronized (FuluClient.class) {
|
||||||
|
if (executor == null) {
|
||||||
|
executor = Executors.newCachedThreadPool();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String send(final String postData) {
|
||||||
|
String result = HttpUtil.sendPostJson(this.url, postData);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Future<String> sendAsync(final String postData) {
|
||||||
|
createThreadPool();
|
||||||
|
return executor.submit(new Callable<String>() {
|
||||||
|
@Override
|
||||||
|
public String call() throws Exception {
|
||||||
|
String result = HttpUtil.sendPostJson(url, postData);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
package cn.lili.common.fulu.core.http;
|
||||||
|
|
||||||
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Auther: chenYing
|
||||||
|
* @Date: 2019/8/19 0019 16:15
|
||||||
|
*/
|
||||||
|
public interface IFuluClient {
|
||||||
|
/**
|
||||||
|
* 同步请求openapi2.0
|
||||||
|
*
|
||||||
|
* @param postData
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
String send(final String postData);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 异步请求openapi2.0
|
||||||
|
*
|
||||||
|
* @param postData
|
||||||
|
* @return Future<String>
|
||||||
|
*/
|
||||||
|
Future<String> sendAsync(final String postData);
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
package cn.lili.common.fulu.core.utils;
|
||||||
|
|
||||||
|
import javax.crypto.Cipher;
|
||||||
|
import javax.crypto.spec.SecretKeySpec;
|
||||||
|
import java.security.Security;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Auther: chenYing
|
||||||
|
* @Date: 2019/8/27 0027 17:38
|
||||||
|
*/
|
||||||
|
public class CardUtil {
|
||||||
|
private static final String ALGORITHM = "AES/ECB/PKCS7Padding";
|
||||||
|
|
||||||
|
|
||||||
|
private CardUtil() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String cardDecode(String str, byte[] key) {
|
||||||
|
byte[] bytes = org.apache.commons.codec.binary.Base64.decodeBase64(str);
|
||||||
|
String result = null;
|
||||||
|
try {
|
||||||
|
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
|
||||||
|
Cipher cipher = Cipher.getInstance(ALGORITHM, "BC");
|
||||||
|
SecretKeySpec keySpec = new SecretKeySpec(key, "AES");
|
||||||
|
cipher.init(Cipher.DECRYPT_MODE, keySpec);
|
||||||
|
byte[] decoded = cipher.doFinal(bytes);
|
||||||
|
result = new String(decoded, "UTF-8");
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e.getMessage(), e);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String cardEncode(String str, byte[] key) {
|
||||||
|
byte[] result = null;
|
||||||
|
try {
|
||||||
|
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
|
||||||
|
Cipher cipher = Cipher.getInstance(ALGORITHM, "BC");
|
||||||
|
SecretKeySpec keySpec = new SecretKeySpec(key, "AES");
|
||||||
|
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
|
||||||
|
result = cipher.doFinal(str.getBytes("UTF-8"));
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e.getMessage(), e);
|
||||||
|
}
|
||||||
|
return new String(org.apache.commons.codec.binary.Base64.encodeBase64(result));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
package cn.lili.common.fulu.core.utils;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Auther: chenYing
|
||||||
|
* @Date: 2019/8/19 0019 15:17
|
||||||
|
*/
|
||||||
|
public class DateFormatUtil {
|
||||||
|
private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
||||||
|
|
||||||
|
private DateFormatUtil() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String currentDateTime() {
|
||||||
|
return new SimpleDateFormat(DATE_FORMAT).format(new Date());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,206 @@
|
|||||||
|
package cn.lili.common.fulu.core.utils;
|
||||||
|
|
||||||
|
|
||||||
|
import org.apache.http.HttpResponse;
|
||||||
|
import org.apache.http.NameValuePair;
|
||||||
|
import org.apache.http.client.HttpClient;
|
||||||
|
import org.apache.http.client.entity.UrlEncodedFormEntity;
|
||||||
|
import org.apache.http.client.methods.HttpPost;
|
||||||
|
import org.apache.http.impl.client.DefaultHttpClient;
|
||||||
|
import org.apache.http.message.BasicNameValuePair;
|
||||||
|
import org.apache.http.protocol.HTTP;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.net.*;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author cheny
|
||||||
|
*/
|
||||||
|
public class HttpUtil {
|
||||||
|
private static Logger log = LoggerFactory.getLogger(HttpUtil.class);
|
||||||
|
|
||||||
|
public final static int CONNECT_TIMEOUT = 10000;
|
||||||
|
public final static int READ_TIMEOUT = 10000;
|
||||||
|
|
||||||
|
private static final String ENCODING_GBK = "GBK";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* POST请求,json字符串形式数据
|
||||||
|
*
|
||||||
|
* @param url 请求地址
|
||||||
|
* @param param 请求的json数据
|
||||||
|
* @return response body
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public static String sendPostJson(String url, String param) {
|
||||||
|
return sendPostWithHeads(url, param, "application/json", null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String sendPostWithHeads(String url, String param, String contentType, Map<String, String> heads) {
|
||||||
|
PrintWriter out = null;
|
||||||
|
BufferedReader in = null;
|
||||||
|
StringBuilder result = new StringBuilder();
|
||||||
|
HttpURLConnection conn = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
URL realUrl = new URL(url);
|
||||||
|
// 打开和URL之间的连接
|
||||||
|
conn = (HttpURLConnection) realUrl.openConnection();
|
||||||
|
// 设置通用的请求属性
|
||||||
|
conn.setRequestMethod("POST");// 提交模式
|
||||||
|
conn.setConnectTimeout(CONNECT_TIMEOUT);// 连接超时 单位毫秒
|
||||||
|
conn.setReadTimeout(READ_TIMEOUT);// 读取超时 单位毫秒
|
||||||
|
if (contentType != null && !contentType.isEmpty()) {
|
||||||
|
conn.setRequestProperty("Content-Type", contentType);
|
||||||
|
}
|
||||||
|
conn.setRequestProperty("accept", "*/*");
|
||||||
|
conn.setRequestProperty("connection", "Keep-Alive");
|
||||||
|
conn.setRequestProperty("user-agent",
|
||||||
|
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36");
|
||||||
|
|
||||||
|
// 添加头信息
|
||||||
|
if (heads != null && !heads.isEmpty()) {
|
||||||
|
for (String key : heads.keySet()) {
|
||||||
|
conn.setRequestProperty(key, heads.get(key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 发送POST请求必须设置如下两行
|
||||||
|
conn.setDoOutput(true);
|
||||||
|
conn.setDoInput(true);
|
||||||
|
// 获取URLConnection对象对应的输出流
|
||||||
|
out = new PrintWriter(conn.getOutputStream());
|
||||||
|
// 发送请求参数
|
||||||
|
out.print(param);
|
||||||
|
// flush输出流的缓冲
|
||||||
|
out.flush();
|
||||||
|
// 定义BufferedReader输入流来读取URL的响应
|
||||||
|
in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
|
||||||
|
String line;
|
||||||
|
while ((line = in.readLine()) != null) {
|
||||||
|
result.append(line);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new RuntimeException("send POST request exception :" + e.getMessage(), e);
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (out != null) {
|
||||||
|
out.close();
|
||||||
|
}
|
||||||
|
if (in != null) {
|
||||||
|
in.close();
|
||||||
|
}
|
||||||
|
if (conn != null) {
|
||||||
|
conn.disconnect();
|
||||||
|
}
|
||||||
|
} catch (Exception e2) {
|
||||||
|
throw new RuntimeException("close Connection exception :" + e2.getMessage(), e2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* POST请求,String字符串形式数据
|
||||||
|
*
|
||||||
|
* @param url
|
||||||
|
* @param paramXmlStr
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String sendPostXmlStr(String url, String paramXmlStr) {
|
||||||
|
String tmpparamXmlStr = "";
|
||||||
|
try {
|
||||||
|
tmpparamXmlStr = URLEncoder.encode(paramXmlStr, ENCODING_GBK);
|
||||||
|
tmpparamXmlStr = sendPostWithHeads(url, tmpparamXmlStr, "application/xml", null);
|
||||||
|
tmpparamXmlStr = URLDecoder.decode(tmpparamXmlStr,ENCODING_GBK);
|
||||||
|
|
||||||
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
log.error("post请求URL数据转码报错,{}", e.getMessage());
|
||||||
|
}
|
||||||
|
return tmpparamXmlStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* POST请求,String字符串形式数据
|
||||||
|
*
|
||||||
|
* @param url
|
||||||
|
* @param paramXmlStr
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String sendPostXmlUrlencode(String url, String paramXmlStr) {
|
||||||
|
String tmpparamXmlStr = "";
|
||||||
|
Map<String, String> rspMap = new LinkedHashMap<>();
|
||||||
|
rspMap.put("req", paramXmlStr);
|
||||||
|
|
||||||
|
try {
|
||||||
|
tmpparamXmlStr = URLEncoder.encode(paramXmlStr, ENCODING_GBK);
|
||||||
|
tmpparamXmlStr = doPostMapParams(url, rspMap);
|
||||||
|
tmpparamXmlStr = URLDecoder.decode(tmpparamXmlStr,ENCODING_GBK);
|
||||||
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
log.error("post请求URL数据转码报错,{}", e.getMessage());
|
||||||
|
}
|
||||||
|
return tmpparamXmlStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送POST请求
|
||||||
|
* @param url String对象为 目的地址
|
||||||
|
* @param parameters 请求参数,Map类型。
|
||||||
|
* @return 远程响应结果
|
||||||
|
*/
|
||||||
|
public static String doPostMapParams(String url, Map<String, String> parameters) {
|
||||||
|
|
||||||
|
BufferedReader in = null;
|
||||||
|
try {
|
||||||
|
// 定义HttpClient
|
||||||
|
HttpClient client = new DefaultHttpClient();
|
||||||
|
// 实例化HTTP方法
|
||||||
|
HttpPost request = new HttpPost();
|
||||||
|
request.setURI(new URI(url));
|
||||||
|
|
||||||
|
//设置参数
|
||||||
|
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
|
||||||
|
for (Iterator iter = parameters.keySet().iterator(); iter.hasNext();) {
|
||||||
|
String name = (String) iter.next();
|
||||||
|
String value = String.valueOf(parameters.get(name));
|
||||||
|
nvps.add(new BasicNameValuePair(name, value));
|
||||||
|
}
|
||||||
|
request.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
|
||||||
|
|
||||||
|
HttpResponse response = client.execute(request);
|
||||||
|
int code = response.getStatusLine().getStatusCode();
|
||||||
|
if(code == 200){ //请求成功
|
||||||
|
in = new BufferedReader(new InputStreamReader(response.getEntity()
|
||||||
|
.getContent(),"UTF-8"));
|
||||||
|
StringBuffer sb = new StringBuffer("");
|
||||||
|
String line = "";
|
||||||
|
String NL = System.getProperty("line.separator");
|
||||||
|
while ((line = in.readLine()) != null) {
|
||||||
|
sb.append(line + NL);
|
||||||
|
}
|
||||||
|
|
||||||
|
in.close();
|
||||||
|
return sb.toString();
|
||||||
|
}else{
|
||||||
|
System.out.println("状态码:" + code);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,41 @@
|
|||||||
|
package cn.lili.common.fulu.core.utils;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
|
||||||
|
public class JSONUtil {
|
||||||
|
private static Gson gson = new Gson();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将 JSON 字符串转为 Java 对象
|
||||||
|
*/
|
||||||
|
public static <T> T fromJSON(String json, Class<T> type) {
|
||||||
|
T obj;
|
||||||
|
try {
|
||||||
|
obj = gson.fromJson(json, type);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* json字符串转list或者map
|
||||||
|
*/
|
||||||
|
public static <T> T fromJSON(String json, TypeToken<T> typeToken) {
|
||||||
|
return gson.fromJson(json, typeToken.getType());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将 Java 对象转为 JSON 字符串
|
||||||
|
*/
|
||||||
|
public static <T> String toJSON(T obj) {
|
||||||
|
String jsonStr;
|
||||||
|
try {
|
||||||
|
jsonStr = gson.toJson(obj);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
return jsonStr;
|
||||||
|
}
|
||||||
|
}
|
||||||
342
framework/src/main/java/cn/lili/common/fulu/core/utils/Test.java
Normal file
342
framework/src/main/java/cn/lili/common/fulu/core/utils/Test.java
Normal file
@ -0,0 +1,342 @@
|
|||||||
|
package cn.lili.common.fulu.core.utils;
|
||||||
|
|
||||||
|
import cn.lili.common.fulu.core.MethodConst;
|
||||||
|
import cn.lili.common.fulu.model.*;
|
||||||
|
import cn.lili.common.fulu.sdk.DefaultOpenApiClient;
|
||||||
|
import cn.lili.modules.store.entity.dto.FuLuConfigureDTO;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.concurrent.*;
|
||||||
|
|
||||||
|
public class Test {
|
||||||
|
private final static String APP_KEY = "lzHi7ewuTkplx2ePX0eQzN65TIFRk1zFClcoj1Jim/MHmu0X7ZqxMtSLENhvr1xD";
|
||||||
|
private final static Logger LOGGER = LoggerFactory.getLogger(Test.class);
|
||||||
|
private final static String SYS_SECRET = "9da68b0f8bcb470e84c3d30e343727e2";
|
||||||
|
private final static String URL = "http://openapi.fulu.com/api/getway";
|
||||||
|
|
||||||
|
// private final static String APP_KEY = "i4esv1l+76l/7NQCL3QudG90Fq+YgVfFGJAWgT+7qO1Bm9o/adG/1iwO2qXsAXNB";
|
||||||
|
// private final static Logger LOGGER = LoggerFactory.getLogger(Test.class);
|
||||||
|
// private final static String SYS_SECRET = "0a091b3aa4324435aab703142518a8f7";
|
||||||
|
// private final static String URL = "http://pre.openapi.fulu.com/api/getway";
|
||||||
|
|
||||||
|
private static String repeat(String ch, int num) {
|
||||||
|
StringBuilder str = new StringBuilder();
|
||||||
|
for (int i = 0; i < num; i++) {
|
||||||
|
str.append(ch);
|
||||||
|
}
|
||||||
|
return str.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void waitFor(Future<String> future) throws Exception {
|
||||||
|
while (!future.isDone()) {
|
||||||
|
TimeUnit.MILLISECONDS.sleep(500);
|
||||||
|
}
|
||||||
|
LOGGER.info("excuteAsync:\n{}", future.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 卡密下单
|
||||||
|
*
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public static void cardOrderAddTest(FuLuConfigureDTO fuLuConfigureDTO, Integer productId, Integer buyNum,String orderSn) throws Exception {
|
||||||
|
LOGGER.info("\n卡密下单{}", repeat("=", 100));
|
||||||
|
DefaultOpenApiClient client =
|
||||||
|
new DefaultOpenApiClient(URL, fuLuConfigureDTO.getAppMerchantKey(), fuLuConfigureDTO.getAppSecretKey(), MethodConst.OPEN_API_CARD_ORDER_ADD);
|
||||||
|
InputCardOrderDto dto = new InputCardOrderDto();
|
||||||
|
dto.setProductId(productId);
|
||||||
|
dto.setCustomerOrderNo(orderSn);
|
||||||
|
dto.setBuyNum(buyNum);
|
||||||
|
|
||||||
|
client.setBizObject(dto);
|
||||||
|
LOGGER.info("excute:\n{}\n{}", client.excute(), repeat("-", 100));
|
||||||
|
dto.setCustomerOrderNo(UUID.randomUUID().toString());
|
||||||
|
waitFor(client.excuteAsync());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 直充下单
|
||||||
|
*
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public static void directOrderAddTest(FuLuConfigureDTO fuLuConfigureDTO, Integer productId, Integer buyNum,String qrCode,String orderSn) throws Exception {
|
||||||
|
LOGGER.info("\n直充下单{}", repeat("=", 100));
|
||||||
|
DefaultOpenApiClient client =
|
||||||
|
new DefaultOpenApiClient(URL, fuLuConfigureDTO.getAppMerchantKey(), fuLuConfigureDTO.getAppSecretKey(), MethodConst.OPEN_API_DIRECT_ORDER_ADD);
|
||||||
|
InputDirectOrderDto dto = new InputDirectOrderDto();
|
||||||
|
dto.setProductId(productId);
|
||||||
|
dto.setBuyNum(buyNum);
|
||||||
|
client.setBizObject(dto);
|
||||||
|
int count = 1;
|
||||||
|
|
||||||
|
for (String chargeAccount : Arrays.asList(qrCode)) {
|
||||||
|
dto.setChargeAccount(chargeAccount);
|
||||||
|
dto.setCustomerOrderNo(orderSn);
|
||||||
|
|
||||||
|
LOGGER.info("excute:\n{}\n{}", client.excute(), repeat("-", 100));
|
||||||
|
if (count++ >= 3) {
|
||||||
|
waitFor(client.excuteAsync());
|
||||||
|
} else {
|
||||||
|
LOGGER.info("excuteAsync:\n{}\n{}", client.excuteAsync().get(), repeat("-", 100));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手机号归属地
|
||||||
|
*
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public void matchPhoneProducGetTest(FuLuConfigureDTO fuLuConfigureDTO) throws Exception {
|
||||||
|
LOGGER.info("\n手机号归属地{}", repeat("=", 100));
|
||||||
|
DefaultOpenApiClient client = new DefaultOpenApiClient(URL, fuLuConfigureDTO.getAppMerchantKey(), fuLuConfigureDTO.getAppSecretKey(), MethodConst.OPEN_API_CHECK_PHONE);
|
||||||
|
InputMatchPhoneProductListDto dto = new InputMatchPhoneProductListDto();
|
||||||
|
dto.setFaceValue(50D);
|
||||||
|
|
||||||
|
int count = 1;
|
||||||
|
for (String phone : Arrays.asList("15972368779", "13971553804")) {
|
||||||
|
dto.setPhone(phone);
|
||||||
|
|
||||||
|
client.setBizObject(dto);
|
||||||
|
|
||||||
|
LOGGER.info("excute:\n{}\n{}", client.excute(), repeat("-", 100));
|
||||||
|
if (count++ >= 2) {
|
||||||
|
waitFor(client.excuteAsync());
|
||||||
|
} else {
|
||||||
|
LOGGER.info("excuteAsync:\n{}\n{}", client.excuteAsync().get(), repeat("-", 100));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单查单
|
||||||
|
*
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public void orderInfoGetTest(FuLuConfigureDTO fuLuConfigureDTO) throws Exception {
|
||||||
|
LOGGER.info("\n订单查单{}", repeat("=", 100));
|
||||||
|
DefaultOpenApiClient client = new DefaultOpenApiClient(URL, fuLuConfigureDTO.getAppMerchantKey(), fuLuConfigureDTO.getAppSecretKey(), MethodConst.OPEN_API_ORDER_GET);
|
||||||
|
InputOrderGetDto dto = new InputOrderGetDto();
|
||||||
|
client.setBizObject(dto);
|
||||||
|
int count = 1;
|
||||||
|
|
||||||
|
for (String customerOrderNo : Arrays
|
||||||
|
.asList("0d19f8e4-5af3-490d-a8d8-47fd457da7de", "31b6b96b-a21e-4bc4-bc0c-6e77a2ffb698")) {
|
||||||
|
dto.setCustomerOrderNo(customerOrderNo);
|
||||||
|
|
||||||
|
LOGGER.info("excute:\n{}\n{}", client.excute(), repeat("-", 100));
|
||||||
|
if (count++ >= 2) {
|
||||||
|
Future<String> future = client.excuteAsync();
|
||||||
|
waitFor(future);
|
||||||
|
Map<String, String> result = JSONUtil.fromJSON(future.get(), new TypeToken<Map>() {
|
||||||
|
});
|
||||||
|
Map<String, Object> resultMap = JSONUtil.fromJSON(result.get("result"), new TypeToken<Map<String, Object>>() {
|
||||||
|
});
|
||||||
|
|
||||||
|
List<Map<String, String>> cardList = (List<Map<String, String>>) resultMap.get("cards");
|
||||||
|
StringBuilder decodeStr = new StringBuilder();
|
||||||
|
for (Map<String, String> map : cardList) {
|
||||||
|
decodeStr.append("card_number:").append(map.get("card_number")).append(";desc_card_number:")
|
||||||
|
.append(CardUtil.cardDecode(map.get("card_number"), SYS_SECRET.getBytes("UTF-8")));
|
||||||
|
decodeStr.append(" card_pwd:").append(map.get("card_pwd")).append(";card_pwd:")
|
||||||
|
.append(CardUtil.cardDecode(map.get("card_pwd"), SYS_SECRET.getBytes("UTF-8")));
|
||||||
|
decodeStr.append("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println(decodeStr.toString());
|
||||||
|
System.out.println(CardUtil.cardEncode("CD10002502019061217430016421", SYS_SECRET.getBytes("UTF-8")));
|
||||||
|
} else {
|
||||||
|
LOGGER.info("excuteAsync:\n{}\n{}", client.excuteAsync().get(), repeat("-", 100));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 话费下单
|
||||||
|
*
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public void phoneOrderAddTest(FuLuConfigureDTO fuLuConfigureDTO) throws Exception {
|
||||||
|
LOGGER.info("\n话费下单{}", repeat("=", 100));
|
||||||
|
DefaultOpenApiClient client =
|
||||||
|
new DefaultOpenApiClient(URL, fuLuConfigureDTO.getAppMerchantKey(), fuLuConfigureDTO.getAppSecretKey(), MethodConst.OPEN_API_PHONE_ORDER_ADD);
|
||||||
|
InputPhoneOrderDto dto = new InputPhoneOrderDto();
|
||||||
|
dto.setChargeValue(Double.valueOf(50));
|
||||||
|
int count = 1;
|
||||||
|
|
||||||
|
for (String chargePhone : Arrays.asList("15972368779", "13971553804")) {
|
||||||
|
dto.setCustomerOrderNo(UUID.randomUUID().toString());
|
||||||
|
dto.setChargePhone(chargePhone);
|
||||||
|
client.setBizObject(dto);
|
||||||
|
|
||||||
|
LOGGER.info("excute:\n{}\n{}", client.excute(), repeat("-", 100));
|
||||||
|
dto.setCustomerOrderNo(UUID.randomUUID().toString());
|
||||||
|
if (count++ >= 2) {
|
||||||
|
waitFor(client.excuteAsync());
|
||||||
|
} else {
|
||||||
|
LOGGER.info("excuteAsync:\n{}\n{}", client.excuteAsync().get(), repeat("-", 100));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得商品信息
|
||||||
|
*
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public static Map<String, Object> productInfoGetTest(FuLuConfigureDTO fuLuConfigureDTO,String productIdS) throws Exception {
|
||||||
|
LOGGER.info("\n获得商品信息{}", repeat("=", 100));
|
||||||
|
DefaultOpenApiClient client = new DefaultOpenApiClient(URL, fuLuConfigureDTO.getAppMerchantKey(), fuLuConfigureDTO.getAppSecretKey(), MethodConst.OPEN_API_GOODS_GET);
|
||||||
|
InputProductDto dto = new InputProductDto();
|
||||||
|
int count = 1;
|
||||||
|
Map<String, Object> maps = new HashMap();
|
||||||
|
for (String productId : Arrays.asList(productIdS)) {
|
||||||
|
dto.setProductId(productId);
|
||||||
|
client.setBizObject(dto);
|
||||||
|
maps = (Map) JSON.parse(client.excute());
|
||||||
|
LOGGER.info("excute:\n{}\n{}", client.excute(), repeat("-", 100));
|
||||||
|
if (count++ >= 10) {
|
||||||
|
waitFor(client.excuteAsync());
|
||||||
|
} else {
|
||||||
|
LOGGER.info("excuteAsync:\n{}\n{}", client.excuteAsync().get(), repeat("-", 100));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return maps;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得商品模板信息
|
||||||
|
*
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public void productTemplateGetTest(FuLuConfigureDTO fuLuConfigureDTO) throws Exception {
|
||||||
|
LOGGER.info("\n获得商品模板信息{}", repeat("=", 100));
|
||||||
|
DefaultOpenApiClient client =
|
||||||
|
new DefaultOpenApiClient(URL, fuLuConfigureDTO.getAppMerchantKey(), fuLuConfigureDTO.getAppSecretKey(), MethodConst.OPEN_API_GOODS_TEMPLATE_GET);
|
||||||
|
InputProductTemplateDto dto = new InputProductTemplateDto();
|
||||||
|
dto.setTemplateId("e1dac0ea-dc86-4c9d-a778-c9e19203ecb8");
|
||||||
|
client.setBizObject(dto);
|
||||||
|
LOGGER.info("excute:\n{}\n{}", client.excute(), repeat("-", 100));
|
||||||
|
waitFor(client.excuteAsync());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流量下单
|
||||||
|
*
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public void trafficOrderAddTest(FuLuConfigureDTO fuLuConfigureDTO) throws Exception {
|
||||||
|
LOGGER.info("\n流量下单{}", repeat("=", 100));
|
||||||
|
DefaultOpenApiClient client =
|
||||||
|
new DefaultOpenApiClient(URL, fuLuConfigureDTO.getAppMerchantKey(), fuLuConfigureDTO.getAppSecretKey(), MethodConst.OPEN_API_TRAFFIC_ORDER_ADD);
|
||||||
|
InputTrafficOrderDto dto = new InputTrafficOrderDto();
|
||||||
|
dto.setChargeValue(Double.valueOf(1024));
|
||||||
|
dto.setPacketKind(4);
|
||||||
|
|
||||||
|
int count = 1;
|
||||||
|
for (String chargePhone : Arrays.asList("15972368779", "13971553804")) {
|
||||||
|
client.setBizObject(dto);
|
||||||
|
dto.setChargePhone(chargePhone);
|
||||||
|
dto.setCustomerOrderNo(UUID.randomUUID().toString());
|
||||||
|
|
||||||
|
LOGGER.info("excute:\n{}\n{}", client.excute(), repeat("-", 100));
|
||||||
|
dto.setCustomerOrderNo(UUID.randomUUID().toString());
|
||||||
|
if (count++ >= 2) {
|
||||||
|
waitFor(client.excuteAsync());
|
||||||
|
} else {
|
||||||
|
LOGGER.info("excuteAsync:\n{}\n{}", client.excuteAsync().get(), repeat("-", 100));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户信息
|
||||||
|
*
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public static void userInfoGetTest(FuLuConfigureDTO fuLuConfigureDTO) throws Exception {
|
||||||
|
LOGGER.info("\n用户信息{}", repeat("=", 100));
|
||||||
|
DefaultOpenApiClient client =
|
||||||
|
new DefaultOpenApiClient(URL, fuLuConfigureDTO.getAppMerchantKey(), fuLuConfigureDTO.getAppSecretKey(), MethodConst.OPEN_API_USER_INFO_GET);
|
||||||
|
InputUserDto dto = new InputUserDto();
|
||||||
|
client.setBizObject(dto);
|
||||||
|
|
||||||
|
LOGGER.info("excute:\n{}\n{}", client.excute(), repeat("-", 100));
|
||||||
|
waitFor(client.excuteAsync());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户信息:高并发场景
|
||||||
|
*
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public static void userInfoGetTest2(FuLuConfigureDTO fuLuConfigureDTO) throws Exception {
|
||||||
|
LOGGER.info("\n用户信息:高并发场景{}", repeat("=", 100));
|
||||||
|
Executor executor = Executors.newCachedThreadPool();
|
||||||
|
|
||||||
|
final int count = 10;
|
||||||
|
final CountDownLatch downLatch = new CountDownLatch(count);
|
||||||
|
|
||||||
|
for (int i = 0; i < count; ++i) {
|
||||||
|
executor.execute(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
String name = Thread.currentThread().getName();
|
||||||
|
LOGGER.info("\n线程名:{}{}", name, repeat("+", 100));
|
||||||
|
|
||||||
|
DefaultOpenApiClient client =
|
||||||
|
new DefaultOpenApiClient(URL, fuLuConfigureDTO.getAppMerchantKey(), fuLuConfigureDTO.getAppSecretKey(), MethodConst.OPEN_API_USER_INFO_GET);
|
||||||
|
InputUserDto dto = new InputUserDto();
|
||||||
|
client.setBizObject(dto);
|
||||||
|
|
||||||
|
LOGGER.info("\n线程名:{}\n{}\n{}", name, client.excute(), repeat("+", 100));
|
||||||
|
waitFor(client.excuteAsync());
|
||||||
|
} catch (Exception ex) {
|
||||||
|
LOGGER.error(ex.getMessage(), ex);
|
||||||
|
} finally {
|
||||||
|
downLatch.countDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
downLatch.await();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* 获得商品信息列表
|
||||||
|
*
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public static String getGoodsInfoList(FuLuConfigureDTO fuLuConfigureDTO) throws Exception {
|
||||||
|
LOGGER.info("\n获得商品信息{}", repeat("=", 100));
|
||||||
|
DefaultOpenApiClient client = new DefaultOpenApiClient(URL, fuLuConfigureDTO.getAppMerchantKey(), fuLuConfigureDTO.getAppSecretKey(), MethodConst.OPEN_API_GOODS_LIST);
|
||||||
|
InputProductDto dto = new InputProductDto();
|
||||||
|
client.setBizObject(dto);
|
||||||
|
return client.excute().toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
try {
|
||||||
|
// productInfoGetTest();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,159 @@
|
|||||||
|
package cn.lili.common.fulu.model;
|
||||||
|
|
||||||
|
import cn.lili.common.fulu.core.utils.DateFormatUtil;
|
||||||
|
import cn.lili.common.fulu.core.utils.JSONUtil;
|
||||||
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Auther: chenYing
|
||||||
|
* @Date: 2019/8/19 0019 10:49
|
||||||
|
*/
|
||||||
|
public class CommonRequest implements Serializable {
|
||||||
|
private static final long serialVersionUID = 2L;
|
||||||
|
|
||||||
|
@SerializedName(value = "app_auth_token")
|
||||||
|
private String appAuthToken = "";
|
||||||
|
@SerializedName(value = "app_key")
|
||||||
|
private String appKey;
|
||||||
|
@SerializedName(value = "biz_content")
|
||||||
|
private String bizContent = "{}";
|
||||||
|
private transient Map<String, Object> bizContentMap = Collections.emptyMap();
|
||||||
|
private String charset;
|
||||||
|
private String format;
|
||||||
|
private String method;
|
||||||
|
private String sign;
|
||||||
|
@SerializedName(value = "sign_type")
|
||||||
|
private String signType;
|
||||||
|
private String timestamp;
|
||||||
|
private String version;
|
||||||
|
|
||||||
|
public CommonRequest() {
|
||||||
|
format = "json";
|
||||||
|
version = "2.0";
|
||||||
|
charset = "utf-8";
|
||||||
|
signType = "md5";
|
||||||
|
// timestamp = "2019-08-20 13:59:38";
|
||||||
|
timestamp = DateFormatUtil.currentDateTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getAppAuthToken() {
|
||||||
|
return appAuthToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAppAuthToken(String appAuthToken) {
|
||||||
|
this.appAuthToken = appAuthToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAppKey() {
|
||||||
|
return appKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAppKey(String appKey) {
|
||||||
|
this.appKey = appKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBizContent() {
|
||||||
|
if (!bizContentMap.isEmpty()) {
|
||||||
|
bizContent = JSONUtil.toJSON(bizContentMap);
|
||||||
|
}
|
||||||
|
return bizContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 直接将变量以json格式保存
|
||||||
|
*
|
||||||
|
* @param bizContent bizContent
|
||||||
|
*/
|
||||||
|
public void setBizContent(String bizContent) {
|
||||||
|
if (bizContent != null && !"".equals(bizContent.trim())) {
|
||||||
|
Map<String, Object> dataMap = JSONUtil.fromJSON(bizContent, new TypeToken<Map<String, Object>>() {
|
||||||
|
});
|
||||||
|
|
||||||
|
if (bizContentMap.isEmpty()) {
|
||||||
|
bizContentMap = new HashMap<String, Object>();
|
||||||
|
}
|
||||||
|
bizContentMap.putAll(dataMap);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCharset() {
|
||||||
|
return charset;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCharset(String charset) {
|
||||||
|
this.charset = charset;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFormat() {
|
||||||
|
return format;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFormat(String format) {
|
||||||
|
this.format = format;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMethod() {
|
||||||
|
return method;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMethod(String method) {
|
||||||
|
this.method = method;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSign() {
|
||||||
|
return sign;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSign(String sign) {
|
||||||
|
this.sign = sign;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSignType() {
|
||||||
|
return signType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSignType(String signType) {
|
||||||
|
this.signType = signType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTimestamp() {
|
||||||
|
return timestamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTimestamp(String timestamp) {
|
||||||
|
this.timestamp = timestamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVersion() {
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVersion(String version) {
|
||||||
|
this.version = version;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 以key:value形式保存,程序会转换为json格式
|
||||||
|
*
|
||||||
|
* @param key key
|
||||||
|
* @param value value
|
||||||
|
*/
|
||||||
|
public void setBizContent(String key, Object value) {
|
||||||
|
if (bizContentMap.isEmpty()) {
|
||||||
|
bizContentMap = new HashMap<String, Object>();
|
||||||
|
}
|
||||||
|
bizContentMap.put(key, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Object getBizContentValue(String key) {
|
||||||
|
return bizContentMap.get(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,56 @@
|
|||||||
|
package cn.lili.common.fulu.model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 卡密订单input dto
|
||||||
|
*
|
||||||
|
* @Auther: chenYing
|
||||||
|
* @Date: 2019/8/19 0019 15:35
|
||||||
|
*/
|
||||||
|
public class InputCardOrderDto extends CommonRequest {
|
||||||
|
public InputCardOrderDto() {
|
||||||
|
super();
|
||||||
|
setMethod("fulu.order.card.add");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 购买数量
|
||||||
|
*
|
||||||
|
* @return Integer
|
||||||
|
*/
|
||||||
|
public Integer getBuyNum() {
|
||||||
|
Object value = getBizContentValue("buy_num");
|
||||||
|
return value != null ? Integer.valueOf(value.toString()) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBuyNum(Integer buyNum) {
|
||||||
|
setBizContent("buy_num", buyNum);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 外部订单号
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getCustomerOrderNo() {
|
||||||
|
Object value = getBizContentValue("customer_order_no");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCustomerOrderNo(String customerOrderNo) {
|
||||||
|
setBizContent("customer_order_no", customerOrderNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品编号
|
||||||
|
*
|
||||||
|
* @return Integer
|
||||||
|
*/
|
||||||
|
public Integer getProductId() {
|
||||||
|
Object value = getBizContentValue("product_id");
|
||||||
|
return value != null ? Integer.valueOf(value.toString()) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProductId(Integer productId) {
|
||||||
|
setBizContent("product_id", productId);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,213 @@
|
|||||||
|
package cn.lili.common.fulu.model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 直充商品订单input dto
|
||||||
|
*
|
||||||
|
* @Auther: chenYing
|
||||||
|
* @Date: 2019/8/19 0019 15:39
|
||||||
|
*/
|
||||||
|
public class InputDirectOrderDto extends CommonRequest {
|
||||||
|
|
||||||
|
public InputDirectOrderDto() {
|
||||||
|
super();
|
||||||
|
setMethod("fulu.order.direct.add");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 购买数量
|
||||||
|
*
|
||||||
|
* @return Integer
|
||||||
|
*/
|
||||||
|
public Integer getBuyNum() {
|
||||||
|
Object value = getBizContentValue("buy_num");
|
||||||
|
return value != null ? Integer.valueOf(value.toString()) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBuyNum(Integer buyNum) {
|
||||||
|
setBizContent("buy_num", buyNum);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 充值账号
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getChargeAccount() {
|
||||||
|
Object value = getBizContentValue("charge_account");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChargeAccount(String chargeAccount) {
|
||||||
|
setBizContent("charge_account", chargeAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 充值游戏名称
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getChargeGameName() {
|
||||||
|
Object value = getBizContentValue("charge_game_name");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChargeGameName(String chargeGameName) {
|
||||||
|
setBizContent("charge_game_name", chargeGameName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 充值游戏区
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getChargeGameRegion() {
|
||||||
|
Object value = getBizContentValue("charge_game_region");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChargeGameRegion(String chargeGameRegion) {
|
||||||
|
setBizContent("charge_game_region", chargeGameRegion);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 充值游戏角色
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getChargeGameRole() {
|
||||||
|
Object value = getBizContentValue("charge_game_role");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChargeGameRole(String chargeGameRole) {
|
||||||
|
setBizContent("charge_game_role", chargeGameRole);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 充值游戏服
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getChargeGameSrv() {
|
||||||
|
Object value = getBizContentValue("charge_game_srv");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChargeGameSrv(String chargeGameSrv) {
|
||||||
|
setBizContent("charge_game_srv", chargeGameSrv);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下单真实Ip,区域商品要传
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getChargeIp() {
|
||||||
|
Object value = getBizContentValue("charge_ip");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChargeIp(String chargeIp) {
|
||||||
|
setBizContent("charge_ip", chargeIp);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 充值密码,部分游戏类要传
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getChargePassword() {
|
||||||
|
Object value = getBizContentValue("charge_password");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChargePassword(String chargePassword) {
|
||||||
|
setBizContent("charge_password", chargePassword);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 充值类型
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getChargeType() {
|
||||||
|
Object value = getBizContentValue("charge_type");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChargeType(String chargeType) {
|
||||||
|
setBizContent("charge_type", chargeType);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联系QQ
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getContactQq() {
|
||||||
|
Object value = getBizContentValue("contact_qq");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setContactQq(String contactQq) {
|
||||||
|
setBizContent("contact_qq", contactQq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联系电话
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getContactTel() {
|
||||||
|
Object value = getBizContentValue("contact_tel");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setContactTel(String contactTel) {
|
||||||
|
setBizContent("contact_tel", contactTel);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 外部订单号
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getCustomerOrderNo() {
|
||||||
|
Object value = getBizContentValue("customer_order_no");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCustomerOrderNo(String customerOrderNo) {
|
||||||
|
setBizContent("customer_order_no", customerOrderNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品编号
|
||||||
|
*
|
||||||
|
* @return Integer
|
||||||
|
*/
|
||||||
|
public Integer getProductId() {
|
||||||
|
Object value = getBizContentValue("product_id");
|
||||||
|
return value != null ? Integer.valueOf(value.toString()) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProductId(Integer productId) {
|
||||||
|
setBizContent("product_id", productId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 剩余数量
|
||||||
|
*
|
||||||
|
* @return Integer
|
||||||
|
*/
|
||||||
|
public Integer getRemainingNumber() {
|
||||||
|
Object value = getBizContentValue("remaining_number");
|
||||||
|
return value != null ? Integer.valueOf(value.toString()) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRemainingNumber(Integer remainingNumber) {
|
||||||
|
setBizContent("remaining_number", remainingNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
package cn.lili.common.fulu.model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手机号归属地input dto
|
||||||
|
*
|
||||||
|
* @Auther: chenYing
|
||||||
|
* @Date: 2019/8/19 0019 16:08
|
||||||
|
*/
|
||||||
|
public class InputMatchPhoneProductListDto extends CommonRequest {
|
||||||
|
|
||||||
|
public InputMatchPhoneProductListDto() {
|
||||||
|
super();
|
||||||
|
setMethod("fulu.mobile.info.get");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 面值
|
||||||
|
*
|
||||||
|
* @return Double
|
||||||
|
*/
|
||||||
|
public Double getFaceValue() {
|
||||||
|
Object value = getBizContentValue("face_value");
|
||||||
|
return value != null ? Double.valueOf(value.toString()) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFaceValue(Double faceValue) {
|
||||||
|
setBizContent("face_value", faceValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手机号
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getPhone() {
|
||||||
|
Object value = getBizContentValue("phone");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPhone(String phone) {
|
||||||
|
setBizContent("phone", phone);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,31 @@
|
|||||||
|
package cn.lili.common.fulu.model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单查单input dto
|
||||||
|
*
|
||||||
|
* @Auther: chenYing
|
||||||
|
* @Date: 2019/8/19 0019 15:23
|
||||||
|
*/
|
||||||
|
public class InputOrderGetDto extends CommonRequest {
|
||||||
|
|
||||||
|
public InputOrderGetDto() {
|
||||||
|
super();
|
||||||
|
setMethod("fulu.order.info.get");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 外部订单号
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getCustomerOrderNo() {
|
||||||
|
Object value = getBizContentValue("customer_order_no");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCustomerOrderNo(String customerOrderNo) {
|
||||||
|
setBizContent("customer_order_no", customerOrderNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,57 @@
|
|||||||
|
package cn.lili.common.fulu.model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 话费订单input dto
|
||||||
|
*
|
||||||
|
* @Auther: chenYing
|
||||||
|
* @Date: 2019/8/19 0019 15:31
|
||||||
|
*/
|
||||||
|
public class InputPhoneOrderDto extends CommonRequest {
|
||||||
|
|
||||||
|
public InputPhoneOrderDto() {
|
||||||
|
super();
|
||||||
|
setMethod("fulu.order.mobile.add");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 充值手机号
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getChargePhone() {
|
||||||
|
Object value = getBizContentValue("charge_phone");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChargePhone(String chargePhone) {
|
||||||
|
setBizContent("charge_phone", chargePhone);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 充值数额
|
||||||
|
*
|
||||||
|
* @return Double
|
||||||
|
*/
|
||||||
|
public Double getChargeValue() {
|
||||||
|
Object value = getBizContentValue("charge_value");
|
||||||
|
return value != null ? Double.valueOf(value.toString()) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChargeValue(Double chargeValue) {
|
||||||
|
setBizContent("charge_value", chargeValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 外部订单号
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getCustomerOrderNo() {
|
||||||
|
Object value = getBizContentValue("customer_order_no");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCustomerOrderNo(String customerOrderNo) {
|
||||||
|
setBizContent("customer_order_no", customerOrderNo);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
package cn.lili.common.fulu.model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品信息input dto
|
||||||
|
*
|
||||||
|
* @Auther: chenYing
|
||||||
|
* @Date: 2019/8/19 0019 16:04
|
||||||
|
*/
|
||||||
|
public class InputProductDto extends CommonRequest {
|
||||||
|
|
||||||
|
public InputProductDto() {
|
||||||
|
super();
|
||||||
|
setMethod("fulu.goods.info.get");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品编号
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getProductId() {
|
||||||
|
Object value = getBizContentValue("product_id");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProductId(String productId) {
|
||||||
|
setBizContent("product_id", productId);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
package cn.lili.common.fulu.model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品模板信息input dto
|
||||||
|
*
|
||||||
|
* @Auther: chenYing
|
||||||
|
* @Date: 2019/8/19 0019 16:01
|
||||||
|
*/
|
||||||
|
public class InputProductTemplateDto extends CommonRequest {
|
||||||
|
|
||||||
|
public InputProductTemplateDto() {
|
||||||
|
super();
|
||||||
|
setMethod("fulu.goods.template.get");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品模板编号
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getTemplateId() {
|
||||||
|
Object value = getBizContentValue("template_id");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTemplateId(String templateId) {
|
||||||
|
setBizContent("template_id", templateId);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,72 @@
|
|||||||
|
package cn.lili.common.fulu.model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流量订单input dto
|
||||||
|
*
|
||||||
|
* @Auther: chenYing
|
||||||
|
* @Date: 2019/8/19 0019 13:50
|
||||||
|
*/
|
||||||
|
public class InputTrafficOrderDto extends CommonRequest {
|
||||||
|
|
||||||
|
public InputTrafficOrderDto() {
|
||||||
|
super();
|
||||||
|
setMethod("fulu.order.data.add");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 充值手机号
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getChargePhone() {
|
||||||
|
Object value = getBizContentValue("charge_phone");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChargePhone(String chargePhone) {
|
||||||
|
setBizContent("charge_phone", chargePhone);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 充值数额(M)
|
||||||
|
*
|
||||||
|
* @return Double
|
||||||
|
*/
|
||||||
|
public Double getChargeValue() {
|
||||||
|
Object value = getBizContentValue("charge_value");
|
||||||
|
return value != null ? Double.valueOf(value.toString()) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChargeValue(Double chargeValue) {
|
||||||
|
setBizContent("charge_value", chargeValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 外部订单号
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getCustomerOrderNo() {
|
||||||
|
Object value = getBizContentValue("customer_order_no");
|
||||||
|
return value != null ? String.valueOf(value) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCustomerOrderNo(String customerOrderNo) {
|
||||||
|
setBizContent("customer_order_no", customerOrderNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流量性质 1:小时 2:日 3:7天 4:月 5:季度 6:半年 7:年
|
||||||
|
*
|
||||||
|
* @return Integer
|
||||||
|
*/
|
||||||
|
public Integer getPacketKind() {
|
||||||
|
Object value = getBizContentValue("packet_kind");
|
||||||
|
return value != null ? Integer.valueOf(value.toString()) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPacketKind(Integer packetKind) {
|
||||||
|
setBizContent("packet_kind", packetKind);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package cn.lili.common.fulu.model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户信息input dto
|
||||||
|
*
|
||||||
|
* @Auther: chenYing
|
||||||
|
* @Date: 2019/8/19 0019 16:06
|
||||||
|
*/
|
||||||
|
public class InputUserDto extends CommonRequest {
|
||||||
|
|
||||||
|
public InputUserDto() {
|
||||||
|
super();
|
||||||
|
setMethod("fulu.user.info.get");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,46 @@
|
|||||||
|
package cn.lili.common.fulu.model.response;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 响应对象
|
||||||
|
*
|
||||||
|
* @Auther: chenYing
|
||||||
|
* @Date: 2019/8/19 0019 15:06
|
||||||
|
*/
|
||||||
|
public class DefaultClientResponse {
|
||||||
|
private String code;
|
||||||
|
private String message;
|
||||||
|
private String result;
|
||||||
|
private String sign;
|
||||||
|
|
||||||
|
public String getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCode(String code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMessage() {
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMessage(String message) {
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getResult() {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setResult(String result) {
|
||||||
|
this.result = result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSign() {
|
||||||
|
return sign;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSign(String sign) {
|
||||||
|
this.sign = sign;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,129 @@
|
|||||||
|
package cn.lili.common.fulu.sdk;
|
||||||
|
|
||||||
|
import cn.lili.common.fulu.core.http.FuluClient;
|
||||||
|
import cn.lili.common.fulu.core.http.IFuluClient;
|
||||||
|
import cn.lili.common.fulu.core.utils.JSONUtil;
|
||||||
|
import cn.lili.common.fulu.model.CommonRequest;
|
||||||
|
import org.apache.commons.codec.digest.DigestUtils;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认OpenApi客户请求实现
|
||||||
|
*
|
||||||
|
* @Auther: chenYing
|
||||||
|
* @Date: 2019/8/19 0019 16:45
|
||||||
|
*/
|
||||||
|
public class DefaultOpenApiClient implements IDefaultOpenApiClient {
|
||||||
|
/**
|
||||||
|
* 商户AppKey
|
||||||
|
*/
|
||||||
|
private String appKey;
|
||||||
|
/**
|
||||||
|
* 业务参数
|
||||||
|
*/
|
||||||
|
private CommonRequest bizContent;
|
||||||
|
/**
|
||||||
|
* http请求
|
||||||
|
*/
|
||||||
|
private IFuluClient fuluClient;
|
||||||
|
/**
|
||||||
|
* 方法
|
||||||
|
*/
|
||||||
|
private String method;
|
||||||
|
/**
|
||||||
|
* 应用秘钥
|
||||||
|
*/
|
||||||
|
private String sysSecret;
|
||||||
|
|
||||||
|
// public DefaultOpenApiClient(String url, String appKey, String sysSecret) {
|
||||||
|
// this.appKey = appKey;
|
||||||
|
// this.sysSecret = sysSecret;
|
||||||
|
//
|
||||||
|
// if (url == null || "".equals(url.trim())) {
|
||||||
|
// this.fuluClient = new FuluClient();
|
||||||
|
// } else {
|
||||||
|
// this.fuluClient = new FuluClient(url);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 如果url没改变,可以使用这个构造
|
||||||
|
*
|
||||||
|
* @param appKey appKey
|
||||||
|
* @param sysSecret sysSecret
|
||||||
|
*/
|
||||||
|
// public DefaultOpenApiClient(String appKey, String sysSecret) {
|
||||||
|
// this.appKey = appKey;
|
||||||
|
// this.fuluClient = new FuluClient();
|
||||||
|
// this.sysSecret = sysSecret;
|
||||||
|
// }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 使用public void setBizContent(String bizContent)此方法,method不能为空,必填
|
||||||
|
* 或者使用其它构造,调用fulu.sup.open.api.model.CommonRequest的setMethod也可以
|
||||||
|
*
|
||||||
|
* @param url url
|
||||||
|
* @param appKey appKey
|
||||||
|
* @param sysSecret sysSecret
|
||||||
|
* @param method method
|
||||||
|
*/
|
||||||
|
public DefaultOpenApiClient(String url, String appKey, String sysSecret, String method) {
|
||||||
|
this.appKey = appKey;
|
||||||
|
this.sysSecret = sysSecret;
|
||||||
|
this.method = method;
|
||||||
|
|
||||||
|
if (url == null || "".equals(url.trim())) {
|
||||||
|
this.fuluClient = new FuluClient();
|
||||||
|
} else {
|
||||||
|
this.fuluClient = new FuluClient(url);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String excute() {
|
||||||
|
doSign();
|
||||||
|
return fuluClient.send(JSONUtil.toJSON(this.bizContent));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Future<String> excuteAsync() {
|
||||||
|
doSign();
|
||||||
|
return fuluClient.sendAsync(JSONUtil.toJSON(this.bizContent));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setBizContent(String bizContent) {
|
||||||
|
this.bizContent = new CommonRequest();
|
||||||
|
this.bizContent.setBizContent(bizContent);
|
||||||
|
this.bizContent.setAppKey(this.appKey);
|
||||||
|
this.bizContent.setMethod(this.method);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setBizObject(CommonRequest bizModel) {
|
||||||
|
this.bizContent = bizModel;
|
||||||
|
this.bizContent.setAppKey(this.appKey);
|
||||||
|
|
||||||
|
if (method != null && !"".equals(method)) {
|
||||||
|
this.bizContent.setMethod(this.method);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void doSign() {
|
||||||
|
if (bizContent.getMethod() == null || "".equals(bizContent.getMethod().trim())) {
|
||||||
|
throw new RuntimeException("param \"method\" can not blank!");
|
||||||
|
}
|
||||||
|
|
||||||
|
this.bizContent.setSign(null);
|
||||||
|
this.bizContent.getBizContent();
|
||||||
|
String json = JSONUtil.toJSON(this.bizContent);
|
||||||
|
char[] charArray = json.toCharArray();
|
||||||
|
Arrays.sort(charArray);
|
||||||
|
String signStr = new String(charArray);
|
||||||
|
signStr = String.format("%s%s", signStr, sysSecret);
|
||||||
|
this.bizContent.setSign(DigestUtils.md5Hex(signStr));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
package cn.lili.common.fulu.sdk;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import cn.lili.common.fulu.model.CommonRequest;
|
||||||
|
|
||||||
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认OpenApi客户请求接口
|
||||||
|
*
|
||||||
|
* @Auther: chenYing
|
||||||
|
* @Date: 2019/8/19 0019 16:40
|
||||||
|
*/
|
||||||
|
public interface IDefaultOpenApiClient {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行请求,同步方法
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
String excute();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行请求,异步方法
|
||||||
|
*
|
||||||
|
* @return Future<String>
|
||||||
|
*/
|
||||||
|
Future<String> excuteAsync();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置业务参数
|
||||||
|
*
|
||||||
|
* @param bizContent
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
void setBizContent(String bizContent);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置业务参数
|
||||||
|
*/
|
||||||
|
void setBizObject(CommonRequest bizModel);
|
||||||
|
|
||||||
|
}
|
||||||
@ -16,21 +16,21 @@ public class SmsTemplateProperties {
|
|||||||
/**
|
/**
|
||||||
* 登录
|
* 登录
|
||||||
*/
|
*/
|
||||||
private String lOGIN = "SMS_205755300";
|
private String lOGIN = "SMS_185821482";
|
||||||
/**
|
/**
|
||||||
* 注册
|
* 注册
|
||||||
*/
|
*/
|
||||||
private String REGISTER = "SMS_205755298";
|
private String REGISTER = "SMS_185821482";
|
||||||
/**
|
/**
|
||||||
* 找回密码
|
* 找回密码
|
||||||
*/
|
*/
|
||||||
private String FIND_USER = "SMS_205755301";
|
private String FIND_USER = "SMS_185821482";
|
||||||
/**
|
/**
|
||||||
* 设置密码
|
* 设置密码
|
||||||
*/
|
*/
|
||||||
private String UPDATE_PASSWORD = "SMS_205755297";
|
private String UPDATE_PASSWORD = "SMS_185821482";
|
||||||
/**
|
/**
|
||||||
* 设置支付密码
|
* 设置支付密码
|
||||||
*/
|
*/
|
||||||
private String WALLET_PASSWORD = "SMS_205755297";
|
private String WALLET_PASSWORD = "SMS_185821482";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -77,6 +77,11 @@ public class SensitiveWordsFilter implements Serializable {
|
|||||||
int step = 1;
|
int step = 1;
|
||||||
//计算此位置开始2个字符的hash
|
//计算此位置开始2个字符的hash
|
||||||
int hash = sp.nextTwoCharHash(i);
|
int hash = sp.nextTwoCharHash(i);
|
||||||
|
|
||||||
|
//如果没有敏感词,则直接返回内容
|
||||||
|
if (nodes.length == 0) {
|
||||||
|
return sentence;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* 根据hash获取第一个节点,
|
* 根据hash获取第一个节点,
|
||||||
* 真正匹配的节点可能不是第一个,
|
* 真正匹配的节点可能不是第一个,
|
||||||
|
|||||||
@ -55,7 +55,7 @@ public class IpUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ("0:0:0:0:0:0:0:1".equals(ip)) {
|
if ("0:0:0:0:0:0:0:1".equals(ip)) {
|
||||||
ip = "127.0.0.1";
|
ip = "106.124.130.167";
|
||||||
}
|
}
|
||||||
return ip;
|
return ip;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -77,7 +77,7 @@ public class AuthConfig {
|
|||||||
/**
|
/**
|
||||||
* 针对国外服务可以单独设置代理
|
* 针对国外服务可以单独设置代理
|
||||||
* HttpConfig config = new HttpConfig();
|
* HttpConfig config = new HttpConfig();
|
||||||
* config.setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 10080)));
|
* config.setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("106.124.130.167", 10080)));
|
||||||
* config.setTimeout(15000);
|
* config.setTimeout(15000);
|
||||||
*
|
*
|
||||||
* @since 1.15.5
|
* @since 1.15.5
|
||||||
|
|||||||
@ -47,9 +47,9 @@ public class AuthChecker {
|
|||||||
if (!GlobalAuthUtils.isHttpProtocol(redirectUri) && !GlobalAuthUtils.isHttpsProtocol(redirectUri)) {
|
if (!GlobalAuthUtils.isHttpProtocol(redirectUri) && !GlobalAuthUtils.isHttpsProtocol(redirectUri)) {
|
||||||
throw new AuthException(AuthResponseStatus.ILLEGAL_REDIRECT_URI, connectAuth);
|
throw new AuthException(AuthResponseStatus.ILLEGAL_REDIRECT_URI, connectAuth);
|
||||||
}
|
}
|
||||||
//支付宝在创建回调地址时,不允许使用localhost或者127.0.0.1
|
//支付宝在创建回调地址时,不允许使用localhost或者106.124.130.167
|
||||||
if (ConnectAuthEnum.ALIPAY == connectAuth && GlobalAuthUtils.isLocalHost(redirectUri)) {
|
if (ConnectAuthEnum.ALIPAY == connectAuth && GlobalAuthUtils.isLocalHost(redirectUri)) {
|
||||||
//The redirect uri of alipay is forbidden to use localhost or 127.0.0.1
|
//The redirect uri of alipay is forbidden to use localhost or 106.124.130.167
|
||||||
throw new AuthException(AuthResponseStatus.ILLEGAL_REDIRECT_URI, connectAuth);
|
throw new AuthException(AuthResponseStatus.ILLEGAL_REDIRECT_URI, connectAuth);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -171,7 +171,7 @@ public class GlobalAuthUtils {
|
|||||||
* @return true: 本地主机(域名), false: 非本地主机(域名)
|
* @return true: 本地主机(域名), false: 非本地主机(域名)
|
||||||
*/
|
*/
|
||||||
public static boolean isLocalHost(String url) {
|
public static boolean isLocalHost(String url) {
|
||||||
return StringUtils.isEmpty(url) || url.contains("127.0.0.1") || url.contains("localhost");
|
return StringUtils.isEmpty(url) || url.contains("106.124.130.167") || url.contains("localhost");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import cn.hutool.json.JSONUtil;
|
|||||||
import cn.lili.common.enums.ResultCode;
|
import cn.lili.common.enums.ResultCode;
|
||||||
import cn.lili.common.exception.ServiceException;
|
import cn.lili.common.exception.ServiceException;
|
||||||
import cn.lili.modules.goods.entity.dto.GoodsOperationDTO;
|
import cn.lili.modules.goods.entity.dto.GoodsOperationDTO;
|
||||||
|
import cn.lili.modules.goods.entity.dto.GoodsOperationFuLuDTO;
|
||||||
import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
|
import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
|
||||||
import cn.lili.modules.goods.entity.enums.GoodsTypeEnum;
|
import cn.lili.modules.goods.entity.enums.GoodsTypeEnum;
|
||||||
import cn.lili.mybatis.BaseEntity;
|
import cn.lili.mybatis.BaseEntity;
|
||||||
@ -143,15 +144,83 @@ public class Goods extends BaseEntity {
|
|||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
private String params;
|
private String params;
|
||||||
|
|
||||||
|
//福禄所需参数
|
||||||
|
/**
|
||||||
|
* 商品编号
|
||||||
|
*/
|
||||||
|
@Length(max = 30, message = "商品规格编号太长,不能超过30个字符")
|
||||||
|
@ApiModelProperty(value = "商品编号")
|
||||||
|
private String sn;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重量
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "重量")
|
||||||
|
@Max(value = 99999999, message = "重量不能超过99999999")
|
||||||
|
private Double weight;
|
||||||
|
|
||||||
public Goods() {
|
public Goods() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 福禄
|
||||||
|
* @param goodsOperationDTO
|
||||||
|
*/
|
||||||
|
public Goods(GoodsOperationFuLuDTO goodsOperationDTO) {
|
||||||
|
this.goodsName = goodsOperationDTO.getGoodsName();
|
||||||
|
this.categoryPath = goodsOperationDTO.getCategoryPath();
|
||||||
|
this.storeCategoryPath = goodsOperationDTO.getStoreCategoryPath();
|
||||||
|
this.brandId = goodsOperationDTO.getBrandId();
|
||||||
|
this.sn = goodsOperationDTO.getSn();
|
||||||
|
this.price = goodsOperationDTO.getPrice();
|
||||||
|
this.weight = goodsOperationDTO.getWeight();
|
||||||
|
this.templateId = goodsOperationDTO.getTemplateId();
|
||||||
|
this.recommend = goodsOperationDTO.getRecommend();
|
||||||
|
this.sellingPoint = goodsOperationDTO.getSellingPoint();
|
||||||
|
this.salesModel = goodsOperationDTO.getSalesModel();
|
||||||
|
this.goodsUnit = goodsOperationDTO.getGoodsUnit();
|
||||||
|
this.intro = goodsOperationDTO.getIntro();
|
||||||
|
this.mobileIntro = goodsOperationDTO.getMobileIntro();
|
||||||
|
this.goodsVideo = goodsOperationDTO.getGoodsVideo();
|
||||||
|
this.price = goodsOperationDTO.getPrice();
|
||||||
|
if (goodsOperationDTO.getGoodsParamsDTOList() != null && goodsOperationDTO.getGoodsParamsDTOList().isEmpty()) {
|
||||||
|
this.params = JSONUtil.toJsonStr(goodsOperationDTO.getGoodsParamsDTOList());
|
||||||
|
}
|
||||||
|
//如果立即上架则
|
||||||
|
this.marketEnable = Boolean.TRUE.equals(goodsOperationDTO.getRelease()) ? GoodsStatusEnum.UPPER.name() : GoodsStatusEnum.DOWN.name();
|
||||||
|
this.goodsType = goodsOperationDTO.getGoodsType();
|
||||||
|
this.grade = 100D;
|
||||||
|
|
||||||
|
//循环sku,判定sku是否有效
|
||||||
|
for (Map<String, Object> sku : goodsOperationDTO.getSkuList()) {
|
||||||
|
//判定参数不能为空
|
||||||
|
if (!sku.containsKey("sn") || sku.get("sn") == null) {
|
||||||
|
throw new ServiceException(ResultCode.GOODS_SKU_SN_ERROR);
|
||||||
|
}
|
||||||
|
if (!sku.containsKey("price") || StringUtil.isEmpty(sku.get("price").toString()) || Convert.toDouble(sku.get("price")) <= 0) {
|
||||||
|
throw new ServiceException(ResultCode.GOODS_SKU_PRICE_ERROR);
|
||||||
|
}
|
||||||
|
if (!sku.containsKey("cost") || StringUtil.isEmpty(sku.get("cost").toString()) || Convert.toDouble(sku.get("cost")) <= 0) {
|
||||||
|
throw new ServiceException(ResultCode.GOODS_SKU_COST_ERROR);
|
||||||
|
}
|
||||||
|
//虚拟商品没有重量字段
|
||||||
|
if (this.goodsType.equals(GoodsTypeEnum.PHYSICAL_GOODS.name()) && (!sku.containsKey("weight") || sku.containsKey("weight") && (StringUtil.isEmpty(sku.get("weight").toString()) || Convert.toDouble(sku.get("weight").toString()) < 0))) {
|
||||||
|
throw new ServiceException(ResultCode.GOODS_SKU_WEIGHT_ERROR);
|
||||||
|
}
|
||||||
|
if (!sku.containsKey("quantity") || StringUtil.isEmpty(sku.get("quantity").toString()) || Convert.toInt(sku.get("quantity").toString()) < 0) {
|
||||||
|
throw new ServiceException(ResultCode.GOODS_SKU_QUANTITY_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public Goods(GoodsOperationDTO goodsOperationDTO) {
|
public Goods(GoodsOperationDTO goodsOperationDTO) {
|
||||||
this.goodsName = goodsOperationDTO.getGoodsName();
|
this.goodsName = goodsOperationDTO.getGoodsName();
|
||||||
this.categoryPath = goodsOperationDTO.getCategoryPath();
|
this.categoryPath = goodsOperationDTO.getCategoryPath();
|
||||||
this.storeCategoryPath = goodsOperationDTO.getStoreCategoryPath();
|
this.storeCategoryPath = goodsOperationDTO.getStoreCategoryPath();
|
||||||
this.brandId = goodsOperationDTO.getBrandId();
|
this.brandId = goodsOperationDTO.getBrandId();
|
||||||
|
this.price = goodsOperationDTO.getPrice();
|
||||||
this.templateId = goodsOperationDTO.getTemplateId();
|
this.templateId = goodsOperationDTO.getTemplateId();
|
||||||
this.recommend = goodsOperationDTO.getRecommend();
|
this.recommend = goodsOperationDTO.getRecommend();
|
||||||
this.sellingPoint = goodsOperationDTO.getSellingPoint();
|
this.sellingPoint = goodsOperationDTO.getSellingPoint();
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package cn.lili.modules.goods.service;
|
|||||||
|
|
||||||
import cn.lili.modules.goods.entity.dos.Goods;
|
import cn.lili.modules.goods.entity.dos.Goods;
|
||||||
import cn.lili.modules.goods.entity.dto.GoodsOperationDTO;
|
import cn.lili.modules.goods.entity.dto.GoodsOperationDTO;
|
||||||
|
import cn.lili.modules.goods.entity.dto.GoodsOperationFuLuDTO;
|
||||||
import cn.lili.modules.goods.entity.dto.GoodsSearchParams;
|
import cn.lili.modules.goods.entity.dto.GoodsSearchParams;
|
||||||
import cn.lili.modules.goods.entity.enums.GoodsAuthEnum;
|
import cn.lili.modules.goods.entity.enums.GoodsAuthEnum;
|
||||||
import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
|
import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
|
||||||
@ -58,6 +59,14 @@ public interface GoodsService extends IService<Goods> {
|
|||||||
*/
|
*/
|
||||||
void addGoods(GoodsOperationDTO goodsOperationDTO);
|
void addGoods(GoodsOperationDTO goodsOperationDTO);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加福禄商品
|
||||||
|
*
|
||||||
|
* @param goodsOperationFuLuDTO 商品查询条件
|
||||||
|
*/
|
||||||
|
void fuLuAddGoods(GoodsOperationFuLuDTO goodsOperationFuLuDTO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改商品
|
* 修改商品
|
||||||
*
|
*
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import cn.lili.modules.goods.entity.dos.Category;
|
|||||||
import cn.lili.modules.goods.entity.dos.Goods;
|
import cn.lili.modules.goods.entity.dos.Goods;
|
||||||
import cn.lili.modules.goods.entity.dos.GoodsGallery;
|
import cn.lili.modules.goods.entity.dos.GoodsGallery;
|
||||||
import cn.lili.modules.goods.entity.dto.GoodsOperationDTO;
|
import cn.lili.modules.goods.entity.dto.GoodsOperationDTO;
|
||||||
|
import cn.lili.modules.goods.entity.dto.GoodsOperationFuLuDTO;
|
||||||
import cn.lili.modules.goods.entity.dto.GoodsParamsDTO;
|
import cn.lili.modules.goods.entity.dto.GoodsParamsDTO;
|
||||||
import cn.lili.modules.goods.entity.dto.GoodsSearchParams;
|
import cn.lili.modules.goods.entity.dto.GoodsSearchParams;
|
||||||
import cn.lili.modules.goods.entity.enums.GoodsAuthEnum;
|
import cn.lili.modules.goods.entity.enums.GoodsAuthEnum;
|
||||||
@ -159,7 +160,9 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
|
|||||||
//检查商品
|
//检查商品
|
||||||
this.checkGoods(goods);
|
this.checkGoods(goods);
|
||||||
//向goods加入图片
|
//向goods加入图片
|
||||||
this.setGoodsGalleryParam(goodsOperationDTO.getGoodsGalleryList().get(0), goods);
|
if (goodsOperationDTO.getGoodsGalleryList().size() > 0 ) {
|
||||||
|
this.setGoodsGalleryParam(goodsOperationDTO.getGoodsGalleryList().get(0), goods);
|
||||||
|
}
|
||||||
//添加商品参数
|
//添加商品参数
|
||||||
if (goodsOperationDTO.getGoodsParamsDTOList() != null && !goodsOperationDTO.getGoodsParamsDTOList().isEmpty()) {
|
if (goodsOperationDTO.getGoodsParamsDTOList() != null && !goodsOperationDTO.getGoodsParamsDTOList().isEmpty()) {
|
||||||
//给商品参数填充值
|
//给商品参数填充值
|
||||||
@ -176,6 +179,31 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void fuLuAddGoods(GoodsOperationFuLuDTO goodsOperationDTO) {
|
||||||
|
Goods goods = new Goods(goodsOperationDTO);
|
||||||
|
//检查商品
|
||||||
|
this.checkGoods(goods);
|
||||||
|
//向goods加入图片
|
||||||
|
if (goodsOperationDTO.getGoodsGalleryList().size() > 0 ) {
|
||||||
|
this.setGoodsGalleryParam(goodsOperationDTO.getGoodsGalleryList().get(0), goods);
|
||||||
|
}
|
||||||
|
//添加商品参数
|
||||||
|
if (goodsOperationDTO.getGoodsParamsDTOList() != null && !goodsOperationDTO.getGoodsParamsDTOList().isEmpty()) {
|
||||||
|
//给商品参数填充值
|
||||||
|
goods.setParams(JSONUtil.toJsonStr(goodsOperationDTO.getGoodsParamsDTOList()));
|
||||||
|
}
|
||||||
|
//添加商品
|
||||||
|
this.save(goods);
|
||||||
|
//添加商品sku信息
|
||||||
|
this.goodsSkuService.add(goodsOperationDTO.getSkuList(), goods);
|
||||||
|
//添加相册
|
||||||
|
if (goodsOperationDTO.getGoodsGalleryList() != null && !goodsOperationDTO.getGoodsGalleryList().isEmpty()) {
|
||||||
|
this.goodsGalleryService.add(goodsOperationDTO.getGoodsGalleryList(), goods.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void editGoods(GoodsOperationDTO goodsOperationDTO, String goodsId) {
|
public void editGoods(GoodsOperationDTO goodsOperationDTO, String goodsId) {
|
||||||
|
|||||||
@ -34,7 +34,7 @@ public interface FootprintMapper extends BaseMapper<FootPrint> {
|
|||||||
*
|
*
|
||||||
* @param memberId 会员ID
|
* @param memberId 会员ID
|
||||||
*/
|
*/
|
||||||
@Delete("DELETE FROM li_foot_print l1 WHERE l1.id IN (" +
|
@Delete("DELETE FROM li_foot_print WHERE id IN (" +
|
||||||
"SELECT l2.id FROM (" +
|
"SELECT l2.id FROM (" +
|
||||||
"SELECT l3.id FROM li_foot_print l3 WHERE l3.member_id=${memberId} ORDER BY id DESC LIMIT 100,100) l2)")
|
"SELECT l3.id FROM li_foot_print l3 WHERE l3.member_id=${memberId} ORDER BY id DESC LIMIT 100,100) l2)")
|
||||||
void deleteLastFootPrint(String memberId);
|
void deleteLastFootPrint(String memberId);
|
||||||
|
|||||||
@ -237,10 +237,10 @@ public interface MemberService extends IService<Member> {
|
|||||||
*/
|
*/
|
||||||
boolean updateMemberLoginTime(String memberId);
|
boolean updateMemberLoginTime(String memberId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取用户VO
|
* 获取用户VO
|
||||||
* @param id
|
* @param id 会员id
|
||||||
* @return
|
* @return 用户VO
|
||||||
*/
|
*/
|
||||||
MemberVO getMember(String id);
|
MemberVO getMember(String id);
|
||||||
}
|
}
|
||||||
@ -112,11 +112,15 @@ public class MemberEvaluationServiceImpl extends ServiceImpl<MemberEvaluationMap
|
|||||||
//获取订单信息
|
//获取订单信息
|
||||||
Order order = orderService.getBySn(orderItem.getOrderSn());
|
Order order = orderService.getBySn(orderItem.getOrderSn());
|
||||||
//检测是否可以添加会员评价
|
//检测是否可以添加会员评价
|
||||||
|
Member member;
|
||||||
if (Boolean.TRUE.equals(isSelf)) {
|
if (Boolean.TRUE.equals(isSelf)) {
|
||||||
checkMemberEvaluation(orderItem, order);
|
checkMemberEvaluation(orderItem, order);
|
||||||
|
//获取用户信息 非自己评价时,读取数据库
|
||||||
|
member = memberService.getById(order.getMemberId());
|
||||||
|
} else {
|
||||||
|
//自我评价商品时,获取当前登录用户信息
|
||||||
|
member = memberService.getUserInfo();
|
||||||
}
|
}
|
||||||
//获取用户信息
|
|
||||||
Member member = memberService.getUserInfo();
|
|
||||||
//获取商品信息
|
//获取商品信息
|
||||||
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(memberEvaluationDTO.getSkuId());
|
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(memberEvaluationDTO.getSkuId());
|
||||||
//新增用户评价
|
//新增用户评价
|
||||||
|
|||||||
@ -434,7 +434,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
|||||||
* @param mobilePhone 手机号
|
* @param mobilePhone 手机号
|
||||||
* @return 会员
|
* @return 会员
|
||||||
*/
|
*/
|
||||||
private Long findMember(String mobilePhone, String userName) {
|
private Long findMember(String userName, String mobilePhone) {
|
||||||
QueryWrapper<Member> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<Member> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.eq("mobile", mobilePhone)
|
queryWrapper.eq("mobile", mobilePhone)
|
||||||
.or().eq("username", userName);
|
.or().eq("username", userName);
|
||||||
@ -624,7 +624,8 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
|||||||
*/
|
*/
|
||||||
private void checkMember(String userName, String mobilePhone) {
|
private void checkMember(String userName, String mobilePhone) {
|
||||||
//判断手机号是否存在
|
//判断手机号是否存在
|
||||||
if (findMember(userName, mobilePhone) > 0) {
|
Long aa = findMember(userName, mobilePhone);
|
||||||
|
if (aa > 0) {
|
||||||
throw new ServiceException(ResultCode.USER_EXIST);
|
throw new ServiceException(ResultCode.USER_EXIST);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -273,9 +273,9 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@AfterSaleLogPoint(sn = "#afterSaleSn", description = "'售后-商家收货:单号['+#afterSaleSn+'],物流单号为['+#logisticsNo+']" +
|
@AfterSaleLogPoint(sn = "#afterSaleSn", description = "'售后-商家收货:单号['+#afterSaleSn+']" +
|
||||||
",处理结果['+serviceStatus='PASS'?'商家收货':'商家拒收'+']'")
|
",处理结果['+serviceStatus='PASS'?'商家收货':'商家拒收'+']'")
|
||||||
@SystemLogPoint(description = "售后-商家收货", customerLog = "'售后-商家收货:单号['+#afterSaleSn+'],物流单号为['+#logisticsNo+']" +
|
@SystemLogPoint(description = "售后-商家收货", customerLog = "'售后-商家收货:单号['+#afterSaleSn+']" +
|
||||||
",处理结果['+serviceStatus='PASS'?'商家收货':'商家拒收'+']'")
|
",处理结果['+serviceStatus='PASS'?'商家收货':'商家拒收'+']'")
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public AfterSale storeConfirm(String afterSaleSn, String serviceStatus, String remark) {
|
public AfterSale storeConfirm(String afterSaleSn, String serviceStatus, String remark) {
|
||||||
|
|||||||
@ -199,6 +199,9 @@ public class Order extends BaseEntity {
|
|||||||
@ApiModelProperty(value = "使用的平台会员优惠券id")
|
@ApiModelProperty(value = "使用的平台会员优惠券id")
|
||||||
private String usePlatformMemberCouponId;
|
private String usePlatformMemberCouponId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "qrCode 实物为提货码 虚拟货物为账号")
|
||||||
|
private String qrCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建订单
|
* 构建订单
|
||||||
*
|
*
|
||||||
|
|||||||
@ -43,6 +43,14 @@ public interface OrderService extends IService<Order> {
|
|||||||
*/
|
*/
|
||||||
Order getBySn(String orderSn);
|
Order getBySn(String orderSn);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取订单
|
||||||
|
*
|
||||||
|
* @param receivableNo 微信支付单号
|
||||||
|
* @return 订单信息
|
||||||
|
*/
|
||||||
|
Order getOrderByReceivableNo(String receivableNo);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单查询
|
* 订单查询
|
||||||
*
|
*
|
||||||
@ -284,4 +292,11 @@ public interface OrderService extends IService<Order> {
|
|||||||
* @return 是否成功
|
* @return 是否成功
|
||||||
*/
|
*/
|
||||||
boolean checkFictitiousOrder(String pintuanId, Integer requiredNum, Boolean fictitious);
|
boolean checkFictitiousOrder(String pintuanId, Integer requiredNum, Boolean fictitious);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 验证福禄订单进行处理
|
||||||
|
* @param tradeNo 第三方流水
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void fuluOrder(String tradeNo);
|
||||||
}
|
}
|
||||||
@ -11,19 +11,19 @@ import cn.hutool.poi.excel.ExcelWriter;
|
|||||||
import cn.lili.common.enums.PromotionTypeEnum;
|
import cn.lili.common.enums.PromotionTypeEnum;
|
||||||
import cn.lili.common.enums.ResultCode;
|
import cn.lili.common.enums.ResultCode;
|
||||||
import cn.lili.common.exception.ServiceException;
|
import cn.lili.common.exception.ServiceException;
|
||||||
|
import cn.lili.common.fulu.core.utils.Test;
|
||||||
import cn.lili.common.properties.RocketmqCustomProperties;
|
import cn.lili.common.properties.RocketmqCustomProperties;
|
||||||
import cn.lili.common.security.OperationalJudgment;
|
import cn.lili.common.security.OperationalJudgment;
|
||||||
import cn.lili.common.security.context.UserContext;
|
import cn.lili.common.security.context.UserContext;
|
||||||
import cn.lili.common.security.enums.UserEnums;
|
import cn.lili.common.security.enums.UserEnums;
|
||||||
import cn.lili.common.utils.SnowFlake;
|
import cn.lili.common.utils.SnowFlake;
|
||||||
|
import cn.lili.modules.goods.entity.dos.Goods;
|
||||||
import cn.lili.modules.goods.entity.dto.GoodsCompleteMessage;
|
import cn.lili.modules.goods.entity.dto.GoodsCompleteMessage;
|
||||||
|
import cn.lili.modules.goods.service.GoodsService;
|
||||||
import cn.lili.modules.member.entity.dto.MemberAddressDTO;
|
import cn.lili.modules.member.entity.dto.MemberAddressDTO;
|
||||||
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
|
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
|
||||||
import cn.lili.modules.order.order.aop.OrderLogPoint;
|
import cn.lili.modules.order.order.aop.OrderLogPoint;
|
||||||
import cn.lili.modules.order.order.entity.dos.Order;
|
import cn.lili.modules.order.order.entity.dos.*;
|
||||||
import cn.lili.modules.order.order.entity.dos.OrderItem;
|
|
||||||
import cn.lili.modules.order.order.entity.dos.Receipt;
|
|
||||||
import cn.lili.modules.order.order.entity.dos.Trade;
|
|
||||||
import cn.lili.modules.order.order.entity.dto.OrderBatchDeliverDTO;
|
import cn.lili.modules.order.order.entity.dto.OrderBatchDeliverDTO;
|
||||||
import cn.lili.modules.order.order.entity.dto.OrderExportDTO;
|
import cn.lili.modules.order.order.entity.dto.OrderExportDTO;
|
||||||
import cn.lili.modules.order.order.entity.dto.OrderMessage;
|
import cn.lili.modules.order.order.entity.dto.OrderMessage;
|
||||||
@ -41,6 +41,9 @@ import cn.lili.modules.order.trade.service.OrderLogService;
|
|||||||
import cn.lili.modules.payment.entity.enums.PaymentMethodEnum;
|
import cn.lili.modules.payment.entity.enums.PaymentMethodEnum;
|
||||||
import cn.lili.modules.promotion.entity.dos.Pintuan;
|
import cn.lili.modules.promotion.entity.dos.Pintuan;
|
||||||
import cn.lili.modules.promotion.service.PintuanService;
|
import cn.lili.modules.promotion.service.PintuanService;
|
||||||
|
import cn.lili.modules.store.entity.dos.StoreDetail;
|
||||||
|
import cn.lili.modules.store.entity.dto.FuLuConfigureDTO;
|
||||||
|
import cn.lili.modules.store.service.StoreDetailService;
|
||||||
import cn.lili.modules.system.aspect.annotation.SystemLogPoint;
|
import cn.lili.modules.system.aspect.annotation.SystemLogPoint;
|
||||||
import cn.lili.modules.system.entity.dos.Logistics;
|
import cn.lili.modules.system.entity.dos.Logistics;
|
||||||
import cn.lili.modules.system.entity.vo.Traces;
|
import cn.lili.modules.system.entity.vo.Traces;
|
||||||
@ -55,6 +58,7 @@ import cn.lili.trigger.message.PintuanOrderMessage;
|
|||||||
import cn.lili.trigger.model.TimeExecuteConstant;
|
import cn.lili.trigger.model.TimeExecuteConstant;
|
||||||
import cn.lili.trigger.model.TimeTriggerMsg;
|
import cn.lili.trigger.model.TimeTriggerMsg;
|
||||||
import cn.lili.trigger.util.DelayQueueTools;
|
import cn.lili.trigger.util.DelayQueueTools;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
@ -142,6 +146,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|||||||
@Autowired
|
@Autowired
|
||||||
private TradeService tradeService;
|
private TradeService tradeService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
private GoodsService goodsService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
private StoreDetailService storeDetailService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void intoDB(TradeDTO tradeDTO) {
|
public void intoDB(TradeDTO tradeDTO) {
|
||||||
@ -956,4 +972,59 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|||||||
throw new ServiceException(ResultCode.ORDER_TAKE_ERROR);
|
throw new ServiceException(ResultCode.ORDER_TAKE_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取订单
|
||||||
|
*
|
||||||
|
* @param receivableNo 微信支付单号
|
||||||
|
* @return 订单详情
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Order getOrderByReceivableNo(String receivableNo) {
|
||||||
|
return this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getReceivableNo, receivableNo));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 验证福禄订单进行处理
|
||||||
|
*
|
||||||
|
* @param tradeNo 第三方流水
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void fuluOrder(String tradeNo) {
|
||||||
|
Order order = this.getOrderByReceivableNo(tradeNo);
|
||||||
|
if (order != null) {
|
||||||
|
List<StoreFlow> storeFlows = storeFlowService.list(new LambdaQueryWrapper<StoreFlow>().eq(StoreFlow::getOrderSn, order.getSn()));
|
||||||
|
if (storeFlows.size() > 0) {
|
||||||
|
Goods goods = goodsService.getById(storeFlows.get(0).getGoodsId());
|
||||||
|
if (goods != null) {
|
||||||
|
FuLuConfigureDTO fuLuConfigureDTO = new FuLuConfigureDTO();
|
||||||
|
StoreDetail storeDetail = storeDetailService.getOne(
|
||||||
|
new LambdaQueryWrapper<StoreDetail>()
|
||||||
|
.eq(StoreDetail::getStoreId, storeFlows.get(0).getStoreId())
|
||||||
|
);
|
||||||
|
|
||||||
|
fuLuConfigureDTO.setAppSecretKey(storeDetail.getAppSecretKey());
|
||||||
|
fuLuConfigureDTO.setMerchantNumber(storeDetail.getMerchantNumber());
|
||||||
|
fuLuConfigureDTO.setAppMerchantKey(storeDetail.getAppMerchantKey());
|
||||||
|
try {
|
||||||
|
if (goods.getBrandId().equals("1496301301183672321")) {
|
||||||
|
Map map1 = (Map) JSON.parse(Test.productInfoGetTest(fuLuConfigureDTO, goods.getSn()).get("result").toString());
|
||||||
|
|
||||||
|
if (map1.get("product_type").toString().equals("直充")) {
|
||||||
|
Test.directOrderAddTest(fuLuConfigureDTO, Integer.valueOf(goods.getSn()), order.getGoodsNum(), order.getQrCode(), order.getSn());
|
||||||
|
} else if (map1.get("product_type").toString().equals("卡密")) {
|
||||||
|
Test.cardOrderAddTest(fuLuConfigureDTO, Integer.valueOf(goods.getSn()), order.getGoodsNum(), order.getSn());
|
||||||
|
} else {
|
||||||
|
//不是直充也不是卡密需要修改代码
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
package cn.lili.modules.promotion.entity.dos;
|
package cn.lili.modules.promotion.entity.dos;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateField;
|
|
||||||
import cn.hutool.core.date.DateTime;
|
import cn.hutool.core.date.DateTime;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.lili.modules.promotion.entity.vos.SeckillVO;
|
import cn.lili.modules.promotion.entity.vos.SeckillVO;
|
||||||
@ -59,7 +58,7 @@ public class Seckill extends BasePromotions {
|
|||||||
|
|
||||||
public Seckill(int day, String hours, String seckillRule) {
|
public Seckill(int day, String hours, String seckillRule) {
|
||||||
//默认创建*天后的秒杀活动
|
//默认创建*天后的秒杀活动
|
||||||
DateTime dateTime = DateUtil.beginOfDay(DateUtil.offset(new DateTime(), DateField.DAY_OF_YEAR, day));
|
DateTime dateTime = DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), day));
|
||||||
this.applyEndTime = dateTime;
|
this.applyEndTime = dateTime;
|
||||||
this.hours = hours;
|
this.hours = hours;
|
||||||
this.seckillRule = seckillRule;
|
this.seckillRule = seckillRule;
|
||||||
|
|||||||
@ -34,7 +34,7 @@ public class FullDiscountSearchParams extends BasePromotionsSearchParams impleme
|
|||||||
public <T> QueryWrapper<T> queryWrapper() {
|
public <T> QueryWrapper<T> queryWrapper() {
|
||||||
QueryWrapper<T> queryWrapper = super.queryWrapper();
|
QueryWrapper<T> queryWrapper = super.queryWrapper();
|
||||||
if (CharSequenceUtil.isNotEmpty(promotionName)) {
|
if (CharSequenceUtil.isNotEmpty(promotionName)) {
|
||||||
queryWrapper.like("title", promotionName);
|
queryWrapper.like("promotion_name", promotionName);
|
||||||
}
|
}
|
||||||
if (couponFlag != null) {
|
if (couponFlag != null) {
|
||||||
queryWrapper.eq("coupon_flag", couponFlag);
|
queryWrapper.eq("coupon_flag", couponFlag);
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package cn.lili.modules.promotion.service;
|
package cn.lili.modules.promotion.service;
|
||||||
|
|
||||||
import cn.lili.common.vo.PageVO;
|
import cn.lili.common.vo.PageVO;
|
||||||
|
import cn.lili.modules.promotion.entity.dos.Seckill;
|
||||||
import cn.lili.modules.promotion.entity.dos.SeckillApply;
|
import cn.lili.modules.promotion.entity.dos.SeckillApply;
|
||||||
import cn.lili.modules.promotion.entity.dto.search.SeckillSearchParams;
|
import cn.lili.modules.promotion.entity.dto.search.SeckillSearchParams;
|
||||||
import cn.lili.modules.promotion.entity.vos.SeckillApplyVO;
|
import cn.lili.modules.promotion.entity.vos.SeckillApplyVO;
|
||||||
@ -97,4 +98,12 @@ public interface SeckillApplyService extends IService<SeckillApply> {
|
|||||||
*/
|
*/
|
||||||
void updateSeckillApplyQuantity(String seckillId, String skuId, Integer quantity);
|
void updateSeckillApplyQuantity(String seckillId, String skuId, Integer quantity);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新秒杀活动时间
|
||||||
|
*
|
||||||
|
* @param seckill 秒杀活动
|
||||||
|
* @return 是否更新成功
|
||||||
|
*/
|
||||||
|
boolean updateSeckillApplyTime(Seckill seckill);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -185,6 +185,7 @@ public class SeckillApplyServiceImpl extends ServiceImpl<SeckillApplyMapper, Sec
|
|||||||
if (!promotionGoodsList.isEmpty()) {
|
if (!promotionGoodsList.isEmpty()) {
|
||||||
PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams();
|
PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams();
|
||||||
searchParams.setStoreId(storeId);
|
searchParams.setStoreId(storeId);
|
||||||
|
searchParams.setPromotionType(PromotionTypeEnum.SECKILL.name());
|
||||||
searchParams.setSkuIds(promotionGoodsList.stream().map(PromotionGoods::getSkuId).collect(Collectors.toList()));
|
searchParams.setSkuIds(promotionGoodsList.stream().map(PromotionGoods::getSkuId).collect(Collectors.toList()));
|
||||||
promotionGoodsService.deletePromotionGoods(searchParams);
|
promotionGoodsService.deletePromotionGoods(searchParams);
|
||||||
//初始化促销商品
|
//初始化促销商品
|
||||||
@ -207,6 +208,7 @@ public class SeckillApplyServiceImpl extends ServiceImpl<SeckillApplyMapper, Sec
|
|||||||
* @param id id
|
* @param id id
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void removeSeckillApply(String seckillId, String id) {
|
public void removeSeckillApply(String seckillId, String id) {
|
||||||
Seckill seckill = this.seckillService.getById(seckillId);
|
Seckill seckill = this.seckillService.getById(seckillId);
|
||||||
if (seckill == null) {
|
if (seckill == null) {
|
||||||
@ -243,6 +245,41 @@ public class SeckillApplyServiceImpl extends ServiceImpl<SeckillApplyMapper, Sec
|
|||||||
this.update(updateWrapper);
|
this.update(updateWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新秒杀活动时间
|
||||||
|
*
|
||||||
|
* @param seckill 秒杀活动
|
||||||
|
* @return 是否更新成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public boolean updateSeckillApplyTime(Seckill seckill) {
|
||||||
|
boolean result = false;
|
||||||
|
List<PromotionGoods> promotionGoodsList = new ArrayList<>();
|
||||||
|
LambdaQueryWrapper<SeckillApply> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(SeckillApply::getSeckillId, seckill.getId());
|
||||||
|
List<SeckillApply> list = this.list(queryWrapper);
|
||||||
|
for (SeckillApply seckillApply : list) {
|
||||||
|
//获取参与活动的商品信息
|
||||||
|
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(seckillApply.getSkuId());
|
||||||
|
//获取促销商品
|
||||||
|
PromotionGoods promotionGoods = this.setSeckillGoods(goodsSku, seckillApply, seckill);
|
||||||
|
promotionGoodsList.add(promotionGoods);
|
||||||
|
}
|
||||||
|
//保存促销活动商品信息
|
||||||
|
if (!promotionGoodsList.isEmpty()) {
|
||||||
|
PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams();
|
||||||
|
searchParams.setPromotionType(PromotionTypeEnum.SECKILL.name());
|
||||||
|
searchParams.setSkuIds(promotionGoodsList.stream().map(PromotionGoods::getSkuId).collect(Collectors.toList()));
|
||||||
|
promotionGoodsService.deletePromotionGoods(searchParams);
|
||||||
|
//初始化促销商品
|
||||||
|
PromotionTools.promotionGoodsInit(promotionGoodsList, seckill, PromotionTypeEnum.SECKILL);
|
||||||
|
result = promotionGoodsService.saveBatch(promotionGoodsList);
|
||||||
|
this.seckillService.updateEsGoodsSeckill(seckill, list);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检查秒杀活动申请列表参数信息
|
* 检查秒杀活动申请列表参数信息
|
||||||
*
|
*
|
||||||
|
|||||||
@ -131,12 +131,31 @@ public class SeckillServiceImpl extends AbstractPromotionsServiceImpl<SeckillMap
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通用促销更新
|
||||||
|
* 调用顺序:
|
||||||
|
* 1. checkStatus 检查促销状态
|
||||||
|
* 2. checkPromotions 检查促销参数
|
||||||
|
* 3. saveOrUpdate 保存促销信息
|
||||||
|
* 4. updatePromotionGoods 更新促销商品信息
|
||||||
|
* 5. updateEsGoodsIndex 更新商品索引促销信息
|
||||||
|
*
|
||||||
|
* @param promotions 促销信息
|
||||||
|
* @return 是否更新成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean updatePromotions(Seckill promotions) {
|
||||||
|
seckillApplyService.updateSeckillApplyTime(promotions);
|
||||||
|
return super.updatePromotions(promotions);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新商品索引限时抢购信息
|
* 更新商品索引限时抢购信息
|
||||||
*
|
*
|
||||||
* @param seckill 限时抢购信息
|
* @param seckill 限时抢购信息
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void updateEsGoodsSeckill(Seckill seckill, List<SeckillApply> seckillApplies) {
|
public void updateEsGoodsSeckill(Seckill seckill, List<SeckillApply> seckillApplies) {
|
||||||
if (seckillApplies != null && !seckillApplies.isEmpty()) {
|
if (seckillApplies != null && !seckillApplies.isEmpty()) {
|
||||||
// 更新促销范围
|
// 更新促销范围
|
||||||
|
|||||||
@ -356,7 +356,6 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements
|
|||||||
addIndex(goodsIndex);
|
addIndex(goodsIndex);
|
||||||
resultMap.put(KEY_SUCCESS, resultMap.get(KEY_SUCCESS) + 1);
|
resultMap.put(KEY_SUCCESS, resultMap.get(KEY_SUCCESS) + 1);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
|
||||||
log.error("商品{}生成索引错误!", goodsIndex);
|
log.error("商品{}生成索引错误!", goodsIndex);
|
||||||
resultMap.put(KEY_FAIL, resultMap.get(KEY_FAIL) + 1);
|
resultMap.put(KEY_FAIL, resultMap.get(KEY_FAIL) + 1);
|
||||||
}
|
}
|
||||||
@ -536,7 +535,8 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements
|
|||||||
if (promotionMap != null && !promotionMap.isEmpty()) {
|
if (promotionMap != null && !promotionMap.isEmpty()) {
|
||||||
//促销不为空则进行清洗
|
//促销不为空则进行清洗
|
||||||
promotionMap.entrySet().removeIf(i -> {
|
promotionMap.entrySet().removeIf(i -> {
|
||||||
BasePromotions promotion = (BasePromotions) i.getValue();
|
JSONObject promotionJson = JSONUtil.parseObj(i.getValue());
|
||||||
|
BasePromotions promotion = promotionJson.toBean(BasePromotions.class);
|
||||||
return promotion.getEndTime() != null && promotion.getEndTime().getTime() < DateUtil.date().getTime();
|
return promotion.getEndTime() != null && promotion.getEndTime().getTime() < DateUtil.date().getTime();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import cn.lili.modules.search.entity.dto.EsGoodsSearchDTO;
|
|||||||
import cn.lili.modules.search.entity.dto.HotWordsDTO;
|
import cn.lili.modules.search.entity.dto.HotWordsDTO;
|
||||||
import cn.lili.modules.search.entity.dto.ParamOptions;
|
import cn.lili.modules.search.entity.dto.ParamOptions;
|
||||||
import cn.lili.modules.search.entity.dto.SelectorOptions;
|
import cn.lili.modules.search.entity.dto.SelectorOptions;
|
||||||
|
import cn.lili.modules.search.service.EsGoodsIndexService;
|
||||||
import cn.lili.modules.search.service.EsGoodsSearchService;
|
import cn.lili.modules.search.service.EsGoodsSearchService;
|
||||||
import com.alibaba.druid.util.StringUtils;
|
import com.alibaba.druid.util.StringUtils;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -74,6 +75,9 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
@Qualifier("elasticsearchRestTemplate")
|
@Qualifier("elasticsearchRestTemplate")
|
||||||
private ElasticsearchRestTemplate restTemplate;
|
private ElasticsearchRestTemplate restTemplate;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EsGoodsIndexService esGoodsIndexService;
|
||||||
/**
|
/**
|
||||||
* 缓存
|
* 缓存
|
||||||
*/
|
*/
|
||||||
@ -82,6 +86,10 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SearchPage<EsGoodsIndex> searchGoods(EsGoodsSearchDTO searchDTO, PageVO pageVo) {
|
public SearchPage<EsGoodsIndex> searchGoods(EsGoodsSearchDTO searchDTO, PageVO pageVo) {
|
||||||
|
boolean exists = restTemplate.indexOps(EsGoodsIndex.class).exists();
|
||||||
|
if (!exists) {
|
||||||
|
esGoodsIndexService.init();
|
||||||
|
}
|
||||||
if (CharSequenceUtil.isNotEmpty(searchDTO.getKeyword())) {
|
if (CharSequenceUtil.isNotEmpty(searchDTO.getKeyword())) {
|
||||||
cache.incrementScore(CachePrefix.HOT_WORD.getPrefix(), searchDTO.getKeyword());
|
cache.incrementScore(CachePrefix.HOT_WORD.getPrefix(), searchDTO.getKeyword());
|
||||||
}
|
}
|
||||||
@ -89,6 +97,14 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService {
|
|||||||
NativeSearchQuery searchQuery = searchQueryBuilder.build();
|
NativeSearchQuery searchQuery = searchQueryBuilder.build();
|
||||||
log.info("searchGoods DSL:{}", searchQuery.getQuery());
|
log.info("searchGoods DSL:{}", searchQuery.getQuery());
|
||||||
SearchHits<EsGoodsIndex> search = restTemplate.search(searchQuery, EsGoodsIndex.class);
|
SearchHits<EsGoodsIndex> search = restTemplate.search(searchQuery, EsGoodsIndex.class);
|
||||||
|
for (int i = 0; i < search.getSearchHits().size() ; i++){
|
||||||
|
if (search.getSearchHits().get(i).getContent().getSmall().contains("fuluapiossproductnew.oss-cn-hangzhou.aliyuncs.com")){
|
||||||
|
search.getSearchHits().get(i).getContent().setSmall(search.getSearchHits().get(i).getContent().getSmall().replace("?x-oss-process=style/200X200", ""));
|
||||||
|
}
|
||||||
|
if (search.getSearchHits().get(i).getContent().getThumbnail().contains("fuluapiossproductnew.oss-cn-hangzhou.aliyuncs.com")){
|
||||||
|
search.getSearchHits().get(i).getContent().setThumbnail(search.getSearchHits().get(i).getContent().getThumbnail().replace("?x-oss-process=style/400X400", ""));
|
||||||
|
}
|
||||||
|
}
|
||||||
return SearchHitSupport.searchPageFor(search, searchQuery.getPageable());
|
return SearchHitSupport.searchPageFor(search, searchQuery.getPageable());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -173,6 +173,17 @@ public class StoreDetail extends BaseIdEntity {
|
|||||||
@ApiModelProperty(value = "详细地址")
|
@ApiModelProperty(value = "详细地址")
|
||||||
private String salesConsigneeDetail;
|
private String salesConsigneeDetail;
|
||||||
|
|
||||||
|
//店铺福禄配置
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "福禄app密钥")
|
||||||
|
private String appSecretKey;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "福禄商户号")
|
||||||
|
private String merchantNumber;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "福禄appKEY商户key")
|
||||||
|
private String appMerchantKey;
|
||||||
|
|
||||||
|
|
||||||
public StoreDetail(Store store, AdminStoreApplyDTO adminStoreApplyDTO) {
|
public StoreDetail(Store store, AdminStoreApplyDTO adminStoreApplyDTO) {
|
||||||
this.storeId = store.getId();
|
this.storeId = store.getId();
|
||||||
|
|||||||
@ -0,0 +1,23 @@
|
|||||||
|
package cn.lili.modules.store.entity.dto;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 店铺福禄配置
|
||||||
|
*
|
||||||
|
* @author pikachu
|
||||||
|
* @since 2021-01-11 15:10:51
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class FuLuConfigureDTO {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "福禄app密钥")
|
||||||
|
private String appSecretKey;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "福禄商户号")
|
||||||
|
private String merchantNumber;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "福禄appKEY商户key")
|
||||||
|
private String appMerchantKey;
|
||||||
|
}
|
||||||
@ -2,6 +2,7 @@ package cn.lili.modules.store.mapper;
|
|||||||
|
|
||||||
import cn.hutool.core.date.DateTime;
|
import cn.hutool.core.date.DateTime;
|
||||||
import cn.lili.modules.store.entity.dos.StoreDetail;
|
import cn.lili.modules.store.entity.dos.StoreDetail;
|
||||||
|
import cn.lili.modules.store.entity.dto.FuLuConfigureDTO;
|
||||||
import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO;
|
import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO;
|
||||||
import cn.lili.modules.store.entity.dto.StoreSettlementDay;
|
import cn.lili.modules.store.entity.dto.StoreSettlementDay;
|
||||||
import cn.lili.modules.store.entity.vos.StoreBasicInfoVO;
|
import cn.lili.modules.store.entity.vos.StoreBasicInfoVO;
|
||||||
@ -60,6 +61,17 @@ public interface StoreDetailMapper extends BaseMapper<StoreDetail> {
|
|||||||
"from li_store_detail s where s.store_id=#{storeId}")
|
"from li_store_detail s where s.store_id=#{storeId}")
|
||||||
StoreAfterSaleAddressDTO getStoreAfterSaleAddressDTO(String storeId);
|
StoreAfterSaleAddressDTO getStoreAfterSaleAddressDTO(String storeId);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取店铺福禄配置DTO
|
||||||
|
*
|
||||||
|
* @param storeId 店铺ID
|
||||||
|
* @return 店铺店铺福禄配置DTO
|
||||||
|
*/
|
||||||
|
@Select("select s.app_secret_key,s.merchant_number,s.app_merchant_key from li_store_detail s where s.store_id =#{storeId}")
|
||||||
|
FuLuConfigureDTO getFuLuConfigureDTO(String storeId);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取待结算店铺列表
|
* 获取待结算店铺列表
|
||||||
*
|
*
|
||||||
|
|||||||
@ -70,7 +70,7 @@ public interface FreightTemplateService extends IService<FreightTemplate> {
|
|||||||
* @param id 运费模板ID
|
* @param id 运费模板ID
|
||||||
* @return 操作状态
|
* @return 操作状态
|
||||||
*/
|
*/
|
||||||
@CacheEvict(key = "#freightTemplateVO.id")
|
@CacheEvict(key = "#id")
|
||||||
boolean removeFreightTemplate(String id);
|
boolean removeFreightTemplate(String id);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -3,6 +3,7 @@ package cn.lili.modules.store.service;
|
|||||||
import cn.hutool.core.date.DateTime;
|
import cn.hutool.core.date.DateTime;
|
||||||
import cn.lili.modules.store.entity.dos.Store;
|
import cn.lili.modules.store.entity.dos.Store;
|
||||||
import cn.lili.modules.store.entity.dos.StoreDetail;
|
import cn.lili.modules.store.entity.dos.StoreDetail;
|
||||||
|
import cn.lili.modules.store.entity.dto.FuLuConfigureDTO;
|
||||||
import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO;
|
import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO;
|
||||||
import cn.lili.modules.store.entity.dto.StoreSettingDTO;
|
import cn.lili.modules.store.entity.dto.StoreSettingDTO;
|
||||||
import cn.lili.modules.store.entity.dto.StoreSettlementDay;
|
import cn.lili.modules.store.entity.dto.StoreSettlementDay;
|
||||||
@ -69,6 +70,12 @@ public interface StoreDetailService extends IService<StoreDetail> {
|
|||||||
*/
|
*/
|
||||||
StoreAfterSaleAddressDTO getStoreAfterSaleAddressDTO();
|
StoreAfterSaleAddressDTO getStoreAfterSaleAddressDTO();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前登录店铺福禄配置
|
||||||
|
*
|
||||||
|
* @return 店铺福禄配置
|
||||||
|
*/
|
||||||
|
FuLuConfigureDTO getFuLuConfigureDTO();
|
||||||
/**
|
/**
|
||||||
* 获取某一个店铺的退货收件地址信息
|
* 获取某一个店铺的退货收件地址信息
|
||||||
*
|
*
|
||||||
@ -85,6 +92,14 @@ public interface StoreDetailService extends IService<StoreDetail> {
|
|||||||
*/
|
*/
|
||||||
boolean editStoreAfterSaleAddressDTO(StoreAfterSaleAddressDTO storeAfterSaleAddressDTO);
|
boolean editStoreAfterSaleAddressDTO(StoreAfterSaleAddressDTO storeAfterSaleAddressDTO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改当前登录店铺福禄配置
|
||||||
|
*
|
||||||
|
* @param fuLuConfigureDTO 店铺福禄配置DTO
|
||||||
|
* @return 店铺福禄配置
|
||||||
|
*/
|
||||||
|
boolean editFuLuConfigureDTO(FuLuConfigureDTO fuLuConfigureDTO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改店铺库存预警数量
|
* 修改店铺库存预警数量
|
||||||
*
|
*
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import cn.lili.modules.goods.service.GoodsService;
|
|||||||
import cn.lili.modules.search.utils.EsIndexUtil;
|
import cn.lili.modules.search.utils.EsIndexUtil;
|
||||||
import cn.lili.modules.store.entity.dos.Store;
|
import cn.lili.modules.store.entity.dos.Store;
|
||||||
import cn.lili.modules.store.entity.dos.StoreDetail;
|
import cn.lili.modules.store.entity.dos.StoreDetail;
|
||||||
|
import cn.lili.modules.store.entity.dto.FuLuConfigureDTO;
|
||||||
import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO;
|
import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO;
|
||||||
import cn.lili.modules.store.entity.dto.StoreSettingDTO;
|
import cn.lili.modules.store.entity.dto.StoreSettingDTO;
|
||||||
import cn.lili.modules.store.entity.dto.StoreSettlementDay;
|
import cn.lili.modules.store.entity.dto.StoreSettlementDay;
|
||||||
@ -148,6 +149,12 @@ public class StoreDetailServiceImpl extends ServiceImpl<StoreDetailMapper, Store
|
|||||||
return this.baseMapper.getStoreAfterSaleAddressDTO(storeId);
|
return this.baseMapper.getStoreAfterSaleAddressDTO(storeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FuLuConfigureDTO getFuLuConfigureDTO() {
|
||||||
|
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
|
||||||
|
return this.baseMapper.getFuLuConfigureDTO(storeId);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public StoreAfterSaleAddressDTO getStoreAfterSaleAddressDTO(String id) {
|
public StoreAfterSaleAddressDTO getStoreAfterSaleAddressDTO(String id) {
|
||||||
StoreAfterSaleAddressDTO storeAfterSaleAddressDTO = this.baseMapper.getStoreAfterSaleAddressDTO(id);
|
StoreAfterSaleAddressDTO storeAfterSaleAddressDTO = this.baseMapper.getStoreAfterSaleAddressDTO(id);
|
||||||
@ -170,6 +177,17 @@ public class StoreDetailServiceImpl extends ServiceImpl<StoreDetailMapper, Store
|
|||||||
return this.update(lambdaUpdateWrapper);
|
return this.update(lambdaUpdateWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean editFuLuConfigureDTO(FuLuConfigureDTO fuLuConfigureDTO) {
|
||||||
|
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
|
||||||
|
LambdaUpdateWrapper<StoreDetail> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
|
||||||
|
lambdaUpdateWrapper.set(StoreDetail::getAppSecretKey, fuLuConfigureDTO.getAppSecretKey());
|
||||||
|
lambdaUpdateWrapper.set(StoreDetail::getMerchantNumber, fuLuConfigureDTO.getMerchantNumber());
|
||||||
|
lambdaUpdateWrapper.set(StoreDetail::getAppMerchantKey, fuLuConfigureDTO.getAppMerchantKey());
|
||||||
|
lambdaUpdateWrapper.eq(StoreDetail::getStoreId, storeId);
|
||||||
|
return this.update(lambdaUpdateWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean updateStockWarning(Integer stockWarning) {
|
public boolean updateStockWarning(Integer stockWarning) {
|
||||||
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
|
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
|
||||||
|
|||||||
@ -19,8 +19,4 @@ public class ImSetting implements Serializable {
|
|||||||
private String httpUrl;
|
private String httpUrl;
|
||||||
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "平台ID")
|
|
||||||
private String tenantId;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package cn.lili.modules.verification.service.impl;
|
package cn.lili.modules.verification.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.lili.cache.Cache;
|
import cn.lili.cache.Cache;
|
||||||
import cn.lili.modules.system.mapper.VerificationSourceMapper;
|
import cn.lili.modules.system.mapper.VerificationSourceMapper;
|
||||||
import cn.lili.modules.verification.entity.dos.VerificationSource;
|
import cn.lili.modules.verification.entity.dos.VerificationSource;
|
||||||
@ -52,7 +53,7 @@ public class VerificationSourceServiceImpl extends ServiceImpl<VerificationSourc
|
|||||||
} catch (ClassCastException cce) {
|
} catch (ClassCastException cce) {
|
||||||
verificationDTO = null;
|
verificationDTO = null;
|
||||||
}
|
}
|
||||||
if (verificationDTO == null) {
|
if (verificationDTO == null || verificationDTO.getVerificationResources().size() <= 0 || verificationDTO.getVerificationSlider().size() <= 0) {
|
||||||
return initCache();
|
return initCache();
|
||||||
}
|
}
|
||||||
return verificationDTO;
|
return verificationDTO;
|
||||||
|
|||||||
@ -28,6 +28,7 @@ public class ManagerApiApplication {
|
|||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
System.setProperty("es.set.netty.runtime.available.processors", "false");
|
System.setProperty("es.set.netty.runtime.available.processors", "false");
|
||||||
|
System.setProperty("rocketmq.client.logUseSlf4j","true");
|
||||||
SpringApplication.run(ManagerApiApplication.class, args);
|
SpringApplication.run(ManagerApiApplication.class, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -33,9 +33,9 @@ spring:
|
|||||||
type: redis
|
type: redis
|
||||||
# Redis
|
# Redis
|
||||||
redis:
|
redis:
|
||||||
host: 192.168.2.122
|
host: 120.71.145.134
|
||||||
port: 6379
|
port: 6379
|
||||||
password: Gb84505016
|
password: ekLhvPGraSj8DGO0
|
||||||
lettuce:
|
lettuce:
|
||||||
pool:
|
pool:
|
||||||
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
||||||
@ -64,9 +64,9 @@ spring:
|
|||||||
default-datasource:
|
default-datasource:
|
||||||
type: com.alibaba.druid.pool.DruidDataSource
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
driverClassName: com.mysql.cj.jdbc.Driver
|
driverClassName: com.mysql.cj.jdbc.Driver
|
||||||
url: jdbc:mysql://192.168.2.126:3306/rx-shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
url: jdbc:mysql://120.71.183.195:3306/zyt_shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
||||||
username: rx-shop
|
username: zyt_shop
|
||||||
password: J2xEZ42HwPXrDXt3
|
password: Gb84505016@zytshop
|
||||||
maxActive: 20
|
maxActive: 20
|
||||||
initialSize: 5
|
initialSize: 5
|
||||||
maxWait: 60000
|
maxWait: 60000
|
||||||
@ -198,16 +198,16 @@ lili:
|
|||||||
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
||||||
#域名
|
#域名
|
||||||
domain:
|
domain:
|
||||||
pc: https://pc.b2b2c.pickmall.cn
|
pc: http://zbuyer.sx1788.cn/buyer
|
||||||
wap: https://m.b2b2c.pickmall.cn
|
wap: http://zshop.sx1788.cn/
|
||||||
store: https://store.b2b2c.pickmall.cn
|
store: http://zseller.sx1788.cn/login
|
||||||
admin: https://admin.b2b2c.pickmall.cn
|
admin: http://zmanager.sx1788.cn/login
|
||||||
#api地址
|
#api地址
|
||||||
api:
|
api:
|
||||||
buyer: https://buyer-api.pickmall.cn
|
buyer: https://zshop-api.sx1788.cn/buyer-api
|
||||||
common: https://common-api.pickmall.cn
|
common: https://zshop-api.sx1788.cn/common-api
|
||||||
manager: https://admin-api.pickmall.cn
|
manager: https://zshop-api.sx1788.cn/manager-api
|
||||||
store: https://store-api.pickmall.cn
|
store: https://zshop-api.sx1788.cn/seller-api
|
||||||
|
|
||||||
# jwt 细节设定
|
# jwt 细节设定
|
||||||
jwt-setting:
|
jwt-setting:
|
||||||
@ -226,7 +226,7 @@ lili:
|
|||||||
data:
|
data:
|
||||||
elasticsearch:
|
elasticsearch:
|
||||||
cluster-name: elasticsearch
|
cluster-name: elasticsearch
|
||||||
cluster-nodes: 192.168.2.122:9200
|
cluster-nodes: 106.124.130.167:9200
|
||||||
index:
|
index:
|
||||||
number-of-replicas: 0
|
number-of-replicas: 0
|
||||||
number-of-shards: 3
|
number-of-shards: 3
|
||||||
@ -236,7 +236,7 @@ lili:
|
|||||||
# username: elastic
|
# username: elastic
|
||||||
# password: LiLiShopES
|
# password: LiLiShopES
|
||||||
logstash:
|
logstash:
|
||||||
server: 192.168.2.122:4560
|
server: 106.124.130.167:4560
|
||||||
rocketmq:
|
rocketmq:
|
||||||
promotion-topic: lili_promotion_topic
|
promotion-topic: lili_promotion_topic
|
||||||
promotion-group: lili_promotion_group
|
promotion-group: lili_promotion_group
|
||||||
@ -257,7 +257,7 @@ lili:
|
|||||||
after-sale-topic: lili_after_sale_topic
|
after-sale-topic: lili_after_sale_topic
|
||||||
after-sale-group: lili_after_sale_group
|
after-sale-group: lili_after_sale_group
|
||||||
rocketmq:
|
rocketmq:
|
||||||
name-server: 192.168.2.122:9876
|
name-server: 106.124.130.167:9876
|
||||||
producer:
|
producer:
|
||||||
group: lili_group
|
group: lili_group
|
||||||
send-message-timeout: 30000
|
send-message-timeout: 30000
|
||||||
@ -265,7 +265,7 @@ rocketmq:
|
|||||||
xxl:
|
xxl:
|
||||||
job:
|
job:
|
||||||
admin:
|
admin:
|
||||||
addresses: http://192.168.2.122:9001/xxl-job-admin
|
addresses: http://127.0.0.1:9001/xxl-job-admin
|
||||||
executor:
|
executor:
|
||||||
appname: xxl-job-executor-lilishop
|
appname: xxl-job-executor-lilishop
|
||||||
address:
|
address:
|
||||||
|
|||||||
@ -20,6 +20,22 @@
|
|||||||
</encoder>
|
</encoder>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
|
<appender name="RocketmqClientAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${LOG_FILE_PATH}/rocketmq.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${LOG_FILE_PATH}/rocketmq/rocketmq-%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<maxHistory>30</maxHistory>
|
||||||
|
<totalSizeCap>30MB</totalSizeCap>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
<logger name="RocketmqClient" additivity="false">
|
||||||
|
<level value="info" />
|
||||||
|
<appender-ref ref="RocketmqClientAppender"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
<!--输出到elk的LOGSTASH-->
|
<!--输出到elk的LOGSTASH-->
|
||||||
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
|
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
|
||||||
<!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址-->
|
<!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址-->
|
||||||
|
|||||||
@ -28,7 +28,7 @@ public class StoreApiApplication {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
System.setProperty("rocketmq.client.logUseSlf4j","true");
|
||||||
System.setProperty("es.set.netty.runtime.available.processors", "false");
|
System.setProperty("es.set.netty.runtime.available.processors", "false");
|
||||||
SpringApplication.run(StoreApiApplication.class, args);
|
SpringApplication.run(StoreApiApplication.class, args);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,12 +1,14 @@
|
|||||||
package cn.lili.controller.goods;
|
package cn.lili.controller.goods;
|
||||||
|
|
||||||
import cn.lili.common.enums.ResultUtil;
|
import cn.lili.common.enums.ResultUtil;
|
||||||
|
import cn.lili.common.fulu.core.utils.Test;
|
||||||
import cn.lili.common.security.OperationalJudgment;
|
import cn.lili.common.security.OperationalJudgment;
|
||||||
import cn.lili.common.security.context.UserContext;
|
import cn.lili.common.security.context.UserContext;
|
||||||
import cn.lili.common.vo.ResultMessage;
|
import cn.lili.common.vo.ResultMessage;
|
||||||
import cn.lili.modules.goods.entity.dos.Goods;
|
import cn.lili.modules.goods.entity.dos.Goods;
|
||||||
import cn.lili.modules.goods.entity.dos.GoodsSku;
|
import cn.lili.modules.goods.entity.dos.GoodsSku;
|
||||||
import cn.lili.modules.goods.entity.dto.GoodsOperationDTO;
|
import cn.lili.modules.goods.entity.dto.GoodsOperationDTO;
|
||||||
|
import cn.lili.modules.goods.entity.dto.GoodsOperationFuLuDTO;
|
||||||
import cn.lili.modules.goods.entity.dto.GoodsSearchParams;
|
import cn.lili.modules.goods.entity.dto.GoodsSearchParams;
|
||||||
import cn.lili.modules.goods.entity.dto.GoodsSkuStockDTO;
|
import cn.lili.modules.goods.entity.dto.GoodsSkuStockDTO;
|
||||||
import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
|
import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
|
||||||
@ -16,7 +18,10 @@ import cn.lili.modules.goods.entity.vos.StockWarningVO;
|
|||||||
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;
|
||||||
import cn.lili.modules.store.entity.dos.StoreDetail;
|
import cn.lili.modules.store.entity.dos.StoreDetail;
|
||||||
|
import cn.lili.modules.store.entity.dto.FuLuConfigureDTO;
|
||||||
import cn.lili.modules.store.service.StoreDetailService;
|
import cn.lili.modules.store.service.StoreDetailService;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
@ -27,8 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -171,4 +175,113 @@ public class GoodsStoreController {
|
|||||||
return ResultUtil.success();
|
return ResultUtil.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation(value = "新增商品(minShengLotteryRecordService商品迁移)")
|
||||||
|
@PostMapping(value = "/fuluCreate")
|
||||||
|
public ResultMessage<GoodsOperationDTO> fuluSave() throws Exception {
|
||||||
|
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
|
||||||
|
GoodsOperationFuLuDTO goodsOperationDTO = new GoodsOperationFuLuDTO();
|
||||||
|
|
||||||
|
FuLuConfigureDTO fuLuConfigureDTO = storeDetailService.getFuLuConfigureDTO();
|
||||||
|
//获取并解析福禄商品数据
|
||||||
|
Map maps = (Map) JSON.parse(Test.getGoodsInfoList(fuLuConfigureDTO));
|
||||||
|
if (!maps.get("code").toString().equals("0")) {
|
||||||
|
return ResultUtil.error(201, "商品不存在或配置参数错误");
|
||||||
|
}
|
||||||
|
int i = 0;
|
||||||
|
List<Map<String, String>> listObjectSec = JSONArray.parseObject(maps.get("result").toString(), List.class);
|
||||||
|
for (Map<String, String> mapList : listObjectSec) {
|
||||||
|
if (listObjectSec.size() <= 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
for (Map.Entry entry : mapList.entrySet()) {
|
||||||
|
if (entry.getKey().equals("product_id")) {
|
||||||
|
Map map1 = (Map) JSON.parse(Test.productInfoGetTest(fuLuConfigureDTO, entry.getValue().toString()).get("result").toString());
|
||||||
|
if (map1.get("product_type").toString().equals("直充")) {
|
||||||
|
goodsOperationDTO.setCategoryPath("1496301573515636737");//分类path
|
||||||
|
} else if (map1.get("product_type").toString().equals("卡密")) {
|
||||||
|
goodsOperationDTO.setCategoryPath("1496301573515636737");//分类path
|
||||||
|
} else {
|
||||||
|
//不是直充也不是卡密需要修改代码
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Goods> goodsList = goodsService.list(
|
||||||
|
new LambdaQueryWrapper<Goods>()
|
||||||
|
.eq(Goods::getStoreId, storeId)
|
||||||
|
.eq(Goods::getSn, map1.get("product_id").toString())
|
||||||
|
.eq(Goods::getDeleteFlag, false)
|
||||||
|
);
|
||||||
|
|
||||||
|
goodsOperationDTO.setStoreCategoryPath("");//店铺分类id
|
||||||
|
goodsOperationDTO.setBrandId("1496301301183672321");//品牌ID
|
||||||
|
goodsOperationDTO.setGoodsName(map1.get("product_name").toString());//商品名称
|
||||||
|
goodsOperationDTO.setSn(map1.get("product_id").toString());//商品编号
|
||||||
|
goodsOperationDTO.setPrice(Double.valueOf(map1.get("purchase_price").toString()));//商品价格
|
||||||
|
goodsOperationDTO.setCost(Double.valueOf(map1.get("purchase_price").toString()));//市场价格
|
||||||
|
goodsOperationDTO.setWeight(Double.valueOf("0"));//重量
|
||||||
|
goodsOperationDTO.setIntro(map1.get("product_name").toString());//详情
|
||||||
|
goodsOperationDTO.setMobileIntro(map1.get("product_name").toString());//移动端详情
|
||||||
|
goodsOperationDTO.setQuantity(99999999);//库存
|
||||||
|
goodsOperationDTO.setRelease(true);//是否立即发布
|
||||||
|
goodsOperationDTO.setRecommend(true);//是否是推荐商品
|
||||||
|
goodsOperationDTO.setGoodsParamsDTOList(new ArrayList<>());//商品参数
|
||||||
|
List<String> goodsGalleryList = new ArrayList<>();
|
||||||
|
if (map1.containsKey("four_category_icon") && map1.get("four_category_icon") != null) {
|
||||||
|
goodsGalleryList.add(map1.get("four_category_icon").toString());
|
||||||
|
}
|
||||||
|
goodsOperationDTO.setGoodsGalleryList(goodsGalleryList);
|
||||||
|
goodsOperationDTO.setTemplateId("0");//运费模板id,不需要运费模板时值是0
|
||||||
|
goodsOperationDTO.setSellingPoint(map1.get("product_name").toString());
|
||||||
|
goodsOperationDTO.setSalesModel("RETAIL");//销售模式
|
||||||
|
// goodsOperationDTO.setHaveSpec();//是否有规格
|
||||||
|
goodsOperationDTO.setGoodsUnit("个");//销售模式1471044596808024065
|
||||||
|
goodsOperationDTO.setInfo(map1.get("product_name").toString());//商品描述
|
||||||
|
goodsOperationDTO.setGoodsType("VIRTUAL_GOODS");//商品类型
|
||||||
|
|
||||||
|
|
||||||
|
// goodsOperationDTO.setGoodsVideo();//商品视频
|
||||||
|
|
||||||
|
List<Map<String, Object>> mapArrayList = new ArrayList<>();
|
||||||
|
Map<String, Object> map = new HashMap<>();
|
||||||
|
map.put("sn", goodsOperationDTO.getSn());
|
||||||
|
map.put("price", goodsOperationDTO.getPrice());
|
||||||
|
map.put("cost", goodsOperationDTO.getCost());
|
||||||
|
map.put("weight", goodsOperationDTO.getWeight());
|
||||||
|
map.put("quantity", goodsOperationDTO.getQuantity());
|
||||||
|
map.put("category_path", "1496301573515636737");
|
||||||
|
|
||||||
|
if (map1.containsKey("four_category_icon") && map1.get("four_category_icon") != null) {
|
||||||
|
List<Map<String, String>> images = new ArrayList<>();
|
||||||
|
Map<String,String> map2 = new HashMap<>();
|
||||||
|
map2.put("url",map1.get("four_category_icon").toString());
|
||||||
|
images.add(map2);
|
||||||
|
map.put("images", images);
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
mapArrayList.add(map);
|
||||||
|
goodsOperationDTO.setSkuList(mapArrayList);//sku列表
|
||||||
|
|
||||||
|
if (goodsList.size() > 0) {
|
||||||
|
GoodsOperationDTO goodsOperationDTO1 = new GoodsOperationDTO();
|
||||||
|
goodsOperationDTO1.setPrice(Double.valueOf(map1.get("purchase_price").toString()));
|
||||||
|
goodsService.editGoods(goodsOperationDTO1, goodsList.get(0).getId());
|
||||||
|
}else{
|
||||||
|
goodsService.fuLuAddGoods(goodsOperationDTO);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// if (i == 1) {
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ResultUtil.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package cn.lili.controller.settings;
|
|||||||
|
|
||||||
import cn.lili.common.enums.ResultUtil;
|
import cn.lili.common.enums.ResultUtil;
|
||||||
import cn.lili.common.vo.ResultMessage;
|
import cn.lili.common.vo.ResultMessage;
|
||||||
|
import cn.lili.modules.store.entity.dto.FuLuConfigureDTO;
|
||||||
import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO;
|
import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO;
|
||||||
import cn.lili.modules.store.entity.dto.StoreSettingDTO;
|
import cn.lili.modules.store.entity.dto.StoreSettingDTO;
|
||||||
import cn.lili.modules.store.entity.vos.StoreVO;
|
import cn.lili.modules.store.entity.vos.StoreVO;
|
||||||
@ -87,4 +88,19 @@ public class StoreSettingsController {
|
|||||||
boolean result = storeDetailService.editStoreAfterSaleAddressDTO(storeAfterSaleAddressDTO);
|
boolean result = storeDetailService.editStoreAfterSaleAddressDTO(storeAfterSaleAddressDTO);
|
||||||
return ResultUtil.data(result);
|
return ResultUtil.data(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "获取商家福禄配置")
|
||||||
|
@GetMapping("/fuLuConfigure")
|
||||||
|
public ResultMessage<FuLuConfigureDTO> getFuLuConfigure() {
|
||||||
|
//获取当前登录商家内容
|
||||||
|
return ResultUtil.data(storeDetailService.getFuLuConfigureDTO());
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "修改商家福禄配置")
|
||||||
|
@PutMapping("/fuLuConfigure")
|
||||||
|
public ResultMessage<Object> editFuLuConfigure(@Valid FuLuConfigureDTO fuLuConfigureDTO) {
|
||||||
|
//修改商家退货收件地址
|
||||||
|
boolean result = storeDetailService.editFuLuConfigureDTO(fuLuConfigureDTO);
|
||||||
|
return ResultUtil.data(result);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,9 +33,9 @@ spring:
|
|||||||
type: redis
|
type: redis
|
||||||
# Redis
|
# Redis
|
||||||
redis:
|
redis:
|
||||||
host: 192.168.2.122
|
host: 120.71.145.134
|
||||||
port: 6379
|
port: 6379
|
||||||
password: Gb84505016
|
password: ekLhvPGraSj8DGO0
|
||||||
lettuce:
|
lettuce:
|
||||||
pool:
|
pool:
|
||||||
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
||||||
@ -64,9 +64,9 @@ spring:
|
|||||||
default-datasource:
|
default-datasource:
|
||||||
type: com.alibaba.druid.pool.DruidDataSource
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
driverClassName: com.mysql.cj.jdbc.Driver
|
driverClassName: com.mysql.cj.jdbc.Driver
|
||||||
url: jdbc:mysql://192.168.2.126:3306/rx-shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
url: jdbc:mysql://120.71.183.195:3306/zyt_shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
||||||
username: rx-shop
|
username: zyt_shop
|
||||||
password: J2xEZ42HwPXrDXt3
|
password: Gb84505016@zytshop
|
||||||
maxActive: 20
|
maxActive: 20
|
||||||
initialSize: 5
|
initialSize: 5
|
||||||
maxWait: 60000
|
maxWait: 60000
|
||||||
@ -120,6 +120,7 @@ ignored:
|
|||||||
- /weixin/**
|
- /weixin/**
|
||||||
- /source/**
|
- /source/**
|
||||||
- /store/passport/login/**
|
- /store/passport/login/**
|
||||||
|
- /store/passport/login/refresh/**
|
||||||
- /druid/**
|
- /druid/**
|
||||||
- /swagger-ui.html
|
- /swagger-ui.html
|
||||||
- /doc.html
|
- /doc.html
|
||||||
@ -190,16 +191,16 @@ lili:
|
|||||||
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
||||||
#域名
|
#域名
|
||||||
domain:
|
domain:
|
||||||
pc: https://pc.b2b2c.pickmall.cn
|
pc: http://zbuyer.sx1788.cn/buyer
|
||||||
wap: https://m.b2b2c.pickmall.cn
|
wap: http://zshop.sx1788.cn/
|
||||||
store: https://store.b2b2c.pickmall.cn
|
store: http://zseller.sx1788.cn/login
|
||||||
admin: https://admin.b2b2c.pickmall.cn
|
admin: http://zmanager.sx1788.cn/login
|
||||||
#api地址
|
#api地址
|
||||||
api:
|
api:
|
||||||
buyer: https://buyer-api.pickmall.cn
|
buyer: https://zshop-api.sx1788.cn/buyer-api
|
||||||
common: https://common-api.pickmall.cn
|
common: https://zshop-api.sx1788.cn/common-api
|
||||||
manager: https://admin-api.pickmall.cn
|
manager: https://zshop-api.sx1788.cn/manager-api
|
||||||
store: https://store-api.pickmall.cn
|
store: https://zshop-api.sx1788.cn/seller-api
|
||||||
|
|
||||||
# jwt 细节设定
|
# jwt 细节设定
|
||||||
jwt-setting:
|
jwt-setting:
|
||||||
@ -218,7 +219,7 @@ lili:
|
|||||||
data:
|
data:
|
||||||
elasticsearch:
|
elasticsearch:
|
||||||
cluster-name: elasticsearch
|
cluster-name: elasticsearch
|
||||||
cluster-nodes: 192.168.2.122:9200
|
cluster-nodes: 106.124.130.167:9200
|
||||||
index:
|
index:
|
||||||
number-of-replicas: 0
|
number-of-replicas: 0
|
||||||
number-of-shards: 3
|
number-of-shards: 3
|
||||||
@ -228,7 +229,7 @@ lili:
|
|||||||
# username: elastic
|
# username: elastic
|
||||||
# password: LiLiShopES
|
# password: LiLiShopES
|
||||||
logstash:
|
logstash:
|
||||||
server: 192.168.2.122:4560
|
server: 106.124.130.167:4560
|
||||||
rocketmq:
|
rocketmq:
|
||||||
promotion-topic: lili_promotion_topic
|
promotion-topic: lili_promotion_topic
|
||||||
promotion-group: lili_promotion_group
|
promotion-group: lili_promotion_group
|
||||||
@ -249,7 +250,7 @@ lili:
|
|||||||
after-sale-topic: lili_after_sale_topic
|
after-sale-topic: lili_after_sale_topic
|
||||||
after-sale-group: lili_after_sale_group
|
after-sale-group: lili_after_sale_group
|
||||||
rocketmq:
|
rocketmq:
|
||||||
name-server: 192.168.2.122:9876
|
name-server: 106.124.130.167:9876
|
||||||
producer:
|
producer:
|
||||||
group: lili_group
|
group: lili_group
|
||||||
send-message-timeout: 30000
|
send-message-timeout: 30000
|
||||||
@ -257,7 +258,7 @@ rocketmq:
|
|||||||
xxl:
|
xxl:
|
||||||
job:
|
job:
|
||||||
admin:
|
admin:
|
||||||
addresses: http://192.168.2.122:9001/xxl-job-admin
|
addresses: http://127.0.0.1:9001/xxl-job-admin
|
||||||
executor:
|
executor:
|
||||||
appname: xxl-job-executor-lilishop
|
appname: xxl-job-executor-lilishop
|
||||||
address:
|
address:
|
||||||
|
|||||||
@ -20,6 +20,22 @@
|
|||||||
</encoder>
|
</encoder>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
|
<appender name="RocketmqClientAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${LOG_FILE_PATH}/rocketmq.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${LOG_FILE_PATH}/rocketmq/rocketmq-%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<maxHistory>30</maxHistory>
|
||||||
|
<totalSizeCap>30MB</totalSizeCap>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
<logger name="RocketmqClient" additivity="false">
|
||||||
|
<level value="info" />
|
||||||
|
<appender-ref ref="RocketmqClientAppender"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
<!--输出到elk的LOGSTASH-->
|
<!--输出到elk的LOGSTASH-->
|
||||||
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
|
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
|
||||||
<!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址-->
|
<!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址-->
|
||||||
|
|||||||
@ -23,9 +23,9 @@ mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml
|
|||||||
#mybatis.type-aliases-package=com.xxl.job.admin.core.model
|
#mybatis.type-aliases-package=com.xxl.job.admin.core.model
|
||||||
|
|
||||||
### xxl-job, datasource
|
### xxl-job, datasource
|
||||||
spring.datasource.url=jdbc:mysql://192.168.0.106:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
|
spring.datasource.url=jdbc:mysql://120.71.183.195:3306/zyt_shop/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
|
||||||
spring.datasource.username=root
|
spring.datasource.username=zyt_shop
|
||||||
spring.datasource.password=lilishop
|
spring.datasource.password=Gb84505016@zytshop
|
||||||
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
|
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
|
||||||
|
|
||||||
### datasource-pool
|
### datasource-pool
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user