All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hn.sms.chuanglan.ChuangLanSms Maven / Gradle / Ivy

There is a newer version: 1.0.18
Show newest version
package com.hn.sms.chuanglan;

import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
import com.hn.config.HnConfigUtils;
import com.hn.sms.Sms;
import com.hn.sms.chuanglan.domain.ChuangLanParam;
import com.hn.config.exception.ConfigException;
import com.hn.sms.exception.SmsException;
import com.hn.utils.AssertUtils;

/**
 * 描述:
 * 创蓝253
 *
 * @author fei
 * 2019-03-19 10:54
 */
public class ChuangLanSms implements Sms {

    private static final Log log = LogFactory.get();
    /**
     * 创蓝253 请求账户地址
     */
    private static final String API_REQUEST_URL = "http://smssh1.253.com/msg/send/json";

    private ChuangLanParam param;

    public ChuangLanSms(ChuangLanParam param) {
        this.param = param;
    }

    public ChuangLanSms(String scene) {
        this.param = getRequestParam(scene);
    }

    public void scene(String scene){
        this.param = getRequestParam(scene);
    }

    /**
     * 发送普通短信验证码
     *
     * @param phone 手机号
     * @param code  短信验证码
     * @return {boolean}
     */
    @Override
    public boolean send(String phone, String code) {
        AssertUtils.notNull(param, "param is null");
        AssertUtils.notNull(phone, "手机号必填");

        param.setMobile(phone);
        param.setAuthCode(code);
        param.setReport("true");
        String requestJson = JSONUtil.toJsonStr(param);
        log.info("创蓝253短信原始请求报文: {}", requestJson);
        String response = HttpRequest.post(API_REQUEST_URL)
                .body(requestJson)
                .execute().body();

        log.info("创蓝253短信响应报文: {}", response);
        JSONObject result = JSONUtil.parseObj(response);
        if ("0".equals(result.getStr("code"))) {
            return true;
        }
        throw new SmsException("短信发送失败," + result.getStr("errorMsg"));
    }

    /**
     * 配置前缀名
     */
    private static final String CONFIG_KEY = "sms.chuangLan";

    /**
     * 获取数据库配置参数
     *
     * @return ChuangLanParam
     */
    private ChuangLanParam getRequestParam(String scene) {
        if (StrUtil.isNotBlank(scene)) {
            scene = "-".concat(scene);
        }
        // 从数据库读取配置
        String apiAccount = AssertUtils.notNull(HnConfigUtils.getConfig(CONFIG_KEY.concat(scene).concat(".apiAccount")),
                ConfigException.exception("创蓝253账号未配置"));
        String apiSecret = AssertUtils.notNull(HnConfigUtils.getConfig(CONFIG_KEY.concat(scene).concat(".apiSecret")),
                ConfigException.exception("创蓝253密码未配置"));
        String msgModel = AssertUtils.notNull(HnConfigUtils.getConfig(CONFIG_KEY.concat(scene).concat(".msgModel")),
                ConfigException.exception("创蓝253消息模板未配置"));
        ChuangLanParam param = new ChuangLanParam();
        // 从数据库读取配置
        param.setApiAccount(apiAccount);
        param.setApiSecret(apiSecret);
        param.setMsgModel(msgModel);
        return param;
    }


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy