@@ -370,6 +370,15 @@ public enum ErrorCode{ | |||
*/ | |||
MSG_MODEL_NOT_FOUND(27000, "找不到短信模板"), | |||
MSG_CONFIG_NOT_FOUND(27001, "找不到短信配置"), | |||
/** | |||
* 文件上传 | |||
*/ | |||
PICTURE_SIZE_EXCEED(40001, "图片超过2M限制"), | |||
PICTURE_ANALYZING_ERROR(40002, "您上传的图片无法解析,请检查"), | |||
PICTURE_SIZE_CUSTOMIZE(40003, "图片超过大小限制"), | |||
PICTURE_W_H_CUSTOMIZE(40004, "图片不符合宽高限制"), | |||
PICTURE_ENDWIDTH_ERROR(40005, "格式不正确"), | |||
; | |||
private int code; | |||
@@ -0,0 +1,116 @@ | |||
package com.iformall.domain.po; | |||
import com.baomidou.mybatisplus.annotation.TableName; | |||
import com.google.gson.JsonObject; | |||
import com.iformall.utils.Constant; | |||
import lombok.Data; | |||
import lombok.EqualsAndHashCode; | |||
import lombok.ToString; | |||
import java.util.Date; | |||
@TableName(value = "tt_merchant_poi") | |||
@Data | |||
@ToString(callSuper = true) | |||
@EqualsAndHashCode(callSuper = true) | |||
public class TtMerchantPoi extends BaseEntity { | |||
protected Long id;//merchant_id | |||
@io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") | |||
private String tenantId; | |||
@io.swagger.annotations.ApiModelProperty(value="父租户ID",name="parentTenantId") | |||
protected String parentTenantId; | |||
@io.swagger.annotations.ApiModelProperty(value=" merchant_id",name="supplierExtId") | |||
private String supplierExtId; | |||
@io.swagger.annotations.ApiModelProperty(value="商户名",name="merchantName") | |||
private String merchantName; | |||
@io.swagger.annotations.ApiModelProperty(value="商户省",name="merchantProvince") | |||
private String merchantProvince; | |||
@io.swagger.annotations.ApiModelProperty(value="商户市",name="merchantCity") | |||
private String merchantCity; | |||
@io.swagger.annotations.ApiModelProperty(value="商户地址",name="merchantAddr") | |||
private String merchantAddr; | |||
@io.swagger.annotations.ApiModelProperty(value="经度",name="longitude") | |||
private Float longitude; | |||
@io.swagger.annotations.ApiModelProperty(value="纬度",name="latitude") | |||
private Float latitude; | |||
@io.swagger.annotations.ApiModelProperty(value="高德POI ID",name="amapId") | |||
private String amapId; | |||
@io.swagger.annotations.ApiModelProperty(value="其他信息",name="extra") | |||
private String extra; | |||
@io.swagger.annotations.ApiModelProperty(value="高德POI ID/抖音POIID",name="poiId") | |||
private String poiId; | |||
@io.swagger.annotations.ApiModelProperty(value="poi名称 ",name="poiName") | |||
private String poiName; | |||
@io.swagger.annotations.ApiModelProperty(value="省",name="province") | |||
private String province; | |||
@io.swagger.annotations.ApiModelProperty(value="市",name="city") | |||
private String city; | |||
@io.swagger.annotations.ApiModelProperty(value="地址",name="address") | |||
private String address; | |||
@io.swagger.annotations.ApiModelProperty(value="抖音平台任务ID",name="taskId") | |||
private String taskId; | |||
@io.swagger.annotations.ApiModelProperty(value="EnumSupplierMathStatus 匹配状态,0-等待匹配,1-正在匹配,2-匹配成功,3-匹配失败",name="matchStatus") | |||
private Integer matchStatus; | |||
@io.swagger.annotations.ApiModelProperty(value="匹配状态描述",name="mismatchStatusDesc") | |||
private String mismatchStatusDesc; | |||
@io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") | |||
private Date createDate; | |||
@io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") | |||
private Date updateDate; | |||
@io.swagger.annotations.ApiModelProperty(value="抖音平台商户ID",name="supplierId") | |||
private String supplierId; | |||
@io.swagger.annotations.ApiModelProperty(value="EnumSupplierSyncStatus 同步状态, 0 - 未处理; 1 - 通过; 2 - 未通过",name="syncStatus") | |||
private Integer syncStatus; | |||
@io.swagger.annotations.ApiModelProperty(value="EnumSupplierSyncStatus 最近一次同步状态, 0 - 未处理; 1 - 通过; 2 - 未通过",name="lastSyncStatus") | |||
private Integer lastSyncStatus; | |||
@io.swagger.annotations.ApiModelProperty(value="同步失败原因,抖音风控政策问题,该字段无法提供太多信息,目前审核不通过联系抖音运营做进一步处理",name="failReason") | |||
private String failReason; | |||
@io.swagger.annotations.ApiModelProperty(value="商铺营业执照路径",name="bizLicencePath") | |||
private String bizLicencePath; | |||
@io.swagger.annotations.ApiModelProperty(value="营业执照审核详细",name="bizLicenceStatus") | |||
private String bizLicenceStatus; | |||
@io.swagger.annotations.ApiModelProperty(value="商家授权函(或与小程序的合作协议)路径",name="contractPath") | |||
private String contractPath; | |||
@io.swagger.annotations.ApiModelProperty(value="商家授权函审核详细",name="contractStatus") | |||
private String contractStatus; | |||
@io.swagger.annotations.ApiModelProperty(value="商铺行业资质材料信息",name="qualMaterial") | |||
private String qualMaterial; | |||
@io.swagger.annotations.ApiModelProperty(value="商铺行业资质材料信息审核详细",name="qualMaterialStatus") | |||
private String qualMaterialStatus; | |||
@io.swagger.annotations.ApiModelProperty(value="其他补充资质",name="additionalQual") | |||
private String additionalQual; | |||
@io.swagger.annotations.ApiModelProperty(value="其他补充资质审核详细",name="additionalQualStatus") | |||
private String additionalQualStatus; | |||
@io.swagger.annotations.ApiModelProperty(value="所有资质的最早过期时间",name="expireTime") | |||
private String expireTime; | |||
} |
@@ -0,0 +1,92 @@ | |||
package com.iformall.enums; | |||
/** | |||
* app平台 | |||
* @author alascor | |||
*/ | |||
public enum EnumMeterialType { | |||
/** | |||
* * 1 小程序图标 修改小程序图标接口 小于等于 2MB jpeg、jpg、png 像素为 200 * 200 | |||
* * 2 小程序服务类目资质材料 增加服务类目接口 | |||
* * 补充服务类目资质信息接口 小于等于 2MB jpeg、jpg、png | |||
* * 3 小程序名称审核材料 修改小程序名称接口 小于等于 2MB jpeg、jpg、png | |||
* * 4 小程序落地页截图 申请「短视频挂载」能力接口 小于等于 2MB jpeg、jpg、png | |||
* * 5 场景示例图 申请「获取用户手机号」能力接口 小于等于 5MB jpeg、jpg、png | |||
* * 6 小程序分享模板图片 新增分享模板接口 | |||
* * 修改分享模板接口 小于等于 1MB jpeg、jpg、png 像素为 500 * 400 | |||
* * 7 商铺营业执照、行业资质材料 提交商铺资质材料接口 小于等于 4MB jpeg、jpg、png | |||
* * 8 服务商和商家的合作协议 提交商铺资质材料接口 小于等于 4MB pdf | |||
*/ | |||
one(1,"小程序图标",2097152,"jpeg,jpg、png",200,200), | |||
two(2,"小程序服务类目资质材料",2097152,"jpeg,jpg、png",null,null), | |||
three(3,"小程序名称审核材料",2097152,"jpeg,jpg、png",null,null), | |||
four(4,"小程序落地页截图",2097152,"jpeg,jpg、png",null,null), | |||
five(5,"场景示例图",5242880,"jpeg,jpg、png",null,null), | |||
six(6,"小程序分享模板图片",1048576,"jpeg,jpg、png",500,400), | |||
seven(7,"商铺营业执照、行业资质材料",4194304,"jpeg,jpg、png",null,null), | |||
enght(8,"服务商和商家的合作协议",4194304,"pdf",null,null), | |||
; | |||
EnumMeterialType(Integer code, String name,Integer size,String prefix,Integer wide,Integer height) { | |||
this.code = code; | |||
this.name = name; | |||
this.size = size; | |||
this.prefix = prefix; | |||
this.wide = wide; | |||
this.height = height; | |||
} | |||
private Integer code; | |||
private String name; | |||
private Integer size; | |||
private String prefix; | |||
private Integer wide; | |||
private Integer height; | |||
public Integer getCode() { | |||
return code; | |||
} | |||
public void setCode(Integer code) { | |||
this.code = code; | |||
} | |||
public String getName() { | |||
return name; | |||
} | |||
public void setName(String name) { | |||
this.name = name; | |||
} | |||
public Integer getSize() { | |||
return size; | |||
} | |||
public void setSize(Integer size) { | |||
this.size = size; | |||
} | |||
public String getPrefix() { | |||
return prefix; | |||
} | |||
public void setPrefix(String prefix) { | |||
this.prefix = prefix; | |||
} | |||
public Integer getWide() { | |||
return wide; | |||
} | |||
public void setWide(Integer wide) { | |||
this.wide = wide; | |||
} | |||
public Integer getHeight() { | |||
return height; | |||
} | |||
public void setHeight(Integer height) { | |||
this.height = height; | |||
} | |||
public static EnumMeterialType getByCode(Integer code) { | |||
for (EnumMeterialType e : EnumMeterialType.values()) { | |||
if (e.getCode().intValue() == code.intValue()) { | |||
return e; | |||
} | |||
} | |||
return null; | |||
} | |||
} |
@@ -0,0 +1,18 @@ | |||
package com.iformall.mapper; | |||
import com.iformall.common.CommonMapper; | |||
import com.iformall.domain.po.TtMerchantPoi; | |||
import java.util.List; | |||
public interface TtMerchantPoiMapper extends CommonMapper<TtMerchantPoi, Long> { | |||
List<TtMerchantPoi> findList(TtMerchantPoi record); | |||
List<Long> findIdList(TtMerchantPoi record); | |||
List<TtMerchantPoi> findTaskIdList(TtMerchantPoi record); | |||
int deleteByUpdate(Long id); | |||
} |
@@ -0,0 +1,24 @@ | |||
package com.iformall.service; | |||
import com.github.pagehelper.PageInfo; | |||
import com.iformall.domain.po.TtMerchantPoi; | |||
/** | |||
* @author gongbiao | |||
*/ | |||
public interface TtMerchantPoiService { | |||
/** | |||
* 根据实体查询分页列表 | |||
* | |||
* @param record | |||
* @param pageIndex | |||
* @param pageSize | |||
* @return | |||
*/ | |||
PageInfo<TtMerchantPoi> listAsPage(TtMerchantPoi record, Integer pageIndex, Integer pageSize); | |||
TtMerchantPoi getById(Long id); | |||
} |
@@ -0,0 +1,37 @@ | |||
package com.iformall.service.impl; | |||
import com.github.pagehelper.PageHelper; | |||
import com.github.pagehelper.PageInfo; | |||
import com.iformall.domain.po.TtMerchantPoi; | |||
import com.iformall.mapper.TtMerchantPoiMapper; | |||
import com.iformall.service.TtMerchantPoiService; | |||
import org.slf4j.Logger; | |||
import org.slf4j.LoggerFactory; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
/** | |||
* @author gongbiao | |||
*/ | |||
@Service | |||
public class TtMerchantPoiServiceImpl implements TtMerchantPoiService { | |||
private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
@Autowired | |||
TtMerchantPoiMapper ttMerchantPoiMapper; | |||
@Override | |||
public PageInfo<TtMerchantPoi> listAsPage(TtMerchantPoi record, Integer pageIndex, Integer pageSize) { | |||
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> ttMerchantPoiMapper.findList(record)); | |||
} | |||
@Override | |||
public TtMerchantPoi getById(Long id) { | |||
return ttMerchantPoiMapper.selectById(id); | |||
} | |||
} |
@@ -0,0 +1,67 @@ | |||
package com.iformall.service.toutiao.api; | |||
import me.chanjar.weixin.common.WxType; | |||
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; | |||
import me.chanjar.weixin.common.error.WxError; | |||
import me.chanjar.weixin.common.error.WxErrorException; | |||
import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor; | |||
import me.chanjar.weixin.common.util.http.RequestExecutor; | |||
import me.chanjar.weixin.common.util.http.RequestHttp; | |||
import me.chanjar.weixin.common.util.http.ResponseHandler; | |||
import me.chanjar.weixin.common.util.http.apache.Utf8ResponseHandler; | |||
import org.apache.http.HttpEntity; | |||
import org.apache.http.HttpHost; | |||
import org.apache.http.client.config.RequestConfig; | |||
import org.apache.http.client.methods.CloseableHttpResponse; | |||
import org.apache.http.client.methods.HttpPost; | |||
import org.apache.http.entity.mime.HttpMultipartMode; | |||
import org.apache.http.entity.mime.MultipartEntityBuilder; | |||
import org.apache.http.impl.client.CloseableHttpClient; | |||
import java.io.File; | |||
import java.io.IOException; | |||
/** | |||
* Created by ecoolper on 2017/5/5. | |||
*/ | |||
public class TtMediaUploadRequestExecutor implements RequestExecutor<String, File> { | |||
protected RequestHttp<CloseableHttpClient, HttpHost> requestHttp; | |||
public TtMediaUploadRequestExecutor(RequestHttp requestHttp) { | |||
this.requestHttp = requestHttp; | |||
} | |||
@Override | |||
public void execute(String uri, File data, ResponseHandler<String> handler, WxType wxType) throws WxErrorException, IOException { | |||
handler.handle(this.execute(uri, data, wxType)); | |||
} | |||
@Override | |||
public String execute(String uri, File file, WxType wxType) throws WxErrorException, IOException { | |||
HttpPost httpPost = new HttpPost(uri); | |||
if (requestHttp.getRequestHttpProxy() != null) { | |||
RequestConfig config = RequestConfig.custom().setProxy(requestHttp.getRequestHttpProxy()).build(); | |||
httpPost.setConfig(config); | |||
} | |||
if (file != null) { | |||
HttpEntity entity = MultipartEntityBuilder | |||
.create() | |||
.addBinaryBody("material_file", file) | |||
.setMode(HttpMultipartMode.RFC6532) | |||
.build(); | |||
httpPost.setEntity(entity); | |||
} | |||
try (CloseableHttpResponse response = requestHttp.getRequestHttpClient().execute(httpPost)) { | |||
String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response); | |||
WxError error = WxError.fromJson(responseContent, wxType); | |||
if (error.getErrorCode() != 0) { | |||
throw new WxErrorException(error); | |||
} | |||
return responseContent; | |||
} finally { | |||
httpPost.releaseConnection(); | |||
} | |||
} | |||
} |
@@ -2,12 +2,14 @@ package com.iformall.service.toutiao.api; | |||
import com.iformall.service.toutiao.api.bean.TtOpenResult; | |||
import com.iformall.service.toutiao.miniapp.TtMaService; | |||
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; | |||
import me.chanjar.weixin.common.error.WxErrorException; | |||
import me.chanjar.weixin.open.bean.ma.WxMaOpenCommitExtInfo; | |||
import me.chanjar.weixin.open.bean.message.WxOpenMaSubmitAuditMessage; | |||
import me.chanjar.weixin.open.bean.result.*; | |||
import java.io.File; | |||
import java.io.InputStream; | |||
import java.util.List; | |||
import java.util.Map; | |||
@@ -230,6 +232,11 @@ public interface TtOpenMaService extends TtMaService { | |||
*/ | |||
String API_SPEED_AUDIT = "https://api.weixin.qq.com/wxa/speedupaudit"; | |||
/** | |||
* 代授权小程序上传资源 | |||
*/ | |||
String API_UPLOAD_MATERIAL = "https://open.microapp.bytedance.com/openapi/v1/microapp/upload_material"; | |||
/** | |||
* 获得小程序的域名配置信息 | |||
@@ -478,6 +485,11 @@ public interface TtOpenMaService extends TtMaService { | |||
*/ | |||
WxOpenResult publishQrcodeJump(String prefix) throws WxErrorException; | |||
String mediaUpload(Integer mediaType, String fileType, InputStream inputStream) throws WxErrorException; | |||
String mediaUpload(Integer mediaType, File file) throws WxErrorException; | |||
// /** | |||
// * 小程序用户隐私保护指引服务 | |||
// * | |||
@@ -5,6 +5,7 @@ import cn.binarywang.wx.miniapp.config.WxMaConfig; | |||
import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; | |||
import com.google.gson.JsonArray; | |||
import com.google.gson.JsonObject; | |||
import com.iformall.service.toutiao.api.TtMediaUploadRequestExecutor; | |||
import com.iformall.service.toutiao.api.TtOpenComponentService; | |||
import com.iformall.service.toutiao.api.TtOpenMaService; | |||
import com.iformall.service.toutiao.api.bean.TtOpenGsonBuilder; | |||
@@ -14,7 +15,10 @@ import com.iformall.service.toutiao.miniapp.TtMaQrcode; | |||
import com.iformall.service.toutiao.miniapp.TtQrcodeRequestExecutor; | |||
import com.iformall.service.toutiao.miniapp.impl.TtMaServiceImpl; | |||
import lombok.extern.java.Log; | |||
import me.chanjar.weixin.common.error.WxError; | |||
import me.chanjar.weixin.common.error.WxErrorException; | |||
import me.chanjar.weixin.common.util.fs.FileUtils; | |||
import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor; | |||
import me.chanjar.weixin.open.bean.ma.WxMaOpenCommitExtInfo; | |||
import me.chanjar.weixin.open.bean.ma.WxMaQrcodeParam; | |||
import me.chanjar.weixin.open.bean.message.WxOpenMaSubmitAuditMessage; | |||
@@ -24,8 +28,13 @@ import org.slf4j.Logger; | |||
import org.slf4j.LoggerFactory; | |||
import java.io.File; | |||
import java.io.IOException; | |||
import java.io.InputStream; | |||
import java.util.List; | |||
import java.util.Map; | |||
import java.util.UUID; | |||
import static me.chanjar.weixin.mp.enums.WxMpApiUrl.Material.MEDIA_UPLOAD_URL; | |||
/** | |||
* | |||
@@ -649,6 +658,31 @@ public class TtOpenMaServiceImpl extends TtMaServiceImpl implements TtOpenMaServ | |||
return WxMaGsonBuilder.create().fromJson(response, WxOpenResult.class); | |||
} | |||
@Override | |||
public String mediaUpload(Integer mediaType, String fileType, InputStream inputStream) throws WxErrorException { | |||
File tmpFile = null; | |||
try { | |||
tmpFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), fileType); | |||
return this.mediaUpload(mediaType, tmpFile); | |||
} catch (IOException e) { | |||
throw new WxErrorException(WxError.builder().errorCode(-1).errorMsg(e.getMessage()).build(), e); | |||
} finally { | |||
if (tmpFile != null) { | |||
tmpFile.delete(); | |||
} | |||
} | |||
} | |||
@Override | |||
public String mediaUpload(Integer mediaType, File file) throws WxErrorException { | |||
String uri = API_UPLOAD_MATERIAL +"?component_appid="+ttOpenComponentService.getWxOpenConfigStorage().getComponentAppId() | |||
+"&authorizer_access_token="+getAccessToken(false) | |||
+"&material_type="+mediaType; | |||
TtMediaUploadRequestExecutor executor = new TtMediaUploadRequestExecutor(this.getRequestHttp()); | |||
return this.execute(executor, uri, file); | |||
} | |||
/** | |||
* 将字符串对象转化为GsonArray对象 | |||
* | |||
@@ -0,0 +1,141 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||
<mapper namespace="com.iformall.mapper.TtMerchantPoiMapper"> | |||
<resultMap id="BaseResultMap" type="com.iformall.domain.po.TtMerchantPoi"> | |||
<id column="id" jdbcType="BIGINT" property="id"/> | |||
<result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/> | |||
<result column="parent_tenant_id" jdbcType="VARCHAR" property="parentTenantId"/> | |||
<result column="supplier_ext_id" jdbcType="VARCHAR" property="supplierExtId"/> | |||
<result column="merchant_name" jdbcType="VARCHAR" property="merchantName"/> | |||
<result column="merchant_province" jdbcType="VARCHAR" property="merchantProvince"/> | |||
<result column="merchant_city" jdbcType="VARCHAR" property="merchantCity"/> | |||
<result column="merchant_addr" jdbcType="VARCHAR" property="merchantAddr"/> | |||
<result column="longitude" jdbcType="FLOAT" property="longitude"/> | |||
<result column="latitude" jdbcType="FLOAT" property="latitude"/> | |||
<result column="amap_id" jdbcType="VARCHAR" property="amapId"/> | |||
<result column="extra" jdbcType="VARCHAR" property="extra"/> | |||
<result column="poi_id" jdbcType="VARCHAR" property="poiId"/> | |||
<result column="poi_name" jdbcType="VARCHAR" property="poiName"/> | |||
<result column="province" jdbcType="VARCHAR" property="province"/> | |||
<result column="city" jdbcType="VARCHAR" property="city"/> | |||
<result column="address" jdbcType="VARCHAR" property="address"/> | |||
<result column="task_id" jdbcType="VARCHAR" property="taskId"/> | |||
<result column="match_status" jdbcType="INTEGER" property="matchStatus"/> | |||
<result column="mismatch_status_desc" jdbcType="VARCHAR" property="mismatchStatusDesc"/> | |||
<result column="create_date" jdbcType="TIMESTAMP" property="createDate"/> | |||
<result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/> | |||
<result column="supplier_id" jdbcType="VARCHAR" property="supplierId"/> | |||
<result column="sync_status" jdbcType="INTEGER" property="syncStatus"/> | |||
<result column="last_sync_status" jdbcType="INTEGER" property="lastSyncStatus"/> | |||
<result column="fail_reason" jdbcType="VARCHAR" property="failReason"/> | |||
<result column="biz_licence_path" jdbcType="VARCHAR" property="bizLicencePath"/> | |||
<result column="biz_licence_status" jdbcType="VARCHAR" property="bizLicenceStatus"/> | |||
<result column="contract_path" jdbcType="VARCHAR" property="contractPath"/> | |||
<result column="contract_status" jdbcType="VARCHAR" property="contractStatus"/> | |||
<result column="qual_material" jdbcType="VARCHAR" property="qualMaterial"/> | |||
<result column="qual_material_status" jdbcType="VARCHAR" property="qualMaterialStatus"/> | |||
<result column="additional_qual" jdbcType="VARCHAR" property="additionalQual"/> | |||
<result column="additional_qual_status" jdbcType="VARCHAR" property="additionalQualStatus"/> | |||
<result column="expire_time" jdbcType="VARCHAR" property="expireTime"/> | |||
</resultMap> | |||
<sql id="allColumns"> | |||
`id`,`tenant_id`,`parent_tenant_id`,`supplier_ext_id`, | |||
`merchant_name`,`merchant_province`,`merchant_city`,`merchant_addr`,`longitude`,`latitude`, | |||
`amap_id`,`extra`, | |||
`poi_id`,`poi_name`,`province`,`city`,`address`, | |||
`task_id`,`match_status`,`mismatch_status_desc`, | |||
`create_date`,`update_date`, | |||
`supplier_id`,`sync_status`,`last_sync_status`,`fail_reason`, | |||
`biz_licence_path`,`biz_licence_status`,`contract_path`,`contract_status`,`qual_material`,`qual_material_status`,`additional_qual`,`additional_qual_status`,`expire_time` | |||
</sql> | |||
<sql id="dynamicWhereConditions"> | |||
where is_del = 0 | |||
<if test=" null != id "> | |||
and `id` = #{id} | |||
</if> | |||
<if test=" null != tenantId and '' != tenantId"> | |||
and `tenant_id` = #{tenantId} | |||
</if> | |||
<if test=" null != parentTenantId and '' != parentTenantId"> | |||
and `parent_tenant_id` = #{parentTenantId} | |||
</if> | |||
<if test=" null != supplierExtId and '' != supplierExtId"> | |||
and `supplier_ext_id` = #{supplierExtId} | |||
</if> | |||
<if test=" null != poiId and ''!= poiId "> | |||
and `poi_id` = #{poiId} | |||
</if> | |||
<if test=" null != merchantName and ''!= merchantName "> | |||
and `merchant_name` like concat('%', #{merchantName},'%') | |||
</if> | |||
<if test=" null != taskId and ''!= taskId "> | |||
and `task_id` = #{taskId} | |||
</if> | |||
<if test=" null != matchStatus"> | |||
and `match_status` = #{matchStatus} | |||
</if> | |||
<if test=" null != supplierId and '' != supplierId"> | |||
and `supplier_id` = #{supplierId} | |||
</if> | |||
<if test=" null != syncStatus"> | |||
and `sync_status` = #{syncStatus} | |||
</if> | |||
<if test=" null != lastSyncStatus"> | |||
and `last_sync_status` = #{lastSyncStatus} | |||
</if> | |||
<if test=" null != ids "> | |||
and `id` in | |||
<foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||
#{idItem} | |||
</foreach> | |||
</if> | |||
<if test=" null != sortColumns">order by ${sortColumns}</if> | |||
</sql> | |||
<select id="findList" parameterType="com.iformall.domain.po.TtMerchantPoi" resultMap="BaseResultMap"> | |||
select | |||
<include refid="allColumns"/> | |||
from tt_merchant_poi | |||
<include refid="dynamicWhereConditions"/> | |||
</select> | |||
<select id="findIdList" parameterType="com.iformall.domain.po.TtMerchantPoi" resultType="Long"> | |||
select id | |||
from tt_merchant_poi | |||
<include refid="dynamicWhereConditions"/> | |||
</select> | |||
<select id="findTaskIdList" parameterType="com.iformall.domain.po.TtMerchantPoi" resultType="String"> | |||
select distinct `tenant_id`,`parent_tenant_id`,`task_id` | |||
from tt_merchant_poi | |||
<include refid="dynamicWhereConditions"/> | |||
</select> | |||
<update id="deleteByUpdate" parameterType="Long"> | |||
update tt_merchant_poi set is_del = 1 | |||
where id = #{id} | |||
</update> | |||
</mapper> |
@@ -0,0 +1,140 @@ | |||
package com.iformall.controller; | |||
import com.github.pagehelper.PageInfo; | |||
import com.iformall.common.ErrorCode; | |||
import com.iformall.common.Result; | |||
import com.iformall.common.ResultData; | |||
import com.iformall.controller.base.BaseController; | |||
import com.iformall.domain.po.BaseEntity; | |||
import com.iformall.domain.po.TtMerchantPoi; | |||
import com.iformall.enums.EnumMeterialType; | |||
import com.iformall.service.TtMerchantPoiService; | |||
import com.iformall.service.toutiao.FmTtOpenService; | |||
import com.iformall.service.toutiao.api.TtOpenMaService; | |||
import io.swagger.annotations.ApiImplicitParam; | |||
import io.swagger.annotations.ApiImplicitParams; | |||
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.slf4j.Logger; | |||
import org.slf4j.LoggerFactory; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.web.bind.annotation.*; | |||
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; | |||
/** | |||
* @author gongbiao | |||
*/ | |||
@RestController | |||
@RequestMapping("merchantPoi") | |||
public class TtMerchantPoiController extends BaseController { | |||
private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
@Autowired | |||
private TtMerchantPoiService ttMerchantPoiService; | |||
@Autowired | |||
protected FmTtOpenService openService; | |||
@ApiOperation("分页列表接口") | |||
@GetMapping("list") | |||
@ApiImplicitParams({ | |||
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||
public ResultData list(@ModelAttribute TtMerchantPoi record, Integer pageNum, Integer pageSize) { | |||
logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::list"); | |||
if (null == record || StringUtils.isBlank(record.getTenantId())){ | |||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode()); | |||
} | |||
record.setSortColumns(BaseEntity.SortField.UpdateDate_DESC); | |||
final PageInfo<TtMerchantPoi> page = ttMerchantPoiService.listAsPage(record, pageNum, pageSize); | |||
return new ResultData(page); | |||
} | |||
@ApiOperation("根据id查询接口") | |||
@GetMapping("/findById") | |||
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||
public ResultData findById(Long id) { | |||
logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::findById"); | |||
if(id == null){ | |||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||
} | |||
TtMerchantPoi record = ttMerchantPoiService.getById(id); | |||
return new ResultData(record); | |||
} | |||
/** | |||
* 代授权小程序上传资源 | |||
* 1 小程序图标 修改小程序图标接口 小于等于 2MB jpeg、jpg、png 像素为 200 * 200 | |||
* 2 小程序服务类目资质材料 增加服务类目接口 | |||
* 补充服务类目资质信息接口 小于等于 2MB jpeg、jpg、png | |||
* 3 小程序名称审核材料 修改小程序名称接口 小于等于 2MB jpeg、jpg、png | |||
* 4 小程序落地页截图 申请「短视频挂载」能力接口 小于等于 2MB jpeg、jpg、png | |||
* 5 场景示例图 申请「获取用户手机号」能力接口 小于等于 5MB jpeg、jpg、png | |||
* 6 小程序分享模板图片 新增分享模板接口 | |||
* 修改分享模板接口 小于等于 1MB jpeg、jpg、png 像素为 500 * 400 | |||
* 7 商铺营业执照、行业资质材料 提交商铺资质材料接口 小于等于 4MB jpeg、jpg、png | |||
* 8 服务商和商家的合作协议 提交商铺资质材料接口 小于等于 4MB pdf | |||
* | |||
* @param multiReq | |||
* @return | |||
* @throws Exception | |||
*/ | |||
@PostMapping(value = "/upload_material", consumes = "multipart/*", headers = "content-type=multipart/form-data") | |||
@ApiOperation("上传图片") | |||
public ResultData awsImgUpload(@RequestParam("file") MultipartFile multiReq | |||
,@RequestParam Map<String, String> param) { | |||
logger.info("[" + getIpAddr() + "] TtMerchantPoiController::upload_material"); | |||
String appId = param.get("appId"); | |||
if(StringUtils.isBlank(appId)){ | |||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||
} | |||
String materialTypeStr = param.get("materialType"); | |||
Integer materialType = null; | |||
if(StringUtils.isNotBlank(materialTypeStr)){ | |||
try{ | |||
materialType = Integer.parseInt(materialTypeStr); | |||
}catch (Exception e){ } | |||
} | |||
if(materialType == null){ | |||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||
} | |||
EnumMeterialType enumMeterialType = EnumMeterialType.getByCode(materialType); | |||
if(enumMeterialType == null){ | |||
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); | |||
} | |||
long size = multiReq.getSize(); | |||
final long length = enumMeterialType.getSize(); | |||
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()); | |||
} | |||
TtOpenMaService openMaService = openService.getTtOpenComponentService().getTtMaServiceByAppid(appId); | |||
String res = openMaService.mediaUpload(materialType, fileFormat, multiReq.getInputStream()); | |||
return new ResultData(res); | |||
} catch (Exception e) { | |||
logger.error("解析图片",e); | |||
return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); | |||
} | |||
} | |||
} |