Pārlūkot izejas kodu

change the content-type of msgtype_query to form or query

陈文强 2 gadi atpakaļ
vecāks
revīzija
5ba53a1364

+ 20 - 10
apiserver/model/http/message.go

@@ -1,5 +1,7 @@
 package http
 
+import "errors"
+
 type MessageResp struct {
 	Rows int `json:"rows"`
 }
@@ -21,19 +23,27 @@ type Tag struct {
 }
 
 type MessageTypeReq struct {
-	ID           int    `json:"id"`
-	TypeName     string `json:"type_name"`
-	SysName      string `json:"sys_name"`
-	RemindTypeID int    `json:"remind_type_id"`
-	RemindType   string `json:"remind_type"`
-	PushDate     string `json:"push_date"`
-	PushTime     string `json:"push_time"`
-	IntervalTime int    `json:"interval_time"`
-	PushLimit    int    `json:"push_limit"`
-	TemplateID   string `json:"template_id"`
+	SysName   string `form:"sys_name" json:"sys_name"  gorm:"sys_name"`
+	ID        int    `form:"id" json:"id" gorm:"id"`
+	PastureID int    `form:"pasture_id" json:"pasture_id" gorm:"pasture_id"`
+
+	TypeName     string `form:"type_name" json:"type_name" gorm:"type_name"`
+	RemindTypeID int    `form:"remind_type_id" json:"remind_type_id" gorm:"remind_type_id"`
+	RemindType   string `form:"remind_type" json:"remind_type" gorm:"remind_type"`
+	PushDate     string `form:"push_date" json:"push_date" gorm:"push_date"`
+	PushTime     string `form:"push_time" json:"push_time" gorm:"push_time"`
+	IntervalTime int    `form:"interval_time" json:"interval_time" gorm:"interval_time"`
+	PushLimit    int    `form:"push_limit" json:"push_limit" gorm:"push_limit"`
+	TemplateID   string `form:"template_id" json:"template_id" gorm:"template_id"`
+
+	RolesID string `form:"roles_id" json:"roles_id" gorm:"roles_id"`
+	UsersID string `form:"users_id" json:"users_id" gorm:"users_id"`
 }
 
 func (m MessageTypeReq) Validate() error {
+	if m.SysName == "" || m.PastureID == 0 {
+		return errors.New("sys_name or  pasture_id is required")
+	}
 	return nil
 }
 

+ 15 - 13
apiserver/model/message.go

@@ -16,17 +16,19 @@ type Message struct {
 }
 
 type MessageType struct {
-	ID           int    `gorm:"primary_key;AUTO_INCREMENT"`
-	TypeName     string `gorm:"column:type_name"`
-	SysName      string `gorm:"column:sys_name"`
-	RemindTypeID int    `gorm:"column:remind_type_id"`
-	RemindType   string `gorm:"column:remind_type"`
-	// the method of message pushing
-	//  can set some different date,like monday,tuesday,wednesday,thursday,friday,saturday,sunday
-	PushDate string `gorm:"column:push_date"`
-	//  can set some different time,like 00:00:00,01:00:00,02:00:00,03:00:00,04:00:00,05:00:00,06:00:00,07:00:00,08:00:00,09:00:00,10:00:00,11:00:00,12:00:00,13:00:00,14:00:00,15:00:00,16:00:00,17:00:00,18:00:00,19:00:00,20:00:00,21:00:00,22:00:00,23:00:00
-	PushTime     string `gorm:"column:push_time"`
-	IntervalTime int    `gorm:"column:interval_time"`
-	PushLimit    int    `gorm:"column:push_limit"`
-	TemplateID   string `gorm:"column:template_id"`
+	SysName   string `json:"sys_name" gorm:"sys_name"`
+	ID        int    `json:"id" gorm:"id"`
+	PastureID int    `json:"pasture_id" gorm:"pasture_id"`
+
+	TypeName     string `json:"type_name" gorm:"type_name"`
+	RemindTypeID int    `json:"remind_type_id" gorm:"remind_type_id"`
+	RemindType   string `json:"remind_type" gorm:"remind_type"`
+	PushDate     string `json:"push_date" gorm:"push_date"`
+	PushTime     string `json:"push_time" gorm:"push_time"`
+	IntervalTime int    `json:"interval_time" gorm:"interval_time"`
+	PushLimit    int    `json:"push_limit" gorm:"push_limit"`
+	TemplateID   string `json:"template_id" gorm:"template_id"`
+
+	Roles string `json:"roles_id" gorm:"roles_id"`
+	Users string `json:"users_id" gorm:"users_id"`
 }

+ 4 - 9
apiserver/server/message.go

@@ -1,8 +1,6 @@
 package server
 
 import (
-	"strconv"
-
 	"github.com/gin-gonic/gin"
 	"kpt.notice/apiserver/model/http"
 )
@@ -29,14 +27,11 @@ func postMsgType(c *gin.Context) {
 
 // get all  message type
 func getMsgType(c *gin.Context) {
-	paramid := c.PostForm("id")
-	var id int
-	if paramid != "" {
-		id, _ = strconv.Atoi(paramid)
-	} else {
-		id = 0
+	req := new(http.MessageTypeReq)
+	if !Bind(c, req) {
+		return
 	}
-	res := svc.QueryMsgType(id)
+	res := svc.QueryMsgType(req)
 	eJSON(c, res, nil)
 
 }

+ 8 - 5
apiserver/server/server.go

@@ -110,12 +110,15 @@ func eJSON(c *gin.Context, data interface{}, err error) {
 requet validate
 */
 func Bind(c *gin.Context, req http.Request) bool {
-	log.Errorf("cbody====%+v", c.Request.Body)
-	log.Errorf("receivebody====%+v", req)
-	if err := c.ShouldBindJSON(req); err != nil {
-		eJSON(c, nil, err)
+	if err := c.ShouldBind(req); err != nil {
+		eJSON(c, "request bind fail===", err)
+		return false
+	}
+	log.Infof("body: %v", req)
+	if err := req.Validate(); err != nil {
+		log.Errorf("request validate fail: %v", err)
+		eJSON(c, "request validate fail", req.Validate())
 		return false
 	}
-	req.Validate()
 	return true
 }

+ 7 - 8
apiserver/server/wxoffice.go

@@ -3,7 +3,6 @@ package server
 import (
 	"crypto/sha1"
 	"encoding/hex"
-	"fmt"
 	"io/ioutil"
 	"sort"
 	"strings"
@@ -12,6 +11,7 @@ import (
 
 	"kpt.notice/apiserver/service"
 	"kpt.notice/middleware/notice"
+	"kpt.notice/pkg/log"
 )
 
 // func getMsgType(c *gin.Context) {
@@ -24,13 +24,12 @@ import (
 	获取临时二维码
 */
 func getCode(c *gin.Context) {
-	sceneID := c.PostForm("scenne_id")
-	fmt.Printf("scenne_id=======%+v\n", sceneID)
-	c.String(200, sceneID)
-	resp := service.CreateQRCode(sceneID)
-	if resp == nil {
-		c.String(500, "error")
-		return
+	// sceneID := c.PostForm("scenne_id")
+	sceneID := c.Query("scene_id")
+	log.Infof("sceneID: %s", sceneID)
+	resp, err := service.CreateQRCode(sceneID)
+	if err != nil {
+		c.String(400, err.Error())
 	}
 	c.Data(200, "image/jpg", resp)
 }

+ 26 - 27
apiserver/service/message.go

@@ -59,7 +59,10 @@ func (svc *Service) InsertMessage(msg *http.MessageReq) (resp *http.MessageResp,
 	log.Error("InsertMessage=============enter")
 	tmp := make(map[string]interface{})
 	tmp["miniprogram"] = msg.Miniprogram
-	mt := svc.QueryMsgType(msg.MsgTypeID)
+	msgType := &http.MessageTypeReq{
+		ID: msg.MsgTypeID,
+	}
+	mt := svc.QueryMsgType(msgType)
 	if mt == nil {
 		log.Errorf("InsertMessage=====QueryMsgType====%v", errors.New("没有匹配的模板"))
 		return nil, errors.New("没有匹配的模板")
@@ -100,18 +103,18 @@ func (svc *Service) QueryRemindTypeID(name string) (int, error) {
 }
 
 func (svc *Service) InsertMessageType(req *http.MessageTypeReq) (m *model.MessageType, err error) {
-	m = &model.MessageType{
-		SysName:      req.SysName,
-		TypeName:     req.TypeName,
-		RemindTypeID: req.RemindTypeID,
-		RemindType:   req.RemindType,
-		PushDate:     req.PushDate,
-		PushTime:     req.PushTime,
-		IntervalTime: req.IntervalTime,
-		PushLimit:    req.PushLimit,
-		TemplateID:   req.TemplateID,
-	}
-	result := svc.DB.Create(m)
+	// m = &model.MessageType{
+	// 	SysName:      req.SysName,
+	// 	TypeName:     req.TypeName,
+	// 	RemindTypeID: req.RemindTypeID,
+	// 	RemindType:   req.RemindType,
+	// 	PushDate:     req.PushDate,
+	// 	PushTime:     req.PushTime,
+	// 	IntervalTime: req.IntervalTime,
+	// 	PushLimit:    req.PushLimit,
+	// 	TemplateID:   req.TemplateID,
+	// }
+	result := svc.DB.Table("message_type").Create(req)
 	if result.Error != nil {
 		return nil, result.Error
 	}
@@ -125,21 +128,17 @@ func (svc *Service) InsertMessageType(req *http.MessageTypeReq) (m *model.Messag
 // 	}
 // 	return m, nil
 // }
-func (svc *Service) QueryMsgType(id int) (m []model.MessageType) {
-	log.Error("QueryMsgType=============enter")
-	log.Errorf("QueryMsgType========params:%v", id)
-	var tx *gorm.DB
-	if id > 0 {
-		tx = svc.DB.Where("id = ?", id).First(&m)
-		log.Errorf("QueryMsgType========sql:%v", tx)
-	} else if id == 0 {
-		tx = svc.DB.Find(m)
-	}
-
-	if tx.RowsAffected == 0 {
-		log.Errorf("QueryMsgType=====%v", errors.New("没有匹配的模板"))
+func (svc *Service) QueryMsgType(msgTypeReq *http.MessageTypeReq) (m []model.MessageType) {
+	// reqType := map[string]interface{}{
+	// 	"sys_name":   msgTypeReq.SysName,
+	// 	"pasture_id": msgTypeReq.PastureID,
+	// 	"id":         msgTypeReq.ID,
+	// })
+	svc.DB.Table("message_type").Where(msgTypeReq).Find(&m)
+	if svc.DB.Error != nil {
+		log.Errorf("QueryMsgType=====%v", svc.DB.Error)
 		return nil
 	}
-	log.Error("QueryMsgType=====out=====")
+	log.Infof("result====%#v", m)
 	return m
 }

+ 24 - 20
apiserver/service/send_test.go

@@ -4,10 +4,14 @@ import (
 	"testing"
 
 	"kpt.notice/apiserver/config"
-	"kpt.notice/apiserver/model"
 	"kpt.notice/pkg/log"
 )
 
+func TestQueryMsgType(t *testing.T) {
+	svc := testInit()
+	res := svc.QueryMsgType(nil)
+	t.Errorf("%#v", res)
+}
 func TestReceiveMessage(t *testing.T) {
 	config.Init()
 	log.Init(config.Conf.Log)
@@ -31,25 +35,25 @@ func testInit() *Service {
 	return New(config.Conf)
 }
 func TestInsertMessage(t *testing.T) {
-	svc := testInit()
-	for i := 1; i < 3; i++ {
-		log.Error("i=======", i)
-		var m []model.MessageType
-		switch {
-		case i == 1:
-			defer svc.QueryMsgType(1)
-			{
-				if err := recover(); err != nil {
-					log.Errorf("%v", err)
-				} else {
-					m = svc.QueryMsgType(1)
-				}
-			}
-		case i == 2:
-			svc.DB.Where("id = ?", 1).Find(&m)
-		}
-		log.Errorf("%#v", m)
-	}
+	// svc := testInit()
+	// for i := 1; i < 3; i++ {
+	// 	log.Error("i=======", i)
+	// 	var m []model.MessageType
+	// 	switch {
+	// 	case i == 1:
+	// 		// defer svc.QueryMsgType(1)
+	// 		{
+	// 			if err := recover(); err != nil {
+	// 				log.Errorf("%v", err)
+	// 			} else {
+	// 				m = svc.QueryMsgType(1)
+	// 			}
+	// 		}
+	// 	case i == 2:
+	// 		svc.DB.Where("id = ?", 1).Find(&m)
+	// 	}
+	// 	log.Errorf("%#v", m)
+	// }
 	// file, err := ioutil.ReadFile("/Users/desire/kptdev/msg_push/json/message.json")
 	// if err != nil || len(file) == 0 {
 	// 	panic(err)

+ 8 - 15
apiserver/service/wxoffce.go

@@ -2,8 +2,6 @@ package service
 
 import (
 	"encoding/json"
-	"fmt"
-	"io/ioutil"
 	"strconv"
 	"strings"
 	"time"
@@ -17,28 +15,23 @@ import (
 )
 
 // 获取公众号临时二维码
-func CreateQRCode(sceneID string) []byte {
-	var resp []byte
-	if resp = notice.CreateQRCode(sceneID); resp != nil {
-		return nil
+func CreateQRCode(sceneID string) (body []byte, err error) {
+	resp, e := notice.CreateQRCode(sceneID)
+	if err != nil {
+		log.Errorf("service.CreateQRCode. %v", e)
+		return
 	}
-	fmt.Printf("%#v\n", resp)
 	m := make(map[string]string)
 	json.Unmarshal(resp, &m)
 	m = map[string]string{
 		"ticket": m["ticket"],
 	}
 	url := "https://mp.weixin.qq.com/cgi-bin/showqrcode"
-	res := http.HttpGet(url, m)
-	if res == nil {
-		return nil
-	}
-	clientRespBody, err := ioutil.ReadAll(res.Body)
+	body, err = http.HttpGet(url, m)
 	if err != nil {
-		log.Errorf("ioutil.ReadAll error: %+v", err)
-		return nil
+		log.Errorf("service.CreateQRCode. %v", err)
 	}
-	return clientRespBody
+	return
 }
 func ReceiveMessage(body []byte) (output *type_message.ReplyMessageText) {
 	log.Error("ReceiveMessage=====================enter")

BIN
cmd/apiserver/main


BIN
doc/json/.DS_Store


+ 4 - 0
doc/json/bindUser.json

@@ -0,0 +1,4 @@
+{
+    "userinfo": "tmr.shengmu23.bbc",
+    "openid": "123"
+}

+ 5 - 1
doc/json/message_type.json → doc/json/insert_type.json

@@ -1,5 +1,7 @@
 {
     "sys_name":"tmrwatch",
+    "pasture_id":234,
+    "id":3,
     "type_name":"contact approve",
     "remind_type_id":0,
     "remind_type":"立即",
@@ -7,5 +9,7 @@
     "push_time":"09:30",
     "interval_time":3600,
     "push_limit":1,
-    "template_id":"2"
+    "template_id":"2",
+    "roles_id":"1,2,3",
+    "users_id":"1,2,3"
 }

+ 0 - 11
doc/json/message_type_test.json

@@ -1,11 +0,0 @@
-
-{
-    "sys_name": "tmrWatch",
-    "type_name": "11",
-    "remind_type_id": 1,
-    "remind_type": "立即",
-    "push_date": "",
-    "interval_time": 0,
-    "push_limit": 1,
-    "template_id": "BtkN1rWKOJtKP0C64lGxIrPzLRFsYFas-4gupX2-pFo"
-}

+ 5 - 0
doc/json/query_type.json

@@ -0,0 +1,5 @@
+{
+    "sys_name":"tmrwatch",
+    "pasture_id":3,
+    "id":1
+}

+ 3 - 0
doc/sh/devS.sh

@@ -0,0 +1,3 @@
+# http   tmrwatch.cn:8089/wx/code?scene_id=tmrwatch.shengmu23.中文
+http  'tmrwatch.cn:8089/notice/msgtype?sys_name=tmrwatch&pasture_id=3&id=1'
+# http https://mp.weixin.qq.com/cgi-bin/showqrcode <../josn/bind.User.json

+ 3 - 0
doc/sh/local.sh

@@ -0,0 +1,3 @@
+# http   :8089/wx/code?scene_id=tmrwatch.shengmu23.中文
+http ':8089/notice/msgtype?sys_name=tmrwatch&pasture_id=3&id=1'
+# http https://mp.weixin.qq.com/cgi-bin/showqrcode <../josn/bind.User.json

+ 5 - 7
middleware/notice/wxoffice.go

@@ -4,7 +4,7 @@ import (
 	"github.com/fastwego/offiaccount"
 	"github.com/fastwego/offiaccount/apis/account"
 	"github.com/fastwego/offiaccount/apis/message/template"
-	"kpt.notice/pkg/log"
+	"github.com/pkg/errors"
 )
 
 type wxMessage struct {
@@ -19,7 +19,7 @@ var ServerAcc *offiaccount.OffiAccount = offiaccount.New(offiaccount.Config{
 	EncodingAESKey: "6yYJ4sS5y1hJgvIXEqavV2rmCutyXkywndxUQFgX54f",
 })
 
-func CreateQRCode(sceneID string) []byte {
+func CreateQRCode(sceneID string) (resp []byte, err error) {
 	// time limit in 3 days
 	json := `{
 		"action_name": "QR_SCENE", 
@@ -30,12 +30,10 @@ func CreateQRCode(sceneID string) []byte {
 			}
 		}`
 
-	resp, err := account.CreateQRCode(ServerAcc, []byte(json))
-	if err != nil {
-		log.Error(err)
-		return nil
+	if resp, err = account.CreateQRCode(ServerAcc, []byte(json)); err != nil {
+		err = errors.Wrap(err, "notice.CreateQRCode==")
 	}
-	return resp
+	return
 }
 
 /*

+ 13 - 5
pkg/http/client.go

@@ -1,10 +1,12 @@
 package http
 
 import (
+	"io/ioutil"
 	"net/http"
 	"strings"
 	"time"
 
+	"github.com/pkg/errors"
 	"kpt.notice/pkg/log"
 )
 
@@ -34,7 +36,7 @@ func HttpPost(url, contentType, body string) *http.Response {
 	log.Errorf("resp=====%+v\n", resp.StatusCode)
 	return resp
 }
-func HttpGet(url string, params map[string]string) *http.Response {
+func HttpGet(url string, params map[string]string) (body []byte, err error) {
 	// url :="http://kpttest.kptyun.com/userwxopenid/binding"
 	// contentType:="application/json"
 	// params := map[string]string{"userinfo":"tmr.shengmu23.bbc","openid":"123"}
@@ -43,11 +45,17 @@ func HttpGet(url string, params map[string]string) *http.Response {
 		s = append(s, k+"="+v)
 	}
 	url = url + "?" + strings.Join(s, "&")
-	resp, err := http.Get(url)
-	if err != nil || resp.StatusCode != 200 {
-		return nil
+	resp, e := http.Get(url)
+	if e != nil {
+		err = errors.Wrap(e, "pkg.http.HttpGet==")
+		return
+	}
+	body, e = ioutil.ReadAll(resp.Body)
+	if e != nil {
+		err = errors.Wrap(e, "pkg.http.HttpGet.read==")
+		return
 	}
 	defer resp.Body.Close()
-	return resp
+	return
 
 }