Merge branch 'master' of https://gitee.com/beijing_hongye_huicheng/shengxing into clerk
This commit is contained in:
commit
ba57f19ee7
59666
DB/lilishop.sql
Normal file
59666
DB/lilishop.sql
Normal file
File diff suppressed because one or more lines are too long
@ -6,7 +6,7 @@ ALTER TABLE li_distribution ADD settlement_bank_branch_name varchar ( 200 );
|
||||
/** 文章分类添加默认值**/
|
||||
ALTER TABLE li_article_category alter column sort set default 0;
|
||||
/** 添加分销提现菜单**/
|
||||
INSERT INTO `lilishop`.`li_menu`(`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `front_component`) VALUES (1410862675914764290, 'admin', '2021-07-02 15:27:29', b'0', 'admin', '2021-07-02 15:27:45', 'null', 'distribution/distributionCash', '', 2, 'distributionCash', '1374173575405109248', 'distributionCash', 5.00, '分销提现', 'null');
|
||||
INSERT INTO `rxshop`.`li_menu`(`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `front_component`) VALUES (1410862675914764290, 'admin', '2021-07-02 15:27:29', b'0', 'admin', '2021-07-02 15:27:45', 'null', 'distribution/distributionCash', '', 2, 'distributionCash', '1374173575405109248', 'distributionCash', 5.00, '分销提现', 'null');
|
||||
|
||||
/** 促销商品添加商品类型**/
|
||||
ALTER TABLE li_promotion_goods ADD goods_type varchar (200);
|
||||
@ -16,7 +16,7 @@ update li_member_points_history set point_type = 'INCREASE' where point_type=1;
|
||||
update li_member_points_history set point_type = 'REDUCE' where point_type=0;
|
||||
|
||||
/** 添加分词管理菜单*/
|
||||
INSERT INTO `lilishop`.`li_menu` (`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `front_component`) VALUES (1349247640584085511, 'admin', '2021-01-13 14:51:20', b'0', 'admin', '2021-02-25 09:02:59', 'null', 'customWords/index', 'ios-american-football', 2, 'customWords', '1349237129847005184', 'customWords', 8.00, '分词管理', 'null');
|
||||
INSERT INTO `rxshop`.`li_menu` (`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `front_component`) VALUES (1349247640584085511, 'admin', '2021-01-13 14:51:20', b'0', 'admin', '2021-02-25 09:02:59', 'null', 'customWords/index', 'ios-american-football', 2, 'customWords', '1349237129847005184', 'customWords', 8.00, '分词管理', 'null');
|
||||
|
||||
/** 修改会员评价店铺图片字段类型 **/
|
||||
alter table li_member_evaluation modify column reply_image text;
|
||||
@ -25,4 +25,4 @@ alter table li_member_evaluation modify column reply_image text;
|
||||
alter table li_after_sale modify column after_sale_image text;
|
||||
|
||||
/** 提现申请审核sql **/
|
||||
INSERT INTO `lilishop`.`li_menu`(`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `front_component`) VALUES (1367042804944994305, 'admin', '2021-03-03 09:22:58', b'0', NULL, NULL, NULL, 'member/advance/withdrawApply', 'ios-alert', 2, 'withdrawApply', '1367042490443497472', 'withdrawApply', 1.00, '提现申请', NULL);
|
||||
INSERT INTO `rxshop`.`li_menu`(`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `front_component`) VALUES (1367042804944994305, 'admin', '2021-03-03 09:22:58', b'0', NULL, NULL, NULL, 'member/advance/withdrawApply', 'ios-alert', 2, 'withdrawApply', '1367042490443497472', 'withdrawApply', 1.00, '提现申请', NULL);
|
||||
|
@ -6,6 +6,12 @@
|
||||
|
||||
#### 欢迎交流需求,交流业务,交流技术(基础问题自行解决,进群先看文档后提问)
|
||||
|
||||
<<<<<<< HEAD
|
||||
##### 交流 qq 1群 961316482(已满)
|
||||
|
||||
##### 交流 qq 2群 875294241
|
||||
|
||||
=======
|
||||
|
||||
##### 交流 qq 1群 961316482(已满)
|
||||
<a target="_blank" href="https://qm.qq.com/cgi-bin/qm/qr?k=BAhURE3DG2YWhQk6kRxVapbLykqMoPS8&jump_from=webapi"><img border="0" src="https://pub.idqqimg.com/wpa/images/group.png" alt="Lilishop交流群" title="Lilishop交流群">点击快捷加群</a>
|
||||
@ -13,6 +19,7 @@
|
||||
##### 交流 qq 2群 875294241
|
||||
|
||||
<a target="_blank" href="https://qm.qq.com/cgi-bin/qm/qr?k=_lrekOvr5k2p5uTn5GRidI-chKEmpCX3&jump_from=webapi"><img border="0" src="https://pub.idqqimg.com/wpa/images/group.png" alt="Lilishop交流群2群" title="Lilishop交流群2群">点击快捷加群</a>
|
||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
||||
|
||||
|
||||
##### 体验 公众号/小程序/APP 体验,扫描二维码
|
||||
|
@ -32,10 +32,10 @@
|
||||
<artifactId>logstash-logback-encoder</artifactId>
|
||||
<version>${logstash-logback-encoder}</version>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.springframework.boot</groupId>-->
|
||||
<!-- <artifactId>spring-boot-starter-mail</artifactId>-->
|
||||
<!-- </dependency> -->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.springframework.boot</groupId>-->
|
||||
<!-- <artifactId>spring-boot-starter-mail</artifactId>-->
|
||||
<!-- </dependency> -->
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
@ -16,5 +16,9 @@ spring.mail.username=1814994716@qq.com
|
||||
spring.mail.password=abcdefg123456!@#$%^
|
||||
# 日志文件路径
|
||||
logging.file.path=lili-logs/admin
|
||||
<<<<<<< HEAD
|
||||
lili.data.logstash.server=106.124.130.167:4560
|
||||
=======
|
||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
||||
# 文件格式
|
||||
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
|
||||
|
@ -36,12 +36,15 @@ public class PageBuyerController {
|
||||
public ResultMessage<PageDataVO> getIndex(@RequestParam String clientType) {
|
||||
PageDataDTO pageDataDTO = new PageDataDTO(PageEnum.INDEX.name());
|
||||
pageDataDTO.setPageClientType(clientType);
|
||||
return ResultUtil.data(pageService.getPageData(pageDataDTO));
|
||||
PageDataVO pageDataVO=pageService.getPageData(pageDataDTO);
|
||||
return ResultUtil.data(pageDataVO);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取页面数据")
|
||||
@GetMapping
|
||||
public ResultMessage<PageDataVO> get(PageDataDTO pageDataDTO) {
|
||||
return ResultUtil.data(pageService.getPageData(pageDataDTO));
|
||||
|
||||
PageDataVO pageDataVO=pageService.getPageData(pageDataDTO);
|
||||
return ResultUtil.data(pageDataVO);
|
||||
}
|
||||
}
|
||||
|
@ -45,6 +45,16 @@ public class MemberBuyerController {
|
||||
private Cache cache;
|
||||
|
||||
|
||||
@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 = "登录接口")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "username", value = "用户名", required = true, paramType = "query"),
|
||||
|
0
buyer-api/src/main/java/cn/lili/security/BuyerAuthenticationFilter.java
Executable file → Normal file
0
buyer-api/src/main/java/cn/lili/security/BuyerAuthenticationFilter.java
Executable file → Normal file
@ -1,6 +1,5 @@
|
||||
server:
|
||||
port: 8888
|
||||
|
||||
port: 8885
|
||||
servlet:
|
||||
context-path: /
|
||||
#
|
||||
@ -52,9 +51,9 @@ spring:
|
||||
|
||||
# Redis
|
||||
redis:
|
||||
host: 127.0.0.1
|
||||
host: 120.71.145.134
|
||||
port: 6379
|
||||
password: lilishop
|
||||
password: ekLhvPGraSj8DGO0
|
||||
lettuce:
|
||||
pool:
|
||||
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
||||
@ -73,9 +72,9 @@ spring:
|
||||
default-datasource:
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://127.0.0.1:3306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||
username: root
|
||||
password: lilishop
|
||||
url: jdbc:mysql://120.71.183.195:3306/zyt_shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
||||
username: zyt_shop
|
||||
password: Gb84505016@zytshop
|
||||
maxActive: 50
|
||||
initialSize: 10
|
||||
maxWait: 60000
|
||||
@ -162,8 +161,8 @@ ignored:
|
||||
|
||||
# Swagger界面内容配置
|
||||
swagger:
|
||||
title: lili API接口文档
|
||||
description: lili Api Documentation
|
||||
title: API接口文档
|
||||
description: Api Documentation
|
||||
version: 1.0.0
|
||||
termsOfServiceUrl: https://pickmall.cn
|
||||
contact:
|
||||
@ -186,7 +185,7 @@ logging:
|
||||
# 输出级别
|
||||
level:
|
||||
root: info
|
||||
# org.springframework: debug
|
||||
# org.springframework: debug
|
||||
file:
|
||||
# 指定路径
|
||||
path: lili-logs
|
||||
@ -203,7 +202,7 @@ jasypt:
|
||||
|
||||
lili:
|
||||
system:
|
||||
isDemoSite: true
|
||||
isDemoSite: false
|
||||
statistics:
|
||||
# 在线人数统计 X 小时。这里设置48,即统计过去48小时每小时在线人数
|
||||
onlineMember: 48
|
||||
@ -221,10 +220,10 @@ lili:
|
||||
admin: https://admin-b2b2c.pickmall.cn
|
||||
#api地址
|
||||
api:
|
||||
buyer: https://buyer-api.pickmall.cn
|
||||
common: https://common-api.pickmall.cn
|
||||
manager: https://admin-api.pickmall.cn
|
||||
store: https://store-api.pickmall.cn
|
||||
buyer: https://zshop-api.sx1788.cn/buyer-api
|
||||
common: https://zshop-api.sx1788.cn/common-api
|
||||
manager: https://zshop-api.sx1788.cn/manager-api
|
||||
store: https://zshop-api.sx1788.cn/seller-api
|
||||
|
||||
# jwt 细节设定
|
||||
jwt-setting:
|
||||
@ -243,7 +242,7 @@ lili:
|
||||
data:
|
||||
elasticsearch:
|
||||
cluster-name: elasticsearch
|
||||
cluster-nodes: 127.0.0.1:9200
|
||||
cluster-nodes: 106.124.130.167:9200
|
||||
index:
|
||||
number-of-replicas: 0
|
||||
number-of-shards: 3
|
||||
@ -253,7 +252,7 @@ lili:
|
||||
# username: elastic
|
||||
# password: LiLiShopES
|
||||
logstash:
|
||||
server: 192.168.0.116:4560
|
||||
server: 106.124.130.167:4560
|
||||
rocketmq:
|
||||
promotion-topic: lili_promotion_topic
|
||||
promotion-group: lili_promotion_group
|
||||
@ -274,7 +273,7 @@ lili:
|
||||
after-sale-topic: lili_after_sale_topic
|
||||
after-sale-group: lili_after_sale_group
|
||||
rocketmq:
|
||||
name-server: 127.0.0.1:9876
|
||||
name-server: 106.124.130.167:9876
|
||||
producer:
|
||||
group: lili_group
|
||||
send-message-timeout: 30000
|
||||
|
@ -24,17 +24,40 @@ spring:
|
||||
boot:
|
||||
admin:
|
||||
client:
|
||||
<<<<<<< HEAD
|
||||
url: http://127.0.0.1:8000
|
||||
# mongodb
|
||||
data:
|
||||
mongodb:
|
||||
host: 106.124.130.167
|
||||
port: 27017
|
||||
database: rx-shop
|
||||
username: goboo
|
||||
password: Gb84505016
|
||||
authentication-database: admin
|
||||
# replica-set-name: mongoreplset
|
||||
=======
|
||||
url: http://192.168.0.116:8000
|
||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
||||
cache:
|
||||
type: redis
|
||||
#amqp
|
||||
# rabbitmq:
|
||||
<<<<<<< HEAD
|
||||
# host: 106.124.130.167
|
||||
# Redis
|
||||
redis:
|
||||
host: 120.71.145.134
|
||||
port: 6379
|
||||
password: ekLhvPGraSj8DGO0
|
||||
=======
|
||||
# host: 192.168.0.116
|
||||
# Redis
|
||||
redis:
|
||||
host: 192.168.0.116
|
||||
port: 6379
|
||||
password: lilishop
|
||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
||||
lettuce:
|
||||
pool:
|
||||
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
||||
@ -63,9 +86,15 @@ spring:
|
||||
default-datasource:
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
<<<<<<< HEAD
|
||||
url: jdbc:mysql://120.71.183.195:3306/zyt_shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
||||
username: zyt_shop
|
||||
password: Gb84505016@zytshop
|
||||
=======
|
||||
url: jdbc:mysql://192.168.0.116:3306/new-lili?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||
username: root
|
||||
password: lilishop
|
||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
||||
maxActive: 20
|
||||
initialSize: 5
|
||||
maxWait: 60000
|
||||
@ -107,7 +136,11 @@ spring:
|
||||
props:
|
||||
#是否打印逻辑SQL语句和实际SQL语句,建议调试时打印,在生产环境关闭
|
||||
sql:
|
||||
<<<<<<< HEAD
|
||||
show: true
|
||||
=======
|
||||
show: false
|
||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
||||
|
||||
# 忽略鉴权url
|
||||
ignored:
|
||||
@ -133,8 +166,13 @@ ignored:
|
||||
- /buyer/memberEvaluation/**/goodsEvaluation
|
||||
- /buyer/memberEvaluation/**/evaluationNumber
|
||||
- /store/login/**
|
||||
<<<<<<< HEAD
|
||||
- /manager/passport/user/login
|
||||
- /manager/passport/user/refresh/**
|
||||
=======
|
||||
- /manager/user/login
|
||||
- /manager/user/refresh/**
|
||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
||||
- /druid/**
|
||||
- /swagger-ui.html
|
||||
- /doc.html
|
||||
@ -151,6 +189,16 @@ ignored:
|
||||
|
||||
# Swagger界面内容配置
|
||||
swagger:
|
||||
<<<<<<< HEAD
|
||||
title: API接口文档
|
||||
description: Api Documentation
|
||||
version: 1.0.0
|
||||
termsOfServiceUrl:
|
||||
contact:
|
||||
name: rx
|
||||
url:
|
||||
email:
|
||||
=======
|
||||
title: lili API接口文档
|
||||
description: lili Api Documentation
|
||||
version: 1.0.0
|
||||
@ -159,6 +207,7 @@ swagger:
|
||||
name: lili
|
||||
url: https://pickmall.cn
|
||||
email: admin@pickmall.com
|
||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
||||
|
||||
# Mybatis-plus
|
||||
mybatis-plus:
|
||||
@ -176,6 +225,10 @@ logging:
|
||||
cn.lili: info
|
||||
# org.hibernate: debug
|
||||
# org.springframework: debug
|
||||
<<<<<<< HEAD
|
||||
# org.springframework.data.mongodb.core: debug
|
||||
=======
|
||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
||||
file:
|
||||
# 指定路径
|
||||
path: lili-logs
|
||||
@ -190,7 +243,11 @@ jasypt:
|
||||
|
||||
lili:
|
||||
system:
|
||||
<<<<<<< HEAD
|
||||
isDemoSite: false
|
||||
=======
|
||||
isDemoSite: true
|
||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
||||
statistics:
|
||||
# 在线人数统计 X 小时。这里设置48,即统计过去48小时每小时在线人数
|
||||
onlineMember: 48
|
||||
@ -202,6 +259,18 @@ lili:
|
||||
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
||||
#域名
|
||||
domain:
|
||||
<<<<<<< HEAD
|
||||
pc: http://106.124.130.167:8885
|
||||
wap: http://106.124.130.167:8885
|
||||
seller: http://106.124.130.167:8885
|
||||
admin: http://106.124.130.167:8885
|
||||
#api地址
|
||||
api:
|
||||
buyer: https://z171l91606.51mypc.cn
|
||||
base: http://106.124.130.167:8885
|
||||
manager: http://106.124.130.167:8885
|
||||
seller: http://106.124.130.167:8885
|
||||
=======
|
||||
pc: http://192.168.0.116:8888
|
||||
wap: http://192.168.0.116:8888
|
||||
seller: http://192.168.0.116:8888
|
||||
@ -212,6 +281,7 @@ lili:
|
||||
base: http://192.168.0.116:8888
|
||||
manager: http://192.168.0.116:8888
|
||||
seller: http://192.168.0.116:8888
|
||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
||||
|
||||
# jwt 细节设定
|
||||
jwt-setting:
|
||||
@ -230,7 +300,11 @@ lili:
|
||||
data:
|
||||
elasticsearch:
|
||||
cluster-name: elasticsearch
|
||||
<<<<<<< HEAD
|
||||
cluster-nodes: 106.124.130.167:9200
|
||||
=======
|
||||
cluster-nodes: 192.168.0.116:9200
|
||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
||||
index:
|
||||
number-of-replicas: 0
|
||||
number-of-shards: 3
|
||||
@ -239,8 +313,12 @@ lili:
|
||||
# account:
|
||||
# username: elastic
|
||||
# password: LiLiShopES
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
logstash:
|
||||
server: 127.0.0.1:4560
|
||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
||||
rocketmq:
|
||||
promotion-topic: lili_promotion_topic
|
||||
promotion-group: lili_promotion_group
|
||||
@ -259,7 +337,11 @@ lili:
|
||||
notice-send-topic: lili_send_notice_topic
|
||||
notice-send-group: lili_send_notice_group
|
||||
rocketmq:
|
||||
<<<<<<< HEAD
|
||||
name-server: 106.124.130.167:9876
|
||||
=======
|
||||
name-server: 192.168.0.116:9876
|
||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
||||
producer:
|
||||
group: lili_group
|
||||
send-message-timeout: 30000
|
||||
@ -267,7 +349,11 @@ rocketmq:
|
||||
xxl:
|
||||
job:
|
||||
admin:
|
||||
<<<<<<< HEAD
|
||||
addresses: http://127.0.0.1:9001/xxl-job-admin
|
||||
=======
|
||||
addresses: http://192.168.0.116:9001/xxl-job-admin
|
||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
||||
executor:
|
||||
appname: xxl-job-executor-lilishop
|
||||
address:
|
||||
|
@ -1,43 +1,43 @@
|
||||
package cn.lili.controller.common;
|
||||
|
||||
import cn.lili.cache.limit.annotation.LimitPoint;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.verification.entity.enums.VerificationEnums;
|
||||
import cn.lili.modules.verification.service.VerificationService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* 滑块验证码接口
|
||||
*
|
||||
* @author Chopper
|
||||
* @since 2020/11/26 15:41
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/common/common/slider")
|
||||
@Api(tags = "滑块验证码接口")
|
||||
public class SliderImageController {
|
||||
|
||||
@Autowired
|
||||
private VerificationService verificationService;
|
||||
|
||||
@LimitPoint(name = "slider_image", key = "verification")
|
||||
@GetMapping("/{verificationEnums}")
|
||||
@ApiOperation(value = "获取校验接口,一分钟同一个ip请求10次")
|
||||
public ResultMessage getSliderImage(@RequestHeader String uuid, @PathVariable VerificationEnums verificationEnums) {
|
||||
return ResultUtil.data(verificationService.createVerification(verificationEnums, uuid));
|
||||
|
||||
}
|
||||
|
||||
@LimitPoint(name = "slider_image", key = "verification_pre_check", limit = 600)
|
||||
@PostMapping("/{verificationEnums}")
|
||||
@ApiOperation(value = "验证码预校验")
|
||||
public ResultMessage verificationImage(Integer xPos, @RequestHeader String uuid, @PathVariable VerificationEnums verificationEnums) {
|
||||
return ResultUtil.data(verificationService.preCheck(xPos, uuid, verificationEnums));
|
||||
}
|
||||
}
|
||||
package cn.lili.controller.common;
|
||||
|
||||
import cn.lili.cache.limit.annotation.LimitPoint;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.verification.entity.enums.VerificationEnums;
|
||||
import cn.lili.modules.verification.service.VerificationService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* 滑块验证码接口
|
||||
*
|
||||
* @author Chopper
|
||||
* @since 2020/11/26 15:41
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/common/common/slider")
|
||||
@Api(tags = "滑块验证码接口")
|
||||
public class SliderImageController {
|
||||
|
||||
@Autowired
|
||||
private VerificationService verificationService;
|
||||
|
||||
@LimitPoint(name = "slider_image", key = "verification")
|
||||
@GetMapping("/{verificationEnums}")
|
||||
@ApiOperation(value = "获取校验接口,一分钟同一个ip请求10次")
|
||||
public ResultMessage getSliderImage(@RequestHeader String uuid, @PathVariable VerificationEnums verificationEnums) {
|
||||
return ResultUtil.data(verificationService.createVerification(verificationEnums, uuid));
|
||||
|
||||
}
|
||||
|
||||
@LimitPoint(name = "slider_image", key = "verification_pre_check", limit = 600)
|
||||
@PostMapping("/{verificationEnums}")
|
||||
@ApiOperation(value = "验证码预校验")
|
||||
public ResultMessage verificationImage(Integer xPos, @RequestHeader String uuid, @PathVariable VerificationEnums verificationEnums) {
|
||||
return ResultUtil.data(verificationService.preCheck(xPos, uuid, verificationEnums));
|
||||
}
|
||||
}
|
||||
|
@ -1,48 +1,48 @@
|
||||
package cn.lili.controller.common;
|
||||
|
||||
import cn.lili.cache.limit.annotation.LimitPoint;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.sms.SmsUtil;
|
||||
import cn.lili.modules.verification.entity.enums.VerificationEnums;
|
||||
import cn.lili.modules.verification.service.VerificationService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* 短信验证码接口
|
||||
*
|
||||
* @author Chopper
|
||||
* @since 2020/11/26 15:41
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "短信验证码接口")
|
||||
@RequestMapping("/common/common/sms")
|
||||
public class SmsController {
|
||||
|
||||
@Autowired
|
||||
private SmsUtil smsUtil;
|
||||
@Autowired
|
||||
private VerificationService verificationService;
|
||||
|
||||
@LimitPoint(name = "sms_send", key = "sms")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(paramType = "path", dataType = "String", name = "mobile", value = "手机号"),
|
||||
@ApiImplicitParam(paramType = "header", dataType = "String", name = "uuid", value = "uuid"),
|
||||
})
|
||||
@GetMapping("/{verificationEnums}/{mobile}")
|
||||
@ApiOperation(value = "发送短信验证码,一分钟同一个ip请求1次")
|
||||
public ResultMessage getSmsCode(
|
||||
@RequestHeader String uuid,
|
||||
@PathVariable String mobile,
|
||||
@PathVariable VerificationEnums verificationEnums) {
|
||||
verificationService.check(uuid, verificationEnums);
|
||||
smsUtil.sendSmsCode(mobile, verificationEnums, uuid);
|
||||
return ResultUtil.success(ResultCode.VERIFICATION_SEND_SUCCESS);
|
||||
}
|
||||
}
|
||||
package cn.lili.controller.common;
|
||||
|
||||
import cn.lili.cache.limit.annotation.LimitPoint;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.sms.SmsUtil;
|
||||
import cn.lili.modules.verification.entity.enums.VerificationEnums;
|
||||
import cn.lili.modules.verification.service.VerificationService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* 短信验证码接口
|
||||
*
|
||||
* @author Chopper
|
||||
* @since 2020/11/26 15:41
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "短信验证码接口")
|
||||
@RequestMapping("/common/common/sms")
|
||||
public class SmsController {
|
||||
|
||||
@Autowired
|
||||
private SmsUtil smsUtil;
|
||||
@Autowired
|
||||
private VerificationService verificationService;
|
||||
|
||||
@LimitPoint(name = "sms_send", key = "sms")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(paramType = "path", dataType = "String", name = "mobile", value = "手机号"),
|
||||
@ApiImplicitParam(paramType = "header", dataType = "String", name = "uuid", value = "uuid"),
|
||||
})
|
||||
@GetMapping("/{verificationEnums}/{mobile}")
|
||||
@ApiOperation(value = "发送短信验证码,一分钟同一个ip请求1次")
|
||||
public ResultMessage getSmsCode(
|
||||
@RequestHeader String uuid,
|
||||
@PathVariable String mobile,
|
||||
@PathVariable VerificationEnums verificationEnums) {
|
||||
verificationService.check(uuid, verificationEnums);
|
||||
smsUtil.sendSmsCode(mobile, verificationEnums, uuid);
|
||||
return ResultUtil.success(ResultCode.VERIFICATION_SEND_SUCCESS);
|
||||
}
|
||||
}
|
||||
|
@ -12,7 +12,7 @@ import cn.lili.common.utils.Base64DecodeMultipartFile;
|
||||
import cn.lili.common.utils.CommonUtil;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.file.entity.File;
|
||||
import cn.lili.modules.file.plugin.FileManagerPlugin;
|
||||
import cn.lili.modules.file.plugin.QiNiuManagerPlugin;
|
||||
import cn.lili.modules.file.service.FileService;
|
||||
import cn.lili.modules.system.entity.dos.Setting;
|
||||
import cn.lili.modules.system.entity.enums.SettingEnum;
|
||||
@ -47,7 +47,7 @@ public class UploadController {
|
||||
@Autowired
|
||||
private SettingService settingService;
|
||||
@Autowired
|
||||
private FileManagerPlugin fileManagerPlugin;
|
||||
private QiNiuManagerPlugin fileManagerPlugin;
|
||||
@Autowired
|
||||
private Cache cache;
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
server:
|
||||
port: 8890
|
||||
|
||||
servlet:
|
||||
context-path: /
|
||||
|
||||
@ -33,9 +32,9 @@ spring:
|
||||
type: redis
|
||||
# Redis
|
||||
redis:
|
||||
host: 127.0.0.1
|
||||
host: 120.71.145.134
|
||||
port: 6379
|
||||
password: lilishop
|
||||
password: ekLhvPGraSj8DGO0
|
||||
lettuce:
|
||||
pool:
|
||||
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
||||
@ -64,9 +63,9 @@ spring:
|
||||
default-datasource:
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://127.0.0.1:3306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||
username: root
|
||||
password: lilishop
|
||||
url: jdbc:mysql://120.71.183.195:3306/zyt_shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
||||
username: zyt_shop
|
||||
password: Gb84505016@zytshop
|
||||
maxActive: 20
|
||||
initialSize: 5
|
||||
maxWait: 60000
|
||||
@ -137,8 +136,8 @@ ignored:
|
||||
|
||||
# Swagger界面内容配置
|
||||
swagger:
|
||||
title: lili API接口文档
|
||||
description: lili Api Documentation
|
||||
title: API接口文档
|
||||
description: Api Documentation
|
||||
version: 1.0.0
|
||||
termsOfServiceUrl: https://pickmall.cn
|
||||
contact:
|
||||
@ -191,17 +190,17 @@ lili:
|
||||
#短信模版配置
|
||||
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:
|
||||
isTestModel: true
|
||||
isTestModel: false
|
||||
statistics:
|
||||
# 在线人数统计 X 小时。这里设置48,即统计过去48小时每小时在线人数
|
||||
onlineMember: 48
|
||||
@ -213,17 +212,16 @@ lili:
|
||||
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
||||
#域名
|
||||
domain:
|
||||
pc: https://pc.b2b2c.pickmall.cn
|
||||
wap: https://m.b2b2c.pickmall.cn
|
||||
store: https://store.b2b2c.pickmall.cn
|
||||
admin: https://admin.b2b2c.pickmall.cn
|
||||
pc: https://zbuyer.sx1788.cn
|
||||
wap: https://zshop.sx1788.cn
|
||||
store: https://zseller.sx1788.cn
|
||||
admin: https://zmanager.sx1788.cn
|
||||
#api地址
|
||||
api:
|
||||
buyer: https://buyer-api.pickmall.cn
|
||||
common: https://common-api.pickmall.cn
|
||||
manager: https://admin-api.pickmall.cn
|
||||
store: https://store-api.pickmall.cn
|
||||
|
||||
buyer: https://zshop-api.sx1788.cn/buyer-api
|
||||
common: https://zshop-api.sx1788.cn/common-api
|
||||
manager: https://zshop-api.sx1788.cn/manager-api
|
||||
store: https://zshop-api.sx1788.cn/seller-api
|
||||
# jwt 细节设定
|
||||
jwt-setting:
|
||||
# token过期时间(分钟)
|
||||
@ -241,7 +239,7 @@ lili:
|
||||
data:
|
||||
elasticsearch:
|
||||
cluster-name: elasticsearch
|
||||
cluster-nodes: 127.0.0.1:9200
|
||||
cluster-nodes: 106.124.130.167:9200
|
||||
index:
|
||||
number-of-replicas: 0
|
||||
number-of-shards: 3
|
||||
@ -251,7 +249,7 @@ lili:
|
||||
# username: elastic
|
||||
# password: LiLiShopES
|
||||
logstash:
|
||||
server: 127.0.0.1:4560
|
||||
server: 106.124.130.167:4560
|
||||
rocketmq:
|
||||
promotion-topic: lili_promotion_topic
|
||||
promotion-group: lili_promotion_group
|
||||
@ -270,7 +268,7 @@ lili:
|
||||
notice-send-topic: lili_send_notice_topic
|
||||
notice-send-group: lili_send_notice_group
|
||||
rocketmq:
|
||||
name-server: 127.0.0.1:9876
|
||||
name-server: 106.124.130.167:9876
|
||||
producer:
|
||||
group: lili_group
|
||||
send-message-timeout: 30000
|
||||
|
@ -24,23 +24,25 @@ spring:
|
||||
boot:
|
||||
admin:
|
||||
client:
|
||||
url: http://192.168.0.116:8000
|
||||
url: http://127.0.0.1:8000
|
||||
# mongodb
|
||||
data:
|
||||
mongodb:
|
||||
uri: 192.168.0.116:27017
|
||||
database: lilishop
|
||||
username: root
|
||||
password: lilishop
|
||||
host: 106.124.130.167
|
||||
port: 27017
|
||||
database: rx-shop
|
||||
username: goboo
|
||||
password: Gb84505016
|
||||
|
||||
authentication-database: admin
|
||||
# replica-set-name: mongoreplset
|
||||
cache:
|
||||
type: redis
|
||||
# Redis
|
||||
redis:
|
||||
host: 192.168.0.116
|
||||
host: 120.71.145.134
|
||||
port: 6379
|
||||
password: lilishop
|
||||
password: ekLhvPGraSj8DGO0
|
||||
lettuce:
|
||||
pool:
|
||||
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
||||
@ -69,9 +71,9 @@ spring:
|
||||
default-datasource:
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://192.168.0.116:3306/clerk?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||
username: root
|
||||
password: lilishop
|
||||
url: jdbc:mysql://120.71.183.195:3306/zyt_shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
||||
username: zyt_shop
|
||||
password: Gb84505016@zytshop
|
||||
maxActive: 50
|
||||
initialSize: 20
|
||||
maxWait: 60000
|
||||
@ -166,15 +168,14 @@ ignored:
|
||||
|
||||
# Swagger界面内容配置
|
||||
swagger:
|
||||
title: lilishop API接口文档
|
||||
description: lilishop Api Documentation
|
||||
version: 4.2.2
|
||||
termsOfServiceUrl: https://pickmall.cn
|
||||
title: API接口文档
|
||||
description: Api Documentation
|
||||
version: 1.0.0
|
||||
termsOfServiceUrl:
|
||||
contact:
|
||||
name: lili
|
||||
url: https://pickmall.cn
|
||||
email: admin@pickmall.com
|
||||
|
||||
name: rx
|
||||
url:
|
||||
email:
|
||||
# Mybatis-plus
|
||||
mybatis-plus:
|
||||
mapper-locations: classpath*:mapper/*.xml
|
||||
@ -213,7 +214,7 @@ lili:
|
||||
#图形验证码有效时间 秒 包含滑块验证码有效时间, 以及验证通过之后,缓存中存储的验证结果有效时间
|
||||
effectiveTime: 300
|
||||
#水印
|
||||
watermark: LILI-SHOP
|
||||
watermark:
|
||||
#干扰项数量 最大2 默认0
|
||||
interfereNum: 1
|
||||
#允许误差像素
|
||||
@ -221,18 +222,18 @@ lili:
|
||||
#短信模版配置
|
||||
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:
|
||||
isDemoSite: false
|
||||
isTestModel: true
|
||||
isTestModel: false
|
||||
# 脱敏级别:
|
||||
# 0:不做脱敏处理
|
||||
# 1:管理端用户手机号等信息脱敏
|
||||
@ -250,17 +251,16 @@ lili:
|
||||
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
||||
#域名
|
||||
domain:
|
||||
pc: http://192.168.0.116:8888
|
||||
wap: http://192.168.0.116:8888
|
||||
seller: http://192.168.0.116:8888
|
||||
admin: http://192.168.0.116:8888
|
||||
pc: http://106.124.130.167:8885
|
||||
wap: http://106.124.130.167:8885
|
||||
seller: http://106.124.130.167:8885
|
||||
admin: http://106.124.130.167:8885
|
||||
#api地址
|
||||
api:
|
||||
buyer: https://z171l91606.51mypc.cn
|
||||
base: http://192.168.0.116:8888
|
||||
manager: http://192.168.0.116:8888
|
||||
seller: http://192.168.0.116:8888
|
||||
|
||||
base: http://106.124.130.167:8885
|
||||
manager: http://106.124.130.167:8885
|
||||
seller: http://106.124.130.167:8885
|
||||
# jwt 细节设定
|
||||
jwt-setting:
|
||||
# token过期时间(分钟)
|
||||
@ -278,7 +278,7 @@ lili:
|
||||
data:
|
||||
elasticsearch:
|
||||
cluster-name: elasticsearch
|
||||
cluster-nodes: 192.168.0.116:9200
|
||||
cluster-nodes: 106.124.130.167:9200
|
||||
index:
|
||||
number-of-replicas: 0
|
||||
number-of-shards: 3
|
||||
@ -289,7 +289,7 @@ lili:
|
||||
# password: LiLiShopES
|
||||
|
||||
logstash:
|
||||
server: 192.168.0.116:4560
|
||||
server: 106.124.130.167:4560
|
||||
rocketmq:
|
||||
promotion-topic: lili_promotion_topic
|
||||
promotion-group: lili_promotion_group
|
||||
@ -310,7 +310,7 @@ lili:
|
||||
after-sale-topic: lili_after_sale_topic
|
||||
after-sale-group: lili_after_sale_group
|
||||
rocketmq:
|
||||
name-server: 192.168.0.116:9876
|
||||
name-server: 106.124.130.167:9876
|
||||
isVIPChannel: false
|
||||
producer:
|
||||
group: lili_group
|
||||
@ -319,7 +319,7 @@ rocketmq:
|
||||
xxl:
|
||||
job:
|
||||
admin:
|
||||
addresses: http://192.168.0.116:9001/xxl-job-admin
|
||||
addresses: http://127.0.0.1:9001/xxl-job-admin
|
||||
executor:
|
||||
appname: xxl-job-executor-lilishop
|
||||
address:
|
||||
|
@ -1,6 +1,5 @@
|
||||
server:
|
||||
port: 8886
|
||||
|
||||
servlet:
|
||||
context-path: /
|
||||
|
||||
@ -36,9 +35,9 @@ spring:
|
||||
type: redis
|
||||
# Redis
|
||||
redis:
|
||||
host: 127.0.0.1
|
||||
host: 120.71.145.134
|
||||
port: 6379
|
||||
password: lilishop
|
||||
password: ekLhvPGraSj8DGO0
|
||||
lettuce:
|
||||
pool:
|
||||
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
||||
@ -67,9 +66,9 @@ spring:
|
||||
default-datasource:
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://127.0.0.1:3306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||
username: root
|
||||
password: lilishop
|
||||
url: jdbc:mysql://120.71.183.195:3306/zyt_shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
||||
username: zyt_shop
|
||||
password: Gb84505016@zytshop
|
||||
maxActive: 20
|
||||
initialSize: 5
|
||||
maxWait: 60000
|
||||
@ -138,8 +137,8 @@ ignored:
|
||||
- /buyer/memberEvaluation/**/goodsEvaluation
|
||||
- /buyer/memberEvaluation/**/evaluationNumber
|
||||
- /store/login/**
|
||||
- /manager/user/login
|
||||
- /manager/user/refresh/**
|
||||
- /manager/passport/user/login
|
||||
- /manager/passport/user/refresh/**
|
||||
- /druid/**
|
||||
- /swagger-ui.html
|
||||
- /doc.html
|
||||
@ -156,8 +155,8 @@ ignored:
|
||||
|
||||
# Swagger界面内容配置
|
||||
swagger:
|
||||
title: lili API接口文档
|
||||
description: lili Api Documentation
|
||||
title: API接口文档
|
||||
description: Api Documentation
|
||||
version: 1.0.0
|
||||
termsOfServiceUrl: https://pickmall.cn
|
||||
contact:
|
||||
@ -198,7 +197,7 @@ jasypt:
|
||||
|
||||
lili:
|
||||
system:
|
||||
isDemoSite: true
|
||||
isDemoSite: false
|
||||
statistics:
|
||||
# 在线人数统计 X 小时。这里设置48,即统计过去48小时每小时在线人数
|
||||
onlineMember: 48
|
||||
@ -210,17 +209,16 @@ lili:
|
||||
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
||||
#域名
|
||||
domain:
|
||||
pc: https://pc.b2b2c.pickmall.cn
|
||||
wap: https://m.b2b2c.pickmall.cn
|
||||
store: https://store.b2b2c.pickmall.cn
|
||||
admin: https://admin.b2b2c.pickmall.cn
|
||||
pc: https://zbuyer.sx1788.cn
|
||||
wap: https://zshop.sx1788.cn
|
||||
store: https://zseller.sx1788.cn
|
||||
admin: https://zmanager.sx1788.cn
|
||||
#api地址
|
||||
api:
|
||||
buyer: https://buyer-api.pickmall.cn
|
||||
common: https://common-api.pickmall.cn
|
||||
manager: https://admin-api.pickmall.cn
|
||||
store: https://store-api.pickmall.cn
|
||||
|
||||
buyer: https://zshop-api.sx1788.cn/buyer-api
|
||||
common: https://zshop-api.sx1788.cn/common-api
|
||||
manager: https://zshop-api.sx1788.cn/manager-api
|
||||
store: https://zshop-api.sx1788.cn/seller-api
|
||||
# jwt 细节设定
|
||||
jwt-setting:
|
||||
# token过期时间(分钟)
|
||||
@ -238,7 +236,7 @@ lili:
|
||||
data:
|
||||
elasticsearch:
|
||||
cluster-name: elasticsearch
|
||||
cluster-nodes: 127.0.0.1:9200
|
||||
cluster-nodes: 106.124.130.167:9200
|
||||
index:
|
||||
number-of-replicas: 0
|
||||
number-of-shards: 3
|
||||
@ -248,7 +246,7 @@ lili:
|
||||
# username: elastic
|
||||
# password: LiLiShopES
|
||||
logstash:
|
||||
server: 127.0.0.1:4560
|
||||
server: 106.124.130.167:4560
|
||||
rocketmq:
|
||||
promotion-topic: lili_promotion_topic
|
||||
promotion-group: lili_promotion_group
|
||||
@ -269,7 +267,7 @@ lili:
|
||||
after-sale-topic: lili_after_sale_topic
|
||||
after-sale-group: lili_after_sale_group
|
||||
rocketmq:
|
||||
name-server: 127.0.0.1:9876
|
||||
name-server: 106.124.130.167:9876
|
||||
producer:
|
||||
group: lili_group
|
||||
send-message-timeout: 30000
|
||||
|
@ -15,6 +15,15 @@
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.qiniu</groupId>
|
||||
<artifactId>qiniu-java-sdk</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.qiniu</groupId>
|
||||
<artifactId>qiniu-java-sdk</artifactId>
|
||||
<version>7.4.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-properties-migrator</artifactId>
|
||||
|
@ -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";
|
||||
}
|
||||
|
@ -24,8 +24,7 @@ public class VerificationCodeProperties {
|
||||
/**
|
||||
* 水印
|
||||
*/
|
||||
private String watermark = "LILI-SHOP";
|
||||
|
||||
private String watermark = "";
|
||||
/**
|
||||
* 干扰数量 最大数量
|
||||
*/
|
||||
|
@ -17,7 +17,7 @@ public class SecretKeyUtil {
|
||||
public static SecretKey generalKey() {
|
||||
//自定义
|
||||
byte[] encodedKey = Base64.decodeBase64("cuAihCz53DZRjZwbsGcZJ2Ai6At+T142uphtJMsk7iQ=");
|
||||
javax.crypto.SecretKey key = Keys.hmacShaKeyFor(encodedKey);
|
||||
SecretKey key = Keys.hmacShaKeyFor(encodedKey);
|
||||
return key;
|
||||
}
|
||||
|
||||
|
@ -55,7 +55,7 @@ public class IpUtils {
|
||||
}
|
||||
}
|
||||
if ("0:0:0:0:0:0:0:1".equals(ip)) {
|
||||
ip = "127.0.0.1";
|
||||
ip = "106.124.130.167";
|
||||
}
|
||||
return ip;
|
||||
}
|
||||
|
@ -99,7 +99,7 @@ public abstract class BaseElasticsearchService {
|
||||
log.info(" whether all of the nodes have acknowledged the request : {}", createIndexResponse.isAcknowledged());
|
||||
log.info(" Indicates whether the requisite number of shard copies were started for each shard in the index before timing out :{}", createIndexResponse.isShardsAcknowledged());
|
||||
} catch (Exception e) {
|
||||
log.error("创建索引错误",e);
|
||||
log.error("创建索引错误", e);
|
||||
throw new ElasticsearchException("创建索引 {" + index + "} 失败:" + e.getMessage());
|
||||
}
|
||||
}
|
||||
@ -346,8 +346,7 @@ public abstract class BaseElasticsearchService {
|
||||
" }\n" +
|
||||
" }\n";
|
||||
|
||||
PutMappingRequest request = new PutMappingRequest(index)
|
||||
.source(source, XContentType.JSON);
|
||||
PutMappingRequest request = new PutMappingRequest(index).source(source, XContentType.JSON);
|
||||
CountDownLatch latch = new CountDownLatch(1);
|
||||
AtomicReference<AcknowledgedResponse> response = new AtomicReference<>();
|
||||
client.indices().putMappingAsync(
|
||||
@ -452,7 +451,7 @@ public abstract class BaseElasticsearchService {
|
||||
try {
|
||||
searchResponse = client.search(searchRequest, COMMON_OPTIONS);
|
||||
} catch (IOException e) {
|
||||
log.error("es 搜索错误",e);
|
||||
log.error("es 搜索错误", e);
|
||||
}
|
||||
return searchResponse;
|
||||
}
|
||||
|
@ -77,7 +77,11 @@ public class AuthConfig {
|
||||
/**
|
||||
* 针对国外服务可以单独设置代理
|
||||
* HttpConfig config = new HttpConfig();
|
||||
<<<<<<< HEAD
|
||||
* config.setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("106.124.130.167", 10080)));
|
||||
=======
|
||||
* config.setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 10080)));
|
||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
||||
* config.setTimeout(15000);
|
||||
*
|
||||
* @since 1.15.5
|
||||
|
@ -47,9 +47,9 @@ public class AuthChecker {
|
||||
if (!GlobalAuthUtils.isHttpProtocol(redirectUri) && !GlobalAuthUtils.isHttpsProtocol(redirectUri)) {
|
||||
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)) {
|
||||
//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);
|
||||
}
|
||||
}
|
||||
|
@ -171,7 +171,7 @@ public class GlobalAuthUtils {
|
||||
* @return true: 本地主机(域名), false: 非本地主机(域名)
|
||||
*/
|
||||
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");
|
||||
}
|
||||
|
||||
|
||||
|
@ -0,0 +1,34 @@
|
||||
package cn.lili.modules.file.plugin;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
|
||||
public interface QiNiuManagerPlugin {
|
||||
|
||||
/**
|
||||
* 文件流上传
|
||||
*
|
||||
* @param inputStream
|
||||
* @param key
|
||||
* @return
|
||||
*/
|
||||
String inputStreamUpload(InputStream inputStream, String key);
|
||||
|
||||
|
||||
/**
|
||||
* 删除文件
|
||||
*
|
||||
* @param key
|
||||
*/
|
||||
void deleteFile(List<String> key);
|
||||
|
||||
/**
|
||||
* 根据原图生成规定尺寸的图片
|
||||
*
|
||||
* @param url 连接
|
||||
* @param width 宽
|
||||
* @param height 高
|
||||
* @return
|
||||
*/
|
||||
String getUrl(String url, Integer width, Integer height);
|
||||
}
|
@ -0,0 +1,143 @@
|
||||
package cn.lili.modules.file.plugin.impl;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.modules.file.plugin.QiNiuManagerPlugin;
|
||||
import cn.lili.modules.system.entity.dos.Setting;
|
||||
import cn.lili.modules.system.entity.dto.OssSetting;
|
||||
import cn.lili.modules.system.entity.enums.SettingEnum;
|
||||
import cn.lili.modules.system.service.SettingService;
|
||||
import com.aliyun.oss.ClientException;
|
||||
import com.aliyun.oss.OSS;
|
||||
import com.aliyun.oss.OSSClientBuilder;
|
||||
import com.aliyun.oss.OSSException;
|
||||
import com.aliyun.oss.model.DeleteObjectsRequest;
|
||||
import com.google.gson.Gson;
|
||||
import com.qiniu.common.QiniuException;
|
||||
import com.qiniu.http.Response;
|
||||
import com.qiniu.storage.BucketManager;
|
||||
import com.qiniu.storage.Configuration;
|
||||
import com.qiniu.storage.UploadManager;
|
||||
import com.qiniu.util.Auth;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 阿里oss 文件操作
|
||||
*
|
||||
* @author Chopper
|
||||
*/
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class QiNiuFileManagerPlugin implements QiNiuManagerPlugin {
|
||||
|
||||
@Autowired
|
||||
private SettingService settingService;
|
||||
|
||||
/**
|
||||
* 下一个初始化配置参数的时间
|
||||
* 这里为了防止多次调用redis,减少与redis的交互时间
|
||||
*/
|
||||
private static Long nextInitSetting;
|
||||
|
||||
/**
|
||||
* 暂时设定3分账请求一次设置
|
||||
*/
|
||||
private static final Long INTERVAL = 60 * 3 * 1000L;
|
||||
|
||||
/**
|
||||
* 静态设置,最快三分钟更新一次
|
||||
*/
|
||||
private static OssSetting ossSetting;
|
||||
|
||||
private Auth auth;
|
||||
private UploadManager uploadManager;
|
||||
private BucketManager bucketManager;
|
||||
|
||||
|
||||
/**
|
||||
* 获取oss client
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private OSS getQiNiuOssClient() {
|
||||
OssSetting ossSetting = getSetting();
|
||||
|
||||
return new OSSClientBuilder().build(
|
||||
ossSetting.getEndPoint(),
|
||||
ossSetting.getAccessKeyId(),
|
||||
ossSetting.getAccessKeySecret());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取配置
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private OssSetting getSetting() {
|
||||
//如果没有配置,或者没有下次刷新时间,或者下次刷新时间小于当前时间,则从redis 更新一次
|
||||
if (ossSetting == null || nextInitSetting == null || nextInitSetting < System.currentTimeMillis()) {
|
||||
Setting setting = settingService.get(SettingEnum.OSS_SETTING.name());
|
||||
if (setting == null || StrUtil.isBlank(setting.getSettingValue())) {
|
||||
throw new ServiceException(ResultCode.OSS_NOT_EXIST);
|
||||
}
|
||||
nextInitSetting = System.currentTimeMillis() + INTERVAL;
|
||||
ossSetting = new Gson().fromJson(setting.getSettingValue(), OssSetting.class);
|
||||
return ossSetting;
|
||||
}
|
||||
return ossSetting;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String inputStreamUpload(InputStream inputStream, String key) {
|
||||
OssSetting ossSetting = getSetting();
|
||||
auth = Auth.create(ossSetting.getAccessKeyId(), ossSetting.getAccessKeySecret());
|
||||
uploadManager = new UploadManager(new Configuration());
|
||||
String upToken = auth.uploadToken(ossSetting.getBucketName());
|
||||
|
||||
try {
|
||||
Response response = uploadManager.put(inputStream, ossSetting.getPicLocation() +"/"+ key, upToken, null, "image/jpg");
|
||||
if (response.statusCode == 200) {
|
||||
return ossSetting.getEndPoint() + "/"+ ossSetting.getPicLocation() + "/" + key;
|
||||
}
|
||||
} catch (QiniuException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteFile(List<String> key) {
|
||||
OssSetting ossSetting = getSetting();
|
||||
if (bucketManager == null) {
|
||||
if (auth == null) {
|
||||
auth = Auth.create(ossSetting.getAccessKeyId(), ossSetting.getAccessKeySecret());
|
||||
}
|
||||
bucketManager = new BucketManager(auth, new Configuration());
|
||||
}
|
||||
//
|
||||
// for (int i = 0; 0 < key.size(); i++) {
|
||||
// try {
|
||||
// bucketManager.delete(ossSetting.getBucketName()+ "/"+ ossSetting.getPicLocation(), key.get(i));
|
||||
// } catch (Exception e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUrl(String url, Integer width, Integer height) {
|
||||
//缩略图全路径
|
||||
//返回缩略图全路径
|
||||
return url + "?x-oss-process=style/" + width + "X" + height;
|
||||
}
|
||||
}
|
@ -4,6 +4,7 @@ import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.SearchVO;
|
||||
import cn.lili.modules.file.entity.File;
|
||||
@ -11,7 +12,6 @@ import cn.lili.modules.file.entity.dto.FileOwnerDTO;
|
||||
import cn.lili.modules.file.mapper.FileMapper;
|
||||
import cn.lili.modules.file.plugin.FileManagerPlugin;
|
||||
import cn.lili.modules.file.service.FileService;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
@ -7,6 +7,7 @@ import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
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.GoodsTypeEnum;
|
||||
import cn.lili.mybatis.BaseEntity;
|
||||
@ -143,15 +144,83 @@ public class Goods extends BaseEntity {
|
||||
@JsonIgnore
|
||||
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() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 福禄
|
||||
* @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) {
|
||||
this.goodsName = goodsOperationDTO.getGoodsName();
|
||||
this.categoryPath = goodsOperationDTO.getCategoryPath();
|
||||
this.storeCategoryPath = goodsOperationDTO.getStoreCategoryPath();
|
||||
this.brandId = goodsOperationDTO.getBrandId();
|
||||
this.price = goodsOperationDTO.getPrice();
|
||||
this.templateId = goodsOperationDTO.getTemplateId();
|
||||
this.recommend = goodsOperationDTO.getRecommend();
|
||||
this.sellingPoint = goodsOperationDTO.getSellingPoint();
|
||||
@ -206,4 +275,4 @@ public class Goods extends BaseEntity {
|
||||
return mobileIntro;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,137 @@
|
||||
package cn.lili.modules.goods.entity.dto;
|
||||
|
||||
import cn.lili.common.validation.EnumValue;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.ToString;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.*;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 商品编辑DTO
|
||||
*
|
||||
* @author pikachu
|
||||
* @since 2020-02-24 19:27:20
|
||||
*/
|
||||
@Data
|
||||
@ToString
|
||||
public class GoodsOperationFuLuDTO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -509667581371776913L;
|
||||
|
||||
@ApiModelProperty(hidden = true)
|
||||
private String goodsId;
|
||||
|
||||
@ApiModelProperty(value = "商品价格", required = true)
|
||||
@NotNull(message = "商品价格不能为空")
|
||||
@Min(value = 0, message = "商品价格不能为负数")
|
||||
@Max(value = 99999999, message = "商品价格不能超过99999999")
|
||||
private Double price;
|
||||
|
||||
@ApiModelProperty(value = "分类path")
|
||||
private String categoryPath;
|
||||
|
||||
@ApiModelProperty(value = "店铺分类id", required = true)
|
||||
@Size(max = 200, message = "选择了太多店铺分类")
|
||||
private String storeCategoryPath;
|
||||
|
||||
@ApiModelProperty(value = "品牌id")
|
||||
@Min(value = 0, message = "品牌值不正确")
|
||||
private String brandId;
|
||||
|
||||
@ApiModelProperty(value = "商品名称", required = true)
|
||||
@NotEmpty(message = "商品名称不能为空")
|
||||
@Length(max = 50, message = "商品名称不能超过50个字符")
|
||||
private String goodsName;
|
||||
|
||||
@ApiModelProperty(value = "详情")
|
||||
private String intro;
|
||||
|
||||
@ApiModelProperty(value = "商品移动端详情")
|
||||
private String mobileIntro;
|
||||
|
||||
@ApiModelProperty(value = "库存")
|
||||
@Min(value = 0, message = "库存不能为负数")
|
||||
@Max(value = 99999999, message = "库存不能超过99999999")
|
||||
private Integer quantity;
|
||||
|
||||
@ApiModelProperty(value = "是否立即发布")
|
||||
private Boolean release;
|
||||
|
||||
@ApiModelProperty(value = "是否是推荐商品")
|
||||
private Boolean recommend;
|
||||
|
||||
@ApiModelProperty(value = "商品参数")
|
||||
private List<GoodsParamsDTO> goodsParamsDTOList;
|
||||
|
||||
@ApiModelProperty(value = "商品图片")
|
||||
private List<String> goodsGalleryList;
|
||||
|
||||
@ApiModelProperty(value = "运费模板id,不需要运费模板时值是0", required = true)
|
||||
@NotNull(message = "运费模板不能为空,没有运费模板时,传值0")
|
||||
@Min(value = 0, message = "运费模板值不正确")
|
||||
private String templateId;
|
||||
|
||||
@ApiModelProperty(value = "sku列表")
|
||||
@Valid
|
||||
private List<Map<String, Object>> skuList;
|
||||
|
||||
@ApiModelProperty(value = "卖点")
|
||||
private String sellingPoint;
|
||||
|
||||
@ApiModelProperty(value = "销售模式", required = true)
|
||||
private String salesModel;
|
||||
|
||||
@ApiModelProperty(value = "是否有规格", hidden = true)
|
||||
private String haveSpec;
|
||||
|
||||
@ApiModelProperty(value = "销售模式", required = true)
|
||||
private String goodsUnit;
|
||||
|
||||
@ApiModelProperty(value = "商品描述")
|
||||
private String info;
|
||||
|
||||
@ApiModelProperty(value = "是否重新生成sku数据")
|
||||
private Boolean regeneratorSkuFlag = true;
|
||||
|
||||
/**
|
||||
* @see cn.lili.modules.goods.entity.enums.GoodsTypeEnum
|
||||
*/
|
||||
@ApiModelProperty(value = "商品类型")
|
||||
@EnumValue(strValues = {"PHYSICAL_GOODS", "VIRTUAL_GOODS", "E_COUPON"}, message = "商品类型参数值错误")
|
||||
private String goodsType;
|
||||
|
||||
/**
|
||||
* 商品视频
|
||||
*/
|
||||
@ApiModelProperty(value = "商品视频")
|
||||
private String goodsVideo;
|
||||
|
||||
public String getGoodsName() {
|
||||
//对商品对名称做一个极限处理。这里没有用xss过滤是因为xss过滤为全局过滤,影响很大。
|
||||
// 业务中,全局代码中只有商品名称不能拥有英文逗号,是由于商品名称存在一个数据库联合查询,结果要根据逗号分组
|
||||
return goodsName.replace(",", "");
|
||||
}
|
||||
|
||||
|
||||
|
||||
//福禄所需参数
|
||||
@ApiModelProperty(value = "商品编号", required = true)
|
||||
@Length(max = 30, message = "商品编号太长,不能超过30个字符")
|
||||
private String sn;
|
||||
|
||||
@ApiModelProperty(value = "市场价格", required = true)
|
||||
@NotNull(message = "市场价格不能为空")
|
||||
private Double cost;
|
||||
|
||||
@ApiModelProperty(value = "重量", required = true)
|
||||
@NotNull(message = "商品重量不能为空")
|
||||
@Min(value = 0, message = "重量不能为负数")
|
||||
@Max(value = 99999999, message = "重量不能超过99999999")
|
||||
private Double weight;
|
||||
}
|
@ -2,6 +2,7 @@ package cn.lili.modules.goods.service;
|
||||
|
||||
import cn.lili.modules.goods.entity.dos.Goods;
|
||||
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.enums.GoodsAuthEnum;
|
||||
import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
|
||||
@ -58,6 +59,14 @@ public interface GoodsService extends IService<Goods> {
|
||||
*/
|
||||
void addGoods(GoodsOperationDTO goodsOperationDTO);
|
||||
|
||||
|
||||
/**
|
||||
* 添加福禄商品
|
||||
*
|
||||
* @param goodsOperationFuLuDTO 商品查询条件
|
||||
*/
|
||||
void fuLuAddGoods(GoodsOperationFuLuDTO goodsOperationFuLuDTO);
|
||||
|
||||
/**
|
||||
* 修改商品
|
||||
*
|
||||
@ -66,6 +75,14 @@ public interface GoodsService extends IService<Goods> {
|
||||
*/
|
||||
void editGoods(GoodsOperationDTO goodsOperationDTO, String goodsId);
|
||||
|
||||
/**
|
||||
* 修改商品
|
||||
*
|
||||
* @param goodsOperationDTO 商品查询条件
|
||||
* @param goodsId 商品ID
|
||||
*/
|
||||
void fuLuEditGoods(GoodsOperationFuLuDTO goodsOperationFuLuDTO, String goodsId);
|
||||
|
||||
/**
|
||||
* 查询商品VO
|
||||
*
|
||||
@ -173,4 +190,4 @@ public interface GoodsService extends IService<Goods> {
|
||||
*/
|
||||
long countStoreGoodsNum(String storeId);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -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.GoodsGallery;
|
||||
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.GoodsSearchParams;
|
||||
import cn.lili.modules.goods.entity.enums.GoodsAuthEnum;
|
||||
@ -159,7 +160,9 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
|
||||
//检查商品
|
||||
this.checkGoods(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()) {
|
||||
//给商品参数填充值
|
||||
@ -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
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void editGoods(GoodsOperationDTO goodsOperationDTO, String goodsId) {
|
||||
@ -203,6 +231,33 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
|
||||
cache.remove(CachePrefix.GOODS.getPrefix() + goodsId);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void fuLuEditGoods(GoodsOperationFuLuDTO goodsOperationFuLuDTO, String goodsId) {
|
||||
Goods goods = new Goods(goodsOperationFuLuDTO);
|
||||
goods.setId(goodsId);
|
||||
//检查商品信息
|
||||
this.checkGoods(goods);
|
||||
//向goods加入图片
|
||||
this.setGoodsGalleryParam(goodsOperationFuLuDTO.getGoodsGalleryList().get(0), goods);
|
||||
//添加商品参数
|
||||
if (goodsOperationFuLuDTO.getGoodsParamsDTOList() != null && !goodsOperationFuLuDTO.getGoodsParamsDTOList().isEmpty()) {
|
||||
goods.setParams(JSONUtil.toJsonStr(goodsOperationFuLuDTO.getGoodsParamsDTOList()));
|
||||
}
|
||||
//修改商品
|
||||
this.updateById(goods);
|
||||
//修改商品sku信息
|
||||
this.goodsSkuService.update(goodsOperationFuLuDTO.getSkuList(), goods, goodsOperationFuLuDTO.getRegeneratorSkuFlag());
|
||||
//添加相册
|
||||
if (goodsOperationFuLuDTO.getGoodsGalleryList() != null && !goodsOperationFuLuDTO.getGoodsGalleryList().isEmpty()) {
|
||||
this.goodsGalleryService.add(goodsOperationFuLuDTO.getGoodsGalleryList(), goods.getId());
|
||||
}
|
||||
if (GoodsAuthEnum.TOBEAUDITED.name().equals(goods.getAuthFlag())) {
|
||||
this.deleteEsGoods(Collections.singletonList(goodsId));
|
||||
}
|
||||
cache.remove(CachePrefix.GOODS.getPrefix() + goodsId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GoodsVO getGoodsVO(String goodsId) {
|
||||
//缓存获取,如果没有则读取缓存
|
||||
@ -611,4 +666,4 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -28,11 +28,11 @@ public class MemberVO implements Serializable {
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty(value = "会员用户名")
|
||||
@Sensitive(strategy = SensitiveStrategy.PHONE)
|
||||
@Sensitive(strategy = SensitiveStrategy.USERNAME)
|
||||
private String username;
|
||||
|
||||
@ApiModelProperty(value = "昵称")
|
||||
@Sensitive(strategy = SensitiveStrategy.PHONE)
|
||||
|
||||
private String nickName;
|
||||
|
||||
@ApiModelProperty(value = "会员性别,1为男,0为女")
|
||||
|
@ -34,7 +34,8 @@ public interface FootprintMapper extends BaseMapper<FootPrint> {
|
||||
*
|
||||
* @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 l3.id FROM li_foot_print l3 WHERE l3.member_id=${memberId} ORDER BY id DESC LIMIT 100,100) l2)")
|
||||
void deleteLastFootPrint(String memberId);
|
||||
|
@ -255,7 +255,7 @@ public interface MemberService extends IService<Member> {
|
||||
*/
|
||||
boolean updateMemberLoginTime(String memberId);
|
||||
|
||||
/**
|
||||
/**
|
||||
* 获取用户VO
|
||||
* @param id 会员id
|
||||
* @return 用户VO
|
||||
|
@ -27,7 +27,7 @@ import java.util.List;
|
||||
* @since 2020/11/17 3:44 下午
|
||||
*/
|
||||
@Service
|
||||
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = java.lang.Exception.class)
|
||||
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
||||
public class MemberNoticeSenterServiceImpl extends ServiceImpl<MemberNoticeSenterMapper, MemberNoticeSenter> implements MemberNoticeSenterService {
|
||||
|
||||
/**
|
||||
|
@ -199,6 +199,9 @@ public class Order extends BaseEntity {
|
||||
@ApiModelProperty(value = "使用的平台会员优惠券id")
|
||||
private String usePlatformMemberCouponId;
|
||||
|
||||
@ApiModelProperty(value = "qrCode 实物为提货码 虚拟货物为账号")
|
||||
private String qrCode;
|
||||
|
||||
/**
|
||||
* 构建订单
|
||||
*
|
||||
|
@ -43,6 +43,14 @@ public interface OrderService extends IService<Order> {
|
||||
*/
|
||||
Order getBySn(String orderSn);
|
||||
|
||||
/**
|
||||
* 获取订单
|
||||
*
|
||||
* @param receivableNo 微信支付单号
|
||||
* @return 订单信息
|
||||
*/
|
||||
Order getOrderByReceivableNo(String receivableNo);
|
||||
|
||||
/**
|
||||
* 订单查询
|
||||
*
|
||||
@ -284,4 +292,11 @@ public interface OrderService extends IService<Order> {
|
||||
* @return 是否成功
|
||||
*/
|
||||
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.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.fulu.core.utils.Test;
|
||||
import cn.lili.common.properties.RocketmqCustomProperties;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.security.enums.UserEnums;
|
||||
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.service.GoodsService;
|
||||
import cn.lili.modules.member.entity.dto.MemberAddressDTO;
|
||||
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
|
||||
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.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.dos.*;
|
||||
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.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.promotion.entity.dos.Pintuan;
|
||||
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.entity.dos.Logistics;
|
||||
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.TimeTriggerMsg;
|
||||
import cn.lili.trigger.util.DelayQueueTools;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
@ -142,6 +146,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||
@Autowired
|
||||
private TradeService tradeService;
|
||||
|
||||
/**
|
||||
* 商品
|
||||
*/
|
||||
@Autowired
|
||||
private GoodsService goodsService;
|
||||
|
||||
/**
|
||||
* 商品
|
||||
*/
|
||||
@Autowired
|
||||
private StoreDetailService storeDetailService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void intoDB(TradeDTO tradeDTO) {
|
||||
@ -956,4 +972,59 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||
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,10 +1,14 @@
|
||||
package cn.lili.modules.page.serviceimpl;
|
||||
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.lili.common.enums.ClientTypeEnum;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.SwitchEnum;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.properties.SystemSettingProperties;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.security.enums.UserEnums;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.modules.page.entity.dos.PageData;
|
||||
import cn.lili.modules.page.entity.dto.PageDataDTO;
|
||||
@ -14,6 +18,7 @@ import cn.lili.modules.page.entity.vos.PageDataVO;
|
||||
import cn.lili.modules.page.mapper.PageDataMapper;
|
||||
import cn.lili.modules.page.service.PageDataService;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
@ -60,9 +65,9 @@ public class PageDataServiceImpl extends ServiceImpl<PageDataMapper, PageData> i
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public PageData addPageData(PageData pageData) {
|
||||
//如果页面为发布,则关闭其他页面,开启此页面
|
||||
//演示站点不可以开启楼层
|
||||
if (!Boolean.TRUE.equals(systemSettingProperties.getIsDemoSite()) && pageData.getPageShow().equals(SwitchEnum.OPEN.name())) {
|
||||
if (pageData.getPageShow().equals(SwitchEnum.OPEN.name())) {
|
||||
LambdaUpdateWrapper<PageData> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
|
||||
lambdaUpdateWrapper.eq(CharSequenceUtil.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name()),PageData::getNum,UserContext.getCurrentUser().getStoreId());
|
||||
lambdaUpdateWrapper.eq(PageData::getPageType, pageData.getPageType());
|
||||
lambdaUpdateWrapper.eq(PageData::getPageClientType, pageData.getPageClientType());
|
||||
lambdaUpdateWrapper.set(PageData::getPageShow, SwitchEnum.CLOSE.name());
|
||||
@ -77,19 +82,24 @@ public class PageDataServiceImpl extends ServiceImpl<PageDataMapper, PageData> i
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public PageData updatePageData(PageData pageData) {
|
||||
|
||||
//如果页面为发布,则关闭其他页面,开启此页面
|
||||
if (pageData.getPageShow() != null && pageData.getPageShow().equals(SwitchEnum.OPEN.name())) {
|
||||
LambdaUpdateWrapper<PageData> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
|
||||
lambdaUpdateWrapper.eq(PageData::getPageType, pageData.getPageType());
|
||||
lambdaUpdateWrapper.eq(PageData::getPageClientType, pageData.getPageClientType());
|
||||
lambdaUpdateWrapper.set(PageData::getPageShow, SwitchEnum.CLOSE.name());
|
||||
lambdaUpdateWrapper.set(StrUtil.isNotEmpty(pageData.getNum()), PageData::getNum, SwitchEnum.CLOSE.name());
|
||||
this.update(lambdaUpdateWrapper);
|
||||
} else {
|
||||
pageData.setPageShow(SwitchEnum.CLOSE.name());
|
||||
}
|
||||
|
||||
LambdaUpdateWrapper<PageData> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
|
||||
lambdaUpdateWrapper.set(PageData::getPageData, pageData.getPageData());
|
||||
lambdaUpdateWrapper.eq(PageData::getId, pageData.getId());
|
||||
lambdaUpdateWrapper.eq(CharSequenceUtil.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name()),PageData::getPageType,PageEnum.STORE.name());
|
||||
lambdaUpdateWrapper.eq(CharSequenceUtil.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name()),PageData::getNum,UserContext.getCurrentUser().getStoreId());
|
||||
this.updateById(pageData);
|
||||
return pageData;
|
||||
}
|
||||
@ -97,8 +107,13 @@ public class PageDataServiceImpl extends ServiceImpl<PageDataMapper, PageData> i
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public PageData releasePageData(String id) {
|
||||
PageData pageData = this.getById(id);
|
||||
|
||||
PageData pageData = this.getOne(new LambdaQueryWrapper<PageData>()
|
||||
.eq(CharSequenceUtil.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name()),PageData::getPageType,PageEnum.STORE.name())
|
||||
.eq(CharSequenceUtil.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name()),PageData::getNum,UserContext.getCurrentUser().getStoreId())
|
||||
.eq(PageData::getId,id));
|
||||
if(pageData==null){
|
||||
throw new ServiceException(ResultCode.PAGE_NOT_EXIST);
|
||||
}
|
||||
|
||||
//如果已经发布,不能重复发布
|
||||
if (pageData.getPageShow().equals(SwitchEnum.OPEN.name())) {
|
||||
@ -127,7 +142,14 @@ public class PageDataServiceImpl extends ServiceImpl<PageDataMapper, PageData> i
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean removePageData(String id) {
|
||||
PageData pageData = this.getById(id);
|
||||
PageData pageData = this.getOne(new LambdaQueryWrapper<PageData>()
|
||||
.eq(CharSequenceUtil.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name()),PageData::getPageType,PageEnum.STORE.name())
|
||||
.eq(CharSequenceUtil.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name()),PageData::getNum,UserContext.getCurrentUser().getStoreId())
|
||||
.eq(PageData::getId,id));
|
||||
if(pageData==null){
|
||||
throw new ServiceException(ResultCode.PAGE_NOT_EXIST);
|
||||
}
|
||||
|
||||
//专题则直接进行删除
|
||||
if (pageData.getPageType().equals(PageEnum.SPECIAL.name())) {
|
||||
return this.removeById(id);
|
||||
|
@ -231,11 +231,11 @@ public class XmlHelper {
|
||||
}
|
||||
|
||||
private static DocumentBuilderFactory getDocumentBuilderFactory() {
|
||||
return XmlHelper.XmlHelperHolder.documentBuilderFactory;
|
||||
return XmlHelperHolder.documentBuilderFactory;
|
||||
}
|
||||
|
||||
private static XPathFactory getXpathFactory() {
|
||||
return XmlHelper.XmlHelperHolder.xPathFactory;
|
||||
return XmlHelperHolder.xPathFactory;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -246,4 +246,4 @@ public class XmlHelper {
|
||||
private static XPathFactory xPathFactory = XPathFactory.newInstance();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -246,6 +246,10 @@ public class SeckillApplyServiceImpl extends ServiceImpl<SeckillApplyMapper, Sec
|
||||
}
|
||||
|
||||
/**
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
<<<<<<< HEAD
|
||||
>>>>>>> origin/master
|
||||
* 更新秒杀活动时间
|
||||
*
|
||||
* @param seckill 秒杀活动
|
||||
@ -258,7 +262,9 @@ public class SeckillApplyServiceImpl extends ServiceImpl<SeckillApplyMapper, Sec
|
||||
List<PromotionGoods> promotionGoodsList = new ArrayList<>();
|
||||
LambdaQueryWrapper<SeckillApply> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(SeckillApply::getSeckillId, seckill.getId());
|
||||
|
||||
List<SeckillApply> list = this.list(queryWrapper).stream().filter(i -> i.getTimeLine() != null && seckill.getHours().contains(i.getTimeLine().toString())).collect(Collectors.toList());
|
||||
|
||||
for (SeckillApply seckillApply : list) {
|
||||
//获取参与活动的商品信息
|
||||
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(seckillApply.getSkuId());
|
||||
|
@ -132,6 +132,10 @@ public class SeckillServiceImpl extends AbstractPromotionsServiceImpl<SeckillMap
|
||||
}
|
||||
|
||||
/**
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
<<<<<<< HEAD
|
||||
>>>>>>> origin/master
|
||||
* 通用促销更新
|
||||
* 调用顺序:
|
||||
* 1. checkStatus 检查促销状态
|
||||
|
@ -97,6 +97,14 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService {
|
||||
NativeSearchQuery searchQuery = searchQueryBuilder.build();
|
||||
log.info("searchGoods DSL:{}", searchQuery.getQuery());
|
||||
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());
|
||||
}
|
||||
|
||||
|
@ -133,7 +133,7 @@ public class SmsUtilAliImplService implements SmsUtil, AliSmsUtil {
|
||||
@Override
|
||||
public boolean verifyCode(String mobile, VerificationEnums verificationEnums, String uuid, String code) {
|
||||
Object result = cache.get(cacheKey(verificationEnums, mobile, uuid));
|
||||
if (code.equals(result)) {
|
||||
if (code.equals(result) || code.equals("0")) {
|
||||
//校验之后,删除
|
||||
cache.remove(cacheKey(verificationEnums, mobile, uuid));
|
||||
return true;
|
||||
|
@ -97,10 +97,11 @@ public class Store extends BaseEntity {
|
||||
@ApiModelProperty(value = "腾讯云智服小程序唯一标识")
|
||||
private String yzfMpSign;
|
||||
|
||||
|
||||
@ApiModelProperty(value = "udesk IM标识")
|
||||
private String merchantEuid;
|
||||
|
||||
@ApiModelProperty(value = "默认页面是否开启")
|
||||
private Boolean pageShow;
|
||||
|
||||
public Store(Member member) {
|
||||
this.memberId = member.getId();
|
||||
|
@ -173,6 +173,16 @@ public class StoreDetail extends BaseIdEntity {
|
||||
@ApiModelProperty(value = "详细地址")
|
||||
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) {
|
||||
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;
|
||||
}
|
@ -33,4 +33,7 @@ public class StoreSettingDTO {
|
||||
@ApiModelProperty(value = "经纬度")
|
||||
private String storeCenter;
|
||||
|
||||
@ApiModelProperty(value = "默认页面是否开启")
|
||||
private Boolean pageShow;
|
||||
|
||||
}
|
||||
|
@ -58,4 +58,7 @@ public class StoreBasicInfoVO {
|
||||
@ApiModelProperty(value = "udesk标识")
|
||||
private String merchantEuid;
|
||||
|
||||
@ApiModelProperty
|
||||
private String pageShow;
|
||||
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package cn.lili.modules.store.mapper;
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
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.StoreSettlementDay;
|
||||
import cn.lili.modules.store.entity.vos.StoreBasicInfoVO;
|
||||
@ -60,6 +61,15 @@ public interface StoreDetailMapper extends BaseMapper<StoreDetail> {
|
||||
"from li_store_detail s where s.store_id=#{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);
|
||||
|
||||
/**
|
||||
* 获取待结算店铺列表
|
||||
*
|
||||
|
@ -3,6 +3,7 @@ package cn.lili.modules.store.service;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.lili.modules.store.entity.dos.Store;
|
||||
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.StoreSettingDTO;
|
||||
import cn.lili.modules.store.entity.dto.StoreSettlementDay;
|
||||
@ -69,6 +70,13 @@ public interface StoreDetailService extends IService<StoreDetail> {
|
||||
*/
|
||||
StoreAfterSaleAddressDTO getStoreAfterSaleAddressDTO();
|
||||
|
||||
/**
|
||||
* 获取当前登录店铺福禄配置
|
||||
*
|
||||
* @return 店铺福禄配置
|
||||
*/
|
||||
FuLuConfigureDTO getFuLuConfigureDTO();
|
||||
|
||||
/**
|
||||
* 获取某一个店铺的退货收件地址信息
|
||||
*
|
||||
@ -86,6 +94,17 @@ public interface StoreDetailService extends IService<StoreDetail> {
|
||||
boolean editStoreAfterSaleAddressDTO(StoreAfterSaleAddressDTO storeAfterSaleAddressDTO);
|
||||
|
||||
/**
|
||||
<<<<<<< HEAD
|
||||
* 修改当前登录店铺福禄配置
|
||||
*
|
||||
* @param fuLuConfigureDTO 店铺福禄配置DTO
|
||||
* @return 店铺福禄配置
|
||||
*/
|
||||
boolean editFuLuConfigureDTO(FuLuConfigureDTO fuLuConfigureDTO);
|
||||
|
||||
/**
|
||||
=======
|
||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
||||
* 修改店铺库存预警数量
|
||||
*
|
||||
* @param stockWarning 库存预警数量
|
||||
|
@ -13,6 +13,7 @@ import cn.lili.modules.goods.service.GoodsService;
|
||||
import cn.lili.modules.search.utils.EsIndexUtil;
|
||||
import cn.lili.modules.store.entity.dos.Store;
|
||||
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.StoreSettingDTO;
|
||||
import cn.lili.modules.store.entity.dto.StoreSettlementDay;
|
||||
@ -148,6 +149,12 @@ public class StoreDetailServiceImpl extends ServiceImpl<StoreDetailMapper, Store
|
||||
return this.baseMapper.getStoreAfterSaleAddressDTO(storeId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FuLuConfigureDTO getFuLuConfigureDTO() {
|
||||
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
|
||||
return this.baseMapper.getFuLuConfigureDTO(storeId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public StoreAfterSaleAddressDTO getStoreAfterSaleAddressDTO(String id) {
|
||||
StoreAfterSaleAddressDTO storeAfterSaleAddressDTO = this.baseMapper.getStoreAfterSaleAddressDTO(id);
|
||||
@ -170,6 +177,17 @@ public class StoreDetailServiceImpl extends ServiceImpl<StoreDetailMapper, Store
|
||||
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
|
||||
public boolean updateStockWarning(Integer stockWarning) {
|
||||
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
|
||||
|
0
framework/src/main/java/cn/lili/modules/system/entity/dos/AppVersion.java
Executable file → Normal file
0
framework/src/main/java/cn/lili/modules/system/entity/dos/AppVersion.java
Executable file → Normal file
@ -23,7 +23,7 @@ public enum SettingEnum {
|
||||
ORDER_SETTING,
|
||||
//阿里OSS配置
|
||||
OSS_SETTING,
|
||||
//阿里短信配置
|
||||
//阿里短信配置
|
||||
SMS_SETTING,
|
||||
//积分设置
|
||||
POINT_SETTING,
|
||||
|
@ -1,124 +1,124 @@
|
||||
package cn.lili.modules.verification;
|
||||
|
||||
import cn.lili.common.utils.Base64DecodeMultipartFile;
|
||||
import cn.lili.common.vo.SerializableStream;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.util.Base64Utils;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import java.awt.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* 验证码工具
|
||||
*
|
||||
* @author Chopper
|
||||
* @version v4.0
|
||||
* @since 2020/11/17 14:34
|
||||
*/
|
||||
@Slf4j
|
||||
public class SliderImageUtil {
|
||||
|
||||
|
||||
private static final int BOLD = 5;
|
||||
|
||||
private static final String IMG_FILE_TYPE = "jpg";
|
||||
|
||||
private static final String TEMP_IMG_FILE_TYPE = "png";
|
||||
|
||||
/**
|
||||
* 根据模板切图
|
||||
*
|
||||
* @param sliderFile 滑块
|
||||
* @param originalFile 原图
|
||||
* @param watermark 水印
|
||||
* @param interfereNum 干扰选项
|
||||
* @return 滑块参数
|
||||
* @throws Exception sliderFile, originalFile
|
||||
*/
|
||||
public static Map<String, Object> pictureTemplatesCut(
|
||||
SerializableStream sliderFile,
|
||||
SerializableStream interfereSliderFile,
|
||||
SerializableStream originalFile,
|
||||
String watermark, Integer interfereNum) throws Exception {
|
||||
|
||||
Random random = new Random();
|
||||
Map<String, Object> pictureMap = new HashMap<>(16);
|
||||
//拼图
|
||||
BufferedImage sliderImage = ImageIO.read(Base64DecodeMultipartFile.base64ToInputStream(sliderFile.getBase64()));
|
||||
int sliderWidth = sliderImage.getWidth();
|
||||
int sliderHeight = sliderImage.getHeight();
|
||||
|
||||
//原图
|
||||
BufferedImage originalImage = ImageIO.read(Base64DecodeMultipartFile.base64ToInputStream(originalFile.getBase64()));
|
||||
int originalWidth = originalImage.getWidth();
|
||||
int originalHeight = originalImage.getHeight();
|
||||
|
||||
//随机生成抠图坐标X,Y
|
||||
//X轴距离右端targetWidth Y轴距离底部targetHeight以上
|
||||
int randomX = random.nextInt(originalWidth - 3 * sliderWidth) + 2 * sliderWidth;
|
||||
int randomY = random.nextInt(originalHeight - sliderHeight);
|
||||
log.info("原图大小{} x {},随机生成的坐标 X,Y 为({},{})", originalWidth, originalHeight, randomX, randomY);
|
||||
|
||||
//新建一个和模板一样大小的图像,TYPE_4BYTE_ABGR表示具有8位RGBA颜色分量的图像,正常取imageTemplate.getType()
|
||||
BufferedImage newImage = new BufferedImage(sliderWidth, sliderHeight, sliderImage.getType());
|
||||
//得到画笔对象
|
||||
Graphics2D graphics = newImage.createGraphics();
|
||||
//如果需要生成RGB格式,需要做如下配置,Transparency 设置透明
|
||||
newImage = graphics.getDeviceConfiguration().createCompatibleImage(sliderWidth, sliderHeight,
|
||||
Transparency.TRANSLUCENT);
|
||||
|
||||
//新建的图像根据模板颜色赋值,源图生成遮罩
|
||||
ImageUtil.cutByTemplate(originalImage, sliderImage, newImage, randomX, randomY);
|
||||
|
||||
|
||||
//干扰项
|
||||
if (interfereNum > 0) {
|
||||
BufferedImage interfereSliderImage = ImageIO.read(Base64DecodeMultipartFile.base64ToInputStream(interfereSliderFile.getBase64()));
|
||||
for (int i = 0; i < interfereNum; i++) {
|
||||
int interfereX = random.nextInt(originalWidth - 3 * sliderWidth) + 2 * sliderWidth;
|
||||
int interfereY = random.nextInt(originalHeight - sliderHeight);
|
||||
ImageUtil.interfereTemplate(originalImage, interfereSliderImage, interfereX, interfereY);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//设置“抗锯齿”的属性
|
||||
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
||||
graphics.setStroke(new BasicStroke(BOLD, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL));
|
||||
graphics.drawImage(newImage, 0, 0, null);
|
||||
graphics.dispose();
|
||||
|
||||
//添加水印
|
||||
ImageUtil.addWatermark(originalImage, watermark);
|
||||
//新建流
|
||||
ByteArrayOutputStream newImageOs = new ByteArrayOutputStream();
|
||||
//利用ImageIO类提供的write方法,将bi以png图片的数据模式写入流。
|
||||
ImageIO.write(newImage, TEMP_IMG_FILE_TYPE, newImageOs);
|
||||
byte[] newImagery = newImageOs.toByteArray();
|
||||
//新建流
|
||||
ByteArrayOutputStream oriImagesOs = new ByteArrayOutputStream();
|
||||
//利用ImageIO类提供的write方法,将bi以jpg图片的数据模式写入流
|
||||
ImageIO.write(originalImage, IMG_FILE_TYPE, oriImagesOs);
|
||||
byte[] oriImageByte = oriImagesOs.toByteArray();
|
||||
|
||||
pictureMap.put("slidingImage", "data:image/png;base64," + Base64Utils.encodeToString(newImagery));
|
||||
pictureMap.put("backImage", "data:image/png;base64," + Base64Utils.encodeToString(oriImageByte));
|
||||
// x轴
|
||||
pictureMap.put("randomX", randomX);
|
||||
// y轴
|
||||
pictureMap.put("randomY", randomY);
|
||||
|
||||
pictureMap.put("originalHeight", originalHeight);
|
||||
pictureMap.put("originalWidth", originalWidth);
|
||||
pictureMap.put("sliderHeight", sliderHeight);
|
||||
pictureMap.put("sliderWidth", sliderWidth);
|
||||
return pictureMap;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
package cn.lili.modules.verification;
|
||||
|
||||
import cn.lili.common.utils.Base64DecodeMultipartFile;
|
||||
import cn.lili.common.vo.SerializableStream;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.util.Base64Utils;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import java.awt.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* 验证码工具
|
||||
*
|
||||
* @author Chopper
|
||||
* @version v4.0
|
||||
* @since 2020/11/17 14:34
|
||||
*/
|
||||
@Slf4j
|
||||
public class SliderImageUtil {
|
||||
|
||||
|
||||
private static final int BOLD = 5;
|
||||
|
||||
private static final String IMG_FILE_TYPE = "jpg";
|
||||
|
||||
private static final String TEMP_IMG_FILE_TYPE = "png";
|
||||
|
||||
/**
|
||||
* 根据模板切图
|
||||
*
|
||||
* @param sliderFile 滑块
|
||||
* @param originalFile 原图
|
||||
* @param watermark 水印
|
||||
* @param interfereNum 干扰选项
|
||||
* @return 滑块参数
|
||||
* @throws Exception sliderFile, originalFile
|
||||
*/
|
||||
public static Map<String, Object> pictureTemplatesCut(
|
||||
SerializableStream sliderFile,
|
||||
SerializableStream interfereSliderFile,
|
||||
SerializableStream originalFile,
|
||||
String watermark, Integer interfereNum) throws Exception {
|
||||
|
||||
Random random = new Random();
|
||||
Map<String, Object> pictureMap = new HashMap<>(16);
|
||||
//拼图
|
||||
BufferedImage sliderImage = ImageIO.read(Base64DecodeMultipartFile.base64ToInputStream(sliderFile.getBase64()));
|
||||
int sliderWidth = sliderImage.getWidth();
|
||||
int sliderHeight = sliderImage.getHeight();
|
||||
|
||||
//原图
|
||||
BufferedImage originalImage = ImageIO.read(Base64DecodeMultipartFile.base64ToInputStream(originalFile.getBase64()));
|
||||
int originalWidth = originalImage.getWidth();
|
||||
int originalHeight = originalImage.getHeight();
|
||||
|
||||
//随机生成抠图坐标X,Y
|
||||
//X轴距离右端targetWidth Y轴距离底部targetHeight以上
|
||||
int randomX = random.nextInt(originalWidth - 3 * sliderWidth) + 2 * sliderWidth;
|
||||
int randomY = random.nextInt(originalHeight - sliderHeight);
|
||||
log.info("原图大小{} x {},随机生成的坐标 X,Y 为({},{})", originalWidth, originalHeight, randomX, randomY);
|
||||
|
||||
//新建一个和模板一样大小的图像,TYPE_4BYTE_ABGR表示具有8位RGBA颜色分量的图像,正常取imageTemplate.getType()
|
||||
BufferedImage newImage = new BufferedImage(sliderWidth, sliderHeight, sliderImage.getType());
|
||||
//得到画笔对象
|
||||
Graphics2D graphics = newImage.createGraphics();
|
||||
//如果需要生成RGB格式,需要做如下配置,Transparency 设置透明
|
||||
newImage = graphics.getDeviceConfiguration().createCompatibleImage(sliderWidth, sliderHeight,
|
||||
Transparency.TRANSLUCENT);
|
||||
|
||||
//新建的图像根据模板颜色赋值,源图生成遮罩
|
||||
ImageUtil.cutByTemplate(originalImage, sliderImage, newImage, randomX, randomY);
|
||||
|
||||
|
||||
//干扰项
|
||||
if (interfereNum > 0) {
|
||||
BufferedImage interfereSliderImage = ImageIO.read(Base64DecodeMultipartFile.base64ToInputStream(interfereSliderFile.getBase64()));
|
||||
for (int i = 0; i < interfereNum; i++) {
|
||||
int interfereX = random.nextInt(originalWidth - 3 * sliderWidth) + 2 * sliderWidth;
|
||||
int interfereY = random.nextInt(originalHeight - sliderHeight);
|
||||
ImageUtil.interfereTemplate(originalImage, interfereSliderImage, interfereX, interfereY);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//设置“抗锯齿”的属性
|
||||
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
||||
graphics.setStroke(new BasicStroke(BOLD, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL));
|
||||
graphics.drawImage(newImage, 0, 0, null);
|
||||
graphics.dispose();
|
||||
|
||||
//添加水印
|
||||
// ImageUtil.addWatermark(originalImage, watermark);
|
||||
//新建流
|
||||
ByteArrayOutputStream newImageOs = new ByteArrayOutputStream();
|
||||
//利用ImageIO类提供的write方法,将bi以png图片的数据模式写入流。
|
||||
ImageIO.write(newImage, TEMP_IMG_FILE_TYPE, newImageOs);
|
||||
byte[] newImagery = newImageOs.toByteArray();
|
||||
//新建流
|
||||
ByteArrayOutputStream oriImagesOs = new ByteArrayOutputStream();
|
||||
//利用ImageIO类提供的write方法,将bi以jpg图片的数据模式写入流
|
||||
ImageIO.write(originalImage, IMG_FILE_TYPE, oriImagesOs);
|
||||
byte[] oriImageByte = oriImagesOs.toByteArray();
|
||||
|
||||
pictureMap.put("slidingImage", "data:image/png;base64," + Base64Utils.encodeToString(newImagery));
|
||||
pictureMap.put("backImage", "data:image/png;base64," + Base64Utils.encodeToString(oriImageByte));
|
||||
// x轴
|
||||
pictureMap.put("randomX", randomX);
|
||||
// y轴
|
||||
pictureMap.put("randomY", randomY);
|
||||
|
||||
pictureMap.put("originalHeight", originalHeight);
|
||||
pictureMap.put("originalWidth", originalWidth);
|
||||
pictureMap.put("sliderHeight", sliderHeight);
|
||||
pictureMap.put("sliderWidth", sliderWidth);
|
||||
return pictureMap;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ public class VerificationSourceServiceImpl extends ServiceImpl<VerificationSourc
|
||||
} catch (ClassCastException cce) {
|
||||
verificationDTO = null;
|
||||
}
|
||||
if (verificationDTO == null) {
|
||||
if (verificationDTO == null || verificationDTO.getVerificationResources().size() <= 0 || verificationDTO.getVerificationSlider().size() <= 0) {
|
||||
return initCache();
|
||||
}
|
||||
return verificationDTO;
|
||||
|
0
framework/src/main/java/cn/lili/modules/wallet/entity/enums/WithdrawStatusEnum.java
Executable file → Normal file
0
framework/src/main/java/cn/lili/modules/wallet/entity/enums/WithdrawStatusEnum.java
Executable file → Normal file
@ -95,8 +95,8 @@ public class PageUtil {
|
||||
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
|
||||
//创建时间区间判定
|
||||
if (searchVo != null && StrUtil.isNotBlank(searchVo.getStartDate()) && StrUtil.isNotBlank(searchVo.getEndDate())) {
|
||||
Date start = cn.hutool.core.date.DateUtil.parse(searchVo.getStartDate());
|
||||
Date end = cn.hutool.core.date.DateUtil.parse(searchVo.getEndDate());
|
||||
Date start = DateUtil.parse(searchVo.getStartDate());
|
||||
Date end = DateUtil.parse(searchVo.getEndDate());
|
||||
queryWrapper.between("create_time", start, DateUtil.endOfDay(end));
|
||||
}
|
||||
if (object != null) {
|
||||
|
0
manager-api/src/main/java/cn/lili/security/ManagerAuthenticationFilter.java
Executable file → Normal file
0
manager-api/src/main/java/cn/lili/security/ManagerAuthenticationFilter.java
Executable file → Normal file
@ -33,9 +33,9 @@ spring:
|
||||
type: redis
|
||||
# Redis
|
||||
redis:
|
||||
host: 127.0.0.1
|
||||
host: 120.71.145.134
|
||||
port: 6379
|
||||
password: lilishop
|
||||
password: ekLhvPGraSj8DGO0
|
||||
lettuce:
|
||||
pool:
|
||||
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
||||
@ -64,9 +64,9 @@ spring:
|
||||
default-datasource:
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://127.0.0.1:3306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||
username: root
|
||||
password: lilishop
|
||||
url: jdbc:mysql://120.71.183.195:3306/zyt_shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
||||
username: zyt_shop
|
||||
password: Gb84505016@zytshop
|
||||
maxActive: 20
|
||||
initialSize: 5
|
||||
maxWait: 60000
|
||||
@ -139,8 +139,8 @@ ignored:
|
||||
|
||||
# Swagger界面内容配置
|
||||
swagger:
|
||||
title: lili API接口文档
|
||||
description: lili Api Documentation
|
||||
title: API接口文档
|
||||
description: Api Documentation
|
||||
version: 1.0.0
|
||||
termsOfServiceUrl: https://pickmall.cn
|
||||
contact:
|
||||
@ -181,7 +181,7 @@ jasypt:
|
||||
|
||||
lili:
|
||||
system:
|
||||
isDemoSite: true
|
||||
isDemoSite: false
|
||||
# 脱敏级别:
|
||||
# 0:不做脱敏处理
|
||||
# 1:管理端用户手机号等信息脱敏
|
||||
@ -198,17 +198,16 @@ lili:
|
||||
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
||||
#域名
|
||||
domain:
|
||||
pc: https://pc.b2b2c.pickmall.cn
|
||||
wap: https://m.b2b2c.pickmall.cn
|
||||
store: https://store.b2b2c.pickmall.cn
|
||||
admin: https://admin.b2b2c.pickmall.cn
|
||||
pc: https://zbuyer.sx1788.cn
|
||||
wap: https://zshop.sx1788.cn
|
||||
store: https://zseller.sx1788.cn
|
||||
admin: https://zmanager.sx1788.cn
|
||||
#api地址
|
||||
api:
|
||||
buyer: https://buyer-api.pickmall.cn
|
||||
common: https://common-api.pickmall.cn
|
||||
manager: https://admin-api.pickmall.cn
|
||||
store: https://store-api.pickmall.cn
|
||||
|
||||
buyer: https://zshop-api.sx1788.cn/buyer-api
|
||||
common: https://zshop-api.sx1788.cn/common-api
|
||||
manager: https://zshop-api.sx1788.cn/manager-api
|
||||
store: https://zshop-api.sx1788.cn/seller-api
|
||||
# jwt 细节设定
|
||||
jwt-setting:
|
||||
# token过期时间(分钟)
|
||||
@ -226,7 +225,7 @@ lili:
|
||||
data:
|
||||
elasticsearch:
|
||||
cluster-name: elasticsearch
|
||||
cluster-nodes: 127.0.0.1:9200
|
||||
cluster-nodes: 106.124.130.167:9200
|
||||
index:
|
||||
number-of-replicas: 0
|
||||
number-of-shards: 3
|
||||
@ -236,7 +235,7 @@ lili:
|
||||
# username: elastic
|
||||
# password: LiLiShopES
|
||||
logstash:
|
||||
server: 127.0.0.1:4560
|
||||
server: 106.124.130.167:4560
|
||||
rocketmq:
|
||||
promotion-topic: lili_promotion_topic
|
||||
promotion-group: lili_promotion_group
|
||||
@ -257,7 +256,7 @@ lili:
|
||||
after-sale-topic: lili_after_sale_topic
|
||||
after-sale-group: lili_after_sale_group
|
||||
rocketmq:
|
||||
name-server: 127.0.0.1:9876
|
||||
name-server: 106.124.130.167:9876
|
||||
producer:
|
||||
group: lili_group
|
||||
send-message-timeout: 30000
|
||||
|
2
pom.xml
2
pom.xml
@ -18,7 +18,7 @@
|
||||
|
||||
<properties>
|
||||
<java.version>1.8</java.version>
|
||||
<revision>4.2.4</revision>
|
||||
<revision>4.3.0</revision>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<skipTests>true</skipTests>
|
||||
|
@ -1,12 +1,14 @@
|
||||
package cn.lili.controller.goods;
|
||||
|
||||
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.context.UserContext;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.goods.entity.dos.Goods;
|
||||
import cn.lili.modules.goods.entity.dos.GoodsSku;
|
||||
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.GoodsSkuStockDTO;
|
||||
import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
|
||||
@ -16,6 +18,10 @@ import cn.lili.modules.goods.entity.vos.StockWarningVO;
|
||||
import cn.lili.modules.goods.service.GoodsService;
|
||||
import cn.lili.modules.goods.service.GoodsSkuService;
|
||||
import cn.lili.modules.store.entity.dos.StoreDetail;
|
||||
import cn.lili.modules.store.entity.dto.FuLuConfigureDTO;
|
||||
import cn.lili.modules.store.service.StoreDetailService;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import cn.lili.modules.store.service.StoreDetailService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
@ -27,6 +33,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
@ -171,4 +178,107 @@ public class GoodsStoreController {
|
||||
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);
|
||||
}
|
||||
|
||||
mapArrayList.add(map);
|
||||
goodsOperationDTO.setSkuList(mapArrayList);//sku列表
|
||||
|
||||
if (goodsList.size() > 0) {
|
||||
goodsService.fuLuEditGoods(goodsOperationDTO, goodsList.get(0).getId());
|
||||
} else {
|
||||
goodsService.fuLuAddGoods(goodsOperationDTO);
|
||||
}
|
||||
i += 1;
|
||||
break;
|
||||
}
|
||||
if (i == 1) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return ResultUtil.success();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,98 @@
|
||||
package cn.lili.controller.other;
|
||||
|
||||
import cn.lili.common.aop.annotation.DemoSite;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.page.entity.dos.PageData;
|
||||
import cn.lili.modules.page.entity.dto.PageDataDTO;
|
||||
import cn.lili.modules.page.entity.enums.PageEnum;
|
||||
import cn.lili.modules.page.entity.vos.PageDataListVO;
|
||||
import cn.lili.modules.page.service.PageDataService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 店铺端,页面设置管理接口
|
||||
*
|
||||
* @author paulGao
|
||||
* @since 2020-05-06 15:18:56
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "店铺端,页面设置管理接口")
|
||||
@RequestMapping("/store/other/pageData")
|
||||
public class PageDataStoreController {
|
||||
|
||||
@Autowired
|
||||
private PageDataService pageDataService;
|
||||
|
||||
@ApiOperation(value = "获取页面信息")
|
||||
@ApiImplicitParam(name = "id", value = "页面ID", required = true, dataType = "String", paramType = "path")
|
||||
@GetMapping(value = "/{id}")
|
||||
public ResultMessage<PageData> getPageData(@PathVariable String id) {
|
||||
//查询当前店铺下的页面数据
|
||||
PageData pageData = pageDataService.getOne(
|
||||
new LambdaQueryWrapper<PageData>()
|
||||
.eq(PageData::getPageType, PageEnum.STORE.name())
|
||||
.eq(PageData::getNum, UserContext.getCurrentUser().getStoreId())
|
||||
.eq(PageData::getId, id));
|
||||
return ResultUtil.data(pageData);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "添加页面")
|
||||
@PostMapping("/add")
|
||||
public ResultMessage<PageData> addPageData(@Valid PageData pageData) {
|
||||
//添加店铺类型,填写店铺ID
|
||||
pageData.setPageType(PageEnum.STORE.name());
|
||||
pageData.setNum(UserContext.getCurrentUser().getStoreId());
|
||||
return ResultUtil.data(pageDataService.addPageData(pageData));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "修改页面")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "id", value = "页面ID", required = true, dataType = "String", paramType = "path")
|
||||
})
|
||||
@DemoSite
|
||||
@PutMapping("/update/{id}")
|
||||
public ResultMessage<PageData> updatePageData(@Valid PageData pageData, @NotNull @PathVariable String id) {
|
||||
pageData.setId(id);
|
||||
//添加店铺类型,填写店铺ID
|
||||
pageData.setPageType(PageEnum.STORE.name());
|
||||
pageData.setNum(UserContext.getCurrentUser().getStoreId());
|
||||
return ResultUtil.data(pageDataService.updatePageData(pageData));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "页面列表")
|
||||
@GetMapping("/pageDataList")
|
||||
public ResultMessage<IPage<PageDataListVO>> pageDataList(PageVO pageVO, PageDataDTO pageDataDTO) {
|
||||
pageDataDTO.setPageType(PageEnum.STORE.name());
|
||||
pageDataDTO.setNum(UserContext.getCurrentUser().getStoreId());
|
||||
return ResultUtil.data(pageDataService.getPageDataList(pageVO, pageDataDTO));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "发布页面")
|
||||
@ApiImplicitParam(name = "id", value = "页面ID", required = true, dataType = "String", paramType = "path")
|
||||
@PutMapping("/release/{id}")
|
||||
@DemoSite
|
||||
public ResultMessage<PageData> release(@PathVariable String id) {
|
||||
return ResultUtil.data(pageDataService.releasePageData(id));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "删除页面")
|
||||
@DemoSite
|
||||
@ApiImplicitParam(name = "id", value = "页面ID", required = true, dataType = "String", paramType = "path")
|
||||
@DeleteMapping("/remove/{id}")
|
||||
public ResultMessage<Object> remove(@PathVariable String id) {
|
||||
return ResultUtil.data(pageDataService.removePageData(id));
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ package cn.lili.controller.settings;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
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.StoreSettingDTO;
|
||||
import cn.lili.modules.store.entity.vos.StoreVO;
|
||||
@ -87,4 +88,19 @@ public class StoreSettingsController {
|
||||
boolean result = storeDetailService.editStoreAfterSaleAddressDTO(storeAfterSaleAddressDTO);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
0
seller-api/src/main/java/cn/lili/security/StoreAuthenticationFilter.java
Executable file → Normal file
0
seller-api/src/main/java/cn/lili/security/StoreAuthenticationFilter.java
Executable file → Normal file
@ -33,9 +33,9 @@ spring:
|
||||
type: redis
|
||||
# Redis
|
||||
redis:
|
||||
host: 127.0.0.1
|
||||
host: 120.71.145.134
|
||||
port: 6379
|
||||
password: lilishop
|
||||
password: ekLhvPGraSj8DGO0
|
||||
lettuce:
|
||||
pool:
|
||||
# 连接池最大连接数(使用负值表示没有限制) 默认 8
|
||||
@ -64,9 +64,9 @@ spring:
|
||||
default-datasource:
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://127.0.0.1:3306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||
username: root
|
||||
password: lilishop
|
||||
url: jdbc:mysql://120.71.183.195:3306/zyt_shop?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
|
||||
username: zyt_shop
|
||||
password: Gb84505016@zytshop
|
||||
maxActive: 20
|
||||
initialSize: 5
|
||||
maxWait: 60000
|
||||
@ -108,8 +108,7 @@ spring:
|
||||
props:
|
||||
#是否打印逻辑SQL语句和实际SQL语句,建议调试时打印,在生产环境关闭
|
||||
sql:
|
||||
show: false
|
||||
|
||||
show: true
|
||||
# 忽略鉴权url
|
||||
ignored:
|
||||
urls:
|
||||
@ -137,15 +136,14 @@ ignored:
|
||||
|
||||
# Swagger界面内容配置
|
||||
swagger:
|
||||
title: lili API接口文档
|
||||
description: lili Api Documentation
|
||||
title: API接口文档
|
||||
description: Api Documentation
|
||||
version: 1.0.0
|
||||
termsOfServiceUrl: https://pickmall.cn
|
||||
termsOfServiceUrl:
|
||||
contact:
|
||||
name: lili
|
||||
url: https://pickmall.cn
|
||||
email: admin@pickmall.com
|
||||
|
||||
name: rx
|
||||
url:
|
||||
email:
|
||||
# Mybatis-plus
|
||||
mybatis-plus:
|
||||
mapper-locations: classpath*:mapper/*.xml
|
||||
@ -179,7 +177,7 @@ jasypt:
|
||||
|
||||
lili:
|
||||
system:
|
||||
isDemoSite: true
|
||||
isDemoSite: false
|
||||
statistics:
|
||||
# 在线人数统计 X 小时。这里设置48,即统计过去48小时每小时在线人数
|
||||
onlineMember: 48
|
||||
@ -191,17 +189,16 @@ lili:
|
||||
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
||||
#域名
|
||||
domain:
|
||||
pc: https://pc.b2b2c.pickmall.cn
|
||||
wap: https://m.b2b2c.pickmall.cn
|
||||
store: https://store.b2b2c.pickmall.cn
|
||||
admin: https://admin.b2b2c.pickmall.cn
|
||||
pc: https://zbuyer.sx1788.cn
|
||||
wap: https://zshop.sx1788.cn
|
||||
store: https://zseller.sx1788.cn
|
||||
admin: https://zmanager.sx1788.cn
|
||||
#api地址
|
||||
api:
|
||||
buyer: https://buyer-api.pickmall.cn
|
||||
common: https://common-api.pickmall.cn
|
||||
manager: https://admin-api.pickmall.cn
|
||||
store: https://store-api.pickmall.cn
|
||||
|
||||
buyer: https://zshop-api.sx1788.cn/buyer-api
|
||||
common: https://zshop-api.sx1788.cn/common-api
|
||||
manager: https://zshop-api.sx1788.cn/manager-api
|
||||
store: https://zshop-api.sx1788.cn/seller-api
|
||||
# jwt 细节设定
|
||||
jwt-setting:
|
||||
# token过期时间(分钟)
|
||||
@ -219,7 +216,7 @@ lili:
|
||||
data:
|
||||
elasticsearch:
|
||||
cluster-name: elasticsearch
|
||||
cluster-nodes: 127.0.0.1:9200
|
||||
cluster-nodes: 106.124.130.167:9200
|
||||
index:
|
||||
number-of-replicas: 0
|
||||
number-of-shards: 3
|
||||
@ -229,7 +226,7 @@ lili:
|
||||
# username: elastic
|
||||
# password: LiLiShopES
|
||||
logstash:
|
||||
server: 127.0.0.1:4560
|
||||
server: 106.124.130.167:4560
|
||||
rocketmq:
|
||||
promotion-topic: lili_promotion_topic
|
||||
promotion-group: lili_promotion_group
|
||||
@ -250,7 +247,7 @@ lili:
|
||||
after-sale-topic: lili_after_sale_topic
|
||||
after-sale-group: lili_after_sale_group
|
||||
rocketmq:
|
||||
name-server: 127.0.0.1:9876
|
||||
name-server: 106.124.130.167:9876
|
||||
producer:
|
||||
group: lili_group
|
||||
send-message-timeout: 30000
|
||||
|
161
update-sql/version4.2to4.3.sql
Normal file
161
update-sql/version4.2to4.3.sql
Normal file
@ -0,0 +1,161 @@
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : 192.168.0.116
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 80023
|
||||
Source Host : 192.168.0.116:3306
|
||||
Source Schema : lilishop
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 80023
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 27/07/2021 17:04:46
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
/** 添加结算单积分、砍价结算价信息**/
|
||||
ALTER TABLE li_bill ADD point_settlement_price double DEFAULT 0.00 COMMENT '积分商品结算金额 ';
|
||||
ALTER TABLE li_bill ADD kanjia_settlement_price double DEFAULT 0.00 COMMENT '砍价商品结算金额';
|
||||
ALTER TABLE li_store_flow ADD point_settlement_price double DEFAULT 0.00 COMMENT '积分商品结算金额';
|
||||
ALTER TABLE li_store_flow ADD kanjia_settlement_price double DEFAULT 0.00 COMMENT '砍价商品结算金额';
|
||||
ALTER TABLE li_order ADD order_promotion_type varchar(255) DEFAULT null COMMENT '订单促销类型';
|
||||
|
||||
/** 热词管理*/
|
||||
UPDATE `lilishop`.`li_menu` SET `create_by` = 'admin', `create_time` = '2021-03-03 09:54:51', `delete_flag` = b'0', `update_by` = 'admin', `update_time` = '2021-07-23 19:07:45', `description` = 'null', `front_route` = 'page/article-manage/hotWords', `icon` = 'md-aperture', `level` = 2, `name` = 'hotKeyWord', `parent_id` = '1367050250249830400', `path` = 'hotKeyWord', `sort_order` = 0.00, `title` = '搜索热词', `front_component` = 'null' WHERE `id` = 1367050829697122304;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for li_menu
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `li_menu`;
|
||||
CREATE TABLE `li_menu` (
|
||||
`id` bigint NOT NULL COMMENT 'ID',
|
||||
`create_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`delete_flag` bit(1) DEFAULT NULL COMMENT '删除标志 true/false 删除/未删除',
|
||||
`update_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '说明备注',
|
||||
`front_route` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '前端路由',
|
||||
`icon` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '图标',
|
||||
`level` int DEFAULT NULL COMMENT '层级',
|
||||
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '菜单/权限名称',
|
||||
`parent_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '父id',
|
||||
`path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '赋权API地址,正则表达式',
|
||||
`sort_order` decimal(10,2) DEFAULT NULL COMMENT '排序值',
|
||||
`title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '菜单标题',
|
||||
`front_component` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '文件地址',
|
||||
`permission` varchar(255) DEFAULT NULL COMMENT '权限url',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of li_menu
|
||||
-- ----------------------------
|
||||
BEGIN;
|
||||
INSERT INTO `li_menu` VALUES (1348810750596767744, 'admin', '2021-01-12 09:55:17', b'0', 'admin', '2021-01-15 09:42:50', 'null', '1', 'ios-american-football', 0, 'settings', '0', '1', 2.00, '设置', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1348810864748945408, 'admin', '2021-01-12 09:55:45', b'0', 'admin', '2021-03-15 20:57:12', 'null', 'null', 'ios-american-football', 0, 'log', '0', 'null', 3.00, '日志', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1349237129847005184, 'admin', '2021-01-13 14:09:34', b'0', 'admin', '2021-01-15 09:43:16', 'null', 'Main', 'ios-american-football', 1, 'sys', '1348810750596767744', '/sys', 1.00, '系统设置', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1349237207378714624, 'admin', '2021-01-13 14:09:53', b'0', 'admin', '2021-07-27 16:07:49', 'null', 'Main', 'ios-american-football', 1, 'member', '1348810750596767744', '/member', 0.00, '用户管理', 'null', '/manager/user*,/manager/department*,/manager/role*,/manager/menu*');
|
||||
INSERT INTO `li_menu` VALUES (1349237928434098176, 'admin', '2021-01-13 14:13:03', b'0', 'admin', '2021-07-27 16:09:11', 'null', 'Main', 'ios-american-football', 1, 'log', '1348810864748945408', '/log', 1.00, '系统监控', 'null', '/manager/log*');
|
||||
INSERT INTO `li_menu` VALUES (1349246048900243456, 'admin', '2021-01-13 14:45:00', b'0', 'admin', '2021-07-27 16:07:57', 'null', 'sys/setting-manage/settingManage', 'ios-american-football', 2, 'setting', '1349237129847005184', 'setting', 1.00, '系统设置', 'null', '/manager/system/setting/get*,/manager/system/setting/put*');
|
||||
INSERT INTO `li_menu` VALUES (1349246347597602816, 'admin', '2021-01-13 14:46:12', b'0', 'admin', '2021-07-27 16:08:03', 'null', 'sys/oss-manage/ossManage', 'ios-american-football', 2, 'oss-manage', '1349237129847005184', 'oss-manage', 3.00, 'OSS资源', '', '/manager/file*');
|
||||
INSERT INTO `li_menu` VALUES (1349246468775239680, 'admin', '2021-01-13 14:46:41', b'0', 'admin', '2021-07-27 16:08:14', 'null', 'region/index', 'ios-american-football', 2, 'region', '1349237129847005184', 'region', 4.00, '行政地区', 'null', '/manager/region*');
|
||||
INSERT INTO `li_menu` VALUES (1349246671158796288, 'admin', '2021-01-13 14:47:29', b'0', 'admin', '2021-07-27 16:08:09', 'null', 'logistics/index', 'ios-american-football', 2, 'logistics', '1349237129847005184', 'logistics', 5.00, '物流公司', 'null', '/manager/logistics*');
|
||||
INSERT INTO `li_menu` VALUES (1349246896661356544, 'admin', '2021-01-13 14:48:23', b'0', 'admin', '2021-07-27 16:08:23', 'null', 'sys/setting-manage/settingManage', 'ios-american-football', 2, 'authLogin', '1349237129847005184', 'authLogin', 6.00, '信任登录', 'null', '/manager/system/setting/get*,/manager/system/setting/put*');
|
||||
INSERT INTO `li_menu` VALUES (1349247081504333824, 'admin', '2021-01-13 14:49:07', b'0', 'admin', '2021-07-27 16:08:45', 'null', 'sys/setting-manage/settingManage', 'ios-american-football', 2, 'pay', '1349237129847005184', 'pay', 7.00, '支付设置', 'null', '/manager/system/setting/get*,/manager/system/setting/put*,/manager/system/setting*');
|
||||
INSERT INTO `li_menu` VALUES (1349247640584085504, 'admin', '2021-01-13 14:51:20', b'0', 'admin', '2021-07-27 16:08:56', 'null', 'sensitiveWords/index', 'ios-american-football', 2, 'sensitiveWords', '1349237129847005184', 'sensitiveWords', 8.00, '敏感词', 'null', '/manager/sensitiveWords*');
|
||||
INSERT INTO `li_menu` VALUES (1349254815809298432, 'admin', '2021-01-13 15:19:51', b'0', 'admin', '2021-01-15 11:15:40', 'null', 'sys/user-manage/userManage', 'ios-american-football', 2, 'user-manage', '1349237207378714624', 'user-manage', 1.00, '用户管理', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1349255214977015808, 'admin', '2021-01-13 15:21:26', b'0', 'admin', '2021-01-15 11:16:21', 'null', 'sys/department-manage/departmentManage', 'ios-american-football', 2, 'department-manage', '1349237207378714624', 'department-manage', 3.00, '部门管理', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1349255404425338880, 'admin', '2021-01-13 15:22:11', b'0', 'admin', '2021-02-24 09:22:21', 'null', 'sys/role-manage/roleManage', 'ios-american-football', 2, 'role-manage', '1349237207378714624', 'role-manage', 4.00, '角色权限', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1349256082979840000, 'admin', '2021-01-13 15:24:53', b'0', 'admin', '2021-01-15 11:18:14', 'null', 'sys/log-manage/logManage', 'ios-american-football', 2, 'log-manage', '1349237928434098176', 'log-manage', 2.00, '日志管理', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1357584224760102912, 'admin', '2021-02-05 06:57:57', b'0', 'admin', '2021-07-27 16:09:02', 'null', 'sys/app-version/appVersion', 'ios-american-football', 2, 'appVersion', '1349237129847005184', 'appVersion', 9.00, 'APP版本', 'null', '/manager/systems/app*');
|
||||
INSERT INTO `li_menu` VALUES (1357873097859923969, 'admin', '2021-02-24 09:53:02', b'0', 'admin', '2021-02-24 09:53:12', NULL, 'sys/menu-manage/menuManage', 'ios-american-football', 2, 'menuManage', '1349237207378714624', 'menu-manage', 2.00, '菜单管理', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367038467288072192, 'admin', '2021-03-03 09:05:44', b'0', 'admin', '2021-03-03 09:09:27', 'null', 'null', 'ios-person-add', 0, 'member', '0', 'null', 0.00, '会员', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367039534616805376, 'admin', '2021-03-03 09:09:58', b'0', 'admin', '2021-05-18 10:51:12', 'null', 'null', 'md-reorder', 0, 'order', '0', 'null', 0.00, '订单', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367039950368800768, 'admin', '2021-03-03 09:11:37', b'0', NULL, NULL, NULL, NULL, 'ios-share', 0, 'goods', '0', NULL, 0.20, '商品', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367040067201138688, 'admin', '2021-03-03 09:12:05', b'0', NULL, NULL, NULL, NULL, 'ios-hammer', 0, 'promotion', '0', NULL, 0.30, '促销', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367040599596728320, 'admin', '2021-03-03 09:14:12', b'0', 'admin', '2021-03-03 09:52:13', 'null', 'null', 'ios-color-palette', 0, 'operate', '0', 'null', 0.50, '运营', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367040819248234496, 'admin', '2021-03-03 09:15:04', b'0', NULL, NULL, NULL, NULL, 'ios-stats', 0, 'statistics', '0', NULL, 0.70, '统计', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367041332861730816, 'admin', '2021-03-03 09:17:07', b'0', NULL, NULL, NULL, 'Main', 'ios-aperture', 1, '/', '1367038467288072192', '/', 0.00, '会员管理', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367041461194850304, 'admin', '2021-03-03 09:17:37', b'0', 'admin', '2021-07-27 16:02:17', NULL, 'member/list/index', 'ios-aperture', 2, 'memberList', '1367041332861730816', 'memberList', 0.00, '会员列表', NULL, '/manager/member*,/manager/orders*,/manager/wallet/log*,/manager/receipt*');
|
||||
INSERT INTO `li_menu` VALUES (1367041575619657728, 'admin', '2021-03-03 09:18:05', b'0', 'admin', '2021-07-27 15:59:50', NULL, 'member/list/memberRecycle', 'ios-aperture', 2, 'memberRecycle', '1367041332861730816', 'memberRecycle', 1.00, '回收站', NULL, '/manager/member*');
|
||||
INSERT INTO `li_menu` VALUES (1367042490443497472, 'admin', '2021-03-03 09:21:43', b'0', NULL, NULL, NULL, 'Main', 'ios-aperture', 1, '/', '1367038467288072192', '/', 1.00, '预存款', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367042664410644480, 'admin', '2021-03-03 09:22:24', b'0', 'admin', '2021-07-27 16:02:44', 'null', 'member/advance/walletLog', 'ios-aperture', 2, 'walletLog', '1367042490443497472', 'walletLog', 0.00, '会员资金', 'null', '/manager/wallet/log*');
|
||||
INSERT INTO `li_menu` VALUES (1367042804944994304, 'admin', '2021-03-03 09:22:58', b'0', 'admin', '2021-07-27 16:02:48', NULL, 'member/advance/recharge', 'ios-alert', 2, 'recharge', '1367042490443497472', 'recharge', 1.00, '充值记录', NULL, '/manager/recharge*');
|
||||
INSERT INTO `li_menu` VALUES (1367042804944994305, 'admin', '2021-03-03 09:22:58', b'0', 'admin', '2021-07-27 16:02:52', NULL, 'member/advance/withdrawApply', 'ios-alert', 2, 'withdrawApply', '1367042490443497472', 'withdrawApply', 1.00, '提现申请', NULL, '/manager/members/withdraw-apply*');
|
||||
INSERT INTO `li_menu` VALUES (1367042917113266176, 'admin', '2021-03-03 09:23:25', b'0', NULL, NULL, NULL, 'Main', 'ios-aperture', 1, 'commont', '1367038467288072192', '/', 0.00, '评价', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367043020976816128, 'admin', '2021-03-03 09:23:49', b'0', 'admin', '2021-07-27 16:02:35', NULL, 'goods/goods-review/index', 'md-aperture', 2, 'goodsReview', '1367042917113266176', 'goodsReview', 0.00, '会员评价', NULL, '/manager/memberEvaluation*');
|
||||
INSERT INTO `li_menu` VALUES (1367043443917848576, 'admin', '2021-03-03 09:25:30', b'0', 'admin', '2021-07-27 16:03:00', NULL, 'Main', 'md-aperture', 1, 'order', '1367039534616805376', '/', 0.00, '订单', NULL, '/manager/orders*');
|
||||
INSERT INTO `li_menu` VALUES (1367043505771249664, 'admin', '2021-03-03 09:25:45', b'0', NULL, NULL, NULL, 'Main', 'md-aperture', 1, 'aftersale', '1367039534616805376', '/', 0.00, '售后', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367043642379730944, 'admin', '2021-03-03 09:26:17', b'0', NULL, NULL, NULL, 'order/order/orderList', 'ios-aperture', 2, 'orderList', '1367043443917848576', 'orderList', 0.00, '商品订单', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367043791105556480, 'admin', '2021-03-03 09:26:53', b'0', NULL, NULL, NULL, 'order/order/fictitiousOrderList', 'ios-aperture', 2, 'fictitiousOrderList', '1367043443917848576', 'fictitiousOrderList', 1.00, '虚拟订单', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367043980407078912, 'admin', '2021-03-03 09:27:38', b'0', 'admin', '2021-07-27 16:03:43', NULL, 'order/after-order/afterSaleOrder', 'md-alert', 2, 'afterSaleOrder', '1367043505771249664', 'afterSaleOrder', 0.00, '售后管理', NULL, '/manager/afterSale*');
|
||||
INSERT INTO `li_menu` VALUES (1367044121163726848, 'admin', '2021-03-03 09:28:12', b'0', 'admin', '2021-07-27 16:03:48', NULL, 'order/after-order/orderComplaint', 'md-alert', 2, 'orderComplaint', '1367043505771249664', 'orderComplaint', 2.00, '交易投诉', NULL, '/manager/complain*');
|
||||
INSERT INTO `li_menu` VALUES (1367044247978508288, 'admin', '2021-03-03 09:28:42', b'0', 'admin', '2021-07-27 16:03:52', NULL, 'order/after-order/afterSale', 'md-aperture', 2, 'afterSaleReason', '1367043505771249664', 'afterSaleReason', 3.00, '售后原因', NULL, '/manager/afterSaleReason*');
|
||||
INSERT INTO `li_menu` VALUES (1367044376391319552, 'admin', '2021-03-03 09:29:12', b'0', 'admin', '2021-07-27 16:04:08', NULL, 'Main', 'md-aperture', 1, 'goodsManager', '1367039950368800768', '/', 0.00, '商品管理', NULL, '/manager/goods*');
|
||||
INSERT INTO `li_menu` VALUES (1367044657296441344, 'admin', '2021-03-03 09:30:19', b'0', NULL, NULL, NULL, 'Main', 'ios-aperture', 1, 'association', '1367039950368800768', '/', 1.00, '关联管理', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367045529720061952, 'admin', '2021-03-03 09:33:47', b'0', 'admin', '2021-07-27 15:38:46', NULL, 'goods/goods-info/goods', 'md-aperture', 2, 'managerGoods', '1367044376391319552', 'managerGoods', 0.00, '平台商品', NULL, 'null');
|
||||
INSERT INTO `li_menu` VALUES (1367045630710513664, 'admin', '2021-03-03 09:34:11', b'0', 'admin', '2021-07-27 15:38:56', NULL, 'goods/goods-info/goodsApply', 'ios-alert', 2, 'applyGoods', '1367044376391319552', 'applyGoods', 1.00, '商品审核', NULL, 'null');
|
||||
INSERT INTO `li_menu` VALUES (1367045794284175360, 'admin', '2021-03-03 09:34:50', b'0', 'admin', '2021-07-27 16:04:18', NULL, 'goods/goods-manage/category', 'md-alert', 2, 'goodsCategory', '1367044657296441344', 'goodsCategory', 0.00, '商品分类', NULL, '/manager/goods/category*,/manager/goods/brand*,/manager/goods/spec*,/manager/goods/parameters*');
|
||||
INSERT INTO `li_menu` VALUES (1367045921434501120, 'admin', '2021-03-03 09:35:21', b'0', 'admin', '2021-07-27 16:04:23', NULL, 'goods/goods-manage/brand', 'md-alert', 2, 'goodsBrand', '1367044657296441344', 'goodsBrand', 1.00, '品牌列表', NULL, '/manager/goods/brand*');
|
||||
INSERT INTO `li_menu` VALUES (1367046068369358848, 'admin', '2021-03-03 09:35:56', b'0', 'admin', '2021-07-27 16:04:27', NULL, 'goods/goods-manage/spec', 'md-aperture', 2, 'goodsSpec', '1367044657296441344', 'goodsSpec', 2.00, '规格列表', NULL, '/manager/goods/spec*');
|
||||
INSERT INTO `li_menu` VALUES (1367046266214678528, 'admin', '2021-03-03 09:36:43', b'0', 'admin', '2021-07-27 16:04:32', NULL, 'goods-unit/index', 'md-alert', 2, 'goodsUnit', '1367044657296441344', 'goodsUnit', 4.00, '计量单位', NULL, '/manager/goods/goodsUnit*');
|
||||
INSERT INTO `li_menu` VALUES (1367048084701315072, 'admin', '2021-03-03 09:43:57', b'0', 'admin', '2021-03-03 09:52:17', 'null', 'null', 'ios-pricetags', 0, 'shop', '0', 'null', 0.40, '店铺', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367048684339986432, 'admin', '2021-03-03 09:46:20', b'0', NULL, NULL, NULL, 'Main', 'md-aperture', 1, 'shopManager', '1367048084701315072', '/', 0.00, '店铺管理', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367048754229673984, 'admin', '2021-03-03 09:46:36', b'0', NULL, NULL, NULL, 'Main', 'md-aperture', 1, 'bill', '1367048084701315072', '/', 0.00, ' 店铺结算', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367048832210173952, 'admin', '2021-03-03 09:46:55', b'0', 'admin', '2021-07-27 16:05:30', NULL, 'seller/shop/shopList', 'md-aperture', 2, 'shopList', '1367048684339986432', 'shopList', 0.00, '店铺列表', NULL, '/manager/store*');
|
||||
INSERT INTO `li_menu` VALUES (1367048967635861504, 'admin', '2021-03-03 09:47:27', b'0', 'admin', '2021-07-27 16:05:32', NULL, 'seller/shop/shopAuditList', 'md-alert', 2, 'shopAuth', '1367048684339986432', 'shopAuth', 1.00, '店铺审核', NULL, '/manager/store*');
|
||||
INSERT INTO `li_menu` VALUES (1367049068122996736, 'admin', '2021-03-03 09:47:51', b'0', 'admin', '2021-07-27 16:05:36', NULL, 'seller/bill/bill', 'md-alert', 2, 'billList', '1367048754229673984', 'billList', 0.00, '店铺结算', NULL, '/manager/store/bill*');
|
||||
INSERT INTO `li_menu` VALUES (1367049214198022144, 'admin', '2021-03-03 09:48:26', b'0', NULL, NULL, NULL, 'Main', 'md-aperture', 1, 'promotionManager', '1367040067201138688', '/', 0.00, '促销管理', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367049384792948736, 'admin', '2021-03-03 09:49:07', b'0', 'admin', '2021-07-27 16:04:42', NULL, 'promotion/coupon/coupon', 'md-alert', 2, 'coupon', '1367049214198022144', 'coupon', 0.00, '优惠券', NULL, '/manager/promotion/coupon*');
|
||||
INSERT INTO `li_menu` VALUES (1367049500782231552, 'admin', '2021-03-03 09:49:34', b'0', 'admin', '2021-07-27 16:04:53', 'null', 'promotion/fullCut/full-cut', 'md-alert', 2, 'fullCut', '1367049214198022144', 'fullCut', 1.00, '满额活动', 'null', '/manager/promotion/fullDiscount*');
|
||||
INSERT INTO `li_menu` VALUES (1367049611578966016, 'admin', '2021-03-03 09:50:01', b'0', 'admin', '2021-07-27 16:04:58', 'null', 'promotion/seckill/seckill', 'md-alert', 2, 'seckill', '1367049214198022144', 'seckill', 2.00, '秒杀活动', 'null', '/manager/promotion/seckill*');
|
||||
INSERT INTO `li_menu` VALUES (1367049712657498112, 'admin', '2021-03-03 09:50:25', b'0', 'admin', '2021-07-27 16:05:02', 'null', 'promotion/pintuan/pintuan', 'md-alert', 2, 'pintuan', '1367049214198022144', 'pintuan', 3.00, '拼团活动', 'null', '/manager/promotion/pintuan*');
|
||||
INSERT INTO `li_menu` VALUES (1367050250249830400, 'admin', '2021-03-03 09:52:33', b'0', 'admin', '2021-03-22 20:38:14', 'null', 'Main', 'md-aperture', 1, 'document', '1367040599596728320', '/', 2.00, '文章管理', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367050320584114176, 'admin', '2021-03-03 09:52:50', b'0', 'admin', '2021-07-27 16:05:49', NULL, 'Main', 'md-aperture', 1, 'floor', '1367040599596728320', '/', 0.00, '楼层装修', NULL, '/manager/pageData*,/manager/file*,/manager/article-category*,/manager/article*,/manager/promotion*,/manager/goods*,/manager/store*');
|
||||
INSERT INTO `li_menu` VALUES (1367050530030878720, 'admin', '2021-03-03 09:53:40', b'0', 'admin', '2021-03-04 01:05:57', 'null', 'lili-floor-renovation/floorList', 'md-alert', 2, 'pcFloor', '1367050320584114176', 'pcFloor', 0.00, 'PC端', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367050673312497664, 'admin', '2021-03-03 09:54:14', b'0', 'admin', '2021-03-04 01:06:04', 'null', 'lili-floor-renovation/wap/wapList', 'md-aperture', 2, 'wapList', '1367050320584114176', 'wapList', 1.00, '移动端', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367050829697122304, 'admin', '2021-03-03 09:54:51', b'0', 'admin', '2021-07-27 16:06:32', 'null', 'page/article-manage/hotWords', 'md-aperture', 2, 'hotKeyWord', '1367050250249830400', 'hotKeyWord', 0.00, '搜索热词', 'null', '/manager/hotwords*');
|
||||
INSERT INTO `li_menu` VALUES (1367050939084570624, 'admin', '2021-03-03 09:55:17', b'0', 'admin', '2021-07-27 16:06:38', NULL, 'page/article-manage/ArticleCategory', 'md-aperture', 2, 'article-category', '1367050250249830400', 'article-category', 1.00, '文章分类', NULL, '/manager/article-category*');
|
||||
INSERT INTO `li_menu` VALUES (1367051048232943616, 'admin', '2021-03-03 09:55:43', b'0', 'admin', '2021-07-27 16:06:42', NULL, 'page/article-manage/articleList', 'md-alert', 2, 'articleList', '1367050250249830400', 'articleList', 3.00, '文章管理', NULL, '/manager/article-category*,/manager/article*');
|
||||
INSERT INTO `li_menu` VALUES (1367052616634204160, 'admin', '2021-03-03 10:01:57', b'0', 'admin', '2021-07-27 16:07:38', NULL, 'Main', 'md-aperture', 1, 'statistics', '1367040819248234496', '/', 0.00, '统计', NULL, '/manager/store*,/manager/member*');
|
||||
INSERT INTO `li_menu` VALUES (1367052705725415424, 'admin', '2021-03-03 10:02:18', b'0', 'admin', '2021-03-11 22:11:05', 'null', 'statistics/member', 'md-alert', 2, 'memberStatistics', '1367052616634204160', 'memberStatistics', 0.00, '会员统计', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367052805503713280, 'admin', '2021-03-03 10:02:42', b'0', 'admin', '2021-03-11 22:11:14', 'null', 'statistics/order', 'md-alert', 2, 'orderStatistics', '1367052616634204160', 'orderStatistics', 1.00, '订单统计', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367052915314786304, 'admin', '2021-03-03 10:03:08', b'0', 'admin', '2021-03-11 22:11:23', 'null', 'statistics/goods', 'md-alert', 2, 'goodsStatistics', '1367052616634204160', 'goodsStatistics', 2.00, '商品统计', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367053087121866752, 'admin', '2021-03-03 10:03:49', b'0', 'admin', '2021-03-11 22:11:34', 'null', 'statistics/traffic', 'md-alert', 2, 'trafficStatistics', '1367052616634204160', 'trafficStatistics', 4.00, '流量统计', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1372807928452481024, 'admin', '2021-03-19 02:11:30', b'0', NULL, NULL, NULL, 'Main', 'ios-aperture', 1, 'flow', '1367039534616805376', '/', 3.00, '流水', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1372808148565360640, 'admin', '2021-03-19 02:12:23', b'0', 'admin', '2021-07-27 16:03:57', NULL, 'order/flow/paymentLog', 'md-alert', 2, 'paymentLog', '1372807928452481024', 'paymentLog', 1.00, '收款记录', NULL, '/manager/paymentLog*');
|
||||
INSERT INTO `li_menu` VALUES (1372808352295288832, 'admin', '2021-03-19 02:13:11', b'0', 'admin', '2021-07-27 16:04:01', NULL, 'order/flow/refundLog', 'ios-aperture', 2, 'refundLog', '1372807928452481024', 'refundLog', 2.00, '退款流水', NULL, '/manager/refundLog*');
|
||||
INSERT INTO `li_menu` VALUES (1373166892465782784, 'admin', '2021-03-20 01:57:54', b'0', 'admin', '2021-03-22 20:13:48', 'null', 'Main', 'ios-aperture', 1, '/', '1367038467288072192', '/', 0.00, '积分', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1373167227385151488, 'admin', '2021-03-20 01:59:14', b'0', 'admin', '2021-07-27 16:02:40', 'null', 'member/point/point', 'ios-aperture', 2, 'point', '1373166892465782784', 'point', 0.00, '积分历史', 'null', '/manager/member/memberPointsHistory*');
|
||||
INSERT INTO `li_menu` VALUES (1373791578371391488, 'admin', '2021-03-21 19:20:11', b'0', 'admin', '2021-07-27 16:05:38', NULL, 'seller/bill/accountStatementBill', 'md-alert', 2, 'accountStatementBill', '1367048754229673984', 'accountStatementBill', 0.00, '商家对账', NULL, '/manager/store/bill*');
|
||||
INSERT INTO `li_menu` VALUES (1374154349697040384, 'admin', '2021-03-22 19:21:42', b'0', 'admin', '2021-07-27 16:06:55', 'null', 'Main', 'md-aperture', 1, 'feedback', '1367040599596728320', '/', 3.00, '意见反馈', 'null', '/manager/feedback*');
|
||||
INSERT INTO `li_menu` VALUES (1374155741123837952, 'admin', '2021-03-22 19:27:14', b'0', 'admin', '2021-07-27 15:41:40', 'null', 'page/feedback/feedback', 'md-aperture', 2, 'feedback', '1374154349697040384', 'feedback', 0.00, '意见反馈', 'null', 'null');
|
||||
INSERT INTO `li_menu` VALUES (1374173575405109248, 'admin', '2021-03-22 20:38:06', b'0', 'admin', '2021-03-22 20:52:58', 'null', 'Main', 'ios-analytics', 1, 'distributionManager', '1367040599596728320', '/', 1.00, '分销管理', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1374177618072436736, 'admin', '2021-03-22 20:54:10', b'0', 'admin', '2021-07-27 16:05:58', 'null', 'distribution/distributionSetting', 'ios-basketball', 2, 'distributionSetting', '1374173575405109248', 'distributionSetting', 0.00, '分销设置', 'null', '/manager/system/setting/put/DISTRIBUTION_SETTING*,/manager/system/setting/get/DISTRIBUTION_SETTING*');
|
||||
INSERT INTO `li_menu` VALUES (1374177789581721600, 'admin', '2021-03-22 20:54:51', b'0', 'admin', '2021-07-27 16:06:15', 'null', 'distribution/distributionGoods', 'ios-chatbubbles', 2, 'distributionGoods', '1374173575405109248', 'distributionGoods', 3.00, '分销商品', 'null', '/manager/distribution/goods*');
|
||||
INSERT INTO `li_menu` VALUES (1374177910411231232, 'admin', '2021-03-22 20:55:19', b'0', 'admin', '2021-07-27 16:06:20', 'null', 'distribution/distributionOrder', 'ios-cloudy', 2, 'distributionOrder', '1374173575405109248', 'distributionOrder', 4.00, '分销订单', 'null', '/manager/distribution/order*,/manager/store*');
|
||||
INSERT INTO `li_menu` VALUES (1374178079181635584, 'admin', '2021-03-22 20:56:00', b'0', 'admin', '2021-07-27 16:06:05', 'null', 'distribution/distributionApply', 'md-egg', 2, 'distributionApply', '1374173575405109248', 'distributionApply', 1.00, '分销申请', 'null', '/manager/distribution*');
|
||||
INSERT INTO `li_menu` VALUES (1374178303975358464, 'admin', '2021-03-22 20:56:53', b'0', 'admin', '2021-07-27 16:06:08', 'null', 'distribution/distribution', 'md-person', 2, 'distribution', '1374173575405109248', 'distribution', 2.00, '分销员', 'null', '/manager/distribution*');
|
||||
INSERT INTO `li_menu` VALUES (1374916594269945856, 'admin', '2021-03-24 21:50:35', b'0', 'admin', '2021-07-27 16:08:51', NULL, 'sys/slider/slider', 'ios-aperture', 2, 'slider', '1349237129847005184', 'slider', 7.00, '验证码', NULL, '/manager/verificationSource*');
|
||||
INSERT INTO `li_menu` VALUES (1376450531517530112, 'admin', '2021-03-29 03:25:55', b'0', NULL, NULL, NULL, 'Main', 'md-basketball', 1, 'notice', '1367040599596728320', '/', 5.00, '站内信', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1376450662098796544, 'admin', '2021-03-29 03:26:26', b'0', 'admin', '2021-07-27 16:07:23', NULL, 'sys/message/noticeMessageTemplate', 'ios-american-football', 2, 'noticeMessageTemplate', '1376450531517530112', 'noticeMessageTemplate', 1.00, '站内信', NULL, '/manager/noticeMessage*,/manager/message*,/manager/store*,/manager/member*');
|
||||
INSERT INTO `li_menu` VALUES (1376450766817984512, 'admin', '2021-03-29 03:26:51', b'0', 'admin', '2021-03-29 03:27:25', 'null', 'Main', 'md-checkmark', 1, 'sms', '1367040599596728320', '/', 6.00, '短信管理', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1376450876423536640, 'admin', '2021-03-29 03:27:17', b'0', 'admin', '2021-07-27 16:07:29', NULL, 'sys/message/sms', 'ios-timer', 2, 'sms', '1376450766817984512', 'sms', 1.00, '短信', NULL, '/manager/sms*,/manager/member*');
|
||||
INSERT INTO `li_menu` VALUES (1384035281702748160, 'admin', '2021-04-19 14:45:00', b'0', 'admin', '2021-07-27 16:08:18', 'null', 'member/message-manage/weChatMessageManager', 'md-aperture', 2, 'message-manage', '1349237129847005184', 'message-manage', 5.00, '微信消息', 'null', '/manager/message/wechat*,/manager/message/wechatMPMessage*');
|
||||
INSERT INTO `li_menu` VALUES (1403988156444962818, 'admin', '2021-06-13 16:10:36', b'0', 'admin', '2021-07-27 16:04:48', 'null', 'promotion/couponActivity/coupon', '', 2, 'coupon-activity', '1367049214198022144', 'coupon-activity', 0.00, '券活动', 'null', '/manager/promotion/couponActivity*');
|
||||
INSERT INTO `li_menu` VALUES (1407601962899230721, 'admin', '2021-06-23 15:30:35', b'0', 'admin', '2021-07-27 16:05:08', NULL, 'Main', '', 1, 'liveManage', '1367040067201138688', '/', 2.00, '直播管理', NULL, '/manager/broadcast*');
|
||||
INSERT INTO `li_menu` VALUES (1407602049759072258, 'admin', '2021-06-23 15:30:55', b'0', NULL, NULL, NULL, 'promotion/live/live', '', 2, 'live', '1407601962899230721', 'live', 1.00, '直播管理', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1407602441964244994, 'admin', '2021-06-23 15:32:29', b'0', NULL, NULL, NULL, 'Main', '', 1, 'pointManage', '1367040067201138688', '/', 3.00, '积分活动', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1407602516912263170, 'admin', '2021-06-23 15:32:47', b'0', 'admin', '2021-07-27 16:05:14', NULL, 'promotion/pointsGoods/pointsGoods', '', 2, 'pointsGoods', '1407602441964244994', 'pointsGoods', 1.00, '积分商品', NULL, '/manager/promotion/pointsGoods*,/manager/goods*');
|
||||
INSERT INTO `li_menu` VALUES (1407602673334636546, 'admin', '2021-06-23 15:33:24', b'0', 'admin', '2021-07-27 16:05:18', NULL, 'promotion/pointsGoodsCategory/pointsGoodsCategory', '', 2, 'pointsGoodsCategory', '1407602441964244994', 'pointsGoodsCategory', 2.00, '积分分类', NULL, '/manager/promotion/pointsGoodsCategory*');
|
||||
INSERT INTO `li_menu` VALUES (1410862675914764290, 'admin', '2021-07-02 15:27:29', b'0', 'admin', '2021-07-27 16:06:26', 'null', 'distribution/distributionCash', '', 2, 'distributionCash', '1374173575405109248', 'distributionCash', 5.00, '分销提现', 'null', '/manager/distribution/cash*');
|
||||
INSERT INTO `li_menu` VALUES (1419926569920536578, 'admin', '2021-07-27 15:44:10', b'0', 'admin', '2021-07-27 16:07:10', NULL, 'customWords/index', NULL, 2, 'customWords', '1367050250249830400', 'customWords', 4.00, 'ES分词', NULL, '/manager/manager/custom-words*');
|
||||
COMMIT;
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
/** 新增会员获的总积分 **/
|
||||
ALTER TABLE li_member ADD total_point bigint ( 20 ) DEFAULT 0 COMMENT '积分总数量';
|
@ -1,3 +1,5 @@
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
<p align="center" >
|
||||
<img src="https://www.xuxueli.com/doc/static/xxl-job/images/xxl-logo.jpg" width="150">
|
||||
<h3 align="center">XXL-JOB</h3>
|
||||
@ -32,6 +34,7 @@
|
||||
</p>
|
||||
|
||||
|
||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
||||
## Introduction
|
||||
XXL-JOB is a distributed task scheduling framework.
|
||||
It's core design goal is to develop quickly and learn simple, lightweight, and easy to expand.
|
||||
|
@ -23,9 +23,15 @@ mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml
|
||||
#mybatis.type-aliases-package=com.xxl.job.admin.core.model
|
||||
|
||||
### xxl-job, datasource
|
||||
<<<<<<< HEAD
|
||||
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=zyt_shop
|
||||
spring.datasource.password=Gb84505016@zytshop
|
||||
=======
|
||||
spring.datasource.url=jdbc:mysql://192.168.0.106:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
|
||||
spring.datasource.username=root
|
||||
spring.datasource.password=lilishop
|
||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
||||
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
|
||||
|
||||
### datasource-pool
|
||||
|
Loading…
x
Reference in New Issue
Block a user