//package com.iotechn.unimall.admin.api.search;
//
//import com.iotechn.unimall.biz.service.product.ProductBizService;
//import com.iotechn.unimall.core.exception.AdminServiceException;
//import com.iotechn.unimall.core.exception.ExceptionDefinition;
//import com.iotechn.unimall.core.exception.ServiceException;
//import com.iotechn.unimall.data.domain.SpuDO;
//import com.iotechn.unimall.data.model.Page;
//import com.iotechn.unimall.data.model.SearchEngineInitModel;
//import com.iotechn.unimall.data.search.SearchEngine;
//import com.iotechn.unimall.data.search.exception.SearchEngineException;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.util.Arrays;
//
///**
// * Description:
// * User: rize
// * Date: 2020/8/15
// * Time: 11:22
// */
//@Service("adminSearchService")
//public class AdminSearchServiceImpl implements AdminSearchService {
//
//    @Autowired(required = false)
//    private SearchEngine searchEngine;
//
//    @Autowired
//    private ProductBizService productBizService;
//
//    @Override
//    public String init(Long adminId) throws ServiceException {
//        this.checkSearchEngineExist();
//        if (searchEngine.initAble()) {
//            throw new AdminServiceException(ExceptionDefinition.SEARCH_ENGINE_NOT_SUPPORT_AUTO_INIT);
//        }
//        if (searchEngine.isInit()) {
//            throw new AdminServiceException(ExceptionDefinition.SEARCH_ENGINE_HAS_INITED);
//        }
//        // 传入业务层需要初始化的表
//        SearchEngineInitModel initModel = new SearchEngineInitModel();
//        // 目前只需要传入SPU即可
//        initModel.setTables(Arrays.asList(SpuDO.class));
//        try {
//            searchEngine.init(initModel);
//        } catch (SearchEngineException e) {
//            throw new AdminServiceException(ExceptionDefinition.buildVariableException(ExceptionDefinition.SEARCH_ENGINE_INNER_EXCEPTION, e.getMessage()));
//        }
//        return "ok";
//    }
//
//    @Override
//    public String rebuild(Long adminId) throws ServiceException {
//        this.checkSearchEngineExist();
//        // 1. 目前只需要重建SPU即可
//        Page<SpuDO> page;
//        int pageSize = 100;
//        int pageNo = 1;
//        try {
//            do {
//                page = productBizService.getProductPageFromDB(pageNo, pageSize, null, "id", false, null);
//                searchEngine.dataTransmissionList(page.getItems());
//                pageNo++;
//            } while (page.hasNext());
//        } catch (SearchEngineException e) {
//            throw new AdminServiceException(ExceptionDefinition.buildVariableException(ExceptionDefinition.SEARCH_ENGINE_INNER_EXCEPTION, e.getMessage()));
//        }
//        return "ok";
//    }
//
//    @Override
//    public String reloadProperties(Long adminId) throws ServiceException {
//        this.checkSearchEngineExist();
//        searchEngine.reloadProperties();
//        return "ok";
//    }
//
//    private void checkSearchEngineExist() throws ServiceException {
//        if (searchEngine == null) {
//            throw new AdminServiceException(ExceptionDefinition.SEARCH_ENGINE_NOT_SET);
//        }
//    }
//
//}
