瀏覽代碼

Merge branch 'master' into feature/v4.9.99

yuelujie 4 月之前
父節點
當前提交
276481a0e7

+ 1 - 0
src/jfw/front/login.go

@@ -368,6 +368,7 @@ func (l *Login) ForgetPwd() error {
 			//if l.GetSession("identCodeValue") == nil || l.GetString("identCode") != l.GetSession("identCodeValue") { //验证码不正确
 			//	return "identCodeError"
 			//}
+			l.SetSession("identCodeKey", phone)
 			l.SetSession("forgetPwdStep", "2")
 			return "y"
 		} else if reqType == "save" {

+ 3 - 1
src/jfw/modules/app/src/go.mod

@@ -1,6 +1,8 @@
 module jy/src/jfw/modules/app/src
 
-go 1.20
+go 1.21
+
+toolchain go1.21.4
 
 require (
 	app.yhyue.com/moapp/jybase v0.0.0-20250225094323-2f6419d0d916

+ 13 - 0
src/jfw/modules/app/src/go.sum

@@ -858,10 +858,12 @@ github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk5
 github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
 github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc=
 github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302 h1:uvdUDbHQHO85qeSydJtItA4T55Pw6BtAejd0APRJOCE=
+github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc=
 github.com/alicebob/miniredis/v2 v2.17.0/go.mod h1:gquAfGbzn92jvtrSC69+6zZnwSODVXVpYDRaGhWaL6I=
 github.com/alicebob/miniredis/v2 v2.22.0/go.mod h1:XNqvJdQJv5mSuVMc0ynneafpnL/zv52acZ6kqeS0t88=
 github.com/alicebob/miniredis/v2 v2.30.5/go.mod h1:b25qWj4fCEsBeAAR2mlb0ufImGC6uH3VlUfb/HS5zKg=
 github.com/alicebob/miniredis/v2 v2.32.1 h1:Bz7CciDnYSaa0mX5xODh6GUITRSx+cVhjNoOR4JssBo=
+github.com/alicebob/miniredis/v2 v2.32.1/go.mod h1:AqkLNAfUm0K07J28hnAyyQKf/x0YkCY/g5DCtuL01Mw=
 github.com/aliyun/aliyun-oss-go-sdk v2.1.6+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8=
 github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
 github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
@@ -892,7 +894,9 @@ github.com/bos-hieu/mongostore v0.0.2/go.mod h1:8AbbVmDEb0yqJsBrWxZIAZOxIfv/tsP8
 github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA=
 github.com/bradleypeabody/gorilla-sessions-memcache v0.0.0-20181103040241-659414f458e1/go.mod h1:dkChI7Tbtx7H1Tj7TqGSZMOeGpMP5gLHtjroHd4agiI=
 github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=
+github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c=
 github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
+github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
 github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8=
 github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE=
 github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
@@ -1004,6 +1008,7 @@ github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8
 github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
 github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k=
 github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE=
+github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps=
 github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
 github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
 github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU=
@@ -1091,6 +1096,7 @@ github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqw
 github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
 github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
 github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
 github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8=
 github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:56xuuqnHyryaerycW3BfssRdxQstACi0Epw/yC5E2xM=
 github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0=
@@ -1140,6 +1146,7 @@ github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0L
 github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
 github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ=
 github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68=
+github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
 github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -1233,6 +1240,7 @@ github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLe
 github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
 github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
 github.com/google/pprof v0.0.0-20211214055906-6f57359322fd h1:1FjCyPC+syAzJ5/2S8fqdZK1R22vvA0J7JZKcuOIQ7Y=
+github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
 github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
 github.com/google/s2a-go v0.1.0/go.mod h1:OJpEgntRZo8ugHpF9hkoLJbS5dSI20XZeXJ9JVywLlM=
 github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A=
@@ -1540,6 +1548,7 @@ github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkA
 github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw=
 github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo=
 github.com/onsi/ginkgo/v2 v2.13.0 h1:0jY9lJquiL8fcf3M4LAXN5aMlS/b2BV86HFFPCPMgE4=
+github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o=
 github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
 github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
 github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
@@ -1557,6 +1566,7 @@ github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2
 github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM=
 github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM=
 github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg=
+github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
 github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
 github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=
 github.com/openzipkin/zipkin-go v0.3.0/go.mod h1:4c3sLeE8xjNqehmF5RpAFLPLJxXscc0R4l6Zg0P1tTQ=
@@ -1653,6 +1663,7 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR
 github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
 github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
 github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
+github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
 github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
 github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU=
@@ -1775,6 +1786,7 @@ github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da/go.mod h1:E1AXubJB
 github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA=
 github.com/yuin/gopher-lua v1.1.0/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw=
 github.com/yuin/gopher-lua v1.1.1 h1:kYKnWBjvbNP4XLT3+bPEwAXJx262OhaHDWDVOPjL46M=
+github.com/yuin/gopher-lua v1.1.1/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw=
 github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
 github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
 github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA=
@@ -2412,6 +2424,7 @@ golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4=
 golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
 golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM=
 golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
+golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
 golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

+ 1 - 1
src/jfw/modules/app/src/web/staticres/jyapp/js/common.js

@@ -990,7 +990,7 @@ $(function () {
   }
   if (isIphoneX()) {
     // $(".app-layout-header").css("padding-top"," 40px");//标题
-    $(".app-back.jyapp-icon.jyapp-icon-zuojiantou").css("padding-top", " 40px");//返回
+    // $(".app-back.jyapp-icon.jyapp-icon-zuojiantou").css("padding-top", " 40px");//返回
     $(".header-share").css("padding-top", " 40px");//分享
     // $(".app-layout-content-a, .app-layout-content-b").css("top","64px");//正文
     $(".feedback-nav").css("top", "85px");//意见反馈

+ 1 - 2
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/vip_introduce.css

@@ -34,7 +34,6 @@ html,body {
 }
 
 .j-header {
-  position: absolute;
   width: 100%;
   display: flex;
   align-items: center;
@@ -115,7 +114,7 @@ html,body {
 .vip_introduce {
   width: 100%;
   height: 100%;
-  overflow: hidden;
+  overflow-y: scroll;
   display: flex;
   flex-direction: column;
   justify-content: space-between;

+ 68 - 70
src/jfw/modules/app/src/web/templates/vipsubscribe/vip_introduce.html

@@ -76,76 +76,74 @@
 </head>
 <body>
 <div class="j-container" id="vip-intro-container">
-    <div class="j-header jy-app-header transparent-header">
+    <div class="j-header jy-app-header">
       <span class="app-back jyapp-icon jyapp-icon-zuojiantou header-left"></span>
       <span class="header-title">超级订阅</span>
       <span class="header-right hide"></span>
     </div>
     <div class="j-main vip_introduce vip-body" id="vip-body">
-        <div class="main">
-          <div class="landing-banner">
-            <img id="cut-2" src='' />
-            <div class="statistic-info">
-              <div class="statistic-item">
-                <h3 class="item-count day-update-count"></h3>
-                <p>每日招采信息新增</p>
+        <div class="landing-banner">
+          <img id="cut-2" src='' />
+          <div class="statistic-info">
+            <div class="statistic-item">
+              <h3 class="item-count day-update-count"></h3>
+              <p>每日招采信息新增</p>
+            </div>
+            <div class="statistic-item">
+              <h3 class="item-count purchase-partyA-count"></h3>
+              <p>覆盖省市镇招采甲方</p>
+            </div>
+            <div class="statistic-item">
+              <h3 class="item-count purchase-project-count"></h3>
+              <p>覆盖全行业招采项目</p>
+            </div>
+          </div>
+        </div>
+        <div class="cooperate-container">
+          <div class="cooperate-header">
+            <h2 class="cooperate-header-title"></h2>
+            <p class="line-flex cooperate-header-subtitle">
+              <span class="split-box--before"></span>
+              <span class="split-box--text">定向推送!覆盖全网全类招采项目</span>
+              <span class="split-box--after"></span>
+            </p>
+          </div>
+          <div class="cooperate-main">
+            <div class="cooperate-list">
+              <div class="cooperate-item">
+                <div class="cooperate-item-icon cooperate-item-icon-1"></div>
+                <p class="cooperate-item-text">建筑工程</p>
               </div>
-              <div class="statistic-item">
-                <h3 class="item-count purchase-partyA-count"></h3>
-                <p>覆盖省市镇招采甲方</p>
+              <div class="cooperate-item">
+                <div class="cooperate-item-icon cooperate-item-icon-2"></div>
+                <p class="cooperate-item-text">弱电安防</p>
               </div>
-              <div class="statistic-item">
-                <h3 class="item-count purchase-project-count"></h3>
-                <p>覆盖全行业招采项目</p>
+              <div class="cooperate-item">
+                <div class="cooperate-item-icon cooperate-item-icon-3"></div>
+                <p class="cooperate-item-text">信息技术</p>
               </div>
-            </div>
-          </div>
-          <div class="cooperate-container">
-            <div class="cooperate-header">
-              <h2 class="cooperate-header-title"></h2>
-              <p class="line-flex cooperate-header-subtitle">
-                <span class="split-box--before"></span>
-                <span class="split-box--text">定向推送!覆盖全网全类招采项目</span>
-                <span class="split-box--after"></span>
-              </p>
-            </div>
-            <div class="cooperate-main">
-              <div class="cooperate-list">
-                <div class="cooperate-item">
-                  <div class="cooperate-item-icon cooperate-item-icon-1"></div>
-                  <p class="cooperate-item-text">建筑工程</p>
-                </div>
-                <div class="cooperate-item">
-                  <div class="cooperate-item-icon cooperate-item-icon-2"></div>
-                  <p class="cooperate-item-text">弱电安防</p>
-                </div>
-                <div class="cooperate-item">
-                  <div class="cooperate-item-icon cooperate-item-icon-3"></div>
-                  <p class="cooperate-item-text">信息技术</p>
-                </div>
-                <div class="cooperate-item">
-                  <div class="cooperate-item-icon cooperate-item-icon-4"></div>
-                  <p class="cooperate-item-text">医疗卫生</p>
-                </div>
-                <div class="cooperate-item">
-                  <div class="cooperate-item-icon cooperate-item-icon-5"></div>
-                  <p class="cooperate-item-text">服务采购</p>
-                </div>
-                <div class="cooperate-item">
-                  <div class="cooperate-item-icon cooperate-item-icon-6"></div>
-                  <p class="cooperate-item-text">机械设备</p>
-                </div>
+              <div class="cooperate-item">
+                <div class="cooperate-item-icon cooperate-item-icon-4"></div>
+                <p class="cooperate-item-text">医疗卫生</p>
+              </div>
+              <div class="cooperate-item">
+                <div class="cooperate-item-icon cooperate-item-icon-5"></div>
+                <p class="cooperate-item-text">服务采购</p>
               </div>
-              <div class="cooperate-footer" data-href="/jy_mobile/search/middle/bidding">
-                <div class="cooperate-item-icon cooperate-item-icon-7"></div>
-                <p class="cooperate-item-text">更多行业</p>
+              <div class="cooperate-item">
+                <div class="cooperate-item-icon cooperate-item-icon-6"></div>
+                <p class="cooperate-item-text">机械设备</p>
               </div>
             </div>
-          </div>
-          <div class="vs-container">
-            <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/vipsubscribe/image/vs_new.png?v={{Msg "seo" "version"}}' alt="vs">
+            <div class="cooperate-footer" data-href="/jy_mobile/search/middle/bidding">
+              <div class="cooperate-item-icon cooperate-item-icon-7"></div>
+              <p class="cooperate-item-text">更多行业</p>
+            </div>
           </div>
         </div>
+        <div class="vs-container">
+          <img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/vipsubscribe/image/vs_new.png?v={{Msg "seo" "version"}}' alt="vs">
+        </div>
     </div>
     <div class="j-footer j-button-group popup-bottom-group">
         <!-- <div class="adbottom" style="width:375px;height: 40px;text-align: center;" id="bottomad"></div>
@@ -261,21 +259,21 @@
             window.history.back()
         })
         // 头部滚动事件
-        $('.j-main .main').on('scroll', function () {
-            var headerDOM = $('.j-header.jy-app-header')
-            var scrollTop = this.scrollTop
+        // $('.j-main .main').on('scroll', function () {
+        //     var headerDOM = $('.j-header.jy-app-header')
+        //     var scrollTop = this.scrollTop
 
-            // 是否有header-transparent这个类名
-            var hasClassT = headerDOM.hasClass('transparent-header')
+        //     // 是否有header-transparent这个类名
+        //     var hasClassT = headerDOM.hasClass('transparent-header')
 
-            if(scrollTop >= 75) {
-                if (!hasClassT) return
-                headerDOM.removeClass('transparent-header')
-            }else {
-                if (hasClassT) return
-                headerDOM.addClass('transparent-header')
-            }
-        })
+        //     if(scrollTop >= 75) {
+        //         if (!hasClassT) return
+        //         headerDOM.removeClass('transparent-header')
+        //     }else {
+        //         if (hasClassT) return
+        //         headerDOM.addClass('transparent-header')
+        //     }
+        // })
 
         // 清除超级订阅购买、续费、升级页面相关的优惠券、商品规格缓存
         sessionStorage.removeItem('vip-cur-select-coupon')

+ 31 - 29
src/jfw/modules/publicapply/src/util/userInfo.go

@@ -1,45 +1,47 @@
 package util
 
 import (
-    "app.yhyue.com/moapp/jybase/common"
-    "app.yhyue.com/moapp/jybase/go-xweb/httpsession"
-    "jy/src/jfw/modules/publicapply/src/db"
+	"app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/go-xweb/httpsession"
+	"jy/src/jfw/modules/publicapply/src/db"
 )
 
 // SessUserInfo 从session获取用户基本信息
 type SessUserInfo struct {
-    BaseUserId   int64
-    AccountId    int64
-    EntId        int64
-    PositionType int64
-    PositionId   int64
-    EntUserId    int64
-    Phone        string
-    MgoUserId    string
-    UserId       string
+	BaseUserId   int64
+	AccountId    int64
+	EntId        int64
+	PositionType int64
+	PositionId   int64
+	EntUserId    int64
+	Phone        string
+	MgoUserId    string
+	UserId       string
 }
 
 // GetUserBaseInfo 获取用户基本信息从session
 func GetUserBaseInfo(sess *httpsession.Session) SessUserInfo {
-    getSession := sess.GetMultiple()
-    return SessUserInfo{
-        MgoUserId:    common.ObjToString(getSession["mgoUserId"]),
-        BaseUserId:   common.Int64All(getSession["base_user_id"]),
-        AccountId:    common.Int64All(getSession["accountId"]),
-        EntId:        common.Int64All(getSession["entId"]),
-        PositionType: common.Int64All(getSession["positionType"]),
-        PositionId:   common.Int64All(getSession["positionId"]),
-        Phone:        common.ObjToString(getSession["phone"]),
-        UserId:       common.ObjToString(getSession["userId"]),
-        EntUserId:    common.Int64All(getSession["entUserId"]),
-    }
+	getSession := sess.GetMultiple()
+	return SessUserInfo{
+		MgoUserId:    common.ObjToString(getSession["mgoUserId"]),
+		BaseUserId:   common.Int64All(getSession["base_user_id"]),
+		AccountId:    common.Int64All(getSession["accountId"]),
+		EntId:        common.Int64All(getSession["entId"]),
+		PositionType: common.Int64All(getSession["positionType"]),
+		PositionId:   common.Int64All(getSession["positionId"]),
+		Phone:        common.ObjToString(getSession["phone"]),
+		UserId:       common.ObjToString(getSession["userId"]),
+		EntUserId:    common.Int64All(getSession["entUserId"]),
+	}
 }
 
 // 手机号用户是否存在
 func UserIsExists(phoneNum string) bool {
-    query := map[string]interface{}{
-        "s_phone": phoneNum,
-        "i_appid": 2,
-    }
-    return db.Mgo.Count("user", query) > 0
+	query := map[string]interface{}{
+		"$or": []map[string]interface{}{
+			{"s_phone": phoneNum},
+			{"s_m_phone": phoneNum}},
+		"i_appid": 2,
+	}
+	return db.Mgo.Count("user", query) > 0
 }

+ 24 - 4
src/jfw/modules/subscribepay/src/service/userAccountInfo.go

@@ -20,6 +20,7 @@ import (
 	"github.com/gogf/gf/v2/util/gconv"
 
 	. "app.yhyue.com/moapp/jybase/api"
+	jycaptcha "app.yhyue.com/moapp/jybase/captcha"
 	qutil "app.yhyue.com/moapp/jybase/common"
 	. "app.yhyue.com/moapp/jybase/date"
 	"app.yhyue.com/moapp/jybase/dchest/captcha"
@@ -601,10 +602,29 @@ func (this *UserAccount) PhoneBind() {
 				return nil, fmt.Errorf("已绑定手机号,请勿重复绑定")
 			}
 		}
-		//发送验证码&校验验证码逻辑
-		phoneVerify, err := phoneStep(this.Request, this.Session(), step, phone, code, "bind")
-		if err != nil {
-			return nil, err
+		var (
+			phoneVerify string
+			err         error
+		)
+		captchaKey := this.GetString("captchaKey") //图形验证码key
+		if captchaKey != "" {
+			if strings.TrimSpace(phone) == "" {
+				return nil, fmt.Errorf("手机号异常")
+			}
+			if getPhoneByUserId(userId) != "" {
+				return nil, fmt.Errorf("已绑定手机号,请勿重复绑定")
+			}
+			identCode := this.GetString("identCode") //短信验证码
+			phoneVerify = jy.CheckPhoneIdent(this.Session(), identCode, fmt.Sprintf(jycaptcha.SendCodeKey, captchaKey, phone))
+			if phone != phoneVerify { //验证码不正确
+				return nil, fmt.Errorf("验证码错误")
+			}
+		} else {
+			//发送验证码&校验验证码逻辑
+			phoneVerify, err = phoneStep(this.Request, this.Session(), step, phone, code, "bind")
+			if err != nil {
+				return nil, err
+			}
 		}
 		rData := map[string]interface{}{
 			"state": 1,

+ 1 - 1
src/web/staticres/css/subscribe_new.css

@@ -589,7 +589,7 @@
   width: 100%;
   height: 100%;
   content: "";
-  background-image: url(/images/subscribe/right.png);
+  background-image: url(/images/subscribe/right.png?v=1);
   background-size: 24px 24px;
   background-repeat: no-repeat;
   background-position: center;

+ 13 - 5
src/web/staticres/js/login.js

@@ -1139,12 +1139,16 @@ $(function(){
         },
         ajaxLoginSms: function (e, arr) {
             if ($('#bidLogin').attr('data-name') === 'bind-phone') {
-                $.post("/jypay/user/phone/bind",{
+                var captInfo = getCaptchaInfo()
+                var payload = {
                   step: 2,
                   phone: arr[0].value,
-                  code: arr[2].value,
+                  code: arr[arr.length-1].value,
+                  identCode:arr[arr.length-1].value,
+                  captchaKey: captInfo.captKey,
                   mode: isBindPage ? 'mergeBind' : ''
-                },function(r){
+                }
+                $.post("/jypay/user/phone/bind",payload,function(r){
                     e.setAttribute('data-loading', 'false')
                     if (r && r.error_code > -1) {
                         if(r.data.state==1){
@@ -1180,7 +1184,7 @@ $(function(){
                           location.replace('/swordfish/frontPage/userMerge/sess/merge?token=' + r.data.token)
                         }
                     } else {
-                        arr[2].showError(r.error_msg || '绑定错误,请稍后再试')
+                      arr[arr.length-1].showError(r.error_msg || '绑定错误,请稍后再试')
                     }
                 });
             } else {
@@ -1296,7 +1300,11 @@ $(function(){
         verifyInput.show()
       } else {
         verifyInput.find('input').val('HIDE')
-        Direct.verify.code.skip('HIDE')
+        try {
+          Direct.verify.code.skip('HIDE')
+        } catch (error) {
+          console.log(error)
+        }
         verifyInput.hide()
       }
     }