SysPublicController.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. package partial
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
  6. "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  7. "git.qianqiusoft.com/qianqiusoft/light-apiengine/third/alipay"
  8. "git.qianqiusoft.com/qianqiusoft/light-apiengine/third/ureport"
  9. "git.qianqiusoft.com/qianqiusoft/light-apiengine/third/wx"
  10. "github.com/silenceper/wechat/pay"
  11. "io/ioutil"
  12. //sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  13. //sysutils "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
  14. //"git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  15. //__import_packages__
  16. )
  17. // _WxEcho
  18. // @Title _WxEcho
  19. // @Description 微信echo
  20. // @Success 200 {object} Account
  21. // @Failure 403 :id is empty
  22. func SysPublic_WxEcho(c *entitys.CtrlContext) {
  23. echostr := c.Ctx.DefaultQuery("echostr","")
  24. fmt.Println("echostr:"+echostr)
  25. c.Ctx.String(200, echostr)
  26. }
  27. // _WxpayCallback
  28. // @Title _WxpayCallback
  29. // @Description 微信支付回调
  30. // @Success 200 {object} Account
  31. // @Failure 403 :id is empty
  32. func SysPublic_WxpayCallback(c *entitys.CtrlContext) {
  33. r := wx.CallWxPayCallbackHandler(c)
  34. if r.Code != 200{
  35. c.Ctx.JSON(500, r)
  36. }else{
  37. res := pay.NotifyResponse{}
  38. res.ReturnCode = "SUCCESS"
  39. res.ReturnMsg = "OK"
  40. c.Ctx.XML(200,&res)
  41. }
  42. }
  43. // _WxoauthParams
  44. // @Title _WxoauthParams
  45. // @Description 获取微信oauth配置
  46. // @Success 200 {object} Account
  47. // @Failure 403 :id is empty
  48. func SysPublic_WxoauthParams(c *entitys.CtrlContext) {
  49. contentBody, err := ioutil.ReadAll(c.Ctx.Request.Body)
  50. if err != nil{
  51. fmt.Println("读取body错误", err.Error())
  52. c.Ctx.JSON(500, models.SysReturn{500, err.Error(), ""})
  53. return
  54. }
  55. bmap := make(map[string]string)
  56. err = json.Unmarshal(contentBody, &bmap)
  57. if err != nil{
  58. fmt.Println("Unmarshal错误", err.Error())
  59. c.Ctx.JSON(500, models.SysReturn{500, err.Error(), ""})
  60. return
  61. }
  62. param, err := wx.GetOAuthParams(bmap)
  63. if err != nil{
  64. c.Ctx.JSON(500, models.SysReturn{500, "", ""})
  65. }else{
  66. c.Ctx.JSON(200, models.SysReturn{200, "", param})
  67. }
  68. }
  69. // _WxLogin
  70. // @Title _WxLogin
  71. // @Description 获取微信oauth配置
  72. // @Param body false "微信登录参数,必须包含code字段(微信临时令牌)"
  73. // @Success 200 {object} Account
  74. // @Failure 403 :id is empty
  75. func SysPublic_WxLogin(c *entitys.CtrlContext) {
  76. body, err := ioutil.ReadAll(c.Ctx.Request.Body)
  77. if err != nil{
  78. fmt.Println("SysPublic_WxLogin 读取请求数据错误", err.Error())
  79. c.Ctx.JSON(200, models.SysReturn{500, err.Error(), ""})
  80. return
  81. }
  82. params := make(map[string]interface{})
  83. err = json.Unmarshal(body, &params)
  84. if err != nil{
  85. fmt.Println("SysPublic_WxLogin unmarshal err", err.Error())
  86. c.Ctx.JSON(200, models.SysReturn{500, err.Error(), ""})
  87. return
  88. }
  89. code := ""
  90. var v interface{} = nil
  91. ok := false
  92. if v, ok = params["code"]; !ok{
  93. fmt.Println("SysPublic_WxLogin 不存在临时令牌code字段")
  94. c.Ctx.JSON(200, models.SysReturn{500, "不存在临时令牌code字段", ""})
  95. return
  96. }
  97. if code, ok = v.(string); !ok{
  98. fmt.Println("临时令牌code字段不能转换为string")
  99. c.Ctx.JSON(200, models.SysReturn{500, "临时令牌code字段不能转换为string", ""})
  100. return
  101. }
  102. if code == ""{
  103. fmt.Println("临时令牌code为空")
  104. c.Ctx.JSON(200, models.SysReturn{500, "临时令牌code为空", ""})
  105. return
  106. }
  107. // 获取微信信息
  108. userInfo, err := wx.GetUserInfoByCode(code)
  109. if err != nil {
  110. fmt.Println("wx.GetUserInfoByCode 错误", err.Error())
  111. c.Ctx.JSON(200, models.SysReturn{500, err.Error(), nil})
  112. return
  113. }
  114. ret := wx.CallWxLoginCallbackHandler(c, body, userInfo)
  115. c.Ctx.JSON(200, ret)
  116. }
  117. // _WxjssdkParams
  118. // @Title _WxjssdkParams
  119. // @Description 获取微信jssdk配置
  120. // @Success 200 {object} Account
  121. // @Failure 403 :id is empty
  122. func SysPublic_WxjssdkParams(c *entitys.CtrlContext) {
  123. url := c.Ctx.DefaultQuery("url", "")
  124. if url == ""{
  125. c.Ctx.JSON(200, models.SysReturn{500, "参数rul为空", ""})
  126. return
  127. }
  128. config, err := wx.GetJSSDKRarams(url)
  129. if err != nil{
  130. c.Ctx.JSON(200, models.SysReturn{500, err.Error(), ""})
  131. }else{
  132. c.Ctx.JSON(200, models.SysReturn{200, "", config})
  133. }
  134. }
  135. // _AlipayCallback
  136. // @Title _AlipayCallback
  137. // @Description 支付宝支付回调
  138. // @Success 200 {object} Account
  139. // @Failure 403 :id is empty
  140. func SysPublic_AlipayCallback(c *entitys.CtrlContext) {
  141. alipay.CallWxPayCallbackHandler(c)
  142. }
  143. // _Ureport
  144. // @Title _Ureport
  145. // @Description 报表统一接口
  146. // @Success 200 {object} Account
  147. // @Failure 403 :id is empty
  148. func SysPublic_Ureport(c *entitys.CtrlContext) {
  149. ureport.CallUreportHanlder(c)
  150. }
  151. func __none_func_sys_public__(params ... interface{}) bool{
  152. return true
  153. }