Commit a8c9383c authored by muhong's avatar muhong

Merge branch 'master' into applet-dev

# Conflicts:
#	ch-dao/src/main/java/com/wwdz/ch/db/domain/Switch.java
parents 0e5e1235 ea39d55e
......@@ -103,13 +103,13 @@ public class ItemController {
}
@GetMapping("/updateUrl")
// @GetMapping("/updateUrl")
public void syn() {
synCoinJob.updateImageUrlOfsSize();
}
@GetMapping("/synToEs")
// @GetMapping("/synToEs")
public void synToEs() {
synCoinJob.synItemToEs();
}
......
......@@ -78,7 +78,7 @@ public class SynItemToEsJob {
logger.info("es中最新数据时间为 {}", DateUtils.toString(time));
CoinRequestDto coinRequestDto = new CoinRequestDto();
coinRequestDto.setPage(1);
coinRequestDto.setLimit(10);
coinRequestDto.setLimit(100);
coinRequestDto.setStartUpdateTime(time);
coinRequestDto.setSortColumn("update_time");
List<Item> itemList = itemDao.findListByPage(coinRequestDto);
......
......@@ -4,6 +4,11 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import lombok.Data;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
/**
* @author shiyu
......
......@@ -92,38 +92,36 @@ public class ItemEsDao {
SOURCE_LIST.forEach(i -> {
sourceQueryList.add(FieldValue.of(i));
});
Query termsQuery = QueryBuilders.terms(s->s.field("source").terms(t->t.value(sourceQueryList)));
Query sourceQuery = QueryBuilders.terms(s->s.field("source").terms(t->t.value(sourceQueryList)));
//展示待处理和已发布状态的商品
List<FieldValue> stateQueryList = new ArrayList<>();
stateQueryList.add(FieldValue.of(1));
stateQueryList.add(FieldValue.of(10));
Query stateQuery = QueryBuilders.terms(s->s.field("state").terms(t->t.value(stateQueryList)));
Query shouldQuery = QueryBuilders.bool(q->q.should(termsQuery, stateQuery));
BoolQuery.Builder build = QueryBuilders.bool().filter(shouldQuery);
BoolQuery.Builder build = QueryBuilders.bool().filter(stateQuery).filter(sourceQuery);
Query wildcardQuery = WildcardQuery.of(w->w.field("images").value("*_*"))._toQuery();
build.filter(wildcardQuery);
Query isDeleteQuery = TermQuery.of(t->t.field("isDeleted").value(false))._toQuery();
build.filter(isDeleteQuery);
if(StringUtils.hasLength(esSearchRequestDto.getContent())) {
Query matchQuery = MatchQuery.of(m -> m
.field("name")
.query(esSearchRequestDto.getContent())
)._toQuery();
build.must(matchQuery);
builder.from(from);
builder.query(build.build()._toQuery());
builder.from(from);
} else {
Random random = new Random();
FunctionScoreQuery functionScoreQuery = FunctionScoreQuery.of(a->a.query(build.build()._toQuery()).boostMode(FunctionBoostMode.Replace)
.functions(b->b.randomScore(s->s.field("id").seed(String.valueOf(random.nextDouble())))));
builder.query(functionScoreQuery._toQuery());
}
Query wildcardQuery = WildcardQuery.of(w->w.field("images").value("*_*"))._toQuery();
build.filter(wildcardQuery);
Query isDeleteQuery = TermQuery.of(t->t.field("isDeleted").value(false))._toQuery();
build.filter(isDeleteQuery);
builder.size(size);
SearchRequest searchRequest = builder.build();
logger.info("查询语句 : {}", searchRequest.toString());
logger.info("es查询语句 : {}", searchRequest.toString());
SearchResponse<ItemOfEs> searchResponse = elasticsearchClient.search(searchRequest, ItemOfEs.class);
long total = searchResponse.hits().total().value();
logger.info("总数据量 : {}, 耗时 : {}", total, searchResponse.took());
......@@ -149,8 +147,7 @@ public class ItemEsDao {
List<BulkOperation> opts = new ArrayList<>();
for (Item item : itemList) {
CreateOperation<Item> optObj = new CreateOperation.Builder<Item>()
.index("quanku_prod_temp")
// .index(INDEX)
.index(INDEX)
.id(String.valueOf(item.getId()))
.document(item)
.build();
......
......@@ -7,4 +7,9 @@ import lombok.Data;
public class QueryPriceRequestDto implements Entity {
private Integer cid;
/**
* 时间跨度
*/
private Integer timeSpan;
}
......@@ -10,15 +10,14 @@ import com.wwdz.ch.db.dao.CategoryDao;
import com.wwdz.ch.db.domain.BidRecord;
import com.wwdz.ch.db.domain.Category;
import com.wwdz.ch.db.dto.request.BidRecordRequestDto;
import com.wwdz.ch.wx.entity.request.QueryPriceRequestDto;
import com.wwdz.ch.wx.entity.vo.BidRecordVo;
import com.wwdz.ch.wx.entity.vo.CategoryVo;
import com.wwdz.ch.wx.service.QueryPriceService;
import com.xxdxxs.utils.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
......@@ -40,21 +39,26 @@ public class QueryPriceServiceImpl implements QueryPriceService {
@Override
public Result queryPrice(Integer id) {
public Result queryPrice(QueryPriceRequestDto queryPriceRequestDto) {
try {
Integer id = queryPriceRequestDto.getCid();
Category category = categoryDao.findById(id);
//成交记录折线图
BidRecordRequestDto dto = new BidRecordRequestDto();
LocalDate now = LocalDate.now();
int nowMills = (int) now.atStartOfDay(ZoneOffset.UTC).toEpochSecond();
//时间跨度参数为空,默认为近一年, 时间跨度不等于1的时候,代表历史所有数据,则不设置开始时间
if (queryPriceRequestDto.getTimeSpan() == null || queryPriceRequestDto.getTimeSpan() == 1) {
LocalDate starTime = now.minusYears(1);
int startMills = (int) starTime.atStartOfDay(ZoneOffset.UTC).toEpochSecond();
dto.setCid(id);
dto.setStartBidTime(startMills);
}
dto.setCid(id);
dto.setEndBidTime(nowMills);
List<BidRecord> bidRecordList = bidRecordDao.queryByCid(dto);
List<String> xData = new ArrayList<>();
List<Object> valueList = new ArrayList<>();
double totalPrice = 0;
for (BidRecord bidRecord : bidRecordList) {
int bidTime = bidRecord.getBidTime();
Instant instant = Instant.ofEpochSecond(bidTime);
......@@ -62,14 +66,17 @@ public class QueryPriceServiceImpl implements QueryPriceService {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String time = date.format(formatter);
xData.add(time);
totalPrice += bidRecord.getPrice() / (double)100;
valueList.add(bidRecord.getPrice() / (double)100 / (double)10000);
}
double averagePrice = totalPrice / bidRecordList.size();
Chart chart = new Chart();
chart.setXData(xData);
chart.setValues(valueList);
Map<String, Object> map = new HashMap<>();
map.put("details", CategoryVo.of(category));
map.put("chart", chart);
map.put("averagePrice", averagePrice);
return Result.success(map);
} catch (Exception e) {
logger.error("查询类目价格详情失败:{}", e);
......
......@@ -2,10 +2,11 @@ package com.wwdz.ch.wx.service;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dto.request.BidRecordRequestDto;
import com.wwdz.ch.wx.entity.request.QueryPriceRequestDto;
public interface QueryPriceService {
Result queryPrice(Integer id);
Result queryPrice(QueryPriceRequestDto dto);
/**
* 查询该子类目的成交记录
......
......@@ -38,7 +38,7 @@ public class QueryPriceController {
if (StringUtils.isEmpty(dto.getCid())) {
return Result.failed(ResultCode.PARAM_ERROR);
}
return queryPriceService.queryPrice(dto.getCid());
return queryPriceService.queryPrice(dto);
}
@ApiOperation(value = "查价成交记录")
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment