vipsubscribe.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  1. package front
  2. import (
  3. "fmt"
  4. "jfw/config"
  5. "jfw/jyutil"
  6. "jfw/public"
  7. "jfw/wx"
  8. "log"
  9. "net/url"
  10. "qfw/util"
  11. "time"
  12. "github.com/go-xweb/xweb"
  13. )
  14. type Subscribepay struct {
  15. *xweb.Action
  16. introduce xweb.Mapper `xweb:"/front/vipsubscribe/introducePage"` //订阅收费介绍页
  17. trialInfo xweb.Mapper `xweb:"/front/vipsubscribe/trialInfo"` //vip订阅服务-用户信息录入页面
  18. toPurchasePage xweb.Mapper `xweb:"/weixin/pay/vipsubscribe_(.*)"` //订阅收费购买页面(试用用户)
  19. toChooseArea xweb.Mapper `xweb:"/front/vipsubscribe/toChooseArea"` //订阅收费地区筛选
  20. toChooseIndustry xweb.Mapper `xweb:"/front/vipsubscribe/toChooseIndustry"` //订阅收费行业筛选
  21. toPaySuccessPage xweb.Mapper `xweb:"/front/vipsubscribe/toPaySuccessPage"` //订阅支付完成页面
  22. toOrderDetailPage xweb.Mapper `xweb:"/weixin/pay/toOrderDetailPage"` //订阅收费支付订单详情页面
  23. toSetKeyWordPage xweb.Mapper `xweb:"/front/vipsubscribe/toSetKeyWordPage"` //订阅收费设置关键词
  24. toSetPage xweb.Mapper `xweb:"/front/vipsubscribe/toSetPage"` //订阅收费设置
  25. toSetInfoTypePage xweb.Mapper `xweb:"/front/vipsubscribe/toSetInfoTypePage"` //订阅收费设置信息类型
  26. toSetPushSetPage xweb.Mapper `xweb:"/front/vipsubscribe/toSetPushSetPage"` //订阅收费推送设置
  27. toSetOtherKwsPage xweb.Mapper `xweb:"/front/vipsubscribe/toSet(.*)Page"` //订阅收费附加词和排除词设置
  28. toVIPViewPage xweb.Mapper `xweb:"/front/vipsubscribe/toVIPViewPage"` //订阅收费预览
  29. //修改
  30. toEditSubPage xweb.Mapper `xweb:"/front/vipsubscribe/toEditSubPage"` //订阅收费修改页面
  31. toEditSubAreaPage xweb.Mapper `xweb:"/front/vipsubscribe/toEditSubAreaPage"` //订阅收费修改地区
  32. toEditSubInduPage xweb.Mapper `xweb:"/front/vipsubscribe/toEditSubInduPage"` //订阅收费修改行业
  33. submitEditSubFinish xweb.Mapper `xweb:"/front/vipsubscribe/submitEditSubFinish"` //订阅收费修改成功
  34. //升级
  35. toUpgradePage xweb.Mapper `xweb:"/weixin/pay/toUpgradePage"` //订阅收费升级服务页面
  36. addArea xweb.Mapper `xweb:"/front/vipsubscribe/toChooseAreaUpgrade"` //订阅收费升级新增区域页面
  37. addIndustry xweb.Mapper `xweb:"/front/vipsubscribe/toChooseIndustryUpgrade"` //订阅收费升级新增行业页面
  38. //续费
  39. renewPage xweb.Mapper `xweb:"/front/vipsubscribe/renewPage/(.*)"` //订阅到期(will:即将到期,exprie:已到期)
  40. renewPayPage xweb.Mapper `xweb:"/weixin/pay/renewPayPage"` //订阅到期续费
  41. //发票
  42. openInvoice xweb.Mapper `xweb:"/front/vipsubscribe/openInvoice/(\\w+)"` //开发票
  43. //预热活动链接跳转
  44. preheatPoster xweb.Mapper `xweb:"/front/preheat/poster"` //预热活动链接跳转
  45. }
  46. func init() {
  47. xweb.AddAction(&Subscribepay{})
  48. }
  49. //推送设置
  50. func (s *Subscribepay) ToVIPViewPage() {
  51. myopenid := util.ObjToString(s.GetSession("s_m_openid"))
  52. mynickname, _ := s.Session().Get("s_nickname").(string)
  53. myavatar, _ := s.Session().Get("s_avatar").(string)
  54. s.T["nickname"] = mynickname
  55. s.T["avatar"] = myavatar
  56. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  57. s.T["openid"] = se.EncodeString(myopenid)
  58. s.Render("/weixin/vipsubscribe/vip_viewPage.html")
  59. }
  60. //附加词|排除词
  61. func (s *Subscribepay) ToSetOtherKwsPage(page string) {
  62. myopenid := util.ObjToString(s.GetSession("s_m_openid"))
  63. mynickname, _ := s.Session().Get("s_nickname").(string)
  64. myavatar, _ := s.Session().Get("s_avatar").(string)
  65. s.T["nickname"] = mynickname
  66. s.T["avatar"] = myavatar
  67. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  68. s.T["openid"] = se.EncodeString(myopenid)
  69. s.Render("/weixin/vipsubscribe/" + page + "Word.html")
  70. }
  71. //推送设置
  72. func (s *Subscribepay) ToSetPushSetPage() {
  73. myopenid := util.ObjToString(s.GetSession("s_m_openid"))
  74. mynickname, _ := s.Session().Get("s_nickname").(string)
  75. myavatar, _ := s.Session().Get("s_avatar").(string)
  76. s.T["nickname"] = mynickname
  77. s.T["avatar"] = myavatar
  78. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  79. s.T["openid"] = se.EncodeString(myopenid)
  80. s.Render("/weixin/vipsubscribe/vip_seniorset.html")
  81. }
  82. //信息类型
  83. func (s *Subscribepay) ToSetInfoTypePage() {
  84. myopenid := util.ObjToString(s.GetSession("s_m_openid"))
  85. mynickname, _ := s.Session().Get("s_nickname").(string)
  86. myavatar, _ := s.Session().Get("s_avatar").(string)
  87. s.T["nickname"] = mynickname
  88. s.T["avatar"] = myavatar
  89. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  90. s.T["openid"] = se.EncodeString(myopenid)
  91. s.Render("/weixin/vipsubscribe/messageType.html")
  92. }
  93. //订阅设置
  94. func (s *Subscribepay) ToSetPage() {
  95. myopenid := util.ObjToString(s.GetSession("s_m_openid"))
  96. mynickname, _ := s.Session().Get("s_nickname").(string)
  97. myavatar, _ := s.Session().Get("s_avatar").(string)
  98. s.T["nickname"] = mynickname
  99. s.T["avatar"] = myavatar
  100. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  101. s.T["openid"] = se.EncodeString(myopenid)
  102. s.Render("/weixin/vipsubscribe/vip_index.html")
  103. }
  104. //vip订阅介绍页
  105. func (s *Subscribepay) Introduce() error {
  106. userId := util.ObjToString(s.GetSession("userId"))
  107. if userId == "" {
  108. if s.GetString("state") == "wx" {
  109. //微信跳回来的
  110. code := s.GetString("code")
  111. if code != "" {
  112. openid := jyutil.Getopenid(code)
  113. if openid != "" {
  114. isSubscribe := CheckUserIsSubscribe(openid)
  115. if isSubscribe {
  116. FindUserAndCreateSess(openid, s.Session())
  117. }
  118. }
  119. }
  120. } else {
  121. if public.CheckWxBrowser(s.Request) {
  122. //所有参数都不再使用,跳到微信验证用户
  123. return s.Redirect(fmt.Sprintf(config.Wxoauth, url.QueryEscape(s.Site()+s.Url()), "wx"), 302)
  124. }
  125. return s.Redirect("/swordfish/about")
  126. }
  127. }
  128. m, ok := public.MQFW.FindById("user", userId, `{"o_vipjy":1,"i_vip_status":1}`)
  129. if !ok {
  130. return s.Redirect("/swordfish/about")
  131. }
  132. obj := util.ObjToMap((*m)["o_vipjy"])
  133. if util.IntAll((*m)["i_vip_status"]) > 0 {
  134. return s.Redirect("/front/vipsubscribe/toSetPage")
  135. }
  136. s.T["notShowTrial"] = util.IntAll((*obj)["i_trial"]) == -1 || (*m)["i_vip_status"] != nil
  137. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  138. return s.Render("/weixin/vipsubscribe/vip_introduce.html")
  139. }
  140. //试用完善信息
  141. func (s *Subscribepay) TrialInfo() error {
  142. userId := util.ObjToString(s.GetSession("userId"))
  143. if userId == "" {
  144. return s.Redirect("/swordfish/about")
  145. }
  146. m, ok := public.MQFW.FindById("user", userId, `{"o_vipjy":1}`)
  147. if !ok || len(*m) == 0 {
  148. return s.Redirect("/swordfish/about")
  149. }
  150. obj := util.ObjToMap((*m)["o_vipjy"])
  151. s.T["trialSign"] = util.IntAll((*obj)["i_trial"]) == 1
  152. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  153. return s.Render("/weixin/vipsubscribe/trial_info.html", &s.T)
  154. }
  155. //订阅收费购买页面
  156. func (s *Subscribepay) ToPurchasePage(flag string) {
  157. if flag == "trial" { //试用
  158. s.T["isTrial"] = true
  159. s.T["orderType"] = -1
  160. } else { //付费
  161. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url()) //微信支付准备参数
  162. if flag == "willExpire" {
  163. s.T["orderType"] = 5
  164. s.Render("/weixin/vipsubscribe/vip_purchase_willExpire.html")
  165. return
  166. } else {
  167. s.T["orderType"] = 1
  168. }
  169. if s.GetString("orderCode") != "" {
  170. s.T["again"] = 1 //再次购买
  171. }
  172. }
  173. s.Render("/weixin/vipsubscribe/vip_purchase.html")
  174. }
  175. //订阅收费地区筛选
  176. func (s *Subscribepay) ToChooseArea() {
  177. s.Render("/weixin/vipsubscribe/choose_area.html", &s.T)
  178. }
  179. //订阅收费地区筛选
  180. func (s *Subscribepay) ToChooseIndustry() {
  181. s.Render("/weixin/vipsubscribe/choose_industry.html", &s.T)
  182. }
  183. //订阅收费支付完成页面
  184. func (s *Subscribepay) ToPaySuccessPage() {
  185. s.Render("/weixin/vipsubscribe/vip_pay_success.html")
  186. }
  187. //订阅收费支付订单详情页面
  188. func (s *Subscribepay) ToOrderDetailPage() {
  189. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url()) //微信支付准备参数
  190. s.Render("/weixin/vipsubscribe/vip_order_detail.html")
  191. }
  192. //订阅收费设置关键词
  193. func (s *Subscribepay) ToSetKeyWordPage() {
  194. myopenid := util.ObjToString(s.GetSession("s_m_openid"))
  195. mynickname, _ := s.Session().Get("s_nickname").(string)
  196. myavatar, _ := s.Session().Get("s_avatar").(string)
  197. s.T["nickname"] = mynickname
  198. s.T["avatar"] = myavatar
  199. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  200. s.T["openid"] = se.EncodeString(myopenid)
  201. s.Render("/weixin/vipsubscribe/keyWord.html")
  202. }
  203. //修改订阅页面
  204. func (s *Subscribepay) ToEditSubPage() {
  205. s.Render("/weixin/vipsubscribe/edit_subscribe.html")
  206. }
  207. //合并后修改地区
  208. func (s *Subscribepay) ToEditSubAreaPage() {
  209. s.Render("/weixin/vipsubscribe/edit_city_new.html")
  210. }
  211. //修改订阅行业
  212. func (s *Subscribepay) ToEditSubInduPage() {
  213. s.Render("/weixin/vipsubscribe/edit_subscribe_industry.html")
  214. }
  215. //提交订阅修改
  216. func (s *Subscribepay) SubmitEditSubFinish() {
  217. s.Render("/weixin/vipsubscribe/edit_subscribe_success.html")
  218. }
  219. //升级订阅服务
  220. func (s *Subscribepay) ToUpgradePage() {
  221. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url()) //微信支付准备参数
  222. s.Render("/weixin/vipsubscribe/vip_upgrade.html")
  223. }
  224. //升级订阅新增区域
  225. func (s *Subscribepay) AddArea() {
  226. myopenid := util.ObjToString(s.GetSession("s_m_openid"))
  227. mynickname, _ := s.Session().Get("s_nickname").(string)
  228. myavatar, _ := s.Session().Get("s_avatar").(string)
  229. s.T["nickname"] = mynickname
  230. s.T["avatar"] = myavatar
  231. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  232. s.T["openid"] = se.EncodeString(myopenid)
  233. s.Render("/weixin/vipsubscribe/choose_area_upgrade.html")
  234. }
  235. //升级订阅新增行业
  236. func (s *Subscribepay) AddIndustry() {
  237. myopenid := util.ObjToString(s.GetSession("s_m_openid"))
  238. mynickname, _ := s.Session().Get("s_nickname").(string)
  239. myavatar, _ := s.Session().Get("s_avatar").(string)
  240. s.T["nickname"] = mynickname
  241. s.T["avatar"] = myavatar
  242. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  243. s.T["openid"] = se.EncodeString(myopenid)
  244. s.Render("/weixin/vipsubscribe/choose_industry_upgrade.html")
  245. }
  246. //服务续费(will:即将到期,exprie:已到期)
  247. func (s *Subscribepay) RenewPage(sign string) {
  248. myopenid := util.ObjToString(s.GetSession("s_m_openid"))
  249. mynickname, _ := s.Session().Get("s_nickname").(string)
  250. myavatar, _ := s.Session().Get("s_avatar").(string)
  251. startTime := util.Int64All(s.GetString("startTime"))
  252. endTime := util.Int64All(s.GetString("endTime"))
  253. orderId := s.GetString("orderId")
  254. startTimes := time.Unix(startTime, 0).Format("2006-01-02")
  255. endTimes := time.Unix(endTime, 0).Format("2006-01-02")
  256. s.T["orderId"] = orderId
  257. s.T["startTime"] = startTimes
  258. s.T["endTime"] = endTimes
  259. s.T["nickname"] = mynickname
  260. s.T["avatar"] = myavatar
  261. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  262. s.T["openid"] = se.EncodeString(myopenid)
  263. s.T["exprie"] = sign //是否已到期
  264. s.Render("/weixin/vipsubscribe/renew_notice.html", &s.T)
  265. }
  266. //服务续费(will:即将到期,exprie:已到期)
  267. func (s *Subscribepay) RenewPayPage() {
  268. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url()) //微信支付准备参数
  269. s.Render("/weixin/vipsubscribe/renew_pay.html")
  270. }
  271. //开发票
  272. func (s *Subscribepay) OpenInvoice(order_code string) {
  273. s.T["order_code"] = order_code
  274. s.Render("/weixin/dataExport/dataExport_applyInvoice.html", &s.T)
  275. }
  276. //预热活动链接跳转
  277. func (s *Subscribepay) PreheatPoster() {
  278. myopenid := util.ObjToString(s.GetSession("s_m_openid"))
  279. mynickname, _ := s.Session().Get("s_nickname").(string)
  280. myavatar, _ := s.Session().Get("s_avatar").(string)
  281. s.T["nickname"] = mynickname
  282. s.T["avatar"] = myavatar
  283. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  284. s.T["openid"] = se.EncodeString(myopenid)
  285. u, ok := public.MQFW.FindOne("user", `{"s_m_openid":"`+myopenid+`"}`)
  286. log.Println(myopenid, "---", u, "--", ok)
  287. if len(*u) > 0 && ok {
  288. if util.Int64All((*u)["i_vip_status"]) == 1 || util.Int64All((*u)["i_vip_status"]) == 2 {
  289. log.Println("VIP")
  290. s.Redirect("/front/vipsubscribe/toSetPage")
  291. } else {
  292. log.Println("NO VIP")
  293. s.Redirect("/front/vipsubscribe/introducePage")
  294. }
  295. }
  296. }