package cn.timer.api.controller.htzz.atttimer; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.aliyuncs.CommonRequest; import com.aliyuncs.CommonResponse; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.http.MethodType; import com.aliyuncs.profile.DefaultProfile; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import cn.timer.api.bean.admin.AdminAssoTxjlb; import cn.timer.api.bean.admin.AdminMsgTemplate; import cn.timer.api.bean.htzz.HtzzAdminZzda; import cn.timer.api.config.enums.PinType; import cn.timer.api.controller.kqgl.ClockInTool; @Transactional @Component public class AlicloudSMS { @Value("${config-8timer.Aliyun.PROJECT_NAME}") public String PROJECT_NAME; @Value("${config-8timer.Aliyun.REGION_ID}") public String REGION_ID; @Value("${config-8timer.Aliyun.ACCESSKEY_ID}") public String ACCESSKEY_ID; @Value("${config-8timer.Aliyun.SECRET}") public String SECRET; final static String CODE_NAME = "TemplateCode";// 短信模板代码参数名 final static String TEMPLATE_PARAM = "TemplateParam";// 自定义参数 final static String DOMAIN = "dysmsapi.aliyuncs.com"; final static String VERSION = "2017-05-25"; final static String ACTION_SEND = "SendSms"; // 发短信 final static String ACTION_QUERY = "QuerySendDetails"; // 短信查询 final static String PAGE_SIZE = "1"; final static String CURRENT_PAGE = "1"; /** * 提醒功能 */ @SuppressWarnings("deprecation") public List<Object> remind(HtzzAdminZzda zzda, String phone,String tzname,Integer tzrid) { //短信模板详情 AdminMsgTemplate dxmb = AdminMsgTemplate.builder().id(zzda.getTemplateId()).build().selectById(); String str = dxmb.getContent(); String code = dxmb.getPlatformNum(); DefaultProfile profile = DefaultProfile.getProfile(REGION_ID, ACCESSKEY_ID, SECRET); IAcsClient client = new DefaultAcsClient(profile); CommonRequest request = new CommonRequest(); request.setMethod(MethodType.POST); request.setDomain(DOMAIN); request.setVersion(VERSION); request.setAction(ACTION_SEND); request.putQueryParameter("RegionId", REGION_ID); request.putQueryParameter("PhoneNumbers", phone); request.putQueryParameter("SignName", PROJECT_NAME); request.putQueryParameter(CODE_NAME, code);//模版CODE ArrayList<String> word = new ArrayList<String>(); int m = 0, n = 0; int count = 0; for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == '{') { if (count == 0) { m = i; } count++; } if (str.charAt(i) == '}') { count--; if (count == 0) { n = i; word.add(str.substring(m, n + 1).replace("{","").replace("}","")); } } } JsonArray array=new JsonArray(); JsonObject lan=new JsonObject(); for (String bl : word) { if(bl.equals("name")) { lan.addProperty(bl, tzname); }else if(bl.equals("yxdqr")){ lan.addProperty(bl, ClockInTool.SunNovCSTYMD(zzda.getYxdqr())); }else { String strjson = JSON.toJSONString(zzda); JSONObject jsonObject = JSONObject.parseObject(strjson); String value = jsonObject.getString(bl); lan.addProperty(bl, value); } } array.add(lan); String SMSformat = String.valueOf(array).replace("[","").replace("]",""); // System.out.println(SMSformat); //短信模板格式 request.putQueryParameter(TEMPLATE_PARAM,SMSformat); CommonResponse response = null; String a = null; try { response = client.getCommonResponse(request); a = response.getData(); // System.err.println("response:"+a); // 短信服务响应内容 } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } Integer id = null; if (a != null && a.contains("OK")) { AdminAssoTxjlb txs = AdminAssoTxjlb.builder().build(); JSONObject jsonObject = JSONObject.parseObject(SMSformat); Map<String, Object> jsonToMap = JSONObject.parseObject(jsonObject.toJSONString()); for(Entry<String, Object> entry : jsonToMap.entrySet()){ String mapKey = entry.getKey(); String mapValue = String.valueOf(entry.getValue()); str = str.replace("${"+mapKey+"}", mapValue); } // System.out.println(str); txs.setContent(str);//内容 txs.setUserName(tzname); txs.setEmpNum(tzrid); txs.setTxType(zzda.getDocumentType()); txs.setOrgCode(zzda.getOrgCode()); txs.setAddtime(new Date().getTime()); txs.setTxstate(0); txs.insert(); List<Object> list = new ArrayList<Object>(); list.add(id); list.add(JSONObject.parseObject(response.getData())); return list;// 代表请求成功 } return null; } }