Commit ba9f93dd authored by shiyu's avatar shiyu

Merge remote-tracking branch 'origin/master'

parents 3ff97718 97b63558
......@@ -15,6 +15,8 @@ public interface CategoryDao {
Category findByName(String name);
List<Category> queryByName(String name);
List<Category> querySelective(String id, String name, Integer page, Integer size, String sort, String order);
int updateById(Category category);
......
......@@ -13,6 +13,8 @@ public interface ItemDao {
List<Item> findList(CoinRequestDto coinRequestDto);
List<Item> findListNotDeleted(CoinRequestDto coinRequestDto);
List<Item> findListByPage(CoinRequestDto coinRequestDto);
PageInfo<Item> findByPage(CoinRequestDto coinRequestDto);
......
......@@ -58,6 +58,12 @@ public class CategoryDaoImpl implements CategoryDao {
return categoryMapper.selectOneByExample(example);
}
public List<Category> queryByName(String name) {
CategoryExample example = new CategoryExample();
example.or().andNameLike("%" + name + "%").andIsDeletedEqualTo(false);
return categoryMapper.selectByExample(example);
}
public List<Category> querySelective(String id, String name, Integer page, Integer size, String sort,
String order) {
CategoryExample example = new CategoryExample();
......
......@@ -52,6 +52,15 @@ public class ItemDaoImpl implements ItemDao {
return itemMapper.selectByExample(example);
}
@Override
public List<Item> findListNotDeleted(CoinRequestDto coinRequestDto) {
ItemExample example = new ItemExample();
ItemExample.Criteria criteria = example.createCriteria();
JdbcHelper.ifPresent(coinRequestDto.getIds(), criteria::andIdIn);
criteria.andIsDeletedEqualTo(false);
return itemMapper.selectByExampleWithBLOBs(example);
}
@Override
public List<Item> findListByPage(CoinRequestDto coinRequestDto) {
ItemExample example = new ItemExample();
......
......@@ -29,7 +29,9 @@ public class WebMvcConfiguration implements WebMvcConfigurer {
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/wx/user/loginByWx"
, "/wx/user/loginByMobile", "/wx/user/loginRegCaptcha", "/wx/user/updateRegCaptcha", "/wx/item/page", "/wx/item/info", "/wx/favorites/info", "/wx/favorites/itemList");
.excludePathPatterns("/*.html", "/**/*.html", "/**/*.css", "/**/*.js"
, "/wx/user/loginByWx", "/wx/user/loginByMobile", "/wx/user/loginRegCaptcha", "/wx/user/updateRegCaptcha"
, "/wx/item/page", "/wx/item/info", "/wx/item/findNames", "/wx/item/recommend"
, "/wx/favorites/info", "/wx/favorites/itemList");
}
}
......@@ -63,7 +63,7 @@ public class CategoryServiceImpl implements CategoryService {
i --;
}
List<CategoryResponseVo> responseVoList = categoryList.stream()
.map(this::toCategotyResongseVo).collect(Collectors.toList());
.map(this::toCategoryResponseVo).collect(Collectors.toList());
for (CategoryResponseVo vo : responseVoList) {
if (vo.getCid().equals(category.getId())) {
vo.setIsChosen(1);
......@@ -71,10 +71,30 @@ public class CategoryServiceImpl implements CategoryService {
}
return Result.success(convertVoList(responseVoList));
} catch (Exception e) {
return null;
logger.error("搜索分类失败", e);
return Result.failed("搜索分类失败");
}
}
@Override
public Result findNames(CategoryRequestDto dto) {
if (StringUtils.isBlank(dto.getName())) {
return Result.success(new ArrayList<>());
}
try {
return Result.success(categoryDao.queryByName(dto.getName()));
} catch (Exception e) {
logger.error("搜索分类失败", e);
return Result.failed("搜索分类失败");
}
}
/**
* 分类列表树形转换
*
* @param voList
* @return
*/
public List<CategoryResponseVo> convertVoList(List<CategoryResponseVo> voList) {
Map<Integer, CategoryResponseVo> menuMap = new HashMap<>();
CategoryResponseVo root = new CategoryResponseVo();
......@@ -102,7 +122,7 @@ public class CategoryServiceImpl implements CategoryService {
return root.getChild();
}
private CategoryResponseVo toCategotyResongseVo(Category category) {
private CategoryResponseVo toCategoryResponseVo(Category category) {
CategoryResponseVo vo = new CategoryResponseVo();
vo.setCid(category.getId());
vo.setPid(category.getPid());
......
......@@ -9,9 +9,13 @@ import com.wwdz.ch.core.consts.ResultCode;
import com.wwdz.ch.core.storage.QiniuStorage;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.MediaUtil;
import com.wwdz.ch.db.bean.EsPageInfo;
import com.wwdz.ch.db.bean.ItemOfEs;
import com.wwdz.ch.db.dao.*;
import com.wwdz.ch.db.domain.*;
import com.wwdz.ch.db.dto.request.CoinRequestDto;
import com.wwdz.ch.db.dto.request.EsSearchRequestDto;
import com.wwdz.ch.db.es.ItemEsDao;
import com.wwdz.ch.wx.entity.request.ItemRequestDto;
import com.wwdz.ch.wx.entity.vo.AgentTranceResponseVo;
import com.wwdz.ch.wx.entity.vo.ItemResponseVo;
......@@ -39,6 +43,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class ItemServiceImpl implements ItemService {
......@@ -61,6 +66,8 @@ public class ItemServiceImpl implements ItemService {
private QiniuStorage qiniuStorage;
@Autowired
private UserDao userDao;
@Autowired
private ItemEsDao itemEsDao;
@Override
public Result nameList(ItemRequestDto dto) {
......@@ -99,52 +106,68 @@ public class ItemServiceImpl implements ItemService {
@Override
public Result page(ItemRequestDto dto) {
try {
CoinRequestDto coinRequestDto = new CoinRequestDto();
coinRequestDto.setPage(dto.getPage());
coinRequestDto.setLimit(dto.getSize());
coinRequestDto.setIsExcluded(1);
if (StringUtils.isNotBlank(dto.getName())) {
coinRequestDto.setName(dto.getName());
}
PageInfo<Item> page = itemDao.findByPage(coinRequestDto);
PageInfo<AgentTranceResponseVo> result = new PageInfo<>();
result.setPageNum(page.getPageNum());
result.setPageSize(page.getPageSize());
result.setTotal(page.getTotal());
result.setPageNum(dto.getPage());
result.setPageSize(dto.getSize());
result.setTotal(0L);
result.setList(new ArrayList<>());
result.setHasNextPage(page.isHasNextPage());
if (CollectionUtils.isEmpty(page.getList())) {
result.setHasNextPage(false);
EsSearchRequestDto esSearchRequestDto = new EsSearchRequestDto();
esSearchRequestDto.setPage(dto.getPage());
esSearchRequestDto.setSize(dto.getSize());
if (StringUtils.isNotBlank(dto.getName())) {
esSearchRequestDto.setContent(dto.getName());
}
EsPageInfo esPageInfo = itemEsDao.findList(esSearchRequestDto);
if (Objects.isNull(esPageInfo) || CollectionUtils.isEmpty(esPageInfo.getDataList())) {
return Result.success(result);
}
List<Long> ids = esPageInfo.getDataList().stream().map(s -> {
ItemOfEs itemOfEs = (ItemOfEs) s;
return itemOfEs.getId();
}).collect(Collectors.toList());
CoinRequestDto coinRequestDto = new CoinRequestDto();
coinRequestDto.setIds(ids);
List<Item> list = itemDao.findListNotDeleted(coinRequestDto);
if (CollectionUtils.isEmpty(list)) {
return Result.success(result);
}
Map<Long, Item> map = list.stream().collect(Collectors.toMap(Item::getId, s -> s, (k1, k2) -> k2));
result.setTotal(esPageInfo.getTotal());
result.setHasNextPage(esPageInfo.getTotal() == 10000);
List<AgentTranceResponseVo> resultList = new ArrayList<>();
for (Item item : page.getList()) {
esPageInfo.getDataList().forEach(s -> {
ItemResponseVo vo = new ItemResponseVo();
ItemOfEs es = (ItemOfEs) s;
Item item = map.get(es.getId());
// 设置基本信息
vo.setId(item.getId());
vo.setName(item.getName());
vo.setId(es.getId());
vo.setName(es.getName());
vo.setDetail(item.getDetail());
vo.setImages(item.getImages());
vo.setSourceType(item.getSourceType());
// 设置价格
vo.setPrice(getPrice(item.getPrice()));
// 设置图片或视频
vo.setHomePageImage(getImage(item));
vo.setHomePageImage(getImage(es, item));
// 设置是否收藏和是否是自己发布的
vo.setIsCollected(0);
vo.setIsMine(0);
if (!dto.getUserId().equals(0L)) {
vo.setIsCollected(favoritesItemsRelationDao.isCollected(dto.getUserId(), item.getId()) ? 1 : 0);
vo.setIsMine(userItemsRelationDao.isExisted(dto.getUserId(), item.getId()) ? 1 : 0);
vo.setIsCollected(favoritesItemsRelationDao.isCollected(dto.getUserId(), es.getId()) ? 1 : 0);
vo.setIsMine(userItemsRelationDao.isExisted(dto.getUserId(), es.getId()) ? 1 : 0);
}
// 设置收藏数
vo.setCollectCount(getCollectCount(item.getId(), item.getSourceType()));
vo.setCollectCount(getCollectCount(es.getId(), item.getSourceType()));
AgentTranceResponseVo agentTranceResponseVo = new AgentTranceResponseVo();
agentTranceResponseVo.setAgentTraceInfo_("");
agentTranceResponseVo.setViewType(1);
agentTranceResponseVo.setDetail(vo);
resultList.add(agentTranceResponseVo);
}
});
result.setList(resultList);
logger.info("【请求结束】查询首页列表成功");
return Result.success(result);
......@@ -537,13 +560,29 @@ public class ItemServiceImpl implements ItemService {
return null;
}
private Map<String, Object> getImage(Item item) {
private Map<String, Object> getImage(ItemOfEs es, Item item) {
Map<String, Object> homePageMap = new HashMap<>();
String[] image = item.getImages().split(";");
homePageMap.put("url", image[0]);
homePageMap.put("url", "");
homePageMap.put("type", 2);
homePageMap.put("width", "0");
homePageMap.put("height", "0");
if (StringUtils.isNotBlank(es.getTop_image_path())) {
if (es.getTop_image_path().contains("_")) {
homePageMap = getImageMap(es.getTop_image_path());
homePageMap.put("url", es.getTop_image_path());
homePageMap.put("type", 2);
}
} else {
if (StringUtils.isNotBlank(item.getImages())) {
String[] image = item.getImages().split(";");
homePageMap.put("url", image[0]);
if (image[0].contains("_")) {
homePageMap = getImageMap(image[0]);
homePageMap.put("url", image[0]);
homePageMap.put("type", 2);
}
}
}
if (StringUtils.isNotBlank(item.getVideos())) {
String[] vedioImage = item.getVideos().split(";");
if (vedioImage[0].contains(",")) {
......@@ -552,16 +591,93 @@ public class ItemServiceImpl implements ItemService {
homePageMap.put("url", video[1]);
homePageMap.put("type", 1);
}
} else {
if (image[0].contains("_")) {
homePageMap = getImageMap(image[0]);
homePageMap.put("url", image[0]);
homePageMap.put("type", 2);
}
}
return homePageMap;
}
// @Override
// public Result page(ItemRequestDto dto) {
// try {
// CoinRequestDto coinRequestDto = new CoinRequestDto();
// coinRequestDto.setPage(dto.getPage());
// coinRequestDto.setLimit(dto.getSize());
// coinRequestDto.setIsExcluded(1);
// if (StringUtils.isNotBlank(dto.getName())) {
// coinRequestDto.setName(dto.getName());
// }
// PageInfo<Item> page = itemDao.findByPage(coinRequestDto);
// PageInfo<AgentTranceResponseVo> result = new PageInfo<>();
// result.setPageNum(page.getPageNum());
// result.setPageSize(page.getPageSize());
// result.setTotal(page.getTotal());
// result.setList(new ArrayList<>());
// result.setHasNextPage(page.isHasNextPage());
// if (CollectionUtils.isEmpty(page.getList())) {
// return Result.success(result);
// }
// List<AgentTranceResponseVo> resultList = new ArrayList<>();
// for (Item item : page.getList()) {
// ItemResponseVo vo = new ItemResponseVo();
// // 设置基本信息
// vo.setId(item.getId());
// vo.setName(item.getName());
// vo.setDetail(item.getDetail());
// vo.setImages(item.getImages());
// vo.setSourceType(item.getSourceType());
// // 设置价格
// vo.setPrice(getPrice(item.getPrice()));
// // 设置图片或视频
// vo.setHomePageImage(getImage(item));
// // 设置是否收藏和是否是自己发布的
// vo.setIsCollected(0);
// vo.setIsMine(0);
// if (!dto.getUserId().equals(0L)) {
// vo.setIsCollected(favoritesItemsRelationDao.isCollected(dto.getUserId(), item.getId()) ? 1 : 0);
// vo.setIsMine(userItemsRelationDao.isExisted(dto.getUserId(), item.getId()) ? 1 : 0);
// }
// // 设置收藏数
// vo.setCollectCount(getCollectCount(item.getId(), item.getSourceType()));
//
// AgentTranceResponseVo agentTranceResponseVo = new AgentTranceResponseVo();
// agentTranceResponseVo.setAgentTraceInfo_("");
// agentTranceResponseVo.setViewType(1);
// agentTranceResponseVo.setDetail(vo);
// resultList.add(agentTranceResponseVo);
// }
// result.setList(resultList);
// logger.info("【请求结束】查询首页列表成功");
// return Result.success(result);
// } catch (Exception e) {
// logger.error("查询首页列表失败", e);
// return Result.failed("查询首页列表失败");
// }
// }
//
// private Map<String, Object> getImage(Item item) {
// Map<String, Object> homePageMap = new HashMap<>();
// String[] image = item.getImages().split(";");
// homePageMap.put("url", image[0]);
// homePageMap.put("type", 2);
// homePageMap.put("width", "0");
// homePageMap.put("height", "0");
// if (StringUtils.isNotBlank(item.getVideos())) {
// String[] vedioImage = item.getVideos().split(";");
// if (vedioImage[0].contains(",")) {
// String[] video = vedioImage[0].split(",");
// homePageMap = getImageMap(video[1]);
// homePageMap.put("url", video[1]);
// homePageMap.put("type", 1);
// }
// } else {
// if (image[0].contains("_")) {
// homePageMap = getImageMap(image[0]);
// homePageMap.put("url", image[0]);
// homePageMap.put("type", 2);
// }
// }
// return homePageMap;
// }
private Map<String, Object> getImageMap(String image) {
Map<String, Object> map = new HashMap<>();
String[] _image = image.split("_");
......
package com.wwdz.ch.wx.interceptor;
import com.alibaba.fastjson.JSON;
import com.wwdz.ch.wx.service.UserTokenManager;
import com.wwdz.ch.wx.manager.UserTokenManager;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -27,10 +27,7 @@ public class LoginInterceptor implements HandlerInterceptor {
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
logger.info("-------------进入拦截器");
logger.info("请求头名称:" + JSON.toJSONString(request.getHeaderNames()));
String token = request.getHeader("Authorization");
logger.info("token的值是:" + token);
if (StringUtils.isNotBlank(token)) {
if (userTokenManager.checkLogin(token)) {
return true;
......
......@@ -4,7 +4,35 @@ import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.wx.entity.request.CategoryRequestDto;
public interface CategoryService {
/**
* 按level分页查询
*
* @param dto
* @return
*/
Result top(CategoryRequestDto dto);
/**
* 子分类列表查询
*
* @param dto
* @return
*/
Result child(CategoryRequestDto dto);
/**
* 按名称搜索精确匹配返回分类的树形列表
*
* @param dto
* @return
*/
Result find(CategoryRequestDto dto);
/**
* 按名称搜索模糊匹配返回分类列表
*
* @param dto
* @return
*/
Result findNames(CategoryRequestDto dto);
}
......@@ -68,4 +68,10 @@ public class WxCategoryController {
public Result find(@RequestBody CategoryRequestDto dto) {
return categoryService.find(dto);
}
@ApiOperation(value = "名称模糊联想")
@PostMapping(value = "/findNames")
public Result findNames(@RequestBody CategoryRequestDto dto) {
return categoryService.findNames(dto);
}
}
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