Commit 4c202926 by tc

feature:[none] 优化SQL

parent 254f69a0
......@@ -172,7 +172,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
......@@ -826,11 +825,12 @@ public class BookBizImpl implements BookBiz {
public Map<String, BookDto> listBookGroupByBookIds(MapResourceTotalCountDTO bookDetailDTO) throws BizException {
Map<String, BookDto> bookMap = Maps.newHashMap();
if (null != bookDetailDTO && !ListUtils.isEmpty(bookDetailDTO.getBookIds()) && !ListUtils.isEmpty(bookDetailDTO.getChannelIds()) && !ListUtils.isEmpty(bookDetailDTO.getAdviserIds())) {
Map<String, Object> paramMap = Maps.newHashMap();
paramMap.put("bookIds", bookDetailDTO.getBookIds());
paramMap.put("channelIds", bookDetailDTO.getChannelIds());
paramMap.put("adviserIds", bookDetailDTO.getAdviserIds());
List<BookDto> bookDtos = bookDao.listBookGroupByBookIds(paramMap);
List<BookDto> bookDtos = bookDao.listBookGroupByBookIds(bookDetailDTO.getBookIds(), bookDetailDTO.getChannelIds(),bookDetailDTO.getAdviserIds());
if (!ListUtils.isEmpty(bookDtos)) {
for (BookDto bookDto : bookDtos) {
bookMap.put(bookDto.getBookId() + "_" + bookDto.getChannelId() + "_" + bookDto.getAdviserId(), bookDto);
......
......@@ -91,10 +91,13 @@ public interface BookDao extends BaseDao<Book> {
/**
* 批量获取书籍信息
* @param paramMap
*
* @param bookIds
* @param channelIds
* @param adviserIds
* @return
*/
List<BookDto> listBookGroupByBookIds(Map<String,Object> paramMap);
List<BookDto> listBookGroupByBookIds(List<Long>bookIds,List<Long>channelIds,List<Long>adviserIds);
/**
* 获取详细信息
......
......@@ -15,7 +15,10 @@ import com.pcloud.book.book.vo.BookSaleVO;
import com.pcloud.book.book.vo.SearchBookVO;
import com.pcloud.book.book.dto.BookUniqueNumberDTO;
import com.pcloud.book.es.entity.ESBookAndAdviser;
import com.pcloud.book.group.vo.BookGroupServeCountVO;
import com.pcloud.common.core.dao.BaseDaoImpl;
import com.pcloud.common.utils.ListForInSQL;
import com.pcloud.common.utils.ListUtils;
import org.springframework.stereotype.Repository;
import java.util.HashMap;
......@@ -94,8 +97,17 @@ public class BookDaoImpl extends BaseDaoImpl<Book> implements BookDao {
}
@Override
public List<BookDto> listBookGroupByBookIds(Map<String, Object> paramMap) {
return super.getSqlSession().selectList(super.getStatement("listBookGroupByBookIds"), paramMap);
public List<BookDto> listBookGroupByBookIds(List<Long> bookIds, List<Long> channelIds, List<Long> adviserIds) {
return ListUtils.groupList4SQL(new ListForInSQL<BookDto>() {
@Override
public <T> List<T> processSQL(List<Long> list) {
Map<String,Object> map = new HashMap<>();
map.put("bookIds", list);
map.put("channelIds", channelIds);
map.put("adviserIds", adviserIds);
return getSqlSession().selectList(getStatement("listBookGroupByBookIds"), map);
}
}, bookIds);
}
@Override
......
......@@ -24,6 +24,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
/**
......@@ -219,4 +220,5 @@ public class BookProductFacadeImpl implements BookProductFacade {
List<BookProductDto> bookProductDtos = bookProductBiz.list4Adviser(bookId, channelId, adviserId);
return new ResponseDto<List<BookProductDto>>(bookProductDtos == null ? new ArrayList<>() : bookProductDtos);
}
}
......@@ -308,9 +308,6 @@ public class QrcodeSceneConsr {
} catch (BizException e) {
LOGGER.error("【渠道(消)】 获取公众号基本信息,<ERROR>.[getById]:" + e.getMessage(), e);
}
if (null == accountSettingDto){
LOGGER.error("运营平台未配置公众号,channelId=" + channelId);
}
return accountSettingDto;
}
......
......@@ -766,23 +766,12 @@ public class CultivateBizImpl implements CultivateBiz {
@Override
public Integer getRanking(Long wechatUserId) {
Integer ranking=0;
List<Cultivate> list= cultivateDao.getAllOrderByStar();
if(list==null||list.size()==0){
return ranking;
}
for (int i=0;i<=list.size()-1;i++){
Cultivate cultivate = list.get(i);
if(cultivate.getWechatUserId().equals(wechatUserId)){
ranking=i+1;
return ranking;
}
Cultivate cultivate = cultivateDao.getByWechatUserId(wechatUserId);
if(cultivate==null || cultivate.getStar()==0){
int rank =cultivateDao.getAllCounts();
}
return ranking;
int rank = cultivateDao.getRank(cultivate.getStar());
return rank;
}
@Override
......
......@@ -15,4 +15,8 @@ public interface CultivateDao extends BaseDao<Cultivate> {
List<Cultivate> getRandomUserId(Long cultivateId,Long friendCultivateId);
List<Cultivate> getByCultivateIds(List<Long> cultivateIds);
int getRank(Integer star);
int getAllCounts();
}
......@@ -43,4 +43,14 @@ public class CultivateDaoImpl extends BaseDaoImpl<Cultivate> implements Cultivat
map.put("cultivateIds",cultivateIds);
return super.getSessionTemplate().selectList(getStatement("getByCultivateIds"),map);
}
@Override
public int getRank(Integer star) {
return super.getSessionTemplate().selectOne(getStatement("getRank"),star);
}
@Override
public int getAllCounts() {
return super.getSessionTemplate().selectOne(getStatement("getAllCounts"));
}
}
......@@ -10,8 +10,11 @@ import com.pcloud.book.group.dto.TopAgentBookGroupDTO;
import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.entity.QrChangeRecord;
import com.pcloud.book.group.vo.BookGroupAnalysisVO;
import com.pcloud.book.group.vo.BookGroupServeCountVO;
import com.pcloud.common.core.dao.BaseDaoImpl;
import com.pcloud.common.utils.ListForInSQL;
import com.pcloud.common.utils.ListUtils;
import org.springframework.stereotype.Repository;
import java.util.HashMap;
......@@ -47,7 +50,12 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou
*/
@Override
public List<BookGroupDTO> getDTOByIds(List<Long> bookGroupIds) {
return super.getSqlSession().selectList(getStatement("getDTOByIds"), bookGroupIds);
return ListUtils.groupList4SQL(new ListForInSQL<BookGroupDTO>() {
@Override
public <T> List<T> processSQL(List<Long> list) {
return getSessionTemplate().selectList(getStatement("getDTOByIds"), list);
}
}, bookGroupIds);
}
/**
......
......@@ -8,11 +8,12 @@ import com.pcloud.book.group.entity.BookGroupServe;
import com.pcloud.book.group.vo.BookGroupServeCountVO;
import com.pcloud.common.core.dao.BaseDaoImpl;
import com.pcloud.common.utils.ListForInSQL;
import com.pcloud.common.utils.ListUtils;
import org.apache.commons.collections.ArrayStack;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* @Description
......@@ -101,10 +102,19 @@ public class BookGroupServeDaoImpl extends BaseDaoImpl<BookGroupServe> implement
@Override
public List<BookGroupServeCountVO> getServeList4Applet(List<Long> bookIds) {
return ListUtils.groupList4SQL(new ListForInSQL<BookGroupServeCountVO>() {
@Override
public <T> List<T> processSQL(List<Long> list) {
Map<String,Object> map = new HashMap<>();
map.put("bookIds", bookIds);
map.put("bookIds", list);
return getSessionTemplate().selectList(getStatement("getServeList4Applet"), map);
}
}, bookIds);
}
@Override
public Map<String, BookGroupServeCountDTO> mapBookGroupServeCount(List<Long> adviserIds, List<Long> bookIds, List<Long> channelIds) {
......@@ -117,11 +127,28 @@ public class BookGroupServeDaoImpl extends BaseDaoImpl<BookGroupServe> implement
@Override
public Map<String, BookGroupServeCountDTO> mapBookGroupQrcodeServeCount(List<Long> adviserIds, List<Long> bookIds, List<Long> channelIds, Integer joinGroupType) {
Map<String,Object> map = new HashMap<>();
if (bookIds != null && bookIds.size() > 500) {
Map<String, BookGroupServeCountDTO>resultMap = new HashMap<>();
List<List<Long>> lists = ListUtils.groupList(bookIds);
for (List<Long> list : lists) {
Map<String, Object> map = new HashMap<>();
map.put("adviserIds", adviserIds);
map.put("bookIds", list);
map.put("channelIds", channelIds);
map.put("joinGroupType", joinGroupType);
Map<String, BookGroupServeCountDTO> objectObjectMap = getSessionTemplate().selectMap(getStatement("mapBookGroupQrcodeServeCount"), map, "bookChannelAdviserId");
if(objectObjectMap!=null){
resultMap.putAll(objectObjectMap);
}
}
return resultMap;
} else {
Map<String, Object> map = new HashMap<>();
map.put("adviserIds", adviserIds);
map.put("bookIds", bookIds);
map.put("channelIds", channelIds);
map.put("joinGroupType", joinGroupType);
return getSessionTemplate().selectMap(getStatement("mapBookGroupQrcodeServeCount"), map, "bookChannelAdviserId");
}
}
}
......@@ -6,7 +6,7 @@ eureka:
instance:
status-page-url-path: /book/v1.0/swagger-ui.html
client:
register-with-eureka: true #禁止自己当做服务注册
register-with-eureka: false #禁止自己当做服务注册
spring:
application:
......
......@@ -17,6 +17,15 @@
id, wechat_user_id, energy, fish_ball, star, lighten, create_time,update_time,is_home
</sql>
<select id="getRank" resultType="int">
select count(1)+1 from cultivate where star>#{star}
</select>
<select id="getAllCounts" resultType="int">
select count(1) from cultivate
</select>
<insert id="insert" parameterType="com.pcloud.book.cultivate.entity.Cultivate" useGeneratedKeys="true" keyProperty="id">
insert into cultivate
(
......
......@@ -5,6 +5,8 @@ import com.pcloud.book.BookApplication;
import com.pcloud.book.es.biz.ESBookAndAdviserBiz;
import com.pcloud.book.es.biz.impl.IKAnalyzerUtil;
import com.pcloud.book.es.entity.ESBookAndAdviser;
import com.pcloud.book.group.dao.BookGroupServeDao;
import com.pcloud.book.group.vo.BookGroupServeCountVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.StopWatch;
......@@ -15,6 +17,10 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = {BookApplication.class, ESBookAndAdviserBizTest.class})
......@@ -23,6 +29,8 @@ public class ESBookAndAdviserBizTest {
@Autowired
private ESBookAndAdviserBiz esBookAndAdviserBiz;
@Test
public void testes() {
StopWatch sw = new StopWatch();
......
package com.pcloud.book.test;
import com.pcloud.book.BookApplication;
import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dao.BookGroupServeDao;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.vo.BookGroupServeCountVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = {BookApplication.class})
public class SlowSQLTest {
@Autowired
private BookGroupServeDao bookGroupServeDao;
@Autowired
private BookGroupDao bookGroupDao;
@Test
public void testBookGroupServeDao(){
List<Long> bookIds = new ArrayList<>();
bookIds.add(4L);
bookIds.add(5L);
List<BookGroupServeCountVO> serveList4Applet = bookGroupServeDao.getServeList4Applet(bookIds);
List<BookGroupServeCountVO> serveList4Applet1 = bookGroupServeDao.getServeList4Applet(getTestBookIdList());
System.out.println(1);
}
@Test
public void testGetDTOByIds(){
List<BookGroupDTO> dtoByIds = bookGroupDao.getDTOByIds(getTestBookIdList());
}
public static List<Long>getTestBookIdList(){
return TestBookList.getBookIdList();
}
}
......@@ -39,12 +39,20 @@ public class BookKeywordWarehouseBizTest {
@Resource
private AdNewsBiz adNewsBiz;
@Resource
private BookGroupServeDao bookGroupServeDao;
@Test
public void testQuartzAdNewsBiz(){
adNewsBiz.sendAdNews((2L));
}
@Test
public void testBookGroupServeDao(){
bookGroupServeDao.
}
@Test
public void addBookKeyword() {
AddBookKeywordRequestVO vo = new AddBookKeywordRequestVO();
vo.setUserId(1L);
......
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