|
|
@@ -0,0 +1,105 @@
|
|
|
+package mk_qr
|
|
|
+
|
|
|
+import (
|
|
|
+ "context"
|
|
|
+ "encoding/json"
|
|
|
+ "fmt"
|
|
|
+ "git.i2edu.net/i2/i2-bill-api/model"
|
|
|
+ "io/ioutil"
|
|
|
+ "net/http"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
+
|
|
|
+ "git.i2edu.net/i2/i2-bill-api/internal/svc"
|
|
|
+ "git.i2edu.net/i2/i2-bill-api/internal/types"
|
|
|
+
|
|
|
+ "git.i2edu.net/i2/go-zero/core/logx"
|
|
|
+)
|
|
|
+
|
|
|
+type MktQrAddLogic struct {
|
|
|
+ logx.Logger
|
|
|
+ ctx context.Context
|
|
|
+ svcCtx *svc.ServiceContext
|
|
|
+}
|
|
|
+
|
|
|
+func NewMktQrAddLogic(ctx context.Context, svcCtx *svc.ServiceContext) MktQrAddLogic {
|
|
|
+ return MktQrAddLogic{
|
|
|
+ Logger: logx.WithContext(ctx),
|
|
|
+ ctx: ctx,
|
|
|
+ svcCtx: svcCtx,
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (l *MktQrAddLogic) MktQrAdd(r *http.Request) (*types.Response, error) {
|
|
|
+ // todo: add your logic here and delete this line
|
|
|
+ type Mk struct {
|
|
|
+ MkId string `json:"mk_id"`
|
|
|
+ }
|
|
|
+ body, err := ioutil.ReadAll(r.Body)
|
|
|
+ defer r.Body.Close()
|
|
|
+ if err != nil {
|
|
|
+ return &types.Response{500, err.Error(), nil}, nil
|
|
|
+ }
|
|
|
+ var mk = new(Mk)
|
|
|
+ err = json.Unmarshal(body, mk)
|
|
|
+ if err != nil {
|
|
|
+ return &types.Response{500, err.Error(), nil}, nil
|
|
|
+ }
|
|
|
+ mk_id := mk.MkId
|
|
|
+ if mk_id == "" {
|
|
|
+ return &types.Response{500, "mk_id 不能为空", nil}, nil
|
|
|
+ }
|
|
|
+ erpRes, err := model.GetErpUser("", mk_id, l.svcCtx.Transformer)
|
|
|
+ if err != nil {
|
|
|
+ logx.Error(err.Error())
|
|
|
+ return &types.Response{Code: 500, Msg: err.Error(), Data: nil}, nil
|
|
|
+ }
|
|
|
+ if erpRes == nil {
|
|
|
+ return &types.Response{500, "权限不足", nil}, nil
|
|
|
+ }
|
|
|
+ bean := new(model.I2billMktQr)
|
|
|
+ _, err = l.svcCtx.DB.Where("mk_id = ? and del_flag = 0", mk_id).Get(bean)
|
|
|
+ if err != nil {
|
|
|
+ return &types.Response{500, err.Error(), nil}, nil
|
|
|
+ }
|
|
|
+ bean.MkId = mk_id
|
|
|
+ mk_id = strings.ReplaceAll(mk_id, "-", "")
|
|
|
+ if len(mk_id) > 32 {
|
|
|
+ return &types.Response{500, "mk_id 格式错误", nil}, nil
|
|
|
+ }
|
|
|
+ sceneStr := fmt.Sprintf("%s", mk_id)
|
|
|
+ atr, err := l.svcCtx.Wechat.GenQrCode(sceneStr, l.svcCtx.Config.Weixin.SharePtPage)
|
|
|
+ if err != nil {
|
|
|
+ logx.Error(err.Error())
|
|
|
+ return &types.Response{500, err.Error(), nil}, nil
|
|
|
+ }
|
|
|
+ if atr == nil || atr.Url == "" {
|
|
|
+ return &types.Response{500, "二维码生成失败", nil}, nil
|
|
|
+ }
|
|
|
+ _, err = l.svcCtx.DB.Insert(atr)
|
|
|
+ if err != nil {
|
|
|
+ logx.Error(err.Error())
|
|
|
+ return &types.Response{500, err.Error(), nil}, nil
|
|
|
+ }
|
|
|
+ if bean.Id != 0 {
|
|
|
+ bean.Qr = atr.Url
|
|
|
+ _, err = l.svcCtx.DB.ID(bean.Id).Cols("qr").Update(bean)
|
|
|
+ if err != nil {
|
|
|
+ logx.Error(err.Error())
|
|
|
+ return &types.Response{500, err.Error(), nil}, nil
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ bean.Qr = atr.Url
|
|
|
+ bean.CreateTime = time.Now()
|
|
|
+ bean.DelFlag = 0
|
|
|
+ _, err = l.svcCtx.DB.Insert(bean)
|
|
|
+ if err != nil {
|
|
|
+ logx.Error(err.Error())
|
|
|
+ return &types.Response{500, err.Error(), nil}, nil
|
|
|
+ }
|
|
|
+ }
|
|
|
+ bean.Qr = strings.TrimLeft(bean.Qr, "/")
|
|
|
+ domain := strings.TrimRight(l.svcCtx.Config.AliYunOss.FileUrl, "/")
|
|
|
+ bean.Qr = domain + "/" + bean.Qr
|
|
|
+ return &types.Response{200, "", bean}, nil
|
|
|
+}
|