vipsubscribe.go 13 KB

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