vipsubscribe.go 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556
  1. package front
  2. import (
  3. "encoding/hex"
  4. "fmt"
  5. "jy/src/jfw/config"
  6. "jy/src/jfw/wx"
  7. "net/url"
  8. "strings"
  9. "time"
  10. "jy/src/jfw/jyutil"
  11. "app.yhyue.com/moapp/jypkg/public"
  12. "app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
  13. util "app.yhyue.com/moapp/jybase/common"
  14. "app.yhyue.com/moapp/jybase/redis"
  15. "app.yhyue.com/moapp/jybase/go-xweb/xweb"
  16. )
  17. type Subscribepay struct {
  18. *xweb.Action
  19. introduce xweb.Mapper `xweb:"/front/vipsubscribe/introducePage"` //订阅收费介绍页
  20. trialInfo xweb.Mapper `xweb:"/front/vipsubscribe/trialInfo"` //vip订阅服务-用户信息录入页面
  21. toPurchasePage xweb.Mapper `xweb:"/front/vipsubscribe/vipsubscribe_(.*)"` //订阅收费购买页面(试用用户)
  22. toChooseArea xweb.Mapper `xweb:"/front/vipsubscribe/toChooseArea"` //订阅收费地区筛选
  23. toChooseIndustry xweb.Mapper `xweb:"/front/vipsubscribe/toChooseIndustry"` //订阅收费行业筛选
  24. toPaySuccessPage xweb.Mapper `xweb:"/front/vipsubscribe/toPaySuccessPage"` //订阅支付完成页面
  25. toOrderDetailPage xweb.Mapper `xweb:"/front/vipsubscribe/toOrderDetailPage"` //订阅收费支付订单详情页面
  26. toSetKeyWordPage xweb.Mapper `xweb:"/front/vipsubscribe/toSetKeyWordPage"` //订阅收费设置关键词
  27. //toSetPageOld xweb.Mapper `xweb:"/front/vipsubscribe/toSetPageOld"` //订阅收费设置
  28. toSetInfoTypePage xweb.Mapper `xweb:"/front/vipsubscribe/toSetInfoTypePage"` //订阅收费设置信息类型
  29. toSetOtherKwsPage xweb.Mapper `xweb:"/front/vipsubscribe/toSet(.*)Page"` //订阅收费附加词和排除词设置
  30. toVIPViewPage xweb.Mapper `xweb:"/front/vipsubscribe/toVIPViewPage"` //订阅收费预览
  31. //修改升级
  32. toSetPage xweb.Mapper `xweb:"/front/vipsubscribe/toSubVipSetPage"` //订阅收费设置
  33. toChangeArea xweb.Mapper `xweb:"/front/vipsubscribe/toChangeArea"` //修改区域
  34. toChangeIndustry xweb.Mapper `xweb:"/front/vipsubscribe/toChangeIndustry"` //修改行业
  35. toChangeTime xweb.Mapper `xweb:"/front/vipsubscribe/toChangeTime"` //修改时间
  36. toSetPushSetPage xweb.Mapper `xweb:"/front/vipsubscribe/toSetPushSetPage"` //订阅收费推送设置
  37. //续费
  38. renewPage xweb.Mapper `xweb:"/front/vipsubscribe/renewPage/(.*)"` //订阅到期(will:即将到期,exprie:已到期)
  39. //发票
  40. openInvoice xweb.Mapper `xweb:"/front/vipsubscribe/openInvoice/(\\w+)"` //开发票
  41. //预热活动链接跳转
  42. preheatPoster xweb.Mapper `xweb:"/front/preheat/poster"` //预热活动链接跳转
  43. upgradeDetail xweb.Mapper `xweb:"/front/vipsubscribe/upgradeDetail"` //新超级订阅介绍页
  44. upgradePage xweb.Mapper `xweb:"/front/vipsubscribe/upgradePage"` //升级页面
  45. //超级订阅企业搜索
  46. entSearch xweb.Mapper `xweb:"/front/vipsubscribe/entSearch"` //企业搜索
  47. //超级订阅改版公共url
  48. pcViewPage xweb.Mapper `xweb:"/vipsubscribe/pc/page/(.*)"` //超级订阅pc
  49. wxViewPage xweb.Mapper `xweb:"/vipsubscribe/wx/page/(.*)"` //超级订阅wx
  50. //订阅付费消息提醒中转
  51. msgremind xweb.Mapper `xweb:"/front/vipsubscribe/msgremind"`
  52. }
  53. func init() {
  54. xweb.AddAction(&Subscribepay{})
  55. }
  56. func (s *Subscribepay) EntSearch() {
  57. s.Render("/weixin/vipsubscribe/vip_entSearch.html")
  58. }
  59. func (s *Subscribepay) UpgradeDetail() {
  60. s.Render("/weixin/vipsubscribe/vip_UpgradeDetail.html")
  61. }
  62. func (s *Subscribepay) UpgradePage() {
  63. s.Render("/weixin/vipsubscribe/vip_UpgradePage.html")
  64. }
  65. var (
  66. liveActiveStartTime = config.ActiveConfig.Live_Active_Start
  67. liveActiveEndTime = config.ActiveConfig.Live_Active_End
  68. activeDiscount = config.ActiveConfig.ActiveDiscount
  69. )
  70. //推送设置
  71. func (s *Subscribepay) ToVIPViewPage() {
  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/vip_viewPage.html")
  80. }
  81. //附加词|排除词
  82. func (s *Subscribepay) ToSetOtherKwsPage(page string) {
  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/" + page + "Word.html")
  91. }
  92. //推送设置
  93. func (s *Subscribepay) ToSetPushSetPage() {
  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/vip_seniorset.html")
  102. }
  103. //信息类型
  104. func (s *Subscribepay) ToSetInfoTypePage() {
  105. myopenid := util.ObjToString(s.GetSession("s_m_openid"))
  106. mynickname, _ := s.Session().Get("s_nickname").(string)
  107. myavatar, _ := s.Session().Get("s_avatar").(string)
  108. s.T["nickname"] = mynickname
  109. s.T["avatar"] = myavatar
  110. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  111. s.T["openid"] = se.EncodeString(myopenid)
  112. s.Render("/weixin/vipsubscribe/messageType.html")
  113. }
  114. //订阅设置
  115. func (s *Subscribepay) ToSetPage() error {
  116. userid := util.ObjToString(s.GetSession("userId"))
  117. vSwitch := s.GetString("vSwitch")
  118. if vSwitch != "" {
  119. if vSwitch == jy.SwitchService.Vip {
  120. s.SetSession(jy.SwitchService.SessionKey, jy.SwitchService.Vip)
  121. } else if vSwitch == jy.SwitchService.Member {
  122. s.SetSession(jy.SwitchService.SessionKey, jy.SwitchService.Member)
  123. }
  124. }
  125. etcdMap := config.Sysconfig["etcd"].(map[string]interface{})
  126. vipMsg := jy.GetBigVipUserBaseMsg("10000", s.Session(), util.InterfaceToStr(etcdMap["hosts"]), util.InterfaceToStr(etcdMap["key"]))
  127. if vipMsg.VipStatus <= 0 && vipMsg.Status <= 0 && isInTSguide(userid) { //仅免费用户跳转向导页面
  128. return s.Redirect("/front/tenderSubscribe/guide?url=" + url.QueryEscape(s.Request.RequestURI))
  129. } else if (vSwitch == "" || vSwitch == "v") && vipMsg.VipStatus <= 0 && !vipMsg.IsUpgrade {
  130. if s.GetString("advertcode") != "" {
  131. return s.Redirect("/wxkeyset/keyset/index?advertcode=" + s.GetString("advertcode"))
  132. }
  133. return s.Redirect("/wxkeyset/keyset/index")
  134. }
  135. nowTime := time.Now().Unix()
  136. if nowTime >= liveActiveStartTime && nowTime < liveActiveEndTime {
  137. s.T["isLiveActive"] = true
  138. }
  139. s.T["liveActiveStartTime"] = liveActiveStartTime
  140. s.T["liveActiveEndTime"] = liveActiveEndTime
  141. s.T["activeDiscount"] = activeDiscount
  142. myopenid := util.ObjToString(s.GetSession("s_m_openid"))
  143. mynickname, _ := s.Session().Get("s_nickname").(string)
  144. myavatar, _ := s.Session().Get("s_avatar").(string)
  145. s.T["nickname"] = mynickname
  146. s.T["avatar"] = myavatar
  147. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  148. s.T["openid"] = se.EncodeString(myopenid)
  149. return s.Render("/weixin/vipsubscribe/vip_index_new.html")
  150. }
  151. func (s *Subscribepay) ToSetPageOld() {
  152. myopenid := util.ObjToString(s.GetSession("s_m_openid"))
  153. mynickname, _ := s.Session().Get("s_nickname").(string)
  154. myavatar, _ := s.Session().Get("s_avatar").(string)
  155. s.T["nickname"] = mynickname
  156. s.T["avatar"] = myavatar
  157. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  158. s.T["openid"] = se.EncodeString(myopenid)
  159. s.Render("/weixin/vipsubscribe/vip_index.html")
  160. }
  161. //修改升级 选择地区
  162. func (s *Subscribepay) ToChangeArea() {
  163. s.Render("/weixin/vipsubscribe/change_area.html")
  164. }
  165. //修改升级 选择行业
  166. func (s *Subscribepay) ToChangeIndustry() {
  167. s.Render("/weixin/vipsubscribe/change_industry.html")
  168. }
  169. //修改升级 选择时间
  170. func (s *Subscribepay) ToChangeTime() {
  171. s.Render("/weixin/vipsubscribe/change_time.html")
  172. }
  173. //vip订阅介绍页
  174. func (s *Subscribepay) Introduce() error {
  175. userId := util.ObjToString(s.GetSession("userId"))
  176. if userId == "" {
  177. if s.GetString("state") == "wx" {
  178. //微信跳回来的
  179. code := s.GetString("code")
  180. if code != "" {
  181. openid := jyutil.Getopenid(code)
  182. if openid != "" {
  183. isSubscribe := CheckUserIsSubscribe(openid)
  184. if isSubscribe {
  185. FindUserAndCreateSess(openid, s.Session(), "wx", false)
  186. userId = util.ObjToString(s.GetSession("userId"))
  187. }
  188. }
  189. }
  190. } else {
  191. if public.CheckWxBrowser(s.Request) {
  192. //所有参数都不再使用,跳到微信验证用户
  193. return s.Redirect(fmt.Sprintf(config.Wxoauth, url.QueryEscape(s.Site()+s.Url()), "wx"), 302)
  194. }
  195. return s.Redirect("/swordfish/about?v=0")
  196. }
  197. }
  198. if userId == "" {
  199. return s.Redirect("/swordfish/about?v=1")
  200. }
  201. // m, ok := public.MQFW.FindById("user", userId, `{"o_vipjy":1,"i_vip_status":1}`)
  202. etcdMap := config.Sysconfig["etcd"].(map[string]interface{})
  203. m := jy.GetBigVipUserBaseMsg("10000", s.Session(), util.InterfaceToStr(etcdMap["hosts"]), util.InterfaceToStr(etcdMap["key"]))
  204. if m == nil {
  205. return s.Redirect("/swordfish/about?v=2")
  206. }
  207. nowTime := time.Now().Unix()
  208. if nowTime >= liveActiveStartTime && nowTime < liveActiveEndTime {
  209. s.T["isLiveActive"] = true
  210. }
  211. //obj := util.ObjToMap((*m)["o_vipjy"])
  212. from := s.GetString("type") //双十一活动 接受参数renew 跳转到介绍页(续费)
  213. if m.VipStatus > 0 && from != "renew" {
  214. if s.GetString("disWord") != "" {
  215. //分销识别 直接VIP续费
  216. if m.VipStatus == 1 { //试用用户
  217. return s.Redirect("/jy_mobile/common/order/create/svip?type=buy&vSwitch=v&disWord=" + s.GetString("disWord") + "&advertcode=" + s.GetString("advertcode"))
  218. } else {
  219. return s.Redirect("/jy_mobile/common/order/create/svip?type=renew&vSwitch=v&disWord=" + s.GetString("disWord") + "&advertcode=" + s.GetString("advertcode"))
  220. }
  221. }
  222. return s.Redirect("/front/vipsubscribe/toSubVipSetPage?advertcode=" + s.GetString("advertcode") + "&vSwitch=v")
  223. }
  224. // s.T["notShowTrial"] = util.IntAll((*obj)["i_trial"]) == -1 || (*m)["i_vip_status"] != nil
  225. s.T["notShowTrial"] = m.VipStatus != 0
  226. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  227. //直播活动和预热活动期间
  228. if config.ActiveConfig.Live_Active_End > time.Now().Unix() && time.Now().Unix() > config.ActiveConfig.Live_Preheat_Start {
  229. s.T["LiveState"] = true
  230. }
  231. s.T["disWord"] = s.GetString("disWord")
  232. return s.Render("/weixin/vipsubscribe/vip_introduce.html")
  233. }
  234. //试用完善信息
  235. func (s *Subscribepay) TrialInfo() error {
  236. userId := util.ObjToString(s.GetSession("userId"))
  237. if userId == "" {
  238. return s.Redirect("/swordfish/about")
  239. }
  240. //m, ok := public.MQFW.FindById("user", userId, `{"o_vipjy":1}`)
  241. if !ok || len(*m) == 0 {
  242. return s.Redirect("/swordfish/about")
  243. }
  244. //obj := util.ObjToMap((*m)["o_vipjy"])
  245. // s.T["trialSign"] = util.IntAll((*obj)["i_trial"]) == 1
  246. s.T["trialSign"] = true
  247. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  248. return s.Render("/weixin/vipsubscribe/trial_info.html", &s.T)
  249. }
  250. //订阅收费购买页面
  251. func (s *Subscribepay) ToPurchasePage(flag string) {
  252. userId := util.ObjToString(s.GetSession("userId"))
  253. if userId == "" {
  254. return
  255. }
  256. //m, ok := public.MQFW.FindById("user", userId, `{"o_vipjy":1,"i_vip_status":1}`)
  257. etcdMap := config.Sysconfig["etcd"].(map[string]interface{})
  258. m := jy.GetBigVipUserBaseMsg("10000", s.Session(), util.InterfaceToStr(etcdMap["hosts"]), util.InterfaceToStr(etcdMap["key"]))
  259. if m == nil {
  260. s.Redirect("/swordfish/about?v=2")
  261. return
  262. }
  263. if m.VipStatus > 0 && flag == "new" {
  264. s.Redirect("/front/vipsubscribe/introducePage")
  265. return
  266. }
  267. //直播活动
  268. nowTime := time.Now().Unix()
  269. if nowTime >= liveActiveStartTime && nowTime < liveActiveEndTime {
  270. s.T["isLiveActive"] = true
  271. //虚拟人数
  272. buyCount := redis.Get("other", "liveactiveRTB")
  273. s.T["buyCount"] = buyCount
  274. }
  275. s.T["liveActiveStartTime"] = liveActiveStartTime
  276. s.T["liveActiveEndTime"] = liveActiveEndTime
  277. s.T["activeDiscount"] = activeDiscount
  278. if flag == "trial" { //试用
  279. s.T["isTrial"] = true
  280. s.T["orderType"] = -1
  281. } else { //付费
  282. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url()) //微信支付准备参数
  283. if flag == "renew" {
  284. s.Render("/weixin/vipsubscribe/vip_renew.html")
  285. return
  286. }
  287. if flag == "renewOld" {
  288. s.T["orderType"] = 5
  289. } else {
  290. s.T["orderType"] = 1
  291. }
  292. if s.GetString("orderCode") != "" && s.GetString("orderCode") != "undefined" {
  293. s.T["again"] = 1 //再次购买
  294. }
  295. }
  296. s.Render("/weixin/vipsubscribe/vip_purchase.html")
  297. }
  298. //订阅收费地区筛选
  299. func (s *Subscribepay) ToChooseArea() {
  300. s.Render("/weixin/vipsubscribe/choose_area.html", &s.T)
  301. }
  302. //订阅收费地区筛选
  303. func (s *Subscribepay) ToChooseIndustry() {
  304. s.Render("/weixin/vipsubscribe/choose_industry.html", &s.T)
  305. }
  306. //订阅收费支付订单详情页面
  307. func (s *Subscribepay) ToOrderDetailPage() {
  308. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url()) //微信支付准备参数
  309. s.T["liveActiveStartTime"] = liveActiveStartTime
  310. s.T["liveActiveEndTime"] = liveActiveEndTime
  311. s.T["activeDiscount"] = activeDiscount
  312. s.Render("/weixin/vipsubscribe/vip_order_detail.html")
  313. }
  314. //订阅收费设置关键词
  315. func (s *Subscribepay) ToSetKeyWordPage() {
  316. myopenid := util.ObjToString(s.GetSession("s_m_openid"))
  317. mynickname, _ := s.Session().Get("s_nickname").(string)
  318. myavatar, _ := s.Session().Get("s_avatar").(string)
  319. s.T["nickname"] = mynickname
  320. s.T["avatar"] = myavatar
  321. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  322. s.T["openid"] = se.EncodeString(myopenid)
  323. s.Render("/weixin/vipsubscribe/keyWord.html")
  324. }
  325. //修改订阅页面
  326. func (s *Subscribepay) ToEditSubPage() {
  327. s.Render("/weixin/vipsubscribe/edit_subscribe.html")
  328. }
  329. //合并后修改地区
  330. func (s *Subscribepay) ToEditSubAreaPage() {
  331. s.Render("/weixin/vipsubscribe/edit_city_new.html")
  332. }
  333. //修改订阅行业
  334. func (s *Subscribepay) ToEditSubInduPage() {
  335. s.Render("/weixin/vipsubscribe/edit_subscribe_industry.html")
  336. }
  337. //提交订阅修改
  338. func (s *Subscribepay) SubmitEditSubFinish() {
  339. s.Render("/weixin/vipsubscribe/edit_subscribe_success.html")
  340. }
  341. //升级订阅新增区域
  342. func (s *Subscribepay) AddArea() {
  343. myopenid := util.ObjToString(s.GetSession("s_m_openid"))
  344. mynickname, _ := s.Session().Get("s_nickname").(string)
  345. myavatar, _ := s.Session().Get("s_avatar").(string)
  346. s.T["nickname"] = mynickname
  347. s.T["avatar"] = myavatar
  348. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  349. s.T["openid"] = se.EncodeString(myopenid)
  350. s.Render("/weixin/vipsubscribe/choose_area_upgrade.html")
  351. }
  352. //升级订阅新增行业
  353. func (s *Subscribepay) AddIndustry() {
  354. myopenid := util.ObjToString(s.GetSession("s_m_openid"))
  355. mynickname, _ := s.Session().Get("s_nickname").(string)
  356. myavatar, _ := s.Session().Get("s_avatar").(string)
  357. s.T["nickname"] = mynickname
  358. s.T["avatar"] = myavatar
  359. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  360. s.T["openid"] = se.EncodeString(myopenid)
  361. s.Render("/weixin/vipsubscribe/choose_industry_upgrade.html")
  362. }
  363. //服务续费(will:即将到期,exprie:已到期)
  364. func (s *Subscribepay) RenewPage(sign string) {
  365. myopenid := util.ObjToString(s.GetSession("s_m_openid"))
  366. mynickname, _ := s.Session().Get("s_nickname").(string)
  367. myavatar, _ := s.Session().Get("s_avatar").(string)
  368. startTime := util.Int64All(s.GetString("startTime"))
  369. endTime := util.Int64All(s.GetString("endTime"))
  370. orderId := s.GetString("orderId")
  371. startTimes := time.Unix(startTime, 0).Format("2006-01-02")
  372. endTimes := time.Unix(endTime, 0).Format("2006-01-02")
  373. s.T["orderId"] = orderId
  374. s.T["startTime"] = startTimes
  375. s.T["endTime"] = endTimes
  376. s.T["nickname"] = mynickname
  377. s.T["avatar"] = myavatar
  378. s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url())
  379. s.T["openid"] = se.EncodeString(myopenid)
  380. s.T["exprie"] = sign //是否已到期
  381. s.Render("/weixin/vipsubscribe/renew_notice.html", &s.T)
  382. }
  383. //开发票
  384. func (s *Subscribepay) OpenInvoice(order_code string) {
  385. s.T["order_code"] = order_code
  386. s.Render("/weixin/dataExport/dataExport_applyInvoice.html", &s.T)
  387. }
  388. //预热活动链接跳转
  389. func (s *Subscribepay) PreheatPoster() {
  390. //myopenid := util.ObjToString(s.GetSession("s_m_openid"))
  391. // u, ok := public.MQFW.FindOne("user", `{"s_m_openid":"`+myopenid+`","s_unionid":{"$ne":"`+myopenid+`"}}`)
  392. etcdMap := config.Sysconfig["etcd"].(map[string]interface{})
  393. u := jy.GetBigVipUserBaseMsg("10000", s.Session(), qutil.InterfaceToStr(etcdMap["hosts"]), qutil.InterfaceToStr(etcdMap["key"]))
  394. if u != nil {
  395. if u.VipStatus == 1 || u.VipStatus == 2 {
  396. s.Redirect("/front/vipsubscribe/toSubVipSetPage")
  397. } else {
  398. s.Redirect("/front/vipsubscribe/introducePage")
  399. }
  400. }
  401. }
  402. func (this *Subscribepay) PcViewPage(htmlName string) error {
  403. this.T["logid"] = config.Seoconfig["bigmember"].(string)
  404. return this.Render("/vipsubscribe/pc/page_"+htmlName+".html", &this.T)
  405. }
  406. func (this *Subscribepay) WxViewPage(htmlName string) error {
  407. this.T["logid"] = config.Seoconfig["bigmember"].(string)
  408. return this.Render("/vipsubscribe/wx/page_"+htmlName+".html", &this.T)
  409. }
  410. //
  411. func (s *Subscribepay) Msgremind() error {
  412. param := map[string]string{}
  413. if array := strings.Split(s.Url(), "?"); len(array) == 2 {
  414. decode, _ := hex.DecodeString(array[1])
  415. for _, v := range strings.Split(string(decode), "&") {
  416. if vv := strings.Split(v, "="); len(vv) == 2 {
  417. param[vv[0]] = vv[1]
  418. }
  419. }
  420. }
  421. t := param["type"]
  422. advertcode := param["advertcode"]
  423. if t == "unpaid" { //未支付 已支付
  424. return s.Redirect("/front/vipsubscribe/toOrderDetailPage?orderCode=" + param["ordercode"] + "&advertcode=" + advertcode)
  425. } else if t == "bigmember_unpaid" {
  426. return s.Redirect("/front/wxMyOrder/memberDetail/" + param["ordercode"] + "?advertcode=" + advertcode)
  427. } else if t == "unknow_unpaid" {
  428. return s.Redirect("/weixin/pay/toMyWxOrder")
  429. }
  430. userId, _ := s.GetSession("userId").(string)
  431. if userId == "" {
  432. return s.Render("_error.html")
  433. }
  434. //user, ok := public.MQFW.FindById("user", userId, `{"i_vip_status":1,"l_vip_endtime":1,"i_member_status":1,"i_member_endtime":1}`)
  435. etcdMap := config.Sysconfig["etcd"].(map[string]interface{})
  436. user := jy.GetBigVipUserBaseMsg("10000", s.Session(), qutil.InterfaceToStr(etcdMap["hosts"]), qutil.InterfaceToStr(etcdMap["key"]))
  437. if user == nil {
  438. return s.Render("_error.html")
  439. }
  440. myLastOrderCode := func(user_id string) string {
  441. order := public.Mysql.FindOne("dataexport_order", map[string]interface{}{
  442. "user_id": user_id,
  443. "order_status": 1,
  444. "product_type": "VIP订阅",
  445. }, "id,order_code", "pay_time desc")
  446. if order != nil && len(*order) > 0 {
  447. return util.ObjToString((*order)["order_code"])
  448. } else {
  449. return ""
  450. }
  451. }
  452. i_vip_status := user.VipStatus
  453. if t == "bigmember_soonexprie" || t == "bigmember_expried" { //大会员即将到期、已到期
  454. now_unix := time.Now().Unix()
  455. i_member_endtime := user.EndTime
  456. if now_unix < i_member_endtime-259200 {
  457. //已续费
  458. return s.Redirect("/big/wx/page/landingPage?advertcode=" + advertcode)
  459. } else {
  460. if now_unix > i_member_endtime {
  461. //未续费已到期,跳转到再次购买页面
  462. return s.Redirect("/jy_mobile/common/order/create/bigmember?advertcode=" + advertcode)
  463. } else {
  464. //未续费未到期,跳转到续费页面
  465. return s.Redirect("/big/wx/page/landingPage?advertcode=" + advertcode)
  466. }
  467. }
  468. } else if t == "paid" {
  469. if i_vip_status > 0 {
  470. return s.Redirect("/front/vipsubscribe/toSubVipSetPage?advertcode=" + advertcode)
  471. } else {
  472. return s.Redirect("/jy_mobile/common/order/create/svip?type=buy&orderCode=" + myLastOrderCode(userId) + "&advertcode=" + advertcode)
  473. }
  474. } else if t == "bigmember_paid" {
  475. if user.Status > 0 {
  476. return s.Redirect("/big/wx/page/open_app?type=1&advertcode=" + advertcode)
  477. } else {
  478. return s.Redirect("/big/wx/page/landingPage?advertcode=" + advertcode)
  479. }
  480. } else if t == "soonexprie" || t == "expried" { //即将到期 已到期
  481. now_unix := time.Now().Unix()
  482. l_vip_endtime := user.Data.Vip.EndTime
  483. if now_unix < l_vip_endtime-259200 {
  484. //已续费
  485. return s.Redirect("/front/vipsubscribe/toSubVipSetPage?advertcode=" + advertcode)
  486. } else {
  487. if now_unix > l_vip_endtime {
  488. //未续费已到期,跳转到再次购买页面
  489. return s.Redirect("/jy_mobile/common/order/create/svip?type=buy&orderCode=" + myLastOrderCode(userId) + "&advertcode=" + advertcode)
  490. } else {
  491. //未续费未到期,跳转到续费页面
  492. return s.Redirect("/jy_mobile/common/order/create/svip?type=renew&advertcode=" + advertcode)
  493. }
  494. }
  495. } else if t == "ontrial_soonexprie" || t == "ontrial_expried" { //试用即将到期 试用已到期
  496. if i_vip_status == 2 {
  497. return s.Redirect("/front/vipsubscribe/toSubVipSetPage?advertcode=" + advertcode)
  498. } else {
  499. return s.Redirect("/jy_mobile/common/order/create/svip?type=buy&advertcode=" + advertcode)
  500. }
  501. } else if t == "buyerclass" { //公共资源交易提醒
  502. if i_vip_status > 0 { //vip未到期
  503. return s.Redirect("/front/vipsubscribe/toSubVipSetPage?advertcode=" + advertcode)
  504. } else if i_vip_status < 0 { //vip已到期
  505. return s.Redirect("/front/vipsubscribe/introducePage?advertcode=" + advertcode)
  506. }
  507. }
  508. return s.Render("_error.html")
  509. }