vipsubscribe.go 14 KB

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