1、roll平台 mm图片api实现

pull/254/head
xjs 4 years ago
parent 7a5f4afb0c
commit 1d448587bf

@ -58,6 +58,8 @@ public class ApiConst {
public static final String ROLL_GARBAGE_SORTING = "ROLL-垃圾分类"; public static final String ROLL_GARBAGE_SORTING = "ROLL-垃圾分类";
public static final String ROLL_BEAUTY_PICTURE = "ROLL-美女图片";
//-------------------url------------------------------ //-------------------url------------------------------
@ -120,7 +122,12 @@ public class ApiConst {
/** /**
* https://www.mxnzp.com/doc/detail?id=14 * https://www.mxnzp.com/doc/detail?id=14
*/ */
public static final String ROLL_GARBAGE_SORTING_URL = "https://www.mxnzp.com/api/rubbish/type"; public static final String ROLL_GARBAGE_SORTING_URL = "http://www.mxnzp.com/api/rubbish/type";
/**
* https://www.mxnzp.com/doc/detail?id=15
*/
public static final String ROLL_BEAUTY_PICTURE_URL = "https://www.mxnzp.com/api/image/girl/list/random";
@ -144,6 +151,10 @@ public class ApiConst {
* rollcode * rollcode
*/ */
public static final Integer ROLL_CODE_SUCCESS = 1; public static final Integer ROLL_CODE_SUCCESS = 1;
/**
* rollcode
*/
public static final Integer ROLL_CODE_ERROR = 0;
/** /**
* speedtestcode * speedtestcode
*/ */

@ -76,6 +76,14 @@ public class ApiToolsController {
return R.ok(apiToolsService.getGarbageSorting(name)); return R.ok(apiToolsService.getGarbageSorting(name));
} }
@GetMapping("beautypicture")
@ApiOperation("获取mm图片信息")
@Log(title = "获取mm图片分类")
public R<List<ApiBeautyPicture>> getBeautyPictureApiData() {
return R.ok(apiToolsService.getBeautyPicture());
}

@ -0,0 +1,34 @@
package com.xjs.apitools.domain;
import lombok.Data;
import java.io.Serializable;
/**
* api mm
*
* @author xiejs
* @since 2022-01-19
*/
@Data
public class ApiBeautyPicture implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private String imageUrl;
/**
*
*/
private String imageSize;
/**
*
*/
private String imageFileLength;
}

@ -0,0 +1,51 @@
package com.xjs.apitools.factory.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xjs.apitools.domain.ApiBeautyPicture;
import com.xjs.apitools.domain.RequestBody;
import com.xjs.apitools.factory.ApiToolsFactory;
import com.xjs.common.client.api.roll.RollBeautyPictureFeignClient;
import com.xjs.config.RollProperties;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.stream.Collectors;
import static com.xjs.consts.ApiConst.DEMOTE_ERROR;
import static com.xjs.consts.ApiConst.ROLL_CODE_SUCCESS;
/**
* rollmmapi
*
* @author xiejs
* @since 2022-01-19
*/
@Component
@Log4j2
public class RollBeautyPictureFactory implements ApiToolsFactory<ApiBeautyPicture, Object> {
@Autowired
private RollProperties rollProperties;
@Autowired
private RollBeautyPictureFeignClient rollBeautyPictureFeignClient;
@Override
public List<ApiBeautyPicture> apiDataList() {
RequestBody requestBody = new RequestBody();
requestBody.setApp_secret(rollProperties.getApp_secret());
requestBody.setApp_id(rollProperties.getApp_id());
JSONObject jsonObject = rollBeautyPictureFeignClient.beautyPictureApi(requestBody);
if (!jsonObject.containsKey(DEMOTE_ERROR) && jsonObject.getInteger("code") == ROLL_CODE_SUCCESS.intValue()) {
JSONArray jsonArrayData = jsonObject.getJSONArray("data");
return jsonArrayData.stream().map(data -> {
JSONObject jsonData = (JSONObject) data;
return jsonData.toJavaObject(ApiBeautyPicture.class);
}).collect(Collectors.toList());
}
return null;
}
}

@ -6,14 +6,15 @@ import com.xjs.apitools.domain.RequestBody;
import com.xjs.apitools.factory.ApiToolsFactory; import com.xjs.apitools.factory.ApiToolsFactory;
import com.xjs.common.client.api.roll.RollWeatherFeignClient; import com.xjs.common.client.api.roll.RollWeatherFeignClient;
import com.xjs.config.RollProperties; import com.xjs.config.RollProperties;
import com.xjs.exception.ApiException;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import static com.xjs.consts.ApiConst.DEMOTE_ERROR; import static com.xjs.consts.ApiConst.*;
import static com.xjs.consts.ApiConst.ROLL_CODE_SUCCESS;
/** /**
* rollapi
* @author xiejs * @author xiejs
* @since 2022-01-18 * @since 2022-01-18
*/ */
@ -35,6 +36,8 @@ public class RollForecastWeatherFactory implements ApiToolsFactory<ApiForecastWe
if (!jsonObject.containsKey(DEMOTE_ERROR) && jsonObject.getInteger("code") == ROLL_CODE_SUCCESS.intValue()) { if (!jsonObject.containsKey(DEMOTE_ERROR) && jsonObject.getInteger("code") == ROLL_CODE_SUCCESS.intValue()) {
JSONObject jsonData = jsonObject.getJSONObject("data"); JSONObject jsonData = jsonObject.getJSONObject("data");
return jsonData.toJavaObject(ApiForecastWeather.class); return jsonData.toJavaObject(ApiForecastWeather.class);
}else if (jsonObject.getInteger("code") == ROLL_CODE_ERROR.intValue()) {
throw new ApiException("未找到对应城市,请检查后重试");
} }
return null; return null;
} }

@ -6,12 +6,12 @@ import com.xjs.apitools.domain.RequestBody;
import com.xjs.apitools.factory.ApiToolsFactory; import com.xjs.apitools.factory.ApiToolsFactory;
import com.xjs.common.client.api.roll.RollGarbageSortingDeignClient; import com.xjs.common.client.api.roll.RollGarbageSortingDeignClient;
import com.xjs.config.RollProperties; import com.xjs.config.RollProperties;
import com.xjs.exception.ApiException;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import static com.xjs.consts.ApiConst.DEMOTE_ERROR; import static com.xjs.consts.ApiConst.*;
import static com.xjs.consts.ApiConst.ROLL_CODE_SUCCESS;
/** /**
* rollapi * rollapi
@ -36,6 +36,8 @@ public class RollGarbageSortingFactory implements ApiToolsFactory<ApiGarbageSort
if (!jsonObject.containsKey(DEMOTE_ERROR) && jsonObject.getInteger("code") == ROLL_CODE_SUCCESS.intValue()) { if (!jsonObject.containsKey(DEMOTE_ERROR) && jsonObject.getInteger("code") == ROLL_CODE_SUCCESS.intValue()) {
JSONObject jsonData = jsonObject.getJSONObject("data"); JSONObject jsonData = jsonObject.getJSONObject("data");
return jsonData.toJavaObject(ApiGarbageSorting.class); return jsonData.toJavaObject(ApiGarbageSorting.class);
} else if (jsonObject.getInteger("code") == ROLL_CODE_ERROR.intValue()) {
throw new ApiException("未搜索到相关物品垃圾分类信息,该关键词已上报,感谢您的使用");
} }
return null; return null;
} }

@ -6,12 +6,12 @@ import com.xjs.apitools.domain.RequestBody;
import com.xjs.apitools.factory.ApiToolsFactory; import com.xjs.apitools.factory.ApiToolsFactory;
import com.xjs.common.client.api.roll.RollWeatherFeignClient; import com.xjs.common.client.api.roll.RollWeatherFeignClient;
import com.xjs.config.RollProperties; import com.xjs.config.RollProperties;
import com.xjs.exception.ApiException;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import static com.xjs.consts.ApiConst.DEMOTE_ERROR; import static com.xjs.consts.ApiConst.*;
import static com.xjs.consts.ApiConst.ROLL_CODE_SUCCESS;
/** /**
* rollapi * rollapi
@ -36,6 +36,8 @@ public class RollNowWeatherFactory implements ApiToolsFactory<ApiNowWeather, Req
if (!jsonObject.containsKey(DEMOTE_ERROR) && jsonObject.getInteger("code") == ROLL_CODE_SUCCESS.intValue()) { if (!jsonObject.containsKey(DEMOTE_ERROR) && jsonObject.getInteger("code") == ROLL_CODE_SUCCESS.intValue()) {
JSONObject jsonData = jsonObject.getJSONObject("data"); JSONObject jsonData = jsonObject.getJSONObject("data");
return jsonData.toJavaObject(ApiNowWeather.class); return jsonData.toJavaObject(ApiNowWeather.class);
}else if (jsonObject.getInteger("code") == ROLL_CODE_ERROR.intValue()) {
throw new ApiException("未找到对应城市,请检查后重试");
} }
return null; return null;
} }

@ -49,5 +49,12 @@ public interface ApiToolsService {
ApiGarbageSorting getGarbageSorting(String name); ApiGarbageSorting getGarbageSorting(String name);
/**
* mm
* @return ApiBeautyPicture
*/
List<ApiBeautyPicture> getBeautyPicture();
} }

@ -1,5 +1,6 @@
package com.xjs.apitools.service.impl; package com.xjs.apitools.service.impl;
import com.ruoyi.common.core.utils.StringUtils;
import com.xjs.apitools.domain.*; import com.xjs.apitools.domain.*;
import com.xjs.apitools.factory.ApiToolsFactory; import com.xjs.apitools.factory.ApiToolsFactory;
import com.xjs.apitools.factory.impl.*; import com.xjs.apitools.factory.impl.*;
@ -8,6 +9,8 @@ import com.xjs.exception.ApiException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
@ -22,11 +25,17 @@ import java.util.stream.Collectors;
@Service @Service
public class ApiToolsServiceImpl implements ApiToolsService { public class ApiToolsServiceImpl implements ApiToolsService {
/**
*
*/
public static final String KB= "KB";
private ApiToolsFactory<ApiHoliday, Object> holidayFactory; private ApiToolsFactory<ApiHoliday, Object> holidayFactory;
private ApiToolsFactory<ApiMobileBelong, RequestBody> mobileBelongFactory; private ApiToolsFactory<ApiMobileBelong, RequestBody> mobileBelongFactory;
private ApiToolsFactory<ApiNowWeather, RequestBody> nowWeatherFactory; private ApiToolsFactory<ApiNowWeather, RequestBody> nowWeatherFactory;
private ApiToolsFactory<ApiForecastWeather, RequestBody> forecastWeatherFactory; private ApiToolsFactory<ApiForecastWeather, RequestBody> forecastWeatherFactory;
private ApiToolsFactory<ApiGarbageSorting, RequestBody> garbageSortingFactory; private ApiToolsFactory<ApiGarbageSorting, RequestBody> garbageSortingFactory;
private ApiToolsFactory<ApiBeautyPicture, Object> beautyPictureFactory;
@Autowired @Autowired
public void setHolidayFactory(RollHolidayFactory rollHolidayFactory) { public void setHolidayFactory(RollHolidayFactory rollHolidayFactory) {
@ -53,6 +62,11 @@ public class ApiToolsServiceImpl implements ApiToolsService {
this.garbageSortingFactory = rollGarbageSortingFactory; this.garbageSortingFactory = rollGarbageSortingFactory;
} }
@Autowired
public void setBeautyPictureFactory(RollBeautyPictureFactory rollBeautyPictureFactory) {
this.beautyPictureFactory = rollBeautyPictureFactory;
}
@Override @Override
public List<ApiHoliday> getApiHolidayList() { public List<ApiHoliday> getApiHolidayList() {
@ -100,4 +114,19 @@ public class ApiToolsServiceImpl implements ApiToolsService {
return Optional.ofNullable(garbageSortingFactory.apiData(requestBody)) return Optional.ofNullable(garbageSortingFactory.apiData(requestBody))
.orElseThrow(ApiException::new); .orElseThrow(ApiException::new);
} }
@Override
public List<ApiBeautyPicture> getBeautyPicture() {
List<ApiBeautyPicture> beautyPictureList = Optional.ofNullable(beautyPictureFactory.apiDataList())
.orElseThrow(ApiException::new);
beautyPictureList.forEach(bp ->{
String imageFileLength = bp.getImageFileLength();
if (StringUtils.isNotEmpty(imageFileLength)) {
BigDecimal decimal = new BigDecimal(imageFileLength);
BigDecimal divide = decimal.divide(new BigDecimal(1024), 0, RoundingMode.HALF_UP);
bp.setImageFileLength(divide.toPlainString()+KB);
}
});
return beautyPictureList;
}
} }

@ -0,0 +1,28 @@
package com.xjs.common.client.api.roll;
import com.alibaba.fastjson.JSONObject;
import com.xjs.annotation.ApiLog;
import com.xjs.apitools.domain.RequestBody;
import com.xjs.common.client.factory.RollBeautyPictureFeignFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.GetMapping;
import static com.xjs.consts.ApiConst.ROLL_BEAUTY_PICTURE;
import static com.xjs.consts.ApiConst.ROLL_BEAUTY_PICTURE_URL;
/**
* roll mmapifeign
* @author xiejs
* @since 2022-01-19
*/
@FeignClient(name = "rollBeautyPicture", url = ROLL_BEAUTY_PICTURE_URL, fallbackFactory = RollBeautyPictureFeignFactory.class)
public interface RollBeautyPictureFeignClient {
@GetMapping()
@ApiLog(name = ROLL_BEAUTY_PICTURE,
url = ROLL_BEAUTY_PICTURE_URL,
method = "Get")
JSONObject beautyPictureApi(@SpringQueryMap RequestBody requestBody);
}

@ -0,0 +1,29 @@
package com.xjs.common.client.factory;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.domain.R;
import com.xjs.common.client.api.roll.RollBeautyPictureFeignClient;
import lombok.extern.log4j.Log4j2;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import static com.xjs.consts.ApiConst.DEMOTE_ERROR;
/**
* roll mmapifeign
* @author xiejs
* @since 2022-01-19
*/
@Component
@Log4j2
public class RollBeautyPictureFeignFactory implements FallbackFactory<RollBeautyPictureFeignClient> {
@Override
public RollBeautyPictureFeignClient create(Throwable cause) {
log.error("api模块roll mm图片服务调用失败:{},执行降级处理", cause.getMessage());
return requestBody -> {
JSONObject jsonObject = new JSONObject();
jsonObject.put(DEMOTE_ERROR, R.FAIL);
return jsonObject;
};
}
}
Loading…
Cancel
Save