vipsubscribe.go 15 KB

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