#coding=utf-8

require 'net/https'
require 'uri'

module  Gitlink
  module Sms
    def self.send(opt={})
      Rails.logger.info "#{opt[:mobile]} - #{opt[:code]}"
      begin
        o = sendYunpian(opt[:mobile], opt[:code], opt[:send_type], opt[:name], opt[:user_name], opt[:result])
        if o["code"] != 0
          Rails.logger.error "发送短信出错: #{o['code']}--#{o['msg']}"
        end
        return o["code"]
      rescue => e
        Rails.logger.error "发送短信出错: #{e}"
        return false
      end
    end

    def self.notify_admin(opt)
      opt[:name]   = '管理员'
      opt[:mobile] = ENV['NOTIFY_ADMIN_PHONE'] || EduSetting.get('notify_admin_phone') || '18711085785'
      send(opt)
    end

    def self.sendYunpian(mobile, code, send_type, name, user_name, result)
      #修改为您的apikey.可在官网（http://www.yunpian.com)登录后用户中心首页看到
      apikey = EduSetting.get('sms_apikey')
      #指定模板发送接口HTTP地址
      send_tpl_sms_uri = URI.parse('https://sms.yunpian.com/v2/sms/single_send.json')

      params = {}
      params['apikey'] = apikey
      params['mobile'] = mobile
      params['text'] = ""
      if send_type.nil?
        # params['text'] = "【红山开源平台】您的验证码是#{code}。如非本人操作，请忽略本短信。"
        params['text'] = "【大数据先进技术研究院】尊敬的红山开源平台用户您好，您的验证码是#{code}。如非本人操作，请忽略本短信。"
      elsif send_type == 'init_password'
        # params['text'] = "【红山开源平台】您的初始密码是#{code}。登录后请及时修改密码。"
        params['text'] = "【红山开源平台】尊敬的用户，您好！非常感谢您注册红山开源平台www.osredm.com ，以下是您的账户信息，请妥善保管。账号：#{user_name}（用户账户名）密码：#{code}（随机生成密码）"
      elsif send_type == 'competition_start'
        params['text'] = "【红山开源平台】亲爱的#{user_name}，你参与的#{name}将于#{result}开始，请及时参赛"
      elsif send_type == 'authentication_pro' || send_type == 'authentication'|| send_type == 'trial_authorization' || send_type == 'project_info'
        params['text'] = "【红山开源平台】亲爱的#{user_name}，您提交的#{send_type == 'authentication_pro'?'职业认证':(send_type == 'authentication'? '实名认证' : (send_type == 'project_info'?'加入申请':'试用申请' ))}#{result}，请登录平台查看详情"
      elsif send_type == "apply_pro_certification" || send_type == "apply_auth"
        params['text'] = "【红山开源平台】亲爱的#{name}，有新的#{send_type == 'apply_pro_certification'?'职业':'实名'}认证申请，请尽快处理"
      elsif send_type == 'applied_project_info'
        params['text'] = "【红山开源平台】亲爱的#{user_name}，您的项目#{name}有成员申请加入，请尽快审核"
      end

      http = Net::HTTP.new(send_tpl_sms_uri.host, send_tpl_sms_uri.port)
      http.verify_mode = OpenSSL::SSL::VERIFY_NONE
      http.use_ssl = true
      begin
        request = Net::HTTP::Post.new(send_tpl_sms_uri.request_uri)
        request.set_form_data(params)
        request['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8'
        response = http.start { |http| http.request(request) }
        ActiveSupport::JSON.decode(response.body)
      rescue =>err
        Rails.logger.error("#############sendYunpian_error: #{err.message}")
        return nil
      end
    end
  end
end