附近小店
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 

63 行
1.6 KiB

  1. package svc
  2. import (
  3. "applet/app/lib/zhimeng"
  4. "encoding/json"
  5. "github.com/gin-gonic/gin"
  6. "github.com/tidwall/gjson"
  7. "applet/app/utils"
  8. "applet/app/utils/logx"
  9. )
  10. var DWZ_TOKEN = "eecdf4b18f416b0cf26fef98f7e1f4ff"
  11. // KuaiZhanShortURL is 快站短链
  12. func KuaiZhanShortURL(c *gin.Context, url string) string {
  13. args := map[string]interface{}{
  14. "appkey": SysCfgGet(c, "third_zm_app_key"),
  15. "secret_key": SysCfgGet(c, "third_zm_app_key"),
  16. "url": utils.Base64StdEncode(url),
  17. }
  18. resp, err := zhimeng.Send("kuaizhan", "short_url", args)
  19. if err != nil {
  20. return ""
  21. }
  22. kurl := gjson.GetBytes(resp, "data.shortUrl").String()
  23. if kurl == "" {
  24. kurl = url
  25. }
  26. return kurl
  27. }
  28. func ShortenUrl(url string) (string, error) {
  29. host := "https://dwz.cn/admin/v2/create"
  30. args := map[string]string{
  31. "Url": url,
  32. "TermOfValidity": "1-year",
  33. }
  34. resp, err := utils.CurlPost(host, utils.Serialize(args), map[string]string{
  35. "Content-Type": "application/json",
  36. "Token": DWZ_TOKEN,
  37. })
  38. // {"Code":0,"IsNew":true,"ShortUrl":"https://dwz.cn/4kSgiKVl","LongUrl":"https://open.taobao.com/search.htm?q=taobao.tbk.sc.material","ErrMsg":""}
  39. if err != nil {
  40. return "", logx.Warn(err)
  41. }
  42. var tmp struct {
  43. Code int `json:"Code"`
  44. IsNew bool `json:"IsNew"`
  45. ShortURL string `json:"ShortUrl"`
  46. LongURL string `json:"LongUrl"`
  47. ErrMsg string `json:"ErrMsg"`
  48. }
  49. if err = json.Unmarshal(resp, &tmp); err != nil {
  50. return url, logx.Warn("resp: " + string(resp) + ", err:" + err.Error())
  51. }
  52. if tmp.ShortURL == "" {
  53. tmp.ShortURL = url
  54. }
  55. return tmp.ShortURL, nil
  56. }