This commit is contained in:
hoteas
2017-09-05 08:45:02 +00:00
parent 1c2e7007df
commit 497d78ab4e
4 changed files with 311 additions and 130 deletions
+89
View File
@@ -0,0 +1,89 @@
package ddsms
import (
"encoding/json"
"errors"
"io/ioutil"
"net/http"
"net/url"
"strings"
)
type DDY struct {
ApiKey string
YzmUrl string
TzUrl string
}
func (this *DDY) Init(apikey string, uzmurl string, tzurl string) {
this.ApiKey = apikey
this.YzmUrl = uzmurl
this.TzUrl = tzurl
}
//发送短信验证码 code验证码如:123456 返回true表示发送成功flase表示发送失败
func (this *DDY) SendYZM(umoblie string, tpt string, data map[string]string) (bool, error) {
for k, v := range data {
tpt = strings.Replace(tpt, "{"+k+"}", v, -1)
}
return this.send(this.YzmUrl, umoblie, tpt)
}
//发送通知
func (this *DDY) SendTz(umoblie []string, tpt string, data map[string]string) (bool, error) {
for k, v := range data {
tpt = strings.Replace(tpt, "["+k+"]", v, -1)
}
umobleStr := ""
for i, v := range umoblie {
if i == 0 {
umobleStr = v
continue
}
umobleStr += "," + v
}
return this.send(this.TzUrl, umobleStr, tpt)
}
//发送短信
func (this *DDY) send(mUrl string, umoblie string, content string) (bool, error) {
data_send_sms_yzm := url.Values{"apikey": {this.ApiKey}, "mobile": {umoblie}, "content": {content}}
res, err := this.httpsPostForm(mUrl, data_send_sms_yzm)
if err != nil && res == "" {
return false, errors.New("连接错误")
}
var msg interface{}
err1 := json.Unmarshal([]byte(res), &msg)
if err1 != nil {
return false, errors.New("json解析错误")
}
resmsg := msg.(map[string]interface{})
rcode := int(resmsg["code"].(float64))
result := resmsg["msg"].(string)
if rcode != 1 {
return false, errors.New(result)
}
return true, nil
}
//调用url发送短信的连接
func (this *DDY) httpsPostForm(url string, data url.Values) (string, error) {
resp, err := http.PostForm(url, data)
if err != nil {
return "", err
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return "", err
}
return string(body), nil
}
+70
View File
@@ -0,0 +1,70 @@
package upload
import (
"errors"
"go.hoteas.com/hotime"
"io"
"mime/multipart"
"net/http"
"os"
"strings"
"time"
)
type Upload struct {
Path string
}
func (this *Upload) UpFile(Request *http.Request, fieldName, savefilepath, savePath string) (string, error) {
Request.ParseMultipartForm(32 << 20)
var filePath string
files := Request.MultipartForm.File
var file multipart.File
err := errors.New("")
for k, _ := range files {
fieldName = k
file, _, err = Request.FormFile(fieldName)
if err != nil {
return "", errors.New("上传头像失败")
}
}
if strings.EqualFold(savePath, "") {
t := time.Now().Unix()
data := time.Unix(int64(t), 0).Format("2006-01")
path := ""
if strings.EqualFold(savefilepath, "") {
path = this.Path + data
} else {
path = savefilepath + data
}
_, err1 := os.Stat(path)
if err1 != nil {
if os.IsNotExist(err1) {
err := os.MkdirAll(path, os.ModePerm)
if err != nil {
return "", errors.New("服务器创建头像文件夹失败")
}
}
}
filename := time.Unix(int64(t), 0).Format("2006-01-02-15-22-25") + hotime.ObjToStr(hotime.Rand(6))
filePath = path + "/" + filename + this.Path
} else {
filePath = savePath
}
header, err := os.OpenFile(filePath, os.O_CREATE, 0666)
if err != nil {
return "", errors.New("服务器创建头像文件失败")
}
_, err = io.Copy(header, file)
if err != nil {
return "", errors.New("服务器复制头像文件失败")
}
return filePath, nil
}