Api.getApiSource().getClientId()这个是项目的需要,你们可以去掉
@Operation(summary = "查询短信模板的审核状态")
@RequestMapping(value = "/selectSmsTemplateStatus", method = RequestMethod.POST)
@ResponseBody
public CommonResult selectSmsTemplateStatus(@RequestParam String TemplateCode){
return smsService.selectSmsTemplateStatus(Api.getApiSource().getClientId(),TemplateCode);
}
@Operation(summary = "删除短信签名")
@RequestMapping(value = "/deleteSmsSign", method = RequestMethod.POST)
@ResponseBody
public CommonResult deleteSmsSign(@RequestParam String SignName){
return smsService.deleteSmsSign(Api.getApiSource().getClientId(),SignName);
}
@Operation(summary = "查询短信签名申请状态")
@RequestMapping(value = "/selectSmsSign", method = RequestMethod.POST)
@ResponseBody
public CommonResult selectSmsSign(@RequestParam String SignName){
return smsService.selectSmsSign(Api.getApiSource().getClientId(),SignName);
}
@Operation(summary = "申请短信签名")
@RequestMapping(value = "/applySmsSign", method = RequestMethod.POST)
@ResponseBody
public CommonResult applySmsSign(
@RequestParam String SignName,
@RequestParam Integer SignSource,
@RequestParam String Remark,
@RequestPart("SignFileList") MultipartFile[] SignFileList){
return smsService.applySmsSign(Api.getApiSource().getClientId(),SignName,SignSource,Remark,SignFileList);
}
@Operation(summary = "修改短信签名证明文件")
@RequestMapping(value = "/updateSmsSign", method = RequestMethod.POST)
@ResponseBody
public CommonResult updateSmsSign(
@RequestParam String SignName,
@RequestParam Integer SignSource,
@RequestParam String Remark,
@RequestPart("SignFileList") MultipartFile[] SignFileList){
return smsService.updateSmsSign(Api.getApiSource().getClientId(),SignName,SignSource,Remark,SignFileList);
}
业务逻辑层
final String ACCESSKEYID="自己阿里云的";
final String ACCESSKEYSECRET ="自己阿里云的";
public Client createClient(String accessKeyId, String accessKeySecret) throws Exception {//com.aliyun.dysmsapi20170525.Client
Config config = new Config()
// 您的AccessKey ID
.setAccessKeyId(accessKeyId)
// 您的AccessKey Secret
.setAccessKeySecret(accessKeySecret);
// 访问的域名
config.endpoint = "dysmsapi.aliyuncs.com";
return new com.aliyun.dysmsapi20170525.Client(config);
}
@SneakyThrows
@Override
public CommonResult deleteSmsSign(String clientId, String signName) {
ChannelApp channel = verifyChannel(clientId);
if (channel == null) {
return CommonResult.result(ResultCode.CHANNEL_NULL_ERR);
}
Client client = createClient(ACCESSKEYID, ACCESSKEYSECRET);
DeleteSmsSignRequest deleteSmsSignRequest = new DeleteSmsSignRequest()
.setSignName(signName);
// 复制代码运行请自行打印 API 的返回值
DeleteSmsSignResponse deleteSmsSignResponse = client.deleteSmsSign(deleteSmsSignRequest);
if(!deleteSmsSignResponse.getBody().getMessage().equals("签名正在审核中,不允许删除")){
//删除signName表
SmsSignName smsSignName = new SmsSignName();
smsSignName.setSignName(signName);
QueryWrapper<SmsSignName> wrapper = new QueryWrapper<>(smsSignName);
smsSignMapper.delete(wrapper);
//删除存base64的表----signName删除
SmsFile smsFile=new SmsFile();
smsFile.setSignName(signName);
QueryWrapper<SmsFile> wrapperFile = new QueryWrapper<>(smsFile);
smsFileMapper.delete(wrapperFile);
}
return CommonResult.success(deleteSmsSignResponse);
}
@SneakyThrows
@Override
public CommonResult<QuerySmsSignResponse> selectSmsSign(String clientId, String signName) {
ChannelApp channel = verifyChannel(clientId);
if (channel == null) {
return CommonResult.result(ResultCode.CHANNEL_NULL_ERR);
}
Client client = createClient(ACCESSKEYID, ACCESSKEYSECRET);
QuerySmsSignRequest querySmsSignRequest = new QuerySmsSignRequest()
.setSignName(signName);
QuerySmsSignResponse querySmsSignResponse = client.querySmsSign(querySmsSignRequest);
return CommonResult.success(querySmsSignResponse);
}
@SneakyThrows
@Override
public CommonResult applySmsSign(String clientId, String signName, Integer signSource, String remark, MultipartFile[] signFileList) {
ChannelApp channel = verifyChannel(clientId);
if (channel == null) {
return CommonResult.result(ResultCode.CHANNEL_NULL_ERR);
}
if (signFileList == null || signFileList.length==0) {
//throw new RuntimeException("图片不能为空!获取失败");
return CommonResult.result(ResultCode. IMAGE_GET_ERR);
}
Client client = createClient(ACCESSKEYID, ACCESSKEYSECRET);
//存储文件内容base64及文件格式
List<AddSmsSignRequest.AddSmsSignRequestSignFileList> signFileListMore= new ArrayList<>();
List<SmsFile> base64Imgs = new ArrayList<SmsFile>();
//判断file数组不能为空并且长度大于0
if (signFileList != null && signFileList.length > 0) {
//循环获取file数组中得文件
for (int i = 0; i < signFileList.length; i++) {
MultipartFile file = signFileList[i];
//单个一个一个图片转换成base64
if (!file.isEmpty()) {
String fileName = file.getOriginalFilename();
String fileType = fileName.substring(fileName.lastIndexOf("."));
String contentType = file.getContentType();
byte[] imageBytes = null;
String base64EncoderImg = "";
try {
imageBytes = file.getBytes();
BASE64Encoder base64Encoder = new BASE64Encoder();
base64EncoderImg = "data:" + contentType + ";base64," + base64Encoder.encode(imageBytes);
base64EncoderImg = base64EncoderImg.replaceAll("[\\s*\t\n\r]", "");
SmsFile smsFile=new SmsFile();
smsFile.setSignName(signName);
smsFile.setFileSuffix(fileType);
smsFile.setFileContent(base64Encoder.encode(imageBytes));
base64Imgs.add(smsFile);
AddSmsSignRequest.AddSmsSignRequestSignFileList signFileListOne = new AddSmsSignRequest.AddSmsSignRequestSignFileList();
signFileListOne.setFileContents(base64Encoder.encode(imageBytes));
signFileListOne.setFileSuffix(fileType);
signFileListMore.add(signFileListOne);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
AddSmsSignRequest addSmsSignRequest = new AddSmsSignRequest()
.setSignName(signName)
.setSignSource(signSource)
.setRemark(remark)
.setSignFileList(signFileListMore);
// 复制代码运行请自行打印 API 的返回值
client.addSmsSign(addSmsSignRequest);
//添加到表中
SmsSignName smsSignName=new SmsSignName();
smsSignName.setSignName(signName);
smsSignName.setSignSource(signSource);
smsSignName.setRemark(remark);
smsSignMapper.insert(smsSignName);
//添加图片base64表
smsFileService.saveBatch(base64Imgs);
return CommonResult.success(client.addSmsSign(addSmsSignRequest));
}
@SneakyThrows
@Override
public CommonResult updateSmsSign(String clientId, String signName, Integer signSource, String remark, MultipartFile[] signFileList) {
ChannelApp channel = verifyChannel(clientId);
if (channel == null) {
return CommonResult.result(ResultCode.CHANNEL_NULL_ERR);
}
if (signFileList == null || signFileList.length==0) {
//throw new RuntimeException("图片不能为空!获取失败");
return CommonResult.result(ResultCode. IMAGE_GET_ERR);
}
Client client = createClient(ACCESSKEYID, ACCESSKEYSECRET);
//存储文件内容base64及文件格式
List<ModifySmsSignRequest.ModifySmsSignRequestSignFileList> signFileListMore= new ArrayList<>();
//先删除图片表
SmsFile smsFile = new SmsFile();
smsFile.setSignName(signName);
QueryWrapper<SmsFile> wrapper = new QueryWrapper<>(smsFile);
smsFileMapper.delete(wrapper);
List<SmsFile> base64Imgs = new ArrayList<SmsFile>();
//判断file数组不能为空并且长度大于0
if (signFileList != null && signFileList.length > 0) {
//循环获取file数组中得文件
for (int i = 0; i < signFileList.length; i++) {
MultipartFile file = signFileList[i];
//单个一个一个图片转换成base64
if (!file.isEmpty()) {
String fileName = file.getOriginalFilename();
String fileType = fileName.substring(fileName.lastIndexOf("."));
String contentType = file.getContentType();
byte[] imageBytes = null;
String base64EncoderImg = "";
try {
imageBytes = file.getBytes();
BASE64Encoder base64Encoder = new BASE64Encoder();
base64EncoderImg = "data:" + contentType + ";base64," + base64Encoder.encode(imageBytes);
base64EncoderImg = base64EncoderImg.replaceAll("[\\s*\t\n\r]", "");
//base64Imgs.add(base64EncoderImg);
smsFile.setSignName(signName);
smsFile.setFileSuffix(fileType);
smsFile.setFileContent(base64Encoder.encode(imageBytes));
base64Imgs.add(smsFile);
ModifySmsSignRequest.ModifySmsSignRequestSignFileList signFileListOne = new ModifySmsSignRequest.ModifySmsSignRequestSignFileList();
signFileListOne.setFileContents(base64Encoder.encode(imageBytes));
signFileListOne.setFileSuffix(fileType);
signFileListMore.add(signFileListOne);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
ModifySmsSignRequest modifySmsSignRequest = new ModifySmsSignRequest()
.setSignName(signName)
.setSignSource(signSource)
.setRemark(remark)
.setSignFileList(signFileListMore);
// 复制代码运行请自行打印 API 的返回值
client.modifySmsSign(modifySmsSignRequest);
//更新的条件以及字段
UpdateWrapper<SmsSignName> wrapper2 = new UpdateWrapper<>();
wrapper2.eq("sign_name", signName).set("sign_source",signSource).set("remark",remark);
smsSignMapper.update(null, wrapper2);
//添加图片base64表
smsFileService.saveBatch(base64Imgs);
return CommonResult.success(client.modifySmsSign(modifySmsSignRequest));
}
建立两张表(一个存signname信息,一个存base64信息)