| @@ -6,6 +6,7 @@ import com.iformall.common.ErrorCode; | |||||
| 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.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.file.aliyun.AliyunOSS; | |||||
| import com.iformall.service.QrCodeService; | import com.iformall.service.QrCodeService; | ||||
| import com.iformall.utils.ImgUtil; | import com.iformall.utils.ImgUtil; | ||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| @@ -33,6 +34,8 @@ public class UploadController extends BaseController { | |||||
| @Autowired | @Autowired | ||||
| private String fmUploadDir; | private String fmUploadDir; | ||||
| @Autowired | |||||
| private AliyunOSS aliyunOSS; | |||||
| @Autowired | @Autowired | ||||
| private QrCodeService qrCodeService; | private QrCodeService qrCodeService; | ||||
| @@ -67,15 +70,16 @@ public class UploadController extends BaseController { | |||||
| String fileName = UUID.randomUUID().toString(); | String fileName = UUID.randomUUID().toString(); | ||||
| int dot = multiReq.getOriginalFilename().lastIndexOf('.'); | int dot = multiReq.getOriginalFilename().lastIndexOf('.'); | ||||
| String fileFormat = ""; | |||||
| if (dot >= 0) { | if (dot >= 0) { | ||||
| String fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); | |||||
| fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); | |||||
| fileName = getFileName(tenantEntity, fileName + fileFormat); | fileName = getFileName(tenantEntity, fileName + fileFormat); | ||||
| } else { | } else { | ||||
| fileName = getFileName(tenantEntity, fileName); | fileName = getFileName(tenantEntity, fileName); | ||||
| } | } | ||||
| System.out.println(fileName); | |||||
| ResultData data = qrCodeService.awsUpload(multiReq.getInputStream(), metadata, fileName, tenantEntity); | |||||
| // ResultData data = qrCodeService.awsUpload(multiReq.getInputStream(), metadata, fileName, tenantEntity); | |||||
| ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); | |||||
| return data; | return data; | ||||
| } | } | ||||
| @@ -137,15 +141,17 @@ public class UploadController extends BaseController { | |||||
| ObjectMetadata metadata = new ObjectMetadata(); | ObjectMetadata metadata = new ObjectMetadata(); | ||||
| metadata.setContentType(multiReq.getContentType()); | metadata.setContentType(multiReq.getContentType()); | ||||
| metadata.setContentLength(newFile.length()); | metadata.setContentLength(newFile.length()); | ||||
| ResultData data = qrCodeService.awsUpload(new FileInputStream(newFile), metadata, fileName, tenantEntity); | |||||
| // 删除本地缓存 | |||||
| // ResultData data = qrCodeService.awsUpload(new FileInputStream(newFile), metadata, fileName, tenantEntity); | |||||
| ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, new FileInputStream(newFile)); | |||||
| // 删除本地缓存 | |||||
| newFile.delete(); | newFile.delete(); | ||||
| return data; | return data; | ||||
| } else { | } else { | ||||
| ObjectMetadata metadata = new ObjectMetadata(); | ObjectMetadata metadata = new ObjectMetadata(); | ||||
| metadata.setContentType(multiReq.getContentType()); | metadata.setContentType(multiReq.getContentType()); | ||||
| metadata.setContentLength(size); | metadata.setContentLength(size); | ||||
| ResultData data = qrCodeService.awsUpload(multiReq.getInputStream(), metadata, fileName, tenantEntity); | |||||
| // ResultData data = qrCodeService.awsUpload(multiReq.getInputStream(), metadata, fileName, tenantEntity); | |||||
| ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); | |||||
| return data; | return data; | ||||
| } | } | ||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| @@ -185,14 +191,17 @@ public class UploadController extends BaseController { | |||||
| String fileName = UUID.randomUUID().toString(); | String fileName = UUID.randomUUID().toString(); | ||||
| int dot = multipartFile.getOriginalFilename().lastIndexOf('.'); | int dot = multipartFile.getOriginalFilename().lastIndexOf('.'); | ||||
| String fileFormat = ""; | |||||
| if (dot >= 0) { | if (dot >= 0) { | ||||
| String fileFormat = multipartFile.getOriginalFilename().substring(dot, multipartFile.getOriginalFilename().length());; | |||||
| fileFormat = multipartFile.getOriginalFilename().substring(dot, multipartFile.getOriginalFilename().length());; | |||||
| fileName = getFileName(tenantEntity, fileName + fileFormat); | fileName = getFileName(tenantEntity, fileName + fileFormat); | ||||
| } else { | } else { | ||||
| fileName = getFileName(tenantEntity, fileName); | fileName = getFileName(tenantEntity, fileName); | ||||
| } | } | ||||
| ResultData data1 = qrCodeService.awsUpload(multipartFile.getInputStream(), metadata, fileName, getTenantInfo()); | |||||
| // ResultData data1 = qrCodeService.awsUpload(multipartFile.getInputStream(), metadata, fileName, getTenantInfo()); | |||||
| ResultData data1 = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multipartFile.getInputStream()); | |||||
| if(data1.code == ResultData.SUCCESS) { | if(data1.code == ResultData.SUCCESS) { | ||||
| Map _data = (Map)data1.data; | Map _data = (Map)data1.data; | ||||
| map.put("url", (String) _data.get("url")); | map.put("url", (String) _data.get("url")); | ||||
| @@ -229,10 +238,17 @@ public class UploadController extends BaseController { | |||||
| metadata.setContentLength(multiReq.getSize()); | metadata.setContentLength(multiReq.getSize()); | ||||
| String fileName = multiReq.getOriginalFilename(); | String fileName = multiReq.getOriginalFilename(); | ||||
| int dot = multiReq.getOriginalFilename().lastIndexOf('.'); | |||||
| String fileFormat = ""; | |||||
| if (dot >= 0) { | |||||
| fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); | |||||
| } | |||||
| fileName = "cimg/" + fileName; | fileName = "cimg/" + fileName; | ||||
| ResultData data = qrCodeService.awsUpload(multiReq.getInputStream(), metadata, fileName, new TenantEntity() {{ | |||||
| setTenantId("cimg"); | |||||
| }}); | |||||
| // ResultData data = qrCodeService.awsUpload(multiReq.getInputStream(), metadata, fileName, new TenantEntity() {{ | |||||
| // setTenantId("cimg"); | |||||
| // }}); | |||||
| ResultData data = aliyunOSS.uploadFile("cimg", fileFormat, multiReq.getInputStream()); | |||||
| return data; | return data; | ||||
| } | } | ||||
| @@ -42,7 +42,7 @@ spring: | |||||
| max-wait: -1 | max-wait: -1 | ||||
| min-idle: 10 | min-idle: 10 | ||||
| # SMS | |||||
| aliyun: | aliyun: | ||||
| sms: | sms: | ||||
| accessKeyId: LTAI4G7ixY4AhvM35F8o3W3V | accessKeyId: LTAI4G7ixY4AhvM35F8o3W3V | ||||
| @@ -53,6 +53,14 @@ spring: | |||||
| dateFormat: yyyyMMdd | dateFormat: yyyyMMdd | ||||
| endpointName: cn-hangzhou | endpointName: cn-hangzhou | ||||
| oss: | |||||
| endpoint: oss-cn-beijing.aliyuncs.com | |||||
| keyid: LTAI4G7ixY4AhvM35F8o3W3V | |||||
| keysecret: VfWqGb83qIQrS9us45utskl8itd7ry | |||||
| bucketname: formall | |||||
| filehost: malinkadmin | |||||
| filedomain: http://formall.oss-accelerate.aliyuncs.com | |||||
| mail: | mail: | ||||
| host: smtp.exmail.qq.com | host: smtp.exmail.qq.com | ||||
| @@ -67,6 +75,7 @@ spring: | |||||
| socketFactory: | socketFactory: | ||||
| port: 465 | port: 465 | ||||
| class: javax.net.ssl.SSLSocketFactory | class: javax.net.ssl.SSLSocketFactory | ||||
| # ROCKETMQ | # ROCKETMQ | ||||
| rocketmq: | rocketmq: | ||||
| nameServer: 127.0.0.1:9876 | nameServer: 127.0.0.1:9876 | ||||
| @@ -15,6 +15,7 @@ import com.iformall.common.ResultData; | |||||
| import com.iformall.config.AwsProperty; | import com.iformall.config.AwsProperty; | ||||
| import com.iformall.domain.po.MallResource; | import com.iformall.domain.po.MallResource; | ||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.file.aliyun.AliyunOSS; | |||||
| import com.iformall.service.MallResourceService; | import com.iformall.service.MallResourceService; | ||||
| import com.iformall.utils.ImgUtil; | import com.iformall.utils.ImgUtil; | ||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| @@ -50,6 +51,9 @@ public class UploadController extends BaseController { | |||||
| @Autowired | @Autowired | ||||
| private String fmUploadDir; | private String fmUploadDir; | ||||
| @Autowired | |||||
| private AliyunOSS aliyunOSS; | |||||
| private AmazonS3 s3 = null; | private AmazonS3 s3 = null; | ||||
| private String getFileName(TenantEntity tenantEntity, String fileName) { | private String getFileName(TenantEntity tenantEntity, String fileName) { | ||||
| @@ -149,14 +153,16 @@ public class UploadController extends BaseController { | |||||
| String fileName = UUID.randomUUID().toString(); | String fileName = UUID.randomUUID().toString(); | ||||
| int dot = multiReq.getOriginalFilename().lastIndexOf('.'); | int dot = multiReq.getOriginalFilename().lastIndexOf('.'); | ||||
| String fileFormat = ""; | |||||
| if (dot >= 0) { | if (dot >= 0) { | ||||
| String fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); | |||||
| fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); | |||||
| fileName = getFileName(tenantEntity, fileName + fileFormat); | fileName = getFileName(tenantEntity, fileName + fileFormat); | ||||
| } else { | } else { | ||||
| fileName = getFileName(tenantEntity, fileName); | fileName = getFileName(tenantEntity, fileName); | ||||
| } | } | ||||
| ResultData data = awsUpload(multiReq.getInputStream(), metadata, fileName, tenantEntity); | |||||
| // ResultData data = awsUpload(multiReq.getInputStream(), metadata, fileName, tenantEntity); | |||||
| ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); | |||||
| return data; | return data; | ||||
| } | } | ||||
| @@ -212,7 +218,8 @@ public class UploadController extends BaseController { | |||||
| ObjectMetadata metadata = new ObjectMetadata(); | ObjectMetadata metadata = new ObjectMetadata(); | ||||
| metadata.setContentType(multiReq.getContentType()); | metadata.setContentType(multiReq.getContentType()); | ||||
| metadata.setContentLength(newFile.length()); | metadata.setContentLength(newFile.length()); | ||||
| ResultData data = awsUpload(new FileInputStream(newFile), metadata, fileName, tenantEntity); | |||||
| // ResultData data = awsUpload(new FileInputStream(newFile), metadata, fileName, tenantEntity); | |||||
| ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, new FileInputStream(newFile)); | |||||
| // 删除本地缓存 | // 删除本地缓存 | ||||
| newFile.delete(); | newFile.delete(); | ||||
| return data; | return data; | ||||
| @@ -220,7 +227,8 @@ public class UploadController extends BaseController { | |||||
| ObjectMetadata metadata = new ObjectMetadata(); | ObjectMetadata metadata = new ObjectMetadata(); | ||||
| metadata.setContentType(multiReq.getContentType()); | metadata.setContentType(multiReq.getContentType()); | ||||
| metadata.setContentLength(multiReq.getSize()); | metadata.setContentLength(multiReq.getSize()); | ||||
| ResultData data = awsUpload(multiReq.getInputStream(), metadata, fileName, tenantEntity); | |||||
| // ResultData data = awsUpload(multiReq.getInputStream(), metadata, fileName, tenantEntity); | |||||
| ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); | |||||
| return data; | return data; | ||||
| } | } | ||||
| } | } | ||||
| @@ -256,14 +264,16 @@ public class UploadController extends BaseController { | |||||
| String fileName = UUID.randomUUID().toString(); | String fileName = UUID.randomUUID().toString(); | ||||
| int dot = multipartFile.getOriginalFilename().lastIndexOf('.'); | int dot = multipartFile.getOriginalFilename().lastIndexOf('.'); | ||||
| String fileFormat = ""; | |||||
| if (dot >= 0) { | if (dot >= 0) { | ||||
| String fileFormat = multipartFile.getOriginalFilename().substring(dot, multipartFile.getOriginalFilename().length()); | |||||
| fileFormat = multipartFile.getOriginalFilename().substring(dot, multipartFile.getOriginalFilename().length()); | |||||
| getFileName(tenantEntity, fileName + fileFormat); | getFileName(tenantEntity, fileName + fileFormat); | ||||
| } else { | } else { | ||||
| getFileName(tenantEntity, fileName); | getFileName(tenantEntity, fileName); | ||||
| } | } | ||||
| ResultData data1 = awsUpload(multipartFile.getInputStream(), metadata, fileName, tenantEntity); | |||||
| // ResultData data1 = awsUpload(multipartFile.getInputStream(), metadata, fileName, tenantEntity); | |||||
| ResultData data1 = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multipartFile.getInputStream()); | |||||
| if (data1.code == ResultData.SUCCESS) { | if (data1.code == ResultData.SUCCESS) { | ||||
| Map _data = (Map) data1.data; | Map _data = (Map) data1.data; | ||||
| map.put("url", (String) _data.get("url")); | map.put("url", (String) _data.get("url")); | ||||
| @@ -52,11 +52,19 @@ spring: | |||||
| dateFormat: yyyyMMdd | dateFormat: yyyyMMdd | ||||
| endpointName: cn-hangzhou | endpointName: cn-hangzhou | ||||
| oss: | |||||
| endpoint: oss-cn-beijing.aliyuncs.com | |||||
| keyid: LTAI4G7ixY4AhvM35F8o3W3V | |||||
| keysecret: VfWqGb83qIQrS9us45utskl8itd7ry | |||||
| bucketname: formall | |||||
| filehost: malinkbapi | |||||
| filedomain: http://formall.oss-accelerate.aliyuncs.com | |||||
| mail: | mail: | ||||
| host: smtp.exmail.qq.com | host: smtp.exmail.qq.com | ||||
| username: ENC(lknBjZsA24AaQEXuy0fFw3acd4v4Xsf3CsgDcRZgjlYnNAL9R07d/w==) | |||||
| password: ENC(gIkVPuYMmJ/EDxry8QIfGumIAk4plAwolGrfg1fiM3U=) # 授权密码 | |||||
| username: zhengfangyuan@iformall.com | |||||
| password: xnydCeUzofB2h8qp # 授权密码 | |||||
| properties: | properties: | ||||
| mail: | mail: | ||||
| smtp: | smtp: | ||||
| @@ -11,9 +11,11 @@ import com.amazonaws.services.s3.AmazonS3ClientBuilder; | |||||
| import com.amazonaws.services.s3.model.CannedAccessControlList; | import com.amazonaws.services.s3.model.CannedAccessControlList; | ||||
| import com.amazonaws.services.s3.model.ObjectMetadata; | import com.amazonaws.services.s3.model.ObjectMetadata; | ||||
| import com.amazonaws.services.s3.model.PutObjectRequest; | import com.amazonaws.services.s3.model.PutObjectRequest; | ||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.config.AwsProperty; | import com.iformall.config.AwsProperty; | ||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.file.aliyun.AliyunOSS; | |||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
| @@ -42,6 +44,9 @@ public class UploadController extends BaseController { | |||||
| @Autowired | @Autowired | ||||
| private AwsProperty awsProperty; | private AwsProperty awsProperty; | ||||
| @Autowired | |||||
| private AliyunOSS aliyunOSS; | |||||
| private AmazonS3 s3 = null; | private AmazonS3 s3 = null; | ||||
| private ResultData awsUpload(MultipartFile multiReq, ObjectMetadata metadata, String fileName) { | private ResultData awsUpload(MultipartFile multiReq, ObjectMetadata metadata, String fileName) { | ||||
| @@ -134,15 +139,24 @@ public class UploadController extends BaseController { | |||||
| String fileName = UUID.randomUUID().toString(); | String fileName = UUID.randomUUID().toString(); | ||||
| int dot = multiReq.getOriginalFilename().lastIndexOf('.'); | int dot = multiReq.getOriginalFilename().lastIndexOf('.'); | ||||
| String fileFormat = ""; | |||||
| if (dot >= 0) { | if (dot >= 0) { | ||||
| String fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); | |||||
| fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); | |||||
| fileName = getFileName(tenantEntity, fileName + fileFormat); | fileName = getFileName(tenantEntity, fileName + fileFormat); | ||||
| } else { | } else { | ||||
| fileName = getFileName(tenantEntity, fileName); | fileName = getFileName(tenantEntity, fileName); | ||||
| } | } | ||||
| ResultData data = awsUpload(multiReq, metadata, fileName); | |||||
| return data; | |||||
| // ResultData data = awsUpload(multiReq, metadata, fileName); | |||||
| try { | |||||
| ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); | |||||
| return data; | |||||
| } catch (IOException e) { | |||||
| //e.printStackTrace(); | |||||
| logger.error(e.getMessage()); | |||||
| return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); | |||||
| } | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -176,24 +190,33 @@ public class UploadController extends BaseController { | |||||
| String fileName = UUID.randomUUID().toString(); | String fileName = UUID.randomUUID().toString(); | ||||
| int dot = multipartFile.getOriginalFilename().lastIndexOf('.'); | int dot = multipartFile.getOriginalFilename().lastIndexOf('.'); | ||||
| String fileFormat = ""; | |||||
| if (dot >= 0) { | if (dot >= 0) { | ||||
| String fileFormat = multipartFile.getOriginalFilename().substring(dot, multipartFile.getOriginalFilename().length()); | |||||
| fileFormat = multipartFile.getOriginalFilename().substring(dot, multipartFile.getOriginalFilename().length()); | |||||
| fileName = getFileName(tenantEntity, fileName + fileFormat); | fileName = getFileName(tenantEntity, fileName + fileFormat); | ||||
| } else { | } else { | ||||
| fileName = getFileName(tenantEntity, fileName); | fileName = getFileName(tenantEntity, fileName); | ||||
| } | } | ||||
| ResultData data1 = awsUpload(multipartFile, metadata, fileName); | |||||
| if (data1.code == ResultData.SUCCESS) { | |||||
| Map _data = (Map) data1.data; | |||||
| map.put("url", (String) _data.get("url")); | |||||
| dataList.add(map); | |||||
| } else { | |||||
| // 部分成功 | |||||
| data.code = ResultData.SUCCESS; | |||||
| data.data = dataList; | |||||
| return data; | |||||
| // ResultData data1 = awsUpload(multipartFile, metadata, fileName); | |||||
| try { | |||||
| ResultData data1 = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multipartFile.getInputStream()); | |||||
| if (data1.code == ResultData.SUCCESS) { | |||||
| Map _data = (Map) data1.data; | |||||
| map.put("url", (String) _data.get("url")); | |||||
| dataList.add(map); | |||||
| } else { | |||||
| // 部分成功 | |||||
| data.code = ResultData.SUCCESS; | |||||
| data.data = dataList; | |||||
| return data; | |||||
| } | |||||
| } catch (IOException e) { | |||||
| //e.printStackTrace(); | |||||
| logger.error(e.getMessage()); | |||||
| return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); | |||||
| } | } | ||||
| } | } | ||||
| data.code = ResultData.SUCCESS; | data.code = ResultData.SUCCESS; | ||||
| data.data = dataList; | data.data = dataList; | ||||
| @@ -52,11 +52,19 @@ spring: | |||||
| dateFormat: yyyyMMdd | dateFormat: yyyyMMdd | ||||
| endpointName: cn-hangzhou | endpointName: cn-hangzhou | ||||
| oss: | |||||
| endpoint: oss-cn-beijing.aliyuncs.com | |||||
| keyid: LTAI4G7ixY4AhvM35F8o3W3V | |||||
| keysecret: VfWqGb83qIQrS9us45utskl8itd7ry | |||||
| bucketname: formall | |||||
| filehost: malinkcapi | |||||
| filedomain: http://formall.oss-accelerate.aliyuncs.com | |||||
| mail: | mail: | ||||
| host: smtp.exmail.qq.com | host: smtp.exmail.qq.com | ||||
| username: ENC(lknBjZsA24AaQEXuy0fFw3acd4v4Xsf3CsgDcRZgjlYnNAL9R07d/w==) | |||||
| password: ENC(gIkVPuYMmJ/EDxry8QIfGumIAk4plAwolGrfg1fiM3U=) # 授权密码 | |||||
| username: zhengfangyuan@iformall.com | |||||
| password: xnydCeUzofB2h8qp # 授权密码 | |||||
| properties: | properties: | ||||
| mail: | mail: | ||||
| smtp: | smtp: | ||||
| @@ -9,6 +9,7 @@ import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| import java.util.List; | |||||
| import java.util.Map; | import java.util.Map; | ||||
| @RestController | @RestController | ||||
| @@ -51,12 +52,17 @@ public class WxMsgCallbackController extends BaseController { | |||||
| * @param param | * @param param | ||||
| */ | */ | ||||
| @PostMapping(value = "/receivemodelAliyun") | @PostMapping(value = "/receivemodelAliyun") | ||||
| public Result receiveverifymodel(@RequestParam Map<String, String> param) { | |||||
| public Result receiveverifymodel(@RequestBody List<Map<String, String>> param) { | |||||
| logger.debug("[" + getIpAddr() + "] WxMsgCallbackController::receivemodelAliyun"); | logger.debug("[" + getIpAddr() + "] WxMsgCallbackController::receivemodelAliyun"); | ||||
| logger.info(param.toString()); | logger.info(param.toString()); | ||||
| try { | try { | ||||
| //解析param数据插入数据库中 | |||||
| wxMsgCallbackService.receivemodelAliyun(param); | |||||
| if(param != null && param.size() > 0){ | |||||
| for (Map<String, String> p:param) { | |||||
| //解析param数据插入数据库中 | |||||
| wxMsgCallbackService.receivemodelAliyun(p); | |||||
| } | |||||
| } | |||||
| }catch(Exception e){ | }catch(Exception e){ | ||||
| logger.error("aliyun 模板回调ERROR",e); | logger.error("aliyun 模板回调ERROR",e); | ||||
| return new Result(ErrorCode.SYS_SERVER_ERROR); | return new Result(ErrorCode.SYS_SERVER_ERROR); | ||||
| @@ -66,12 +72,17 @@ public class WxMsgCallbackController extends BaseController { | |||||
| } | } | ||||
| @PostMapping(value = "/receivemsgAliyun") | @PostMapping(value = "/receivemsgAliyun") | ||||
| public Result receivemsg(@RequestParam Map<String, String> param) { | |||||
| public Result receivemsg(@RequestBody List<Map<String, String>> param) { | |||||
| logger.debug("[" + getIpAddr() + "] WxMsgCallbackController::receivemsgAliyun"); | logger.debug("[" + getIpAddr() + "] WxMsgCallbackController::receivemsgAliyun"); | ||||
| logger.info(param.toString()); | logger.info(param.toString()); | ||||
| try { | try { | ||||
| //解析param数据插入数据库中 | |||||
| wxMsgCallbackService.receivemsgAliyun(param); | |||||
| if(param != null && param.size() > 0){ | |||||
| for (Map<String, String> p:param) { | |||||
| //解析param数据插入数据库中 | |||||
| wxMsgCallbackService.receivemsgAliyun(p); | |||||
| } | |||||
| } | |||||
| }catch(Exception e){ | }catch(Exception e){ | ||||
| logger.error("aliyun 短信回调ERROR",e); | logger.error("aliyun 短信回调ERROR",e); | ||||
| return new Result(ErrorCode.SYS_SERVER_ERROR); | return new Result(ErrorCode.SYS_SERVER_ERROR); | ||||
| @@ -53,11 +53,19 @@ spring: | |||||
| dateFormat: yyyyMMdd | dateFormat: yyyyMMdd | ||||
| endpointName: cn-hangzhou | endpointName: cn-hangzhou | ||||
| oss: | |||||
| endpoint: oss-cn-beijing.aliyuncs.com | |||||
| keyid: LTAI4G7ixY4AhvM35F8o3W3V | |||||
| keysecret: VfWqGb83qIQrS9us45utskl8itd7ry | |||||
| bucketname: formall | |||||
| filehost: malinkcallback | |||||
| filedomain: http://formall.oss-accelerate.aliyuncs.com | |||||
| mail: | mail: | ||||
| host: smtp.exmail.qq.com | host: smtp.exmail.qq.com | ||||
| username: ENC(lknBjZsA24AaQEXuy0fFw3acd4v4Xsf3CsgDcRZgjlYnNAL9R07d/w==) | |||||
| password: ENC(gIkVPuYMmJ/EDxry8QIfGumIAk4plAwolGrfg1fiM3U=) # 授权密码 | |||||
| username: zhengfangyuan@iformall.com | |||||
| password: xnydCeUzofB2h8qp # 授权密码 | |||||
| properties: | properties: | ||||
| mail: | mail: | ||||
| smtp: | smtp: | ||||
| @@ -54,11 +54,19 @@ spring: | |||||
| dateFormat: yyyyMMdd | dateFormat: yyyyMMdd | ||||
| endpointName: cn-hangzhou | endpointName: cn-hangzhou | ||||
| oss: | |||||
| endpoint: oss-cn-beijing.aliyuncs.com | |||||
| keyid: LTAI4G7ixY4AhvM35F8o3W3V | |||||
| keysecret: VfWqGb83qIQrS9us45utskl8itd7ry | |||||
| bucketname: formall | |||||
| filehost: malinkmqconsumer | |||||
| filedomain: http://formall.oss-accelerate.aliyuncs.com | |||||
| mail: | mail: | ||||
| host: smtp.exmail.qq.com | host: smtp.exmail.qq.com | ||||
| username: ENC(lknBjZsA24AaQEXuy0fFw3acd4v4Xsf3CsgDcRZgjlYnNAL9R07d/w==) | |||||
| password: ENC(gIkVPuYMmJ/EDxry8QIfGumIAk4plAwolGrfg1fiM3U=) # 授权密码 | |||||
| username: zhengfangyuan@iformall.com | |||||
| password: xnydCeUzofB2h8qp # 授权密码 | |||||
| properties: | properties: | ||||
| mail: | mail: | ||||
| smtp: | smtp: | ||||
| @@ -52,11 +52,19 @@ spring: | |||||
| dateFormat: yyyyMMdd | dateFormat: yyyyMMdd | ||||
| endpointName: cn-hangzhou | endpointName: cn-hangzhou | ||||
| oss: | |||||
| endpoint: oss-cn-beijing.aliyuncs.com | |||||
| keyid: LTAI4G7ixY4AhvM35F8o3W3V | |||||
| keysecret: VfWqGb83qIQrS9us45utskl8itd7ry | |||||
| bucketname: formall | |||||
| filehost: malinkposapi | |||||
| filedomain: http://formall.oss-accelerate.aliyuncs.com | |||||
| mail: | mail: | ||||
| host: smtp.exmail.qq.com | host: smtp.exmail.qq.com | ||||
| username: ENC(lknBjZsA24AaQEXuy0fFw3acd4v4Xsf3CsgDcRZgjlYnNAL9R07d/w==) | |||||
| password: ENC(gIkVPuYMmJ/EDxry8QIfGumIAk4plAwolGrfg1fiM3U=) # 授权密码 | |||||
| username: zhengfangyuan@iformall.com | |||||
| password: xnydCeUzofB2h8qp # 授权密码 | |||||
| properties: | properties: | ||||
| mail: | mail: | ||||
| smtp: | smtp: | ||||
| @@ -54,11 +54,19 @@ spring: | |||||
| dateFormat: yyyyMMdd | dateFormat: yyyyMMdd | ||||
| endpointName: cn-hangzhou | endpointName: cn-hangzhou | ||||
| oss: | |||||
| endpoint: oss-cn-beijing.aliyuncs.com | |||||
| keyid: LTAI4G7ixY4AhvM35F8o3W3V | |||||
| keysecret: VfWqGb83qIQrS9us45utskl8itd7ry | |||||
| bucketname: formall | |||||
| filehost: malinkschedule | |||||
| filedomain: http://formall.oss-accelerate.aliyuncs.com | |||||
| mail: | mail: | ||||
| host: smtp.exmail.qq.com | host: smtp.exmail.qq.com | ||||
| username: ENC(lknBjZsA24AaQEXuy0fFw3acd4v4Xsf3CsgDcRZgjlYnNAL9R07d/w==) | |||||
| password: ENC(gIkVPuYMmJ/EDxry8QIfGumIAk4plAwolGrfg1fiM3U=) # 授权密码 | |||||
| username: zhengfangyuan@iformall.com | |||||
| password: xnydCeUzofB2h8qp # 授权密码 | |||||
| properties: | properties: | ||||
| mail: | mail: | ||||
| smtp: | smtp: | ||||
| @@ -44,7 +44,7 @@ public class WxMsgConfig extends TenantEntity { | |||||
| @io.swagger.annotations.ApiModelProperty(value="appid",name="appid") | @io.swagger.annotations.ApiModelProperty(value="appid",name="appid") | ||||
| private String appid; | private String appid; | ||||
| @io.swagger.annotations.ApiModelProperty(value="是否阿里云发短信1:是;0:否",name="isAliyunSMS") | |||||
| private Integer isAliyunSMS; | |||||
| @io.swagger.annotations.ApiModelProperty(value="发短信渠道0:wiwidi; 11:aliyun",name="smsChannel") | |||||
| private Integer smsChannel; | |||||
| } | } | ||||
| @@ -0,0 +1,99 @@ | |||||
| package com.iformall.file.aliyun; | |||||
| import com.aliyun.oss.*; | |||||
| import com.aliyun.oss.model.CannedAccessControlList; | |||||
| import com.aliyun.oss.model.CreateBucketRequest; | |||||
| import com.aliyun.oss.model.PutObjectRequest; | |||||
| import com.aliyun.oss.model.PutObjectResult; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.file.aliyun.bean.AliyunOSSConfig; | |||||
| import lombok.extern.slf4j.Slf4j; | |||||
| import org.apache.commons.lang3.StringUtils; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.stereotype.Component; | |||||
| import org.springframework.stereotype.Service; | |||||
| import java.io.File; | |||||
| import java.io.InputStream; | |||||
| import java.text.SimpleDateFormat; | |||||
| import java.util.Date; | |||||
| import java.util.HashMap; | |||||
| import java.util.Map; | |||||
| import java.util.UUID; | |||||
| @Component | |||||
| @Slf4j | |||||
| public class AliyunOSS { | |||||
| @Autowired | |||||
| private AliyunOSSConfig aliyunOSSConfig; | |||||
| public ResultData uploadFile(String folder, String suffix,InputStream inputStream){ | |||||
| String upload = upload(folder,suffix, inputStream); | |||||
| ResultData data; | |||||
| if(StringUtils.isNotBlank(upload)){ | |||||
| data = new ResultData(); | |||||
| Map<String, String> map = new HashMap<>(); | |||||
| map.put("url", upload); | |||||
| data.data = map; | |||||
| }else{ | |||||
| data = new ResultData(ResultData.ERROR,"上传失败"); | |||||
| } | |||||
| return data; | |||||
| } | |||||
| /** | |||||
| * 上传 | |||||
| * @param inputStream | |||||
| * @return | |||||
| */ | |||||
| public String upload(String folder, String suffix,InputStream inputStream){ | |||||
| log.info("=========>OSS文件上传开始:"); | |||||
| String endpoint= aliyunOSSConfig.getEndpoint(); | |||||
| String accessKeyId= aliyunOSSConfig.getKeyid(); | |||||
| String accessKeySecret=aliyunOSSConfig.getKeysecret(); | |||||
| String bucketName=aliyunOSSConfig.getBucketname(); | |||||
| String fileHost=aliyunOSSConfig.getFilehost(); | |||||
| SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); | |||||
| String dateStr = format.format(new Date()); | |||||
| if(null == inputStream){ | |||||
| return null; | |||||
| } | |||||
| OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId,accessKeySecret); | |||||
| try { | |||||
| //容器不存在,就创建 | |||||
| if(! ossClient.doesBucketExist(bucketName)){ | |||||
| ossClient.createBucket(bucketName); | |||||
| CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName); | |||||
| createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead); | |||||
| ossClient.createBucket(createBucketRequest); | |||||
| } | |||||
| if(StringUtils.isNotBlank(folder)){ | |||||
| folder = folder + "/"; | |||||
| }else{ | |||||
| folder = ""; | |||||
| } | |||||
| //创建文件路径 | |||||
| String fileUrl = folder + fileHost + "/" + dateStr + "/" | |||||
| + UUID.randomUUID().toString().replace("-","") + suffix; | |||||
| //上传文件 | |||||
| PutObjectResult result = ossClient.putObject(new PutObjectRequest(bucketName, fileUrl, inputStream)); | |||||
| //设置权限 这里是公开读 | |||||
| ossClient.setBucketAcl(bucketName,CannedAccessControlList.PublicRead); | |||||
| if(null != result){ | |||||
| log.info("==========>OSS文件上传成功,OSS地址:"+fileUrl); | |||||
| return aliyunOSSConfig.getFiledomain() + "/" + fileUrl; | |||||
| } | |||||
| }catch (OSSException oe){ | |||||
| log.error(oe.getMessage()); | |||||
| }catch (ClientException ce){ | |||||
| log.error(ce.getMessage()); | |||||
| }finally { | |||||
| //关闭 | |||||
| ossClient.shutdown(); | |||||
| } | |||||
| return null; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,22 @@ | |||||
| package com.iformall.file.aliyun.bean; | |||||
| import lombok.Data; | |||||
| import org.springframework.boot.context.properties.ConfigurationProperties; | |||||
| import org.springframework.stereotype.Component; | |||||
| /** | |||||
| * aliyun 配置 | |||||
| */ | |||||
| @Component | |||||
| @Data | |||||
| @ConfigurationProperties(prefix = "spring.aliyun.oss") | |||||
| public class AliyunOSSConfig { | |||||
| private String endpoint; | |||||
| private String keyid; | |||||
| private String keysecret; | |||||
| private String bucketname; | |||||
| private String filehost; | |||||
| private String filedomain; | |||||
| } | |||||
| @@ -167,11 +167,11 @@ public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { | |||||
| //approved:审核通过 | //approved:审核通过 | ||||
| //rejected:审核未通过 | //rejected:审核未通过 | ||||
| String templateStatus = param.get("template_status"); | String templateStatus = param.get("template_status"); | ||||
| if("approving".equals(templateStatus)){ | |||||
| if("approving".equalsIgnoreCase(templateStatus)){ | |||||
| wxMsgModel.setStatus(2); | wxMsgModel.setStatus(2); | ||||
| }else if("approved".equals(templateStatus)){ | |||||
| }else if("approved".equalsIgnoreCase(templateStatus)){ | |||||
| wxMsgModel.setStatus(1); | wxMsgModel.setStatus(1); | ||||
| }else if("rejected".equals(templateStatus)){ | |||||
| }else if("rejected".equalsIgnoreCase(templateStatus)){ | |||||
| wxMsgModel.setStatus(0); | wxMsgModel.setStatus(0); | ||||
| }else{ | }else{ | ||||
| wxMsgModel.setStatus(-1); | wxMsgModel.setStatus(-1); | ||||
| @@ -190,7 +190,7 @@ public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { | |||||
| String success = param.get("success"); | String success = param.get("success"); | ||||
| WxMsgCallback wxMsgCallback = new WxMsgCallback(); | WxMsgCallback wxMsgCallback = new WxMsgCallback(); | ||||
| wxMsgCallback.setBatchNo(param.get("biz_id")); | wxMsgCallback.setBatchNo(param.get("biz_id")); | ||||
| if("true".equals(success)){ | |||||
| if("true".equalsIgnoreCase(success)){ | |||||
| wxMsgCallback.setStatus(EnumMsgSendStatus.MSG_SEND_SUCCESS.getCode()); | wxMsgCallback.setStatus(EnumMsgSendStatus.MSG_SEND_SUCCESS.getCode()); | ||||
| if(StringUtils.isNotBlank(param.get("out_id"))){ | if(StringUtils.isNotBlank(param.get("out_id"))){ | ||||
| WxCouponPassword couponPassword = new WxCouponPassword(); | WxCouponPassword couponPassword = new WxCouponPassword(); | ||||
| @@ -17,6 +17,7 @@ import com.iformall.mapper.WxMsgModelMapper; | |||||
| import com.iformall.service.WxMsgModelService; | import com.iformall.service.WxMsgModelService; | ||||
| import com.iformall.sms.SMSFactory; | import com.iformall.sms.SMSFactory; | ||||
| import com.iformall.utils.*; | import com.iformall.utils.*; | ||||
| import org.apache.commons.lang3.StringUtils; | |||||
| 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; | ||||
| @@ -74,7 +75,7 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { | |||||
| String result = SMSFactory.addTemplate(secret, bid, wxMsgConfig.getPublickey(), signature, | String result = SMSFactory.addTemplate(secret, bid, wxMsgConfig.getPublickey(), signature, | ||||
| content, wxMsgConfig.getModelnotifyurl(),EnumVerifyCode.NO.getCode().toString(), | content, wxMsgConfig.getModelnotifyurl(),EnumVerifyCode.NO.getCode().toString(), | ||||
| wxMsgModel.getName(),2,wxMsgModel.getName(),wxMsgConfig.getIsAliyunSMS()); | |||||
| wxMsgModel.getName(),1,wxMsgModel.getName(),wxMsgConfig.getSmsChannel()); | |||||
| JSONObject jsonObjectResult = JSONObject.parseObject(result); | JSONObject jsonObjectResult = JSONObject.parseObject(result); | ||||
| String ret = jsonObjectResult.get("ret").toString(); | String ret = jsonObjectResult.get("ret").toString(); | ||||
| logger.info("短信模板创建结果:" + result); | logger.info("短信模板创建结果:" + result); | ||||
| @@ -83,16 +84,24 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { | |||||
| final IdWorker idWorker = IdWorker.get(); | final IdWorker idWorker = IdWorker.get(); | ||||
| wxMsgModel.setId(idWorker.nextId()); | wxMsgModel.setId(idWorker.nextId()); | ||||
| wxMsgModel.setTenantId(wxMsgModel.getTenantId()); | wxMsgModel.setTenantId(wxMsgModel.getTenantId()); | ||||
| String data = jsonObjectResult.get("data").toString(); | |||||
| wxMsgModel.setModelId(Integer.valueOf(data)); | |||||
| wxMsgModel.setModelCode(jsonObjectResult.get("aliyunModelCode").toString()); | |||||
| if(jsonObjectResult.get("data") != null){ | |||||
| String data = jsonObjectResult.get("data").toString(); | |||||
| wxMsgModel.setModelId(Integer.valueOf(data)); | |||||
| } | |||||
| if(jsonObjectResult.get("aliyunModelCode") != null){ | |||||
| wxMsgModel.setModelCode(jsonObjectResult.get("aliyunModelCode").toString()); | |||||
| } | |||||
| wxMsgModel.setCreatetime(new Date()); | wxMsgModel.setCreatetime(new Date()); | ||||
| wxMsgModel.setStatus(2);//审核中 | wxMsgModel.setStatus(2);//审核中 | ||||
| wxMsgModelMapper.insert(wxMsgModel); | wxMsgModelMapper.insert(wxMsgModel); | ||||
| } else { | } else { | ||||
| String data = jsonObjectResult.get("data").toString(); | |||||
| wxMsgModel.setModelId(Integer.valueOf(data)); | |||||
| wxMsgModel.setModelCode(jsonObjectResult.get("aliyunModelCode").toString()); | |||||
| if(jsonObjectResult.get("data") != null){ | |||||
| String data = jsonObjectResult.get("data").toString(); | |||||
| wxMsgModel.setModelId(Integer.valueOf(data)); | |||||
| } | |||||
| if(jsonObjectResult.get("aliyunModelCode") != null){ | |||||
| wxMsgModel.setModelCode(jsonObjectResult.get("aliyunModelCode").toString()); | |||||
| } | |||||
| wxMsgModel.setStatus(2);//审核中 | wxMsgModel.setStatus(2);//审核中 | ||||
| wxMsgModelMapper.updateById(wxMsgModel); | wxMsgModelMapper.updateById(wxMsgModel); | ||||
| } | } | ||||
| @@ -124,7 +124,7 @@ public class WxMsgValidationcodeModelServiceImpl implements WxMsgValidationcodeM | |||||
| String result = SMSFactory.addTemplate(secret, bid, wxMsgConfig.getPublickey(), signature, content, | String result = SMSFactory.addTemplate(secret, bid, wxMsgConfig.getPublickey(), signature, content, | ||||
| wxMsgConfig.getVerifynotifyurl(),EnumVerifyCode.YES.getCode().toString(), | wxMsgConfig.getVerifynotifyurl(),EnumVerifyCode.YES.getCode().toString(), | ||||
| wxMsgModel.getName(),1,wxMsgModel.getName(),wxMsgConfig.getIsAliyunSMS()); | |||||
| wxMsgModel.getName(),1,wxMsgModel.getName(),wxMsgConfig.getSmsChannel()); | |||||
| JSONObject jsonObjectResult = JSONObject.parseObject(result); | JSONObject jsonObjectResult = JSONObject.parseObject(result); | ||||
| String ret = jsonObjectResult.get("ret").toString(); | String ret = jsonObjectResult.get("ret").toString(); | ||||
| @@ -133,15 +133,24 @@ public class WxMsgValidationcodeModelServiceImpl implements WxMsgValidationcodeM | |||||
| final IdWorker idWorker = IdWorker.get(); | final IdWorker idWorker = IdWorker.get(); | ||||
| wxMsgModel.setId(idWorker.nextId()); | wxMsgModel.setId(idWorker.nextId()); | ||||
| wxMsgModel.setTenantId(wxMsgModel.getTenantId()); | wxMsgModel.setTenantId(wxMsgModel.getTenantId()); | ||||
| String data = jsonObjectResult.get("data").toString(); | |||||
| wxMsgModel.setModelId(Integer.valueOf(data)); | |||||
| wxMsgModel.setModelCode(jsonObjectResult.get("aliyunModelCode").toString()); | |||||
| if(jsonObjectResult.get("data") != null){ | |||||
| String data = jsonObjectResult.get("data").toString(); | |||||
| wxMsgModel.setModelId(Integer.valueOf(data)); | |||||
| } | |||||
| if(jsonObjectResult.get("aliyunModelCode") != null){ | |||||
| wxMsgModel.setModelCode(jsonObjectResult.get("aliyunModelCode").toString()); | |||||
| } | |||||
| wxMsgModel.setCreatetime(new Date()); | wxMsgModel.setCreatetime(new Date()); | ||||
| wxMsgModel.setStatus(2);//审核中 | wxMsgModel.setStatus(2);//审核中 | ||||
| wxMsgValidationcodeModelMapper.insert(wxMsgModel); | wxMsgValidationcodeModelMapper.insert(wxMsgModel); | ||||
| } else { | } else { | ||||
| String data = jsonObjectResult.get("data").toString(); | |||||
| wxMsgModel.setModelId(Integer.valueOf(data)); | |||||
| if(jsonObjectResult.get("data") != null){ | |||||
| String data = jsonObjectResult.get("data").toString(); | |||||
| wxMsgModel.setModelId(Integer.valueOf(data)); | |||||
| } | |||||
| if(jsonObjectResult.get("aliyunModelCode") != null){ | |||||
| wxMsgModel.setModelCode(jsonObjectResult.get("aliyunModelCode").toString()); | |||||
| } | |||||
| wxMsgModel.setStatus(2);//审核中 | wxMsgModel.setStatus(2);//审核中 | ||||
| wxMsgValidationcodeModelMapper.updateById(wxMsgModel); | wxMsgValidationcodeModelMapper.updateById(wxMsgModel); | ||||
| } | } | ||||
| @@ -103,7 +103,7 @@ public class SendCallBackSmsServiceImpl implements MsgSendService { | |||||
| */ | */ | ||||
| String result = SMSFactory.sendSms(secret, bid, publickey, phone, signature, msg, notifyUrl, | String result = SMSFactory.sendSms(secret, bid, publickey, phone, signature, msg, notifyUrl, | ||||
| EnumVerifyCode.NO.getCode().toString(), modelId, | EnumVerifyCode.NO.getCode().toString(), modelId, | ||||
| null,wxMsgModel.getModelCode(),Long.toString(record.getId()),wxMsgConfig.getIsAliyunSMS()); | |||||
| null,wxMsgModel.getModelCode(),Long.toString(record.getId()),wxMsgConfig.getSmsChannel()); | |||||
| @@ -102,7 +102,7 @@ public class SendSmsServiceImpl implements MsgSendService { | |||||
| String result = SMSFactory.sendSms(secret, bid, publickey, phone, signature, msg, notifyUrl, | String result = SMSFactory.sendSms(secret, bid, publickey, phone, signature, msg, notifyUrl, | ||||
| EnumVerifyCode.YES.getCode().toString(), modelId, | EnumVerifyCode.YES.getCode().toString(), modelId, | ||||
| JSON.toJSONString(record.getDynamicContentMap()),wxMsgValidationcodeModel.getModelCode(), | JSON.toJSONString(record.getDynamicContentMap()),wxMsgValidationcodeModel.getModelCode(), | ||||
| id,wxMsgConfig.getIsAliyunSMS()); | |||||
| id,wxMsgConfig.getSmsChannel()); | |||||
| JSONObject jsonObjectResult = JSONObject.parseObject(result); | JSONObject jsonObjectResult = JSONObject.parseObject(result); | ||||
| String ret = jsonObjectResult.get("ret").toString(); | String ret = jsonObjectResult.get("ret").toString(); | ||||
| String batchNo = jsonObjectResult.get("data").toString(); | String batchNo = jsonObjectResult.get("data").toString(); | ||||
| @@ -7,7 +7,7 @@ package com.iformall.sms; | |||||
| public enum EnumSMSChannel { | public enum EnumSMSChannel { | ||||
| ALIYUN(11, "ALIYUN"), | ALIYUN(11, "ALIYUN"), | ||||
| WIWIDE(1,"WIWIDE"); | |||||
| WIWIDE(0,"WIWIDE"); | |||||
| public static EnumSMSChannel getEnum(Integer code) { | public static EnumSMSChannel getEnum(Integer code) { | ||||
| for (EnumSMSChannel value : values()) { | for (EnumSMSChannel value : values()) { | ||||
| @@ -34,7 +34,7 @@ public class AliyunSMS implements SMSExcutor { | |||||
| sms.setSignName(signature); | sms.setSignName(signature); | ||||
| Result result = this.sendSms(sms); | Result result = this.sendSms(sms); | ||||
| if(result.getSendSmsResponse().getCode() != null | if(result.getSendSmsResponse().getCode() != null | ||||
| && result.getSendSmsResponse().getCode().equals("ok")){ | |||||
| && result.getSendSmsResponse().getCode().equalsIgnoreCase("ok")){ | |||||
| SMSResult.setRet("1"); | SMSResult.setRet("1"); | ||||
| SMSResult.setData(result.getSendSmsResponse().getBizId()); | SMSResult.setData(result.getSendSmsResponse().getBizId()); | ||||
| } | } | ||||
| @@ -50,7 +50,7 @@ public class AliyunSMS implements SMSExcutor { | |||||
| smsTemplate.setTemplateType(templateType); | smsTemplate.setTemplateType(templateType); | ||||
| smsTemplate.setRemark(remark); | smsTemplate.setRemark(remark); | ||||
| AddSmsTemplateResponse addSmsTemplateResponse = this.addSmsTemplate(smsTemplate); | AddSmsTemplateResponse addSmsTemplateResponse = this.addSmsTemplate(smsTemplate); | ||||
| if(addSmsTemplateResponse.getCode() != null && addSmsTemplateResponse.getCode().equals("ok")){ | |||||
| if(addSmsTemplateResponse.getCode() != null && addSmsTemplateResponse.getCode().equalsIgnoreCase("ok")){ | |||||
| SMSResult.setRet("1"); | SMSResult.setRet("1"); | ||||
| SMSResult.setAliyunModelCode(addSmsTemplateResponse.getTemplateCode()); | SMSResult.setAliyunModelCode(addSmsTemplateResponse.getTemplateCode()); | ||||
| } | } | ||||
| @@ -97,6 +97,7 @@ public class AliyunSMS implements SMSExcutor { | |||||
| log.error("添加签名发生错误。错误代码是 [{}],错误消息是 [{}],错误请求ID是 [{}],错误Msg是 [{}],错误类型是 [{}]", | log.error("添加签名发生错误。错误代码是 [{}],错误消息是 [{}],错误请求ID是 [{}],错误Msg是 [{}],错误类型是 [{}]", | ||||
| e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); | e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); | ||||
| } | } | ||||
| log.info("添加签名-----" + response.getCode() + "----" + response.getMessage()); | |||||
| return response; | return response; | ||||
| } | } | ||||
| @@ -115,6 +116,7 @@ public class AliyunSMS implements SMSExcutor { | |||||
| log.error("删除签名发生错误。错误代码是 [{}],错误消息是 [{}],错误请求ID是 [{}],错误Msg是 [{}],错误类型是 [{}]", | log.error("删除签名发生错误。错误代码是 [{}],错误消息是 [{}],错误请求ID是 [{}],错误Msg是 [{}],错误类型是 [{}]", | ||||
| e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); | e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); | ||||
| } | } | ||||
| log.info("删除签名-----" + response.getCode() + "----" + response.getMessage()); | |||||
| return response; | return response; | ||||
| } | } | ||||
| @@ -135,6 +137,7 @@ public class AliyunSMS implements SMSExcutor { | |||||
| log.error("修改签名发生错误。错误代码是 [{}],错误消息是 [{}],错误请求ID是 [{}],错误Msg是 [{}],错误类型是 [{}]", | log.error("修改签名发生错误。错误代码是 [{}],错误消息是 [{}],错误请求ID是 [{}],错误Msg是 [{}],错误类型是 [{}]", | ||||
| e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); | e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); | ||||
| } | } | ||||
| log.info("修改签名----" + response.getCode() + "----" + response.getMessage()); | |||||
| return response; | return response; | ||||
| } | } | ||||
| @@ -153,6 +156,7 @@ public class AliyunSMS implements SMSExcutor { | |||||
| log.error("查询签名发生错误。错误代码是 [{}],错误消息是 [{}],错误请求ID是 [{}],错误Msg是 [{}],错误类型是 [{}]", | log.error("查询签名发生错误。错误代码是 [{}],错误消息是 [{}],错误请求ID是 [{}],错误Msg是 [{}],错误类型是 [{}]", | ||||
| e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); | e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); | ||||
| } | } | ||||
| log.info("查询签名----" + response.getCode() + "----" + response.getMessage()); | |||||
| return response; | return response; | ||||
| } | } | ||||
| @@ -171,9 +175,10 @@ public class AliyunSMS implements SMSExcutor { | |||||
| try { | try { | ||||
| response = acsClient.getAcsResponse(request); | response = acsClient.getAcsResponse(request); | ||||
| } catch (ClientException e) { | } catch (ClientException e) { | ||||
| log.error("添加签名发生错误。错误代码是 [{}],错误消息是 [{}],错误请求ID是 [{}],错误Msg是 [{}],错误类型是 [{}]", | |||||
| log.error(" 添加模板发生错误。错误代码是 [{}],错误消息是 [{}],错误请求ID是 [{}],错误Msg是 [{}],错误类型是 [{}]", | |||||
| e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); | e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); | ||||
| } | } | ||||
| log.info(" 添加模板----" + response.getCode() + "----" + response.getMessage()); | |||||
| return response; | return response; | ||||
| } | } | ||||
| @@ -189,9 +194,10 @@ public class AliyunSMS implements SMSExcutor { | |||||
| try { | try { | ||||
| response = acsClient.getAcsResponse(request); | response = acsClient.getAcsResponse(request); | ||||
| } catch (ClientException e) { | } catch (ClientException e) { | ||||
| log.error("删除签名发生错误。错误代码是 [{}],错误消息是 [{}],错误请求ID是 [{}],错误Msg是 [{}],错误类型是 [{}]", | |||||
| log.error("删除模板发生错误。错误代码是 [{}],错误消息是 [{}],错误请求ID是 [{}],错误Msg是 [{}],错误类型是 [{}]", | |||||
| e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); | e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); | ||||
| } | } | ||||
| log.info(" 删除模板----" + response.getCode() + "----" + response.getMessage()); | |||||
| return response; | return response; | ||||
| } | } | ||||
| @@ -211,9 +217,10 @@ public class AliyunSMS implements SMSExcutor { | |||||
| try { | try { | ||||
| response = acsClient.getAcsResponse(request); | response = acsClient.getAcsResponse(request); | ||||
| } catch (ClientException e) { | } catch (ClientException e) { | ||||
| log.error("修改签名发生错误。错误代码是 [{}],错误消息是 [{}],错误请求ID是 [{}],错误Msg是 [{}],错误类型是 [{}]", | |||||
| log.error("修改模板发生错误。错误代码是 [{}],错误消息是 [{}],错误请求ID是 [{}],错误Msg是 [{}],错误类型是 [{}]", | |||||
| e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); | e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); | ||||
| } | } | ||||
| log.info(" 修改模板----" + response.getCode() + "----" + response.getMessage()); | |||||
| return response; | return response; | ||||
| } | } | ||||
| @@ -229,9 +236,10 @@ public class AliyunSMS implements SMSExcutor { | |||||
| try { | try { | ||||
| response = acsClient.getAcsResponse(request); | response = acsClient.getAcsResponse(request); | ||||
| } catch (ClientException e) { | } catch (ClientException e) { | ||||
| log.error("查询签名发生错误。错误代码是 [{}],错误消息是 [{}],错误请求ID是 [{}],错误Msg是 [{}],错误类型是 [{}]", | |||||
| log.error("查询模板发生错误。错误代码是 [{}],错误消息是 [{}],错误请求ID是 [{}],错误Msg是 [{}],错误类型是 [{}]", | |||||
| e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); | e.getErrCode(), e.getMessage(), e.getRequestId(), e.getErrMsg(), e.getErrorType()); | ||||
| } | } | ||||
| log.info(" 查询模板----" + response.getCode() + "----" + response.getMessage()); | |||||
| return response; | return response; | ||||
| } | } | ||||
| @@ -19,14 +19,14 @@ | |||||
| <result column="modelnotifyurl" jdbcType="VARCHAR" property="modelnotifyurl" /> | <result column="modelnotifyurl" jdbcType="VARCHAR" property="modelnotifyurl" /> | ||||
| <result column="verifynotifyurl" jdbcType="VARCHAR" property="verifynotifyurl" /> | <result column="verifynotifyurl" jdbcType="VARCHAR" property="verifynotifyurl" /> | ||||
| <result column="appid" jdbcType="VARCHAR" property="appid" /> | <result column="appid" jdbcType="VARCHAR" property="appid" /> | ||||
| <result column="isAliyunSMS" jdbcType="SMALLINT" property="isAliyunSMS" /> | |||||
| <result column="sms_channel" jdbcType="SMALLINT" property="smsChannel" /> | |||||
| </resultMap> | </resultMap> | ||||
| <sql id="allColumns"> | <sql id="allColumns"> | ||||
| `id`,`tenant_id`,`parent_tenant_id`,`secret`,`publickey`,`bid`,`recharge`,`remains`,`total`,`account`, | `id`,`tenant_id`,`parent_tenant_id`,`secret`,`publickey`,`bid`,`recharge`,`remains`,`total`,`account`, | ||||
| `reminderstatus`,`reminder`,`phone`,`notifyurl`,`modelnotifyurl`,`verifynotifyurl`,`appid`,`isAliyunSMS` | |||||
| `reminderstatus`,`reminder`,`phone`,`notifyurl`,`modelnotifyurl`,`verifynotifyurl`,`appid`,`sms_channel` | |||||
| </sql> | </sql> | ||||
| <sql id="dynamicWhereConditions"> | <sql id="dynamicWhereConditions"> | ||||
| @@ -104,8 +104,8 @@ | |||||
| </if> | </if> | ||||
| <if test=" null != isAliyunSMS "> | |||||
| and `appid` = #{isAliyunSMS} | |||||
| <if test=" null != smsChannel "> | |||||
| and `sms_channel` = #{smsChannel} | |||||
| </if> | </if> | ||||
| @@ -14,6 +14,7 @@ import com.iformall.config.AwsProperty; | |||||
| import com.iformall.controller.base.BaseController; | import com.iformall.controller.base.BaseController; | ||||
| import com.iformall.domain.po.MallResource; | import com.iformall.domain.po.MallResource; | ||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.file.aliyun.AliyunOSS; | |||||
| import com.iformall.service.MallResourceService; | import com.iformall.service.MallResourceService; | ||||
| import com.iformall.utils.ImgUtil; | import com.iformall.utils.ImgUtil; | ||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| @@ -43,6 +44,9 @@ public class UploadController extends BaseController { | |||||
| @Autowired | @Autowired | ||||
| private String fmUploadDir; | private String fmUploadDir; | ||||
| @Autowired | |||||
| private AliyunOSS aliyunOSS; | |||||
| @Autowired | @Autowired | ||||
| private MallResourceService mallResourceService; | private MallResourceService mallResourceService; | ||||
| @@ -145,14 +149,16 @@ public class UploadController extends BaseController { | |||||
| String fileName = UUID.randomUUID().toString(); | String fileName = UUID.randomUUID().toString(); | ||||
| int dot = multiReq.getOriginalFilename().lastIndexOf('.'); | int dot = multiReq.getOriginalFilename().lastIndexOf('.'); | ||||
| String fileFormat = ""; | |||||
| if (dot >= 0) { | if (dot >= 0) { | ||||
| String fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); | |||||
| fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); | |||||
| fileName = getFileName(tenantEntity, fileName + fileFormat); | fileName = getFileName(tenantEntity, fileName + fileFormat); | ||||
| } else { | } else { | ||||
| fileName = getFileName(tenantEntity, fileName); | fileName = getFileName(tenantEntity, fileName); | ||||
| } | } | ||||
| ResultData data = awsUpload(multiReq.getInputStream(), metadata, fileName, tenantEntity); | |||||
| // ResultData data = awsUpload(multiReq.getInputStream(), metadata, fileName, tenantEntity); | |||||
| ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); | |||||
| return data; | return data; | ||||
| } | } | ||||
| @@ -207,7 +213,8 @@ public class UploadController extends BaseController { | |||||
| ObjectMetadata metadata = new ObjectMetadata(); | ObjectMetadata metadata = new ObjectMetadata(); | ||||
| metadata.setContentType(multiReq.getContentType()); | metadata.setContentType(multiReq.getContentType()); | ||||
| metadata.setContentLength(newFile.length()); | metadata.setContentLength(newFile.length()); | ||||
| ResultData data = awsUpload(new FileInputStream(newFile), metadata, fileName, tenantEntity); | |||||
| // ResultData data = awsUpload(new FileInputStream(newFile), metadata, fileName, tenantEntity); | |||||
| ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, new FileInputStream(newFile)); | |||||
| // 删除本地缓存 | // 删除本地缓存 | ||||
| newFile.delete(); | newFile.delete(); | ||||
| return data; | return data; | ||||
| @@ -215,7 +222,8 @@ public class UploadController extends BaseController { | |||||
| ObjectMetadata metadata = new ObjectMetadata(); | ObjectMetadata metadata = new ObjectMetadata(); | ||||
| metadata.setContentType(multiReq.getContentType()); | metadata.setContentType(multiReq.getContentType()); | ||||
| metadata.setContentLength(multiReq.getSize()); | metadata.setContentLength(multiReq.getSize()); | ||||
| ResultData data = awsUpload(multiReq.getInputStream(), metadata, fileName, tenantEntity); | |||||
| // ResultData data = awsUpload(multiReq.getInputStream(), metadata, fileName, tenantEntity); | |||||
| ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); | |||||
| return data; | return data; | ||||
| } | } | ||||
| } | } | ||||
| @@ -251,14 +259,16 @@ public class UploadController extends BaseController { | |||||
| String fileName = UUID.randomUUID().toString(); | String fileName = UUID.randomUUID().toString(); | ||||
| int dot = multipartFile.getOriginalFilename().lastIndexOf('.'); | int dot = multipartFile.getOriginalFilename().lastIndexOf('.'); | ||||
| String fileFormat = ""; | |||||
| if (dot >= 0) { | if (dot >= 0) { | ||||
| String fileFormat = multipartFile.getOriginalFilename().substring(dot, multipartFile.getOriginalFilename().length()); | |||||
| fileFormat = multipartFile.getOriginalFilename().substring(dot, multipartFile.getOriginalFilename().length()); | |||||
| fileName = getFileName(tenantEntity, fileName + fileFormat); | fileName = getFileName(tenantEntity, fileName + fileFormat); | ||||
| } else { | } else { | ||||
| fileName = getFileName(tenantEntity, fileName); | fileName = getFileName(tenantEntity, fileName); | ||||
| } | } | ||||
| ResultData data1 = awsUpload(multipartFile.getInputStream(), metadata, fileName, tenantEntity); | |||||
| // ResultData data1 = awsUpload(multipartFile.getInputStream(), metadata, fileName, tenantEntity); | |||||
| ResultData data1 = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multipartFile.getInputStream()); | |||||
| if(data1.code == ResultData.SUCCESS) { | if(data1.code == ResultData.SUCCESS) { | ||||
| Map _data = (Map)data1.data; | Map _data = (Map)data1.data; | ||||
| map.put("url", (String) _data.get("url")); | map.put("url", (String) _data.get("url")); | ||||
| @@ -296,34 +306,40 @@ public class UploadController extends BaseController { | |||||
| String fileName = multiReq.getOriginalFilename(); | String fileName = multiReq.getOriginalFilename(); | ||||
| fileName = "cimg/" + fileName; | fileName = "cimg/" + fileName; | ||||
| ResultData data = awsUpload(multiReq.getInputStream(), metadata, fileName, new TenantEntity() {{ | |||||
| setTenantId("cimg"); | |||||
| }}); | |||||
| int dot = multiReq.getOriginalFilename().lastIndexOf('.'); | |||||
| String fileFormat = ""; | |||||
| if (dot >= 0) { | |||||
| fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); | |||||
| } | |||||
| // ResultData data = awsUpload(multiReq.getInputStream(), metadata, fileName, new TenantEntity() {{ | |||||
| // setTenantId("cimg"); | |||||
| // }}); | |||||
| ResultData data = aliyunOSS.uploadFile("cimg", fileFormat, multiReq.getInputStream()); | |||||
| return data; | return data; | ||||
| } | } | ||||
| /** | |||||
| * AWS | |||||
| * @return | |||||
| * @throws Exception | |||||
| */ | |||||
| @GetMapping(value = "/lists") | |||||
| @ApiOperation("aws列举文件") | |||||
| public ResultData awsList() throws Exception { | |||||
| logger.info("[" + getIpAddr() + "] UploadController::cimgUpload"); | |||||
| try{ | |||||
| ObjectListing ol = s3.listObjects(awsProperty.getBucketName()); | |||||
| List<S3ObjectSummary> objects = ol.getObjectSummaries(); | |||||
| for (S3ObjectSummary os: objects) { | |||||
| logger.info(os.toString()); | |||||
| break; | |||||
| } | |||||
| }catch (Exception e){ | |||||
| e.printStackTrace(); | |||||
| } | |||||
| return new ResultData(); | |||||
| } | |||||
| // /** | |||||
| // * AWS | |||||
| // * @return | |||||
| // * @throws Exception | |||||
| // */ | |||||
| // @GetMapping(value = "/lists") | |||||
| // @ApiOperation("aws列举文件") | |||||
| // public ResultData awsList() throws Exception { | |||||
| // logger.info("[" + getIpAddr() + "] UploadController::cimgUpload"); | |||||
| // | |||||
| // try{ | |||||
| // ObjectListing ol = s3.listObjects(awsProperty.getBucketName()); | |||||
| // List<S3ObjectSummary> objects = ol.getObjectSummaries(); | |||||
| // for (S3ObjectSummary os: objects) { | |||||
| // logger.info(os.toString()); | |||||
| // break; | |||||
| // } | |||||
| // }catch (Exception e){ | |||||
| // e.printStackTrace(); | |||||
| // } | |||||
| // | |||||
| // return new ResultData(); | |||||
| // } | |||||
| } | } | ||||
| @@ -52,11 +52,19 @@ spring: | |||||
| dateFormat: yyyyMMdd | dateFormat: yyyyMMdd | ||||
| endpointName: cn-hangzhou | endpointName: cn-hangzhou | ||||
| oss: | |||||
| endpoint: oss-cn-beijing.aliyuncs.com | |||||
| keyid: LTAI4G7ixY4AhvM35F8o3W3V | |||||
| keysecret: VfWqGb83qIQrS9us45utskl8itd7ry | |||||
| bucketname: formall | |||||
| filehost: malinksysadmin | |||||
| filedomain: http://formall.oss-accelerate.aliyuncs.com | |||||
| mail: | mail: | ||||
| host: smtp.exmail.qq.com | host: smtp.exmail.qq.com | ||||
| username: ENC(lknBjZsA24AaQEXuy0fFw3acd4v4Xsf3CsgDcRZgjlYnNAL9R07d/w==) | |||||
| password: ENC(gIkVPuYMmJ/EDxry8QIfGumIAk4plAwolGrfg1fiM3U=) # 授权密码 | |||||
| username: zhengfangyuan@iformall.com | |||||
| password: xnydCeUzofB2h8qp # 授权密码 | |||||
| properties: | properties: | ||||
| mail: | mail: | ||||
| smtp: | smtp: | ||||
| @@ -54,11 +54,19 @@ spring: | |||||
| dateFormat: yyyyMMdd | dateFormat: yyyyMMdd | ||||
| endpointName: cn-hangzhou | endpointName: cn-hangzhou | ||||
| oss: | |||||
| endpoint: oss-cn-beijing.aliyuncs.com | |||||
| keyid: LTAI4G7ixY4AhvM35F8o3W3V | |||||
| keysecret: VfWqGb83qIQrS9us45utskl8itd7ry | |||||
| bucketname: formall | |||||
| filehost: malinkwebsocketserver | |||||
| filedomain: http://formall.oss-accelerate.aliyuncs.com | |||||
| mail: | mail: | ||||
| host: smtp.exmail.qq.com | host: smtp.exmail.qq.com | ||||
| username: ENC(lknBjZsA24AaQEXuy0fFw3acd4v4Xsf3CsgDcRZgjlYnNAL9R07d/w==) | |||||
| password: ENC(gIkVPuYMmJ/EDxry8QIfGumIAk4plAwolGrfg1fiM3U=) # 授权密码 | |||||
| username: zhengfangyuan@iformall.com | |||||
| password: xnydCeUzofB2h8qp # 授权密码 | |||||
| properties: | properties: | ||||
| mail: | mail: | ||||
| smtp: | smtp: | ||||
| @@ -387,6 +387,21 @@ | |||||
| <version>2.1.0</version> | <version>2.1.0</version> | ||||
| </dependency> | </dependency> | ||||
| <!-- https://mvnrepository.com/artifact/com.aliyun.oss/aliyun-sdk-oss --> | |||||
| <dependency> | |||||
| <groupId>com.aliyun.oss</groupId> | |||||
| <artifactId>aliyun-sdk-oss</artifactId> | |||||
| <version>3.10.2</version> | |||||
| </dependency> | |||||
| <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload --> | |||||
| <dependency> | |||||
| <groupId>commons-fileupload</groupId> | |||||
| <artifactId>commons-fileupload</artifactId> | |||||
| <version>1.4</version> | |||||
| </dependency> | |||||
| </dependencies> | </dependencies> | ||||