@@ -11,6 +11,7 @@ public enum EnumAppType { | |||||
C(2, "C端"), | C(2, "C端"), | ||||
MP_S(3,"公众号-服务号"), | MP_S(3,"公众号-服务号"), | ||||
MP_P(4, "公众号-订阅号"), | MP_P(4, "公众号-订阅号"), | ||||
A(5, "A端"), | |||||
; | ; | ||||
public static EnumAppType getEnum(Integer code) { | public static EnumAppType getEnum(Integer code) { | ||||
@@ -2,6 +2,7 @@ package com.iformall.service; | |||||
import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
import com.iformall.domain.po.TtMerchantPoi; | import com.iformall.domain.po.TtMerchantPoi; | ||||
import com.iformall.domain.po.WxAppinfo; | |||||
/** | /** | ||||
* @author gongbiao | * @author gongbiao | ||||
@@ -20,5 +21,5 @@ public interface TtMerchantPoiService { | |||||
TtMerchantPoi getById(Long id); | TtMerchantPoi getById(Long id); | ||||
boolean addShopMaterial(WxAppinfo appinfo, TtMerchantPoi merchantPoi); | |||||
} | } |
@@ -1,15 +1,26 @@ | |||||
package com.iformall.service.impl; | package com.iformall.service.impl; | ||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||||
import com.github.pagehelper.PageHelper; | import com.github.pagehelper.PageHelper; | ||||
import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
import com.iformall.domain.po.TtMerchantPoi; | import com.iformall.domain.po.TtMerchantPoi; | ||||
import com.iformall.domain.po.WxAppinfo; | |||||
import com.iformall.enums.EnumAppPlat; | |||||
import com.iformall.enums.EnumAppType; | |||||
import com.iformall.mapper.TtMerchantPoiMapper; | import com.iformall.mapper.TtMerchantPoiMapper; | ||||
import com.iformall.mapper.WxAppinfoMapper; | |||||
import com.iformall.service.TtMerchantPoiService; | import com.iformall.service.TtMerchantPoiService; | ||||
import com.iformall.service.toutiao.FmTtOpenService; | |||||
import com.iformall.service.toutiao.api.TtOpenMaService; | |||||
import com.iformall.service.toutiao.api.bean.TtOpenResult; | |||||
import com.iformall.service.toutiao.api.bean.TtOpenShopMaterial; | |||||
import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
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.util.Date; | |||||
/** | /** | ||||
* @author gongbiao | * @author gongbiao | ||||
@@ -22,6 +33,12 @@ public class TtMerchantPoiServiceImpl implements TtMerchantPoiService { | |||||
@Autowired | @Autowired | ||||
TtMerchantPoiMapper ttMerchantPoiMapper; | TtMerchantPoiMapper ttMerchantPoiMapper; | ||||
@Autowired | |||||
WxAppinfoMapper wxAppinfoMapper; | |||||
@Autowired | |||||
protected FmTtOpenService openService; | |||||
@Override | @Override | ||||
public PageInfo<TtMerchantPoi> listAsPage(TtMerchantPoi record, Integer pageIndex, Integer pageSize) { | public PageInfo<TtMerchantPoi> listAsPage(TtMerchantPoi record, Integer pageIndex, Integer pageSize) { | ||||
@@ -33,5 +50,35 @@ public class TtMerchantPoiServiceImpl implements TtMerchantPoiService { | |||||
return ttMerchantPoiMapper.selectById(id); | return ttMerchantPoiMapper.selectById(id); | ||||
} | } | ||||
@Override | |||||
public boolean addShopMaterial(WxAppinfo appinfo, TtMerchantPoi merchantPoi) { | |||||
WxAppinfo appinfoQ = new WxAppinfo(); | |||||
appinfoQ.setTenantId(appinfo.getTenantId()); | |||||
appinfoQ.setPlat(EnumAppPlat.TOUTIAO.getCode()); | |||||
appinfoQ.setType(EnumAppType.A.getCode()); | |||||
WxAppinfo ttopen = wxAppinfoMapper.selectOne(new QueryWrapper<>(appinfoQ)); | |||||
TtOpenShopMaterial shopMaterial = new TtOpenShopMaterial(); | |||||
shopMaterial.setClientKey(ttopen.getAppId()); | |||||
shopMaterial.setSupplierExtId(merchantPoi.getSupplierExtId()); | |||||
shopMaterial.setBizLicencePath(merchantPoi.getBizLicencePath()); | |||||
shopMaterial.setContractPath(merchantPoi.getContractPath()); | |||||
shopMaterial.setQualMaterial(merchantPoi.getQualMaterial()); | |||||
shopMaterial.setExpireTime(merchantPoi.getExpireTime()); | |||||
shopMaterial.setAdditionalQual(merchantPoi.getAdditionalQual()); | |||||
TtOpenMaService openMaService = openService.getTtOpenComponentService().getTtMaServiceByAppid(appinfo.getAppId()); | |||||
TtOpenResult res = openMaService.addShopMaterial(shopMaterial); | |||||
if(res.isSuccess()){ | |||||
merchantPoi.setUpdateDate(new Date()); | |||||
ttMerchantPoiMapper.updateById(merchantPoi); | |||||
return true; | |||||
} | |||||
logger.error("提交商铺资质材料error"+ res.getMessage()); | |||||
return false; | |||||
} | |||||
} | } |
@@ -1,6 +1,7 @@ | |||||
package com.iformall.service.toutiao.api; | package com.iformall.service.toutiao.api; | ||||
import com.iformall.service.toutiao.api.bean.TtOpenResult; | import com.iformall.service.toutiao.api.bean.TtOpenResult; | ||||
import com.iformall.service.toutiao.api.bean.TtOpenShopMaterial; | |||||
import com.iformall.service.toutiao.miniapp.TtMaService; | import com.iformall.service.toutiao.miniapp.TtMaService; | ||||
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; | import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; | ||||
import me.chanjar.weixin.common.error.WxErrorException; | import me.chanjar.weixin.common.error.WxErrorException; | ||||
@@ -237,6 +238,11 @@ public interface TtOpenMaService extends TtMaService { | |||||
*/ | */ | ||||
String API_UPLOAD_MATERIAL = "https://open.microapp.bytedance.com/openapi/v1/microapp/upload_material"; | String API_UPLOAD_MATERIAL = "https://open.microapp.bytedance.com/openapi/v1/microapp/upload_material"; | ||||
/** | |||||
* 提交商铺资质材料 | |||||
*/ | |||||
String API_ADD_SHOP_MATERIAL = "https://open.microapp.bytedance.com/openapi/v1/microapp/operation/add_shop_material"; | |||||
/** | /** | ||||
* 获得小程序的域名配置信息 | * 获得小程序的域名配置信息 | ||||
@@ -490,6 +496,8 @@ public interface TtOpenMaService extends TtMaService { | |||||
String mediaUpload(Integer mediaType, File file) throws WxErrorException; | String mediaUpload(Integer mediaType, File file) throws WxErrorException; | ||||
TtOpenResult addShopMaterial(TtOpenShopMaterial shopMaterial)throws WxErrorException; | |||||
// /** | // /** | ||||
// * 小程序用户隐私保护指引服务 | // * 小程序用户隐私保护指引服务 | ||||
// * | // * | ||||
@@ -14,6 +14,7 @@ public class TtOpenGsonBuilder { | |||||
INSTANCE.registerTypeAdapter(TtOpenNotifyMsg.class, new TtOpenNotifyMsgGsonAdapter()); | INSTANCE.registerTypeAdapter(TtOpenNotifyMsg.class, new TtOpenNotifyMsgGsonAdapter()); | ||||
INSTANCE.registerTypeAdapter(TtOpenAuthorizationInfo.class, new TtOpenAuthorizationInfoGsonAdapter()); | INSTANCE.registerTypeAdapter(TtOpenAuthorizationInfo.class, new TtOpenAuthorizationInfoGsonAdapter()); | ||||
INSTANCE.registerTypeAdapter(TtOpenRetrieveCode.class, new TtOpenRetrieveCodeGsonAdapter()); | INSTANCE.registerTypeAdapter(TtOpenRetrieveCode.class, new TtOpenRetrieveCodeGsonAdapter()); | ||||
INSTANCE.registerTypeAdapter(TtOpenShopMaterial.class, new TtOpenShopMaterialGsonAdapter()); | |||||
} | } | ||||
@@ -0,0 +1,47 @@ | |||||
package com.iformall.service.toutiao.api.bean; | |||||
import com.google.gson.JsonArray; | |||||
import lombok.*; | |||||
import java.io.Serializable; | |||||
/** | |||||
* @author S | |||||
*/ | |||||
@Getter | |||||
@Setter | |||||
@NoArgsConstructor | |||||
@AllArgsConstructor | |||||
@Builder | |||||
public class TtOpenShopMaterial implements Serializable { | |||||
private static final long serialVersionUID = -7209805209834111965L; | |||||
private String clientKey;//服务商在抖音开放平台的应用唯一标识 | |||||
/** | |||||
* 接入方店铺 ID | |||||
*/ | |||||
private String supplierExtId; | |||||
/** | |||||
* 商铺营业执照路径 | |||||
*/ | |||||
private String bizLicencePath;//商铺营业执照路径 | |||||
private String contractPath;//商家授权函 | |||||
private String qualMaterial;//商铺行业资质材料信息 | |||||
//2019-01-14 12:45:10 | |||||
private String expireTime; | |||||
private String additionalQual;//其他补充资质 | |||||
public String toJson() { | |||||
return TtOpenGsonBuilder.create().toJson(this); | |||||
} | |||||
} |
@@ -0,0 +1,47 @@ | |||||
/* | |||||
* KINGSTAR MEDIA SOLUTIONS Co.,LTD. Copyright c 2005-2013. All rights reserved. | |||||
* | |||||
* This source code is the property of KINGSTAR MEDIA SOLUTIONS LTD. It is intended | |||||
* only for the use of KINGSTAR MEDIA application development. Reengineering, reproduction | |||||
* arose from modification of the original source, or other redistribution of this source | |||||
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD. | |||||
*/ | |||||
package com.iformall.service.toutiao.api.bean; | |||||
import com.google.gson.*; | |||||
import org.apache.commons.lang3.StringUtils; | |||||
import java.lang.reflect.Type; | |||||
/** | |||||
* @author Daniel Qian | |||||
*/ | |||||
public class TtOpenShopMaterialGsonAdapter implements JsonSerializer<TtOpenShopMaterial> { | |||||
@Override | |||||
public JsonElement serialize(TtOpenShopMaterial openShopMaterial, Type typeOfSrc, JsonSerializationContext context) { | |||||
return convertToJson(openShopMaterial); | |||||
} | |||||
protected JsonObject convertToJson(TtOpenShopMaterial openShopMaterial) { | |||||
JsonObject json = new JsonObject(); | |||||
json.addProperty("client_key", openShopMaterial.getClientKey()); | |||||
json.addProperty("supplier_ext_id", openShopMaterial.getSupplierExtId()); | |||||
json.addProperty("biz_licence_path", openShopMaterial.getBizLicencePath()); | |||||
json.addProperty("contract_path", openShopMaterial.getContractPath()); | |||||
if(StringUtils.isNotBlank(openShopMaterial.getQualMaterial())){ | |||||
JsonArray qmJsonArray = new JsonParser().parse(openShopMaterial.getQualMaterial()).getAsJsonArray(); | |||||
json.add("qual_material",qmJsonArray); | |||||
} | |||||
json.addProperty("expire_time", openShopMaterial.getExpireTime()); | |||||
if(StringUtils.isNotBlank(openShopMaterial.getAdditionalQual())){ | |||||
JsonArray aqJsonArray = new JsonParser().parse(openShopMaterial.getAdditionalQual()).getAsJsonArray(); | |||||
json.add("additional_qual",aqJsonArray); | |||||
} | |||||
return json; | |||||
} | |||||
} |
@@ -11,6 +11,7 @@ import com.iformall.service.toutiao.api.TtOpenMaService; | |||||
import com.iformall.service.toutiao.api.bean.TtOpenGsonBuilder; | import com.iformall.service.toutiao.api.bean.TtOpenGsonBuilder; | ||||
import com.iformall.service.toutiao.api.bean.TtOpenMaQrcode; | import com.iformall.service.toutiao.api.bean.TtOpenMaQrcode; | ||||
import com.iformall.service.toutiao.api.bean.TtOpenResult; | import com.iformall.service.toutiao.api.bean.TtOpenResult; | ||||
import com.iformall.service.toutiao.api.bean.TtOpenShopMaterial; | |||||
import com.iformall.service.toutiao.miniapp.TtMaQrcode; | import com.iformall.service.toutiao.miniapp.TtMaQrcode; | ||||
import com.iformall.service.toutiao.miniapp.TtQrcodeRequestExecutor; | import com.iformall.service.toutiao.miniapp.TtQrcodeRequestExecutor; | ||||
import com.iformall.service.toutiao.miniapp.impl.TtMaServiceImpl; | import com.iformall.service.toutiao.miniapp.impl.TtMaServiceImpl; | ||||
@@ -682,6 +683,13 @@ public class TtOpenMaServiceImpl extends TtMaServiceImpl implements TtOpenMaServ | |||||
return this.execute(executor, uri, file); | return this.execute(executor, uri, file); | ||||
} | } | ||||
@Override | |||||
public TtOpenResult addShopMaterial(TtOpenShopMaterial shopMaterial)throws WxErrorException { | |||||
String uri = API_ADD_SHOP_MATERIAL + "?component_appid=" + ttOpenComponentService.getWxOpenConfigStorage().getComponentAppId(); | |||||
String response = ttOpenComponentService.postByAppAccessToken(appId,uri,shopMaterial.toJson(),"authorizer_access_token"); | |||||
return TtOpenGsonBuilder.create().fromJson(response, TtOpenResult.class); | |||||
} | |||||
/** | /** | ||||
* 将字符串对象转化为GsonArray对象 | * 将字符串对象转化为GsonArray对象 | ||||
@@ -1,21 +1,21 @@ | |||||
package com.iformall.controller; | package com.iformall.controller; | ||||
import com.alibaba.fastjson.JSON; | |||||
import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
import com.iformall.common.ErrorCode; | import com.iformall.common.ErrorCode; | ||||
import com.iformall.common.Result; | |||||
import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
import com.iformall.controller.base.BaseController; | import com.iformall.controller.base.BaseController; | ||||
import com.iformall.domain.po.BaseEntity; | import com.iformall.domain.po.BaseEntity; | ||||
import com.iformall.domain.po.TtMerchantPoi; | import com.iformall.domain.po.TtMerchantPoi; | ||||
import com.iformall.domain.po.WxAppinfo; | |||||
import com.iformall.enums.EnumMeterialType; | import com.iformall.enums.EnumMeterialType; | ||||
import com.iformall.service.TtMerchantPoiService; | import com.iformall.service.TtMerchantPoiService; | ||||
import com.iformall.service.WxAppinfoService; | |||||
import com.iformall.service.toutiao.FmTtOpenService; | import com.iformall.service.toutiao.FmTtOpenService; | ||||
import com.iformall.service.toutiao.api.TtOpenMaService; | import com.iformall.service.toutiao.api.TtOpenMaService; | ||||
import io.swagger.annotations.ApiImplicitParam; | import io.swagger.annotations.ApiImplicitParam; | ||||
import io.swagger.annotations.ApiImplicitParams; | import io.swagger.annotations.ApiImplicitParams; | ||||
import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; | |||||
import me.chanjar.weixin.common.error.WxErrorException; | |||||
import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
@@ -23,10 +23,6 @@ import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
import org.springframework.web.multipart.MultipartFile; | import org.springframework.web.multipart.MultipartFile; | ||||
import javax.imageio.ImageIO; | |||||
import java.awt.image.BufferedImage; | |||||
import java.io.InputStream; | |||||
import java.util.List; | |||||
import java.util.Map; | import java.util.Map; | ||||
/** | /** | ||||
@@ -40,6 +36,8 @@ public class TtMerchantPoiController extends BaseController { | |||||
@Autowired | @Autowired | ||||
private TtMerchantPoiService ttMerchantPoiService; | private TtMerchantPoiService ttMerchantPoiService; | ||||
private WxAppinfoService appinfoService; | |||||
@Autowired | @Autowired | ||||
protected FmTtOpenService openService; | protected FmTtOpenService openService; | ||||
@@ -135,54 +133,78 @@ public class TtMerchantPoiController extends BaseController { | |||||
} | } | ||||
} | } | ||||
@PostMapping(value = "/upload_material1", consumes = "multipart/*", headers = "content-type=multipart/form-data") | |||||
@ApiOperation("上传图片") | |||||
public ResultData uploadMaterial(@RequestParam("file") MultipartFile multiReq) { | |||||
logger.info("[" + getIpAddr() + "] TtMerchantPoiController::upload_material"); | |||||
String appId = "ttef6599d8705b49b101"; | |||||
/** | |||||
* @param | |||||
* @return | |||||
* @throws Exception | |||||
*/ | |||||
@PostMapping(value = "/add_shop_material") | |||||
@ApiOperation("提交商铺资质材料") | |||||
public ResultData addShopMaterial(@RequestBody Map<String, String> param) { | |||||
logger.info("[" + getIpAddr() + "] TtMerchantPoiController::add_shop_material"); | |||||
String appId = param.get("appId"); | |||||
if(StringUtils.isBlank(appId)){ | if(StringUtils.isBlank(appId)){ | ||||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"appId为空"); | |||||
} | } | ||||
String materialTypeStr = "7"; | |||||
Integer materialType = null; | |||||
if(StringUtils.isNotBlank(materialTypeStr)){ | |||||
try{ | |||||
materialType = Integer.parseInt(materialTypeStr); | |||||
}catch (Exception e){ } | |||||
WxAppinfo appinfo = appinfoService.getByAppId(appId); | |||||
if(appinfo == null){ | |||||
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"找不到小程序信息"); | |||||
} | } | ||||
if(materialType == null){ | |||||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
String supplierExtId = param.get("supplierExtId"); | |||||
if(StringUtils.isBlank(supplierExtId)){ | |||||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"商户ID为空"); | |||||
} | } | ||||
EnumMeterialType enumMeterialType = EnumMeterialType.getByCode(materialType); | |||||
if(enumMeterialType == null){ | |||||
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); | |||||
TtMerchantPoi merchantPoi = ttMerchantPoiService.getById(Long.parseLong(supplierExtId)); | |||||
if(merchantPoi == null){ | |||||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"查询不到商户"); | |||||
} | } | ||||
long size = multiReq.getSize(); | |||||
final long length = enumMeterialType.getSize(); | |||||
if (size > length) { | |||||
return new ResultData(ErrorCode.PICTURE_SIZE_EXCEED); | |||||
String bizLicencePath = param.get("bizLicencePath"); | |||||
if(StringUtils.isBlank(bizLicencePath)){ | |||||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"商铺营业执照为空"); | |||||
} | } | ||||
merchantPoi.setBizLicencePath(bizLicencePath); | |||||
String fileFormat = ""; | |||||
try { | |||||
int dot = multiReq.getOriginalFilename().lastIndexOf('.'); | |||||
if (dot >= 0) { | |||||
fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); | |||||
String contractPath = param.get("contract_path"); | |||||
if(StringUtils.isBlank(contractPath)){ | |||||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"授权函为空"); | |||||
} | |||||
merchantPoi.setContractPath(contractPath); | |||||
String expireTime = param.get("expire_time"); | |||||
if(StringUtils.isBlank(expireTime)){ | |||||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"过期时间为空"); | |||||
} | |||||
String regex = "(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29) "; | |||||
if(!expireTime.matches(regex)){ | |||||
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"过期时间格式 YYYY-MM-DD"); | |||||
} | |||||
merchantPoi.setExpireTime(expireTime); | |||||
String qualMaterial = param.get("qual_material"); | |||||
if(StringUtils.isNotBlank(qualMaterial)){ | |||||
try{ | |||||
JSON.parse(qualMaterial); | |||||
merchantPoi.setQualMaterial(qualMaterial); | |||||
}catch(Exception e){ | |||||
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"商铺行业资质材料信息格式不正确"); | |||||
} | } | ||||
} | |||||
String additionalQual = param.get("additional_qual"); | |||||
if(StringUtils.isNotBlank(additionalQual)){ | |||||
try{ | |||||
JSON.parse(additionalQual); | |||||
merchantPoi.setAdditionalQual(additionalQual); | |||||
}catch(Exception e){ | |||||
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"其他补充资质信息格式不正确"); | |||||
} | |||||
} | |||||
TtOpenMaService openMaService = openService.getTtOpenComponentService().getTtMaServiceByAppid(appId); | |||||
String res = openMaService.mediaUpload(materialType, fileFormat, multiReq.getInputStream()); | |||||
return new ResultData(res); | |||||
boolean b = ttMerchantPoiService.addShopMaterial(appinfo,merchantPoi); | |||||
} catch (Exception e) { | |||||
logger.error("解析图片",e); | |||||
return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); | |||||
} | |||||
return new ResultData(b); | |||||
} | } | ||||
} | } |
@@ -1,98 +0,0 @@ | |||||
package com.iformall.controller; | |||||
import com.iformall.common.ErrorCode; | |||||
import com.iformall.common.ResultData; | |||||
import com.iformall.controller.base.BaseController; | |||||
import io.swagger.annotations.Api; | |||||
import io.swagger.annotations.ApiOperation; | |||||
import org.apache.commons.lang3.StringUtils; | |||||
import org.slf4j.Logger; | |||||
import org.slf4j.LoggerFactory; | |||||
import org.springframework.web.bind.annotation.PostMapping; | |||||
import org.springframework.web.bind.annotation.RequestMapping; | |||||
import org.springframework.web.bind.annotation.RequestParam; | |||||
import org.springframework.web.bind.annotation.RestController; | |||||
import org.springframework.web.multipart.MultipartFile; | |||||
import javax.imageio.ImageIO; | |||||
import java.awt.image.BufferedImage; | |||||
import java.util.ArrayList; | |||||
import java.util.HashMap; | |||||
import java.util.List; | |||||
import java.util.Map; | |||||
@RestController | |||||
@RequestMapping(value = "upload") | |||||
@Api(description = "文件上传接口") | |||||
public class UploadController extends BaseController { | |||||
private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
/** | |||||
* 上传文件 | |||||
* | |||||
* @param multiReq | |||||
* @return | |||||
* @throws Exception | |||||
*/ | |||||
@PostMapping(value = "/awsFileUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") | |||||
@ApiOperation("上传文件") | |||||
public ResultData awsfileUpload(@RequestParam("file") MultipartFile multiReq) { | |||||
logger.info("[" + getIpAddr() + "] UploadController::awsfileUpload"); | |||||
try { | |||||
int dot = multiReq.getOriginalFilename().lastIndexOf('.'); | |||||
String fileFormat = ""; | |||||
if (dot >= 0) { | |||||
fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); | |||||
} | |||||
return new ResultData(fileFormat); | |||||
} catch (Exception e) { | |||||
logger.error(e.getMessage()); | |||||
return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); | |||||
} | |||||
} | |||||
/** | |||||
* 图片上传 | |||||
* | |||||
* @param multiReq | |||||
* @return | |||||
* @throws Exception | |||||
*/ | |||||
@PostMapping(value = "/awsImgUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") | |||||
@ApiOperation("上传图片") | |||||
public ResultData awsImgUpload(@RequestParam("file") MultipartFile multiReq | |||||
, @RequestParam Map<String, String> param) { | |||||
logger.info("[" + getIpAddr() + "] UploadController::awsImgUpload"); | |||||
long size = multiReq.getSize(); | |||||
final long length = 2097152; | |||||
if (size > length) { | |||||
return new ResultData(ErrorCode.PICTURE_SIZE_EXCEED); | |||||
} | |||||
String fileFormat = ""; | |||||
try { | |||||
int dot = multiReq.getOriginalFilename().lastIndexOf('.'); | |||||
if (dot >= 0) { | |||||
fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); | |||||
} | |||||
return new ResultData(fileFormat); | |||||
} catch (Exception e) { | |||||
logger.error("解析图片",e); | |||||
return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); | |||||
} | |||||
} | |||||
} |
@@ -7,7 +7,7 @@ public class UrlCheck { | |||||
public static boolean checkUrl(String url) { | public static boolean checkUrl(String url) { | ||||
return url.contains("upload_material") | return url.contains("upload_material") | ||||
||url.contains("awsFileUpload") | |||||
|| url.contains("awsFileUpload") | |||||
|| url.contains("awsFilesUpload") | || url.contains("awsFilesUpload") | ||||
|| url.contains("wxMsgCallback") | || url.contains("wxMsgCallback") | ||||
|| url.contains("notify"); | || url.contains("notify"); | ||||