diff --git a/src/main/java/net/irext/server/service/IRPrivateServerApplication.java b/src/main/java/net/irext/server/service/IRPrivateServerApplication.java index 2a00e91..3686423 100644 --- a/src/main/java/net/irext/server/service/IRPrivateServerApplication.java +++ b/src/main/java/net/irext/server/service/IRPrivateServerApplication.java @@ -1,8 +1,5 @@ package net.irext.server.service; -import net.irext.server.service.model.Category; -import net.irext.server.service.model.RemoteIndex; -import org.apache.ibatis.type.MappedTypes; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/src/main/java/net/irext/server/service/businesslogic/IndexingLogic.java b/src/main/java/net/irext/server/service/businesslogic/IndexingLogic.java index d2d0c98..daec5d4 100644 --- a/src/main/java/net/irext/server/service/businesslogic/IndexingLogic.java +++ b/src/main/java/net/irext/server/service/businesslogic/IndexingLogic.java @@ -1,9 +1,8 @@ package net.irext.server.service.businesslogic; -import net.irext.server.service.mapper.CategoryMapper; -import net.irext.server.service.mapper.RemoteIndexMapper; -import net.irext.server.service.model.Category; -import net.irext.server.service.model.RemoteIndex; +import net.irext.server.service.Constants; +import net.irext.server.service.mapper.*; +import net.irext.server.service.model.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -25,6 +24,15 @@ public class IndexingLogic { @Autowired private CategoryMapper categoryMapper; + @Autowired + private BrandMapper brandMapper; + + @Autowired + private CityMapper cityMapper; + + @Autowired + private OperatorMapper operatorMapper; + @Autowired private RemoteIndexMapper remoteIndexMapper; @@ -37,6 +45,42 @@ public class IndexingLogic { } public List listCategories(int lang, int from, int count) { - return categoryMapper.listCategories(from, count); + List categoryList = categoryMapper.listCategories(from, count); + if (lang == Constants.LANG_EN) { + for (Category category : categoryList) { + category.setName(category.getNameEn()); + } + } else if (lang == Constants.LANG_TW_CN) { + for (Category category : categoryList) { + category.setName(category.getNameTw()); + } + } + return categoryList; + } + + public List listBrands(int lang, int categoryId, int from, int count) { + List brandList = brandMapper.listBrands(categoryId, from, count); + if (lang == Constants.LANG_EN) { + for (Brand brand : brandList) { + brand.setName(brand.getNameEn()); + } + } else if (lang == Constants.LANG_TW_CN) { + for (Brand brand : brandList) { + brand.setName(brand.getNameTw()); + } + } + return brandList; + } + + public List listProvinces() { + return cityMapper.listProvinces(); + } + + public List listCities(String provincePrefix) { + return cityMapper.listCities(provincePrefix); + } + + public List listOperators(String cityCode) { + return operatorMapper.listOperators(cityCode); } } diff --git a/src/main/java/net/irext/server/service/mapper/BrandMapper.java b/src/main/java/net/irext/server/service/mapper/BrandMapper.java new file mode 100644 index 0000000..2800ef0 --- /dev/null +++ b/src/main/java/net/irext/server/service/mapper/BrandMapper.java @@ -0,0 +1,25 @@ +package net.irext.server.service.mapper; + +import net.irext.server.service.model.Brand; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.ResultMap; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * Filename: BrandMapper.java + * Revised: Date: 2019-06-21 + * Revision: Revision: 1.0 + *

+ * Description: BrandMapper + *

+ * Revision log: + * 2019-06-21: created by strawmanbobi + */ +@Mapper +public interface BrandMapper { + @Select("SELECT * FROM brand WHERE status = 1 AND category_id = #{categoryId} ORDER BY id LIMIT #{from}, #{count}") + @ResultMap("BaseResultMap") + List listBrands(int categoryId, int from, int count); +} diff --git a/src/main/java/net/irext/server/service/mapper/CityMapper.java b/src/main/java/net/irext/server/service/mapper/CityMapper.java new file mode 100644 index 0000000..1d93ba9 --- /dev/null +++ b/src/main/java/net/irext/server/service/mapper/CityMapper.java @@ -0,0 +1,29 @@ +package net.irext.server.service.mapper; + +import net.irext.server.service.model.City; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.ResultMap; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * Filename: CityMapper.java + * Revised: Date: 2019-06-21 + * Revision: Revision: 1.0 + *

+ * Description: CityMapper + *

+ * Revision log: + * 2019-06-21: created by strawmanbobi + */ +@Mapper +public interface CityMapper { + @Select("SELECT * FROM city WHERE code LIKE '__0000'") + @ResultMap("BaseResultMap") + List listProvinces(); + + @Select("SELECT * FROM city WHERE code like '#{provincePrefix}__00' and code not like '__0000'") + @ResultMap("BaseResultMap") + List listCities(String provincePrefix); +} diff --git a/src/main/java/net/irext/server/service/mapper/OperatorMapper.java b/src/main/java/net/irext/server/service/mapper/OperatorMapper.java new file mode 100644 index 0000000..14d56e7 --- /dev/null +++ b/src/main/java/net/irext/server/service/mapper/OperatorMapper.java @@ -0,0 +1,25 @@ +package net.irext.server.service.mapper; + +import net.irext.server.service.model.StbOperator; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.ResultMap; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * Filename: OperatorMapper.java + * Revised: Date: 2019-06-21 + * Revision: Revision: 1.0 + *

+ * Description: OperatorMapper + *

+ * Revision log: + * 2019-06-21: created by strawmanbobi + */ +@Mapper +public interface OperatorMapper { + @Select("SELECT * FROM stb_operator WHERE city_code = #{cityCode}") + @ResultMap("BaseResultMap") + List listOperators(String cityCode); +} diff --git a/src/main/java/net/irext/server/service/restapi/IRIndexingService.java b/src/main/java/net/irext/server/service/restapi/IRIndexingService.java index e4dc08d..59f34d4 100644 --- a/src/main/java/net/irext/server/service/restapi/IRIndexingService.java +++ b/src/main/java/net/irext/server/service/restapi/IRIndexingService.java @@ -3,7 +3,10 @@ package net.irext.server.service.restapi; import net.irext.server.service.Constants; import net.irext.server.service.businesslogic.IndexingLogic; import net.irext.server.service.mapper.RemoteIndexMapper; +import net.irext.server.service.model.Brand; import net.irext.server.service.model.Category; +import net.irext.server.service.model.City; +import net.irext.server.service.model.StbOperator; import net.irext.server.service.request.*; import net.irext.server.service.response.*; import net.irext.server.service.restapi.base.AbstractBaseService; @@ -56,15 +59,7 @@ public class IRIndexingService extends AbstractBaseService { int count = listCategoriesRequest.getCount(); int lang = Constants.LANG_ZH_CN; - if (null != userLang) { - if (userLang.equals("en-US")) { - lang = Constants.LANG_EN; - } else if (userLang.equals("zh-TW")) { - lang = Constants.LANG_TW_CN; - } else { - lang = Constants.LANG_ZH_CN; - } - } + lang = getLanguage(userLang); CategoriesResponse response = validateToken(id, token, CategoriesResponse.class); if (response.getStatus().getCode() == Constants.ERROR_CODE_AUTH_FAILURE) { @@ -87,4 +82,120 @@ public class IRIndexingService extends AbstractBaseService { } } + @PostMapping("/list_brands") + public BrandsResponse listBrands(HttpServletRequest request, + @HeaderParam("user-lang") String userLang, + @RequestBody ListBrandsRequest listBrandsRequest) { + try { + int id = listBrandsRequest.getId(); + String token = listBrandsRequest.getToken(); + int categoryId = listBrandsRequest.getCategoryId(); + int from = listBrandsRequest.getFrom(); + int count = listBrandsRequest.getCount(); + int lang = Constants.LANG_ZH_CN; + + lang = getLanguage(userLang); + + BrandsResponse response = validateToken(id, token, BrandsResponse.class); + if (response.getStatus().getCode() == Constants.ERROR_CODE_AUTH_FAILURE) { + return response; + } + + List brandList = indexingLogic.listBrands(lang, categoryId, from, count); + + if (brandList != null) { + response.getStatus().setCode(Constants.ERROR_CODE_SUCCESS); + response.setEntity(brandList); + } else { + response.getStatus().setCode(Constants.ERROR_CODE_NETWORK_ERROR); + } + + return response; + } catch (Exception e) { + e.printStackTrace(); + return getExceptionResponse(BrandsResponse.class); + } + } + + @PostMapping("/list_provinces") + public CitiesResponse listProvinces(HttpServletRequest request, + @HeaderParam("user-lang") String userLang, + ListCitiesRequest listCitiesRequest) { + try { + int id = listCitiesRequest.getId(); + String token = listCitiesRequest.getToken(); + + CitiesResponse response = validateToken(id, token, CitiesResponse.class); + if (response.getStatus().getCode() == Constants.ERROR_CODE_AUTH_FAILURE) { + return response; + } + + List cityList = indexingLogic.listProvinces(); + + return response; + } catch (Exception e) { + e.printStackTrace(); + return getExceptionResponse(CitiesResponse.class); + } + } + + @PostMapping("/list_cities") + public CitiesResponse listCities(HttpServletRequest request, + @HeaderParam("user-lang") String userLang, + ListCitiesRequest listCitiesRequest) { + try { + int id = listCitiesRequest.getId(); + String token = listCitiesRequest.getToken(); + String provincePrefix = listCitiesRequest.getProvincePrefix(); + + CitiesResponse response = validateToken(id, token, CitiesResponse.class); + if (response.getStatus().getCode() == Constants.ERROR_CODE_AUTH_FAILURE) { + return response; + } + + List cityList = indexingLogic.listCities(provincePrefix); + + return response; + } catch (Exception e) { + e.printStackTrace(); + return getExceptionResponse(CitiesResponse.class); + } + } + + @PostMapping("/list_operators") + public OperatorsResponse listOperators(HttpServletRequest request, + @HeaderParam("user-lang") String userLang, + ListOperatorsRequest listOperatorsRequest) { + try { + int id = listOperatorsRequest.getId(); + String token = listOperatorsRequest.getToken(); + String cityCode = listOperatorsRequest.getCityCode(); + + OperatorsResponse response = validateToken(id, token, OperatorsResponse.class); + if (response.getStatus().getCode() == Constants.ERROR_CODE_AUTH_FAILURE) { + return response; + } + + List operatorList = indexingLogic.listOperators(cityCode); + + return response; + } catch (Exception e) { + e.printStackTrace(); + return getExceptionResponse(OperatorsResponse.class); + } + } + + private int getLanguage(String userLang) { + int lang = Constants.LANG_ZH_CN; + if (null != userLang) { + if (userLang.equals("en-US")) { + lang = Constants.LANG_EN; + } else if (userLang.equals("zh-TW")) { + lang = Constants.LANG_TW_CN; + } else { + lang = Constants.LANG_ZH_CN; + } + } + return lang; + } } diff --git a/src/main/resources/net/irext/server/service/mapper/BrandMapper.xml b/src/main/resources/net/irext/server/service/mapper/BrandMapper.xml new file mode 100644 index 0000000..ca5e5b5 --- /dev/null +++ b/src/main/resources/net/irext/server/service/mapper/BrandMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/net/irext/server/service/mapper/CityMapper.xml b/src/main/resources/net/irext/server/service/mapper/CityMapper.xml new file mode 100644 index 0000000..00b2646 --- /dev/null +++ b/src/main/resources/net/irext/server/service/mapper/CityMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/net/irext/server/service/mapper/StbOperatorMapper.xml b/src/main/resources/net/irext/server/service/mapper/StbOperatorMapper.xml new file mode 100644 index 0000000..3740789 --- /dev/null +++ b/src/main/resources/net/irext/server/service/mapper/StbOperatorMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + \ No newline at end of file