Browse Source

初始化

wangchuanjin 2 years ago
parent
commit
bf1d76c2b4
52 changed files with 1054 additions and 376 deletions
  1. 4 5
      src/go.mod
  2. 6 10
      src/go.sum
  3. 3 2
      src/jfw/active/21yearEndReport.go
  4. 3 2
      src/jfw/active/active_future.go
  5. 5 4
      src/jfw/active/active_seal.go
  6. 2 2
      src/jfw/active/live.go
  7. 2 1
      src/jfw/filter/baseuserfilter.go
  8. 1 1
      src/jfw/filter/filter.go
  9. 1 1
      src/jfw/filter/mergefilter.go
  10. 1 1
      src/jfw/filter/pcfilter.go
  11. 1 1
      src/jfw/filter/phonefilter.go
  12. 3 2
      src/jfw/front/adv.go
  13. 2 2
      src/jfw/front/applysub.go
  14. 2 2
      src/jfw/front/commonPayWx.go
  15. 5 5
      src/jfw/front/distribution.go
  16. 14 13
      src/jfw/front/follow.go
  17. 1 1
      src/jfw/front/front.go
  18. 2 2
      src/jfw/front/frontRouter.go
  19. 5 6
      src/jfw/front/jyshare.go
  20. 6 5
      src/jfw/front/org_structure.go
  21. 1 1
      src/jfw/front/pchelper.go
  22. 2 2
      src/jfw/front/search.go
  23. 2 2
      src/jfw/front/shorturl.go
  24. 3 2
      src/jfw/front/singleLogin.go
  25. 4 4
      src/jfw/front/swordfish.go
  26. 2 2
      src/jfw/front/tags.go
  27. 3 2
      src/jfw/front/vipsubscribe.go
  28. 4 4
      src/jfw/front/ws_dataExport.go
  29. 3 2
      src/jfw/front/wxMyOrder.go
  30. 182 0
      src/jfw/jyutil/jyCms.go
  31. 13 8
      src/jfw/jyutil/jyutil.go
  32. 241 0
      src/jfw/jyutil/sessionEncryption.go
  33. 170 0
      src/jfw/jyutil/sessionkeep.go
  34. 27 0
      src/jfw/jyutil/sort.go
  35. 3 2
      src/jfw/modules/app/src/app/filter/baseuserfilter.go
  36. 5 6
      src/jfw/modules/app/src/app/filter/mergefilter.go
  37. 7 6
      src/jfw/modules/app/src/app/front/follow.go
  38. 2 3
      src/jfw/modules/app/src/go.mod
  39. 4 6
      src/jfw/modules/app/src/go.sum
  40. 2 5
      src/jfw/modules/app/src/main.go
  41. 140 0
      src/jfw/modules/app/src/public/rpccall.go
  42. 0 65
      src/jfw/modules/common/src/qfw/util/jy/nsq.go
  43. 0 167
      src/jfw/modules/common/src/qfw/util/jy/userMerge.go
  44. 3 2
      src/jfw/modules/entsesearch/src/go.mod
  45. 5 4
      src/jfw/modules/entsesearch/src/go.sum
  46. 3 2
      src/jfw/modules/followent/src/go.mod
  47. 5 4
      src/jfw/modules/followent/src/go.sum
  48. BIN
      src/jfw/modules/weixin/src/src
  49. 3 2
      src/jfw/nodemgr/nodemgr.go
  50. 140 0
      src/jfw/public/rpccall.go
  51. 3 2
      src/jfw/rpcfollow/rpc.go
  52. 3 3
      src/main.go

+ 4 - 5
src/go.mod

@@ -3,8 +3,8 @@ module jy/src
 go 1.18
 
 require (
-	app.yhyue.com/moapp/jybase v0.0.0-20221229074840-790b25997170
-	app.yhyue.com/moapp/jypkg v0.0.0-20221230014931-c9afd45ba90b
+	app.yhyue.com/moapp/jybase v0.0.0-20221230025810-b88f2a62c467
+	app.yhyue.com/moapp/jypkg v0.0.0-20221230080706-5ea76d175cfb
 	github.com/SKatiyar/qr v0.0.0-20151201054752-25b6bdf44e67
 	github.com/dchest/captcha v1.0.0
 	github.com/fsnotify/fsnotify v1.6.0
@@ -28,7 +28,6 @@ require (
 	github.com/nsqio/go-nsq v1.1.0 // indirect
 	github.com/olivere/elastic v6.2.37+incompatible // indirect
 	github.com/pkg/errors v0.9.1 // indirect
-	github.com/robfig/cron/v3 v3.0.1 // indirect
 	github.com/tealeg/xlsx v1.0.5 // indirect
 	github.com/thinxer/go-word2vec v0.0.0-20150917053916-5c19ec7379ed // indirect
 	github.com/xdg-go/pbkdf2 v1.0.0 // indirect
@@ -38,8 +37,8 @@ require (
 	github.com/ziutek/blas v0.0.0-20190227122918-da4ca23e90bb // indirect
 	golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect
 	golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
-	golang.org/x/sys v0.3.0 // indirect
-	golang.org/x/text v0.5.0 // indirect
+	golang.org/x/sys v0.0.0-20220908164124-27713097b956 // indirect
+	golang.org/x/text v0.3.8-0.20211105212822-18b340fc7af2 // indirect
 	gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
 	gorm.io/driver/mysql v1.0.5 // indirect
 	gorm.io/gorm v1.21.3 // indirect

+ 6 - 10
src/go.sum

@@ -2,10 +2,10 @@ app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d h1:WPsYuuptAd3UEgN+j
 app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d/go.mod h1:91/lSD/hS+ckMVP3WdidRzDhC60lLMdyce9QHy0cSMA=
 app.yhyue.com/moapp/jyPoints v1.1.1/go.mod h1:SvP8p5L3jGrejHiH2LXfgCg/NPlFiKBC5Yd0gsI12FU=
 app.yhyue.com/moapp/jybase v0.0.0-20220427020729-974c1a148186/go.mod h1:qNRA0sHuYqcLoYoP8irpaWnW9YsXixe6obBIkwaXpD0=
-app.yhyue.com/moapp/jybase v0.0.0-20221229074840-790b25997170 h1:gjx6+x7P1Vp/++OyfuEdR3Bcjj4/HrgIaRnE1cMTP3k=
-app.yhyue.com/moapp/jybase v0.0.0-20221229074840-790b25997170/go.mod h1:efAeRPDpJ13JuNODuqtfLlKQSQgCbnUcwGPzhFU5krY=
-app.yhyue.com/moapp/jypkg v0.0.0-20221230014931-c9afd45ba90b h1:RZ/8iz9U+jo1V97Wxm1lIRnp6UzUsM5A0k+pLUXIQug=
-app.yhyue.com/moapp/jypkg v0.0.0-20221230014931-c9afd45ba90b/go.mod h1:R19Q6Q1AOM47lY194ZQ6qdggbjkijDufoDnJndnRrRM=
+app.yhyue.com/moapp/jybase v0.0.0-20221230025810-b88f2a62c467 h1:MTZBSIzrqrwieb1gLhls3Wjz0Q2u75n+O2jfPw40iEA=
+app.yhyue.com/moapp/jybase v0.0.0-20221230025810-b88f2a62c467/go.mod h1:zB47XTeJvpcbtBRYgkQuxOICWNexiZfbUO+7aUf6mNs=
+app.yhyue.com/moapp/jypkg v0.0.0-20221230080706-5ea76d175cfb h1:EpO8FAT6xsnaZW3TuLVz8RrDff1c7eXwgGqmlBtUUyQ=
+app.yhyue.com/moapp/jypkg v0.0.0-20221230080706-5ea76d175cfb/go.mod h1:CkGGBvyteATKUfm7n0SqAm1LlCftmiWwlFGR80YEkWo=
 app.yhyue.com/moapp/message v0.0.0-20221202072401-d825fc65512c h1:CrcvbsXZ4aQkNikBi7FUUQZNnY8hKsNo2LLe/SqeXs8=
 app.yhyue.com/moapp/message v0.0.0-20221202072401-d825fc65512c/go.mod h1:b0zZHev3gmJao1Fo+2Z2KPVjsuLOJVvVxf+kCnu9WkA=
 cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
@@ -514,8 +514,6 @@ github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqn
 github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
 github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ=
 github.com/robfig/cron v1.2.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k=
-github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
-github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
 github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
 github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
@@ -830,9 +828,8 @@ golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBc
 golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220429233432-b5fbb4746d32/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220908164124-27713097b956 h1:XeJjHH1KiLpKGb6lvMiksZ9l0fVUh+AmGcm0nOMEBOY=
 golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ=
-golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@@ -845,9 +842,8 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/text v0.3.8-0.20211105212822-18b340fc7af2 h1:GLw7MR8AfAG2GmGcmVgObFOHXYypgGjnGno25RDwn3Y=
 golang.org/x/text v0.3.8-0.20211105212822-18b340fc7af2/go.mod h1:EFNZuWvGYxIRUEX+K8UmCFwYmZjqcrnq15ZuVldZkZ0=
-golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM=
-golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
 golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=

+ 3 - 2
src/jfw/active/21yearEndReport.go

@@ -6,7 +6,8 @@ import (
 	"net/url"
 	"time"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
+
 	"app.yhyue.com/moapp/jypkg/public"
 
 	qutil "app.yhyue.com/moapp/jybase/common"
@@ -63,7 +64,7 @@ func (this *YearEndReport) YearEndReportPage() error {
 			return this.Redirect(fmt.Sprintf(config.Wxoauth, url.QueryEscape(this.Site()+this.Url()), "report"), 302)
 		}
 		//获取用户openid
-		openid = jyutil.Getopenid(this.GetString("code"), config.Wxoauthinfo)
+		openid = jyutil.Getopenid(this.GetString("code"))
 	}
 	//没有用户session 或  有session但是没有关注(刚刚取关 session信息存留)
 	//判断是否关注

+ 3 - 2
src/jfw/active/active_future.go

@@ -9,7 +9,8 @@ import (
 	"jy/src/jfw/wx"
 	"log"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
+
 	"app.yhyue.com/moapp/jypkg/public"
 
 	//	"math/rand"
@@ -36,7 +37,7 @@ func (a *Active) FutureIndex(share_openid string) error {
 				//微信跳回来的
 				code := a.GetString("code")
 				if code != "" {
-					openid = jyutil.Getopenid(code, config.Wxoauthinfo)
+					openid = jyutil.Getopenid(code)
 					if openid != "" {
 						FindUserAndCreateSess(openid, a.Session(), "wx", false)
 					}

+ 5 - 4
src/jfw/active/active_seal.go

@@ -17,15 +17,16 @@ import (
 	"sync"
 	"time"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
 
-	"app.yhyue.com/moapp/jypkg/public"
+	. "jy/src/jfw/public"
 
 	util "app.yhyue.com/moapp/jybase/common"
 	. "app.yhyue.com/moapp/jybase/date"
 	"app.yhyue.com/moapp/jybase/encrypt"
 	"app.yhyue.com/moapp/jybase/redis"
 	rpc "app.yhyue.com/moapp/jybase/rpc"
+	"app.yhyue.com/moapp/jypkg/public"
 )
 
 var sese encrypt.SimpleEncrypt = encrypt.SimpleEncrypt{Key: "topnet"}
@@ -144,7 +145,7 @@ func SealSendMsg() {
 					title = "【优秀员工证书】\n你的优秀员工证书已获得" + strconv.Itoa(count) + "个好友认证,打败全国" + lastVal + "%的网友,快去高调炫耀一下!"
 				}
 				webdomain := util.ObjToString(config.Sysconfig["webdomain"])
-				ok := public.SendACTIVEApplyMsg(&rpc.NotifyMsg{
+				ok := SendACTIVEApplyMsg(&rpc.NotifyMsg{
 					Openid:  openid,
 					Title:   title,
 					Detail:  strconv.Itoa(ranking),
@@ -252,7 +253,7 @@ func (a *Active) Index() error {
 				//微信跳回来的
 				code := a.GetString("code")
 				if code != "" {
-					openid := jyutil.Getopenid(code, config.Wxoauthinfo)
+					openid := jyutil.Getopenid(code)
 					if openid != "" {
 						FindUserAndCreateSess(openid, a.Session(), "wx", false)
 					}

+ 2 - 2
src/jfw/active/live.go

@@ -8,7 +8,7 @@ import (
 	"net/url"
 	"time"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
 
 	. "app.yhyue.com/moapp/jybase/date"
 	"app.yhyue.com/moapp/jybase/encrypt"
@@ -121,7 +121,7 @@ func (this *Active) LivePage() error {
 				//微信跳回来的
 				code := this.GetString("code")
 				if code != "" {
-					openid = jyutil.Getopenid(code, config.Wxoauthinfo)
+					openid = jyutil.Getopenid(code)
 					if openid != "" {
 						//是否为关注用户
 						checkIsSubscribeFlag = CheckUserIsSubscribe(openid)

+ 2 - 1
src/jfw/filter/baseuserfilter.go

@@ -4,7 +4,8 @@ import (
 	"jy/src/jfw/config"
 	"log"
 	"net/http"
-	"qfw/util/usercenter"
+
+	"app.yhyue.com/moapp/jybase/usercenter"
 
 	"app.yhyue.com/moapp/jypkg/public"
 

+ 1 - 1
src/jfw/filter/filter.go

@@ -1,7 +1,7 @@
 package filter
 
 import (
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
 	"net/http"
 	"regexp"
 	"time"

+ 1 - 1
src/jfw/filter/mergefilter.go

@@ -2,7 +2,7 @@ package filter
 
 import (
 	"fmt"
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
 	"log"
 	"net/http"
 	"strings"

+ 1 - 1
src/jfw/filter/pcfilter.go

@@ -3,7 +3,7 @@ package filter
 import (
 	"fmt"
 	"jy/src/jfw/config"
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
 	"app.yhyue.com/moapp/jypkg/public"
 	"net/http"
 	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"

+ 1 - 1
src/jfw/filter/phonefilter.go

@@ -3,7 +3,7 @@ package filter
 import (
 	"fmt"
 	"jy/src/jfw/config"
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
 	"log"
 	"net/http"
 	"net/url"

+ 3 - 2
src/jfw/front/adv.go

@@ -7,10 +7,11 @@ import (
 	"strings"
 	"time"
 
+	. "jy/src/jfw/public"
+
 	util "app.yhyue.com/moapp/jybase/common"
 	. "app.yhyue.com/moapp/jybase/date"
 	"app.yhyue.com/moapp/jybase/rpc"
-	"app.yhyue.com/moapp/jypkg/public"
 
 	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
 	"go.mongodb.org/mongo-driver/bson"
@@ -119,7 +120,7 @@ func (a *Adv) DoInfo() error {
 					go func() {
 						for _, v := range advList {
 							if util.ObjToString(v) != "" {
-								ok := public.SendLOGApplyMsg(&rpc.NotifyMsg{
+								ok := SendLOGApplyMsg(&rpc.NotifyMsg{
 									Openid:  openId,
 									Title:   "您好!您有新的客户信息。",
 									Detail:  "新客户信息",                 //手机号

+ 2 - 2
src/jfw/front/applysub.go

@@ -8,7 +8,7 @@ import (
 	"regexp"
 	"time"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
 
 	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
 
@@ -202,7 +202,7 @@ func (a *Applysub) Index() error {
 			//微信跳回来的
 			code := a.GetString("code")
 			if code != "" {
-				openid = jyutil.Getopenid(code, config.Wxoauthinfo)
+				openid = jyutil.Getopenid(code)
 				if openid != "" {
 					FindUserAndCreateSess(openid, a.Session(), "wx", false)
 				}

+ 2 - 2
src/jfw/front/commonPayWx.go

@@ -7,7 +7,7 @@ import (
 	"jy/src/jfw/wx"
 	"net/url"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
 
 	"app.yhyue.com/moapp/jypkg/public"
 
@@ -100,7 +100,7 @@ func (w *WxPayCommon) ToMyWxOrder() error {
 			//微信跳回来的
 			code := w.GetString("code")
 			if code != "" {
-				openid := jyutil.Getopenid(code, config.Wxoauthinfo)
+				openid := jyutil.Getopenid(code)
 				if openid != "" {
 					if CheckUserIsSubscribe(openid) {
 						FindUserAndCreateSess(openid, w.Session(), "wx", false)

+ 5 - 5
src/jfw/front/distribution.go

@@ -7,7 +7,7 @@ import (
 	"net/url"
 	"time"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
 
 	"app.yhyue.com/moapp/jypkg/public"
 
@@ -40,7 +40,7 @@ func (this *Distrib) LinkShare(discored string) error {
 			//微信跳回来的
 			code := this.GetString("code")
 			if code != "" {
-				openid = jyutil.Getopenid(code, config.Wxoauthinfo)
+				openid = jyutil.Getopenid(code)
 				if openid != "" {
 					//是否为关注用户
 					checkIsSubscribeFlag = CheckUserIsSubscribe(openid)
@@ -88,7 +88,7 @@ func (this *Distrib) LinkShareX(discored string) error {
 			//微信跳回来的
 			code := this.GetString("code")
 			if code != "" {
-				openid = jyutil.Getopenid(code, config.Wxoauthinfo)
+				openid = jyutil.Getopenid(code)
 				if openid != "" {
 					//是否为关注用户
 					checkIsSubscribeFlag = CheckUserIsSubscribe(openid)
@@ -135,7 +135,7 @@ func (this *Distrib) LinkShareG(discored string) error {
 			//微信跳回来的
 			code := this.GetString("code")
 			if code != "" {
-				openid = jyutil.Getopenid(code, config.Wxoauthinfo)
+				openid = jyutil.Getopenid(code)
 				if openid != "" {
 					//是否为关注用户
 					checkIsSubscribeFlag = CheckUserIsSubscribe(openid)
@@ -183,7 +183,7 @@ func (this *Distrib) LinkShareE(discored string) error {
 			//微信跳回来的
 			code := this.GetString("code")
 			if code != "" {
-				openid = jyutil.Getopenid(code, config.Wxoauthinfo)
+				openid = jyutil.Getopenid(code)
 				if openid != "" {
 					//是否为关注用户
 					checkIsSubscribeFlag = CheckUserIsSubscribe(openid)

+ 14 - 13
src/jfw/front/follow.go

@@ -11,7 +11,7 @@ import (
 	"sync"
 	"time"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
 
 	. "app.yhyue.com/moapp/jybase/date"
 	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
@@ -29,9 +29,10 @@ import (
 
 	"app.yhyue.com/moapp/jybase/go-xweb/log"
 
-	"github.com/SKatiyar/qr"
+	. "jy/src/jfw/public"
 
 	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
+	"github.com/SKatiyar/qr"
 	"go.mongodb.org/mongo-driver/bson"
 	"go.mongodb.org/mongo-driver/bson/primitive"
 )
@@ -174,7 +175,7 @@ func (m *Follow) Fwsave() {
 			if id := public.BaseMysql.Insert("follow_project", data); id > 0 {
 				followId = util.InterfaceToStr(id)
 				status = "y"
-				go public.FollowPush(&rpc.FollowPush{
+				go FollowPush(&rpc.FollowPush{
 					ProjectName: projectname,
 					ProjectCode: projectcode,
 					InfoId:      s_id,
@@ -263,7 +264,7 @@ func (m *Follow) FwsaveBk() {
 			data["a_relationinfo"] = []map[string]interface{}{mySelf}
 			if followId = mongodb.Save("follow_project", data); len(followId) > 0 {
 				status = "y"
-				go public.FollowPush(&rpc.FollowPush{
+				go FollowPush(&rpc.FollowPush{
 					ProjectName: projectname,
 					ProjectCode: projectcode,
 					InfoId:      s_id,
@@ -327,7 +328,7 @@ func (m *Follow) ShareFW(tp string) error {
 	mySelf["s_id"] = id
 	mySelf["l_publishtime"] = (*data)["publishtime"]
 	if len(projectname) > 0 {
-		res, _ := public.FollowPush(&rpc.FollowPush{
+		res, _ := FollowPush(&rpc.FollowPush{
 			ProjectName: projectname,
 			ProjectCode: projectcode,
 			InfoId:      id,
@@ -354,7 +355,7 @@ func (m *Follow) PcAllNotice() error {
 	projectcode := m.GetString("projectcode")
 	data := map[string]interface{}{}
 	if len(projectname) > 0 || len(projectcode) > 0 {
-		res, _ := public.FollowPush(&rpc.FollowPush{
+		res, _ := FollowPush(&rpc.FollowPush{
 			ProjectName: projectname,
 			ProjectCode: projectcode,
 			InfoId:      id,
@@ -510,7 +511,7 @@ func (m *Follow) Photo(tp string) error {
 			m.T["a_lastpushids"] = (*data)["a_lastpushids"]
 		}
 		if len(projectname) > 0 || len(projectcode) > 0 {
-			res, _ := public.FollowPush(&rpc.FollowPush{
+			res, _ := FollowPush(&rpc.FollowPush{
 				ProjectName: projectname,
 				ProjectCode: projectcode,
 				InfoId:      id,
@@ -602,7 +603,7 @@ func (m *Follow) AjaxReq() {
 
 				if followId = util.InterfaceToStr(public.BaseMysql.Insert("follow_project_monitor", data)); len(followId) > 0 {
 					status = "y"
-					go public.FollowPush(&rpc.FollowPush{
+					go FollowPush(&rpc.FollowPush{
 						ProjectName: projectname,
 						ProjectCode: projectcode,
 						InfoId:      s_id,
@@ -732,7 +733,7 @@ func (m *Follow) AjaxReqBk() {
 				data["a_relationinfo"] = []map[string]interface{}{mySelf}
 				if followId = mongodb.Save("follow_project", data); len(followId) > 0 {
 					status = "y"
-					go public.FollowPush(&rpc.FollowPush{
+					go FollowPush(&rpc.FollowPush{
 						ProjectName: projectname,
 						ProjectCode: projectcode,
 						InfoId:      s_id,
@@ -975,7 +976,7 @@ func (m *Follow) Addsave() error {
 			}
 			if public.BaseMysql.Insert("follow_project_monitor", data) > 0 {
 				status = "y"
-				go public.FollowPush(&rpc.FollowPush{
+				go FollowPush(&rpc.FollowPush{
 					ProjectName: projectname,
 					ProjectCode: projectcode,
 					InfoId:      sid,
@@ -1064,7 +1065,7 @@ func (m *Follow) AddsaveBk() error {
 			}
 			if id = mongodb.Save("follow_project", data); len(id) > 0 {
 				status = "y"
-				go public.FollowPush(&rpc.FollowPush{
+				go FollowPush(&rpc.FollowPush{
 					ProjectName: projectname,
 					ProjectCode: projectcode,
 					InfoId:      sid,
@@ -1242,7 +1243,7 @@ func (m *Follow) SetBk(tp, id string) error {
 			m.T["a_lastpushids"] = (*data)["a_lastpushids"]
 		}
 		if len(projectname) > 0 || len(projectcode) > 0 {
-			res, _ := public.FollowPush(&rpc.FollowPush{
+			res, _ := FollowPush(&rpc.FollowPush{
 				ProjectName: projectname,
 				ProjectCode: projectcode,
 				InfoId:      sid,
@@ -1574,7 +1575,7 @@ func (this *Follow) FollowGift(shareid string) error {
 					//微信跳回来的
 					code := this.GetString("code")
 					if code != "" {
-						openid = jyutil.Getopenid(code, config.Wxoauthinfo)
+						openid = jyutil.Getopenid(code)
 						if openid != "" {
 							if CheckUserIsSubscribe(openid) {
 								FindUserAndCreateSess(openid, this.Session(), "wx", false)

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

@@ -3,7 +3,7 @@ package front
 import (
 	"fmt"
 	"jy/src/jfw/config"
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
 	"jy/src/jfw/qrmanager"
 	"jy/src/jfw/tag"
 	"jy/src/jfw/wx"

+ 2 - 2
src/jfw/front/frontRouter.go

@@ -7,7 +7,7 @@ import (
 	"net/url"
 	"regexp"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
 
 	"app.yhyue.com/moapp/jypkg/public"
 
@@ -81,7 +81,7 @@ func (this *CommonRouter) WxCommonPage(folder, loginSign, htmlPage string) error
 			if stateKey == "" { //公众号回调
 				return this.Redirect(fmt.Sprintf(config.Wxoauth, url.QueryEscape(this.Site()+this.Url()), "wx"), 302)
 			}
-			openid = jyutil.Getopenid(this.GetString("code"), config.Wxoauthinfo)
+			openid = jyutil.Getopenid(this.GetString("code"))
 			if ok, _, _ := FindUserAndCreateSess(openid, this.Session(), "wx", false); !ok {
 				return this.Redirect("/swordfish/about")
 			}

+ 5 - 6
src/jfw/front/jyshare.go

@@ -1,14 +1,13 @@
 package front
 
 import (
-	jutil "app.yhyue.com/moapp/jypkg/jyutil"
+	jutil "jy/src/jfw/jyutil"
 	"strings"
 
-	"app.yhyue.com/moapp/jypkg/public"
-
-	"app.yhyue.com/moapp/jybase/redis"
+	. "jy/src/jfw/public"
 
 	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
+	"app.yhyue.com/moapp/jybase/redis"
 )
 
 type Jyshare struct {
@@ -31,7 +30,7 @@ func (m *Jyshare) Share(pid string) error {
 		pngdata = *ret
 	} else {
 		//id, _ := strconv.Atoi(pid)
-		public.GetShareQRStr(pid)
+		GetShareQRStr(pid)
 		tmp, err := redis.GetBytes("sso", "p_share_"+pid)
 		if err == nil {
 			pngdata = *tmp
@@ -63,7 +62,7 @@ func (m *Jyshare) Wxshare(openids string) error {
 	} else {
 		//id, _ := strconv.Atoi(pid)
 		//public.GetShareQR(uint32(id))
-		public.GetShareQRStr(pid)
+		GetShareQRStr(pid)
 		tmp, _ := redis.GetBytes("sso", "p_share_"+pid)
 		pngdata = *tmp
 	}

+ 6 - 5
src/jfw/front/org_structure.go

@@ -14,7 +14,8 @@ import (
 	"net/url"
 	"time"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
+	. "jy/src/jfw/public"
 
 	"app.yhyue.com/moapp/jybase/encrypt"
 	"app.yhyue.com/moapp/jybase/usercenter"
@@ -81,7 +82,7 @@ func (this *OrgStructure) InvitationPage() error {
 				//微信跳回来的
 				code := this.GetString("code")
 				if code != "" {
-					openId = jyutil.Getopenid(code, config.Wxoauthinfo)
+					openId = jyutil.Getopenid(code)
 				}
 			} else if public.CheckWxBrowser(this.Request) {
 				//所有参数都不再使用,跳到微信验证用户
@@ -114,7 +115,7 @@ func (this *OrgStructure) Authorize() error {
 		//微信授权
 		code := this.GetString("code")
 		if code != "" {
-			openId = jyutil.Getopenid(code, config.Wxoauthinfo)
+			openId = jyutil.Getopenid(code)
 		}
 	}
 	if openId != "" {
@@ -122,7 +123,7 @@ func (this *OrgStructure) Authorize() error {
 		if isSubscribe {
 			FindUserAndCreateSess(openId, this.Session(), "wx", false)
 		} else { //获取未关注用户uninoid
-			unionId = public.GetUnionid(openId)
+			unionId = GetUnionid(openId)
 		}
 	}
 	this.ServeJson(map[string]interface{}{
@@ -146,7 +147,7 @@ func (this *OrgStructure) AutoLogon() error {
 		openId = encrypt.SE.DecodeString(openId)
 		//当前用户未成为剑鱼用户
 		if !isExistsByPO(phone, openId) {
-			unionId := public.GetUnionid(openId)
+			unionId := GetUnionid(openId)
 			if openId == unionId {
 				unionId = "jyorg_" + unionId //组织机构前缀标识
 			}

+ 1 - 1
src/jfw/front/pchelper.go

@@ -4,7 +4,7 @@ import (
 	"encoding/base64"
 	"fmt"
 	"jy/src/jfw/config"
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
 	"log"
 	"net/url"
 	"strings"

+ 2 - 2
src/jfw/front/search.go

@@ -7,7 +7,7 @@ import (
 	"net/url"
 	"strings"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
 
 	util "app.yhyue.com/moapp/jybase/common"
 	"app.yhyue.com/moapp/jybase/redis"
@@ -71,7 +71,7 @@ func (this *Search) MainSearchStat() error {
 	if stateKey == "" { //公众号回调
 		return this.Redirect(fmt.Sprintf(config.Wxoauth, url.QueryEscape(this.Site()+this.Url()), "flag"), 302)
 	}
-	openid := jyutil.Getopenid(this.GetString("code"), config.Wxoauthinfo) //获取用户openid
+	openid := jyutil.Getopenid(this.GetString("code")) //获取用户openid
 	if loginCreateSess(openid, this.Session()) {
 		return this.Redirect("/jylab/mainSearch")
 	}

+ 2 - 2
src/jfw/front/shorturl.go

@@ -11,7 +11,7 @@ import (
 	"net/url"
 	"strconv"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
 
 	"app.yhyue.com/moapp/jypkg/public"
 
@@ -90,7 +90,7 @@ func (s *Short) Article(stype, id string) error {
 			if s.GetString("state") == "wx" {
 				//微信跳回来的
 				if code := s.GetString("code"); code != "" {
-					if openid := jyutil.Getopenid(code, config.Wxoauthinfo); openid != "" {
+					if openid := jyutil.Getopenid(code); openid != "" {
 						if CheckUserIsSubscribe(openid) {
 							FindUserAndCreateSess(openid, s.Session(), "wx", false)
 						}

+ 3 - 2
src/jfw/front/singleLogin.go

@@ -8,7 +8,8 @@ import (
 	"strings"
 	"time"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
+
 	"app.yhyue.com/moapp/jypkg/public"
 
 	qutil "app.yhyue.com/moapp/jybase/common"
@@ -80,7 +81,7 @@ func (this *SingleLogin) SingleLogin() error {
 			}
 		}
 		//获取用户openid
-		openid = jyutil.Getopenid(this.GetString("code"), config.Wxoauthinfo)
+		openid = jyutil.Getopenid(this.GetString("code"))
 	}
 	//判断是否关注
 	isSubscribe := CheckUserIsSubscribe(openid)

+ 4 - 4
src/jfw/front/swordfish.go

@@ -18,7 +18,7 @@ import (
 	"strings"
 	"time"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
 
 	. "app.yhyue.com/moapp/jybase/date"
 	. "app.yhyue.com/moapp/jybase/mongodb"
@@ -1091,7 +1091,7 @@ func (m *Front) About() error {
 			//微信跳回来的
 			code := m.GetString("code")
 			if code != "" {
-				myopenid = jyutil.Getopenid(code, config.Wxoauthinfo)
+				myopenid = jyutil.Getopenid(code)
 			}
 		} else {
 			if public.CheckWxBrowser(m.Request) {
@@ -1414,7 +1414,7 @@ func (f *Front) Jyblog(param /*参数*/ string) error {
 	f.T["logid"] = config.Seoconfig["jybky"].(string)
 	f.DisableHttpCache()
 	shareid = se.EncodeString(shareid)
-	data, pagination := jyutil.JyCmsSearch(querymap, config.Seoconfig)
+	data, pagination := jyutil.JyCmsSearch(querymap)
 	f.Render("/pc/jyblog.html", &xweb.T{"querymap": querymap, "data": data, "pagination": pagination, "shareid": shareid})
 	return nil
 }
@@ -1435,7 +1435,7 @@ func (f *Front) JyCms(cType, param string) error {
 		json.Unmarshal(bs, &querymap)
 	}
 	f.DisableHttpCache()
-	data, pagination := jyutil.JyCmsSearch(querymap, config.Seoconfig)
+	data, pagination := jyutil.JyCmsSearch(querymap)
 	return f.Render("/pc/jyblog.html", &xweb.T{"querymap": querymap, "data": data, "pagination": pagination})
 }
 

+ 2 - 2
src/jfw/front/tags.go

@@ -11,7 +11,7 @@ import (
 	"strings"
 	"time"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
 
 	"app.yhyue.com/moapp/jybase/encrypt"
 	"app.yhyue.com/moapp/jypkg/public"
@@ -503,7 +503,7 @@ func (this *Tags) GetConsult() (list []map[string]interface{}) {
 		rs, _ := jyutil.JyCmsSearch(map[string]string{
 			"contentType": "hyzc",
 			"perPage":     "10",
-		}, config.Seoconfig)
+		})
 		if rs != nil {
 			for _, v := range *rs {
 				delete(v, "praise")

+ 3 - 2
src/jfw/front/vipsubscribe.go

@@ -9,7 +9,8 @@ import (
 	"strings"
 	"time"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
+
 	"app.yhyue.com/moapp/jypkg/public"
 
 	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
@@ -205,7 +206,7 @@ func (s *Subscribepay) Introduce() error {
 			//微信跳回来的
 			code := s.GetString("code")
 			if code != "" {
-				openid := jyutil.Getopenid(code, config.Wxoauthinfo)
+				openid := jyutil.Getopenid(code)
 				if openid != "" {
 					isSubscribe := CheckUserIsSubscribe(openid)
 					if isSubscribe {

+ 4 - 4
src/jfw/front/ws_dataExport.go

@@ -7,7 +7,7 @@ import (
 	"jy/src/jfw/config"
 	"strconv"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
 
 	"app.yhyue.com/moapp/jybase/encrypt"
 	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
@@ -54,7 +54,7 @@ func (w *WsDataExport) WxToOrderDetail() error {
 			//微信跳回来的
 			code := w.GetString("code")
 			if code != "" {
-				openid := jyutil.Getopenid(code, config.Wxoauthinfo)
+				openid := jyutil.Getopenid(code)
 				if openid != "" {
 					FindUserAndCreateSess(openid, w.Session(), "wx", false)
 				}
@@ -230,7 +230,7 @@ func (w *WsDataExport) ToPreview(_id string) error {
 			//微信跳回来的
 			code := w.GetString("code")
 			if code != "" {
-				openid = jyutil.Getopenid(code, config.Wxoauthinfo)
+				openid = jyutil.Getopenid(code)
 				if openid != "" {
 					FindUserAndCreateSess(openid, w.Session(), "wx", false)
 				}
@@ -260,7 +260,7 @@ func (w *WsDataExport) SubmitOrder() error {
 			//微信跳回来的
 			code := w.GetString("code")
 			if code != "" {
-				openid = jyutil.Getopenid(code, config.Wxoauthinfo)
+				openid = jyutil.Getopenid(code)
 				if openid != "" {
 					FindUserAndCreateSess(openid, w.Session(), "wx", false)
 				}

+ 3 - 2
src/jfw/front/wxMyOrder.go

@@ -7,7 +7,8 @@ import (
 	"jy/src/jfw/wx"
 	"net/url"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
+
 	"app.yhyue.com/moapp/jypkg/public"
 
 	util "app.yhyue.com/moapp/jybase/common"
@@ -58,7 +59,7 @@ func (w *WxMyOrder) MyMenu() error {
 			//微信跳回来的
 			code := w.GetString("code")
 			if code != "" {
-				openid := jyutil.Getopenid(code, config.Wxoauthinfo)
+				openid := jyutil.Getopenid(code)
 				if openid != "" {
 					FindUserAndCreateSess(openid, w.Session(), "wx", false)
 				}

+ 182 - 0
src/jfw/jyutil/jyCms.go

@@ -0,0 +1,182 @@
+package jyutil
+
+import (
+	"encoding/base64"
+	"encoding/json"
+	"fmt"
+	"html/template"
+	"jy/src/jfw/config"
+	"regexp"
+	"strconv"
+	"time"
+
+	. "app.yhyue.com/moapp/jybase/date"
+	"app.yhyue.com/moapp/jybase/redis"
+	"app.yhyue.com/moapp/jypkg/public"
+
+	util "app.yhyue.com/moapp/jybase/common"
+
+	elastic "app.yhyue.com/moapp/jybase/esv1"
+
+	. "app.yhyue.com/moapp/jybase/mongodb"
+)
+
+const (
+	jyMsgFirstCache     = "jyMsg_%s_%d"
+	jyMsgFirstCacheTime = 5 * 60
+)
+
+//GetFirstJyCms 获取首评信息
+func GetFirstJyCms(contentType string, size int) (r []map[string]interface{}) {
+	// 默认剑鱼博客栏目
+	contentType = util.If(contentType == "", "jybk", contentType).(string)
+	redisKey := fmt.Sprintf(jyMsgFirstCache, contentType, size)
+	if data, ok := redis.Get("other", redisKey).([]interface{}); ok && data != nil && len(data) > 0 {
+		r = util.ObjArrToMapArr(data)
+	} else {
+		rs, _ := JyCmsSearch(map[string]string{
+			"contentType": contentType,
+			"perPage":     fmt.Sprintf("%d", size),
+		})
+		if rs != nil {
+			for _, v := range *rs {
+				delete(v, "praise")
+				delete(v, "s_contenttype")
+				delete(v, "s_source")
+			}
+			r = *rs
+		}
+		redis.Put("other", redisKey, r, jyMsgFirstCacheTime)
+	}
+	return r
+}
+
+// JyCmsSearch 剑鱼文章检索
+func JyCmsSearch(query map[string]string) (*[]map[string]interface{}, *[]interface{}) {
+	perPage, _ := strconv.Atoi(query["perPage"])
+	currentPage, _ := strconv.Atoi(query["currentPage"])
+	//修复
+	if perPage == 0 {
+		perPage = 5
+	}
+	if currentPage < 1 {
+		currentPage = 1
+	}
+	contentType := query["contentType"]
+	queryStr := query["query"]
+
+	queryMap := map[string]interface{}{
+		"s_contenttype": contentType,
+	}
+
+	if queryStr != "" {
+		queryMap["$or"] = []interface{}{
+			map[string]interface{}{
+				"s_title": map[string]interface{}{"$regex": queryStr},
+			},
+			map[string]interface{}{
+				"s_content": map[string]interface{}{"$regex": queryStr},
+			},
+		}
+	}
+
+	total := public.MQFW.Count("content", queryMap)
+
+	//查询列表数据
+	client := elastic.GetEsConn()
+	defer elastic.DestoryEsConn(client)
+	if client == nil {
+		return nil, nil
+	}
+	searchResult, _ := public.MQFW.Find("content", queryMap, `{"releasetime":-1}`, `{"s_title":1,"s_contenttype":1,"s_content":1,"releasetime":1,"s_description":1,"praise":1,"s_source":1,"s_pic":1,"s_pic1":1,"l_createdate":1,"_id":1,"s_author":1}`, false, (currentPage-1)*perPage, perPage)
+
+	var res []map[string]interface{}
+	if searchResult != nil && len(*searchResult) > 0 {
+		for _, m := range *searchResult {
+			s_content, _ := m["s_content"].(string)
+			if len(s_content) > 500 {
+				m["s_content"] = ""
+			} else {
+				con, _ := regexp.Compile("^[^<]*?>")
+				content := con.ReplaceAllString(s_content, "")
+				con1, _ := regexp.Compile("<[^>]*$")
+				m["s_content"] = template.HTML(con1.ReplaceAllString(content, ""))
+			}
+
+			s_title, _ := m["s_title"].(string)
+			m["s_title"] = template.HTML(s_title)
+
+			tmpdate, _ := m["l_createdate"]
+			m["l_createdate"] = util.TimeDiff(time.Unix(util.Int64All(tmpdate), 0))
+			tmpdate1, _ := m["releasetime"]
+			m["releasetime"] = util.TimeDiff(time.Unix(util.Int64All(tmpdate1), 0))
+			reltime := time.Unix(util.Int64All(tmpdate1), 0)
+			m["time"] = reltime.Format(Date_Short_Layout) //首页展示
+			s_pic, _ := m["s_pic"].(string)
+			if s_pic != "" {
+				s_pic = config.Seoconfig["jyadd"].(string) + s_pic
+			}
+			m["s_pic"] = s_pic
+			s_pic1, _ := m["s_pic1"].(string)
+			if s_pic1 != "" {
+				s_pic1 = config.Seoconfig["jyadd"].(string) + s_pic1
+			}
+			m["s_pic1"] = s_pic1
+			m["_id"] = se.EncodeString(BsonIdToSId(m["_id"]))
+			res = append(res, m)
+		}
+	}
+	//生成分页
+	pagination := MakePagination(perPage, currentPage, int(total), query, "/jyblog/index_%s.html")
+	return &res, &pagination
+}
+
+//计算分页,分页显示规则
+func MakePagination(perPage, currentPage, total int, param map[string]string, urltpl string) []interface{} {
+	var totalPages int //总页数
+	if total == 0 {
+		totalPages = 1
+	} else {
+		totalPages = (total - 1 + perPage) / perPage //总页数
+	}
+
+	ret := make([]interface{}, 3)
+	index := 0
+	prePage, nextPage := currentPage-1, currentPage+1
+	if prePage < 1 {
+		prePage = 1
+	}
+	if nextPage > totalPages {
+		nextPage = totalPages
+	}
+	param["currentPage"] = strconv.Itoa(prePage)
+	bs, _ := json.Marshal(param)
+	paramstr := base64.StdEncoding.EncodeToString(bs)
+	url := fmt.Sprintf(urltpl, paramstr)
+	iscurrent := currentPage == 1
+	ret[index] = map[string]interface{}{"page": "< 上一页", "url": url, "iscurrent": iscurrent}
+	index = index + 1
+	param["currentPage"] = strconv.Itoa(currentPage)
+	bs, _ = json.Marshal(param)
+	paramstr = base64.StdEncoding.EncodeToString(bs)
+	url = fmt.Sprintf(urltpl, paramstr)
+	iscurrent = currentPage == currentPage
+	ret[index] = map[string]interface{}{"page": currentPage, "url": url, "iscurrent": iscurrent}
+	index = index + 1
+	param["currentPage"] = strconv.Itoa(nextPage)
+	bs, _ = json.Marshal(param)
+	paramstr = base64.StdEncoding.EncodeToString(bs)
+	url = fmt.Sprintf(urltpl, paramstr)
+	iscurrent = currentPage == totalPages
+	ret[index] = map[string]interface{}{"page": "下一页 >", "url": url, "iscurrent": iscurrent}
+
+	//
+	u := map[string]interface{}{
+		"currentPage": 1,
+		"query":       "招标",
+		"contentType": param["contentType"],
+	}
+	bs, _ = json.Marshal(u)
+	paramstr = base64.StdEncoding.EncodeToString(bs)
+	return ret
+}

+ 13 - 8
src/jfw/jyutil/jyutil.go

@@ -4,26 +4,31 @@ import (
 	"encoding/json"
 	"fmt"
 	"io/ioutil"
-	"jfw/config"
-	"jfw/public"
+	"jy/src/jfw/config"
 	"log"
-	. "mongodb"
 	"net/http"
-	"qfw/util"
-	"qfw/util/redis"
-	"qfw/util/usercenter"
 	"reflect"
 	"regexp"
 	"sort"
 
+	. "app.yhyue.com/moapp/jybase/mongodb"
+
+	util "app.yhyue.com/moapp/jybase/common"
+
+	"app.yhyue.com/moapp/jybase/redis"
+
+	"app.yhyue.com/moapp/jybase/encrypt"
+	"app.yhyue.com/moapp/jybase/usercenter"
+	"app.yhyue.com/moapp/jypkg/public"
+
 	"strings"
 	"time"
 )
 
 var mongodb = public.MQFW
-var se = &util.SimpleEncrypt{Key: "topnet2015topnet2015"}
+var se = &encrypt.SimpleEncrypt{Key: "topnet2015topnet2015"}
 
-var AC = &util.AES_CBC{
+var AC = &encrypt.AES_CBC{
 	Key: "mGlAgnIBB8bx2nch",
 	Iv:  "1389461544135476",
 }

+ 241 - 0
src/jfw/jyutil/sessionEncryption.go

@@ -0,0 +1,241 @@
+package jyutil
+
+import (
+	"bytes"
+	"crypto/rand"
+	"crypto/rsa"
+	"crypto/x509"
+	"encoding/json"
+	"encoding/pem"
+	"jy/src/jfw/config"
+	"jy/src/jfw/nodemgr"
+	"log"
+	"sync"
+	"time"
+
+	util "app.yhyue.com/moapp/jybase/common"
+	. "app.yhyue.com/moapp/jybase/date"
+	"app.yhyue.com/moapp/jybase/redis"
+	"github.com/robfig/cron"
+)
+
+//
+type RsaStruct struct {
+	Sign       string
+	PrivateKey *rsa.PrivateKey
+	PublicKey  *rsa.PublicKey
+	RsaConfig  *RsaConfig
+}
+
+type RsaConfig struct {
+	RsaSignflag   string
+	PrivateKeyStr string
+	PublicKeyStr  string
+}
+
+type MyWrite struct {
+	Byte *bytes.Buffer
+}
+
+func (m MyWrite) Write(p []byte) (n int, err error) {
+	n, err = m.Byte.Write(p)
+	return
+}
+
+func getNewRsaConfig() *RsaConfig {
+	//私钥-----
+	privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
+	if err != nil {
+		log.Println(err)
+	}
+	X509PrivateKey := x509.MarshalPKCS1PrivateKey(privateKey)
+	privateBlock := pem.Block{Type: "RSA Private Key", Bytes: X509PrivateKey}
+	privateWrite := MyWrite{Byte: bytes.NewBuffer([]byte(""))}
+	pem.Encode(privateWrite, &privateBlock)
+	privateKeyByte := privateWrite.Byte.Bytes()
+
+	//公钥----
+	publicKey := privateKey.PublicKey
+	X509PublicKey, err := x509.MarshalPKIXPublicKey(&publicKey)
+	if err != nil {
+		log.Println(err)
+	}
+	publicBlock := pem.Block{Type: "RSA Public Key", Bytes: X509PublicKey}
+	publicWrite := MyWrite{Byte: bytes.NewBuffer([]byte(""))}
+	pem.Encode(publicWrite, &publicBlock)
+	publicKeyByte := publicWrite.Byte.Bytes()
+
+	return &RsaConfig{
+		RsaSignflag:   time.Now().Format(Date_Full_Layout),
+		PrivateKeyStr: string(privateKeyByte),
+		PublicKeyStr:  string(publicKeyByte),
+	}
+}
+
+func initRsa(config *RsaConfig) *RsaStruct {
+	//初始化私钥
+	private_block, _ := pem.Decode([]byte(config.PrivateKeyStr))
+	private, err := x509.ParsePKCS1PrivateKey(private_block.Bytes)
+	if err != nil {
+		log.Println(err)
+	}
+	//初始化公钥
+	public_block, _ := pem.Decode([]byte(config.PublicKeyStr))
+	publicKeyInterface, err := x509.ParsePKIXPublicKey(public_block.Bytes)
+	if err != nil {
+		log.Println(err)
+	}
+	public := publicKeyInterface.(*rsa.PublicKey)
+	return &RsaStruct{
+		Sign:       config.RsaSignflag,
+		RsaConfig:  config,
+		PrivateKey: private,
+		PublicKey:  public,
+	}
+}
+
+//加密
+func (r *RsaStruct) Encrypt(str string) string {
+	enStrByte, err := rsa.EncryptPKCS1v15(rand.Reader, r.PublicKey, []byte(str))
+	if err != nil {
+		log.Printf("%s加密失败%v", str, err)
+	}
+	return string(enStrByte)
+}
+
+//解密
+func (r *RsaStruct) Decrypt(enStr string) string {
+	deStrByte, err := rsa.DecryptPKCS1v15(rand.Reader, r.PrivateKey, []byte(enStr))
+	if err != nil {
+		log.Printf("%s解密失败%v", enStr, err)
+	}
+	return string(deStrByte)
+}
+
+type EncryptionStruct struct {
+	RsaStruct_Now  *RsaStruct
+	MapRsa         map[string]*RsaStruct
+	EncryptionConf *EncryptionConf
+	Lock           *sync.Mutex
+}
+
+type EncryptionConf struct {
+	Now        string
+	MapRsaConf map[string]*RsaConfig
+}
+
+//首次启动加载秘钥
+func InitEncryptionStruct() *EncryptionStruct {
+	encryStruct := EncryptionStruct{EncryptionConf: &EncryptionConf{}, Lock: &sync.Mutex{}}
+	//	log.Println("xxxxxx", redis.GetInt("other", "jynode_"+nodemgr.NodeName))
+	//	isMaster := util.If(redis.GetInt("other", "jynode_"+nodemgr.NodeName) == 1, true, false).(bool)
+	go func() {
+		cn := cron.New()
+		str := util.ObjToString(config.Sysconfig["sessionEnctryFlushCorn"])
+		cn.AddFunc(str, func() {
+			encryStruct.Flush()
+		})
+		cn.Start()
+	}()
+
+	//for {
+	redis_obj := util.ObjToString(redis.Get("session", "sessionEncryption"))
+	if redis_obj != "" {
+		encryconf := EncryptionConf{}
+		err := json.Unmarshal([]byte(redis_obj), &encryconf)
+		if err != nil {
+			log.Println("InitEncryptionStruct Unmarshal redis err", err)
+		} else {
+			encryStruct.EncryptionConf = &encryconf
+			encryStruct.initAllRsa()
+			log.Println("从redis中加载EncryptionStruct")
+			return &encryStruct
+		}
+	}
+
+	log.Println("主结点首次创建EncryptionStruct")
+	newRsaConf := getNewRsaConfig()
+	encryStruct.EncryptionConf.Now = newRsaConf.RsaSignflag
+	encryStruct.EncryptionConf.MapRsaConf = map[string]*RsaConfig{newRsaConf.RsaSignflag: newRsaConf}
+	encryStruct.initAllRsa()
+	go func() {
+		//存入redis
+		byteArr, err := json.Marshal(encryStruct.EncryptionConf)
+		log.Println(string(byteArr))
+		if err != nil {
+			log.Printf("InitEncryptionStruct save %s redis err %:v\n", byteArr, err)
+			return
+		}
+		redis.Put("session", "sessionEncryption", string(byteArr), -1)
+	}()
+	return &encryStruct
+}
+
+func (e *EncryptionStruct) initAllRsa() {
+	e.Lock.Lock()
+	defer e.Lock.Unlock()
+	e.MapRsa = map[string]*RsaStruct{}
+	for k, v := range e.EncryptionConf.MapRsaConf {
+		thisRsa := initRsa(v)
+		e.MapRsa[k] = thisRsa
+		if k == e.EncryptionConf.Now {
+			e.RsaStruct_Now = thisRsa
+		}
+	}
+}
+
+//定时更新秘钥
+func (e *EncryptionStruct) Flush() {
+	isMaster := util.If(redis.GetInt("other", "jynode_"+nodemgr.NodeName) == 1, true, false).(bool)
+	if !isMaster {
+		//从节点从redis中更新秘钥
+		for {
+			redis_obj := util.ObjToString(redis.Get("session", "sessionEncryption"))
+			if redis_obj != "" {
+				encryconf := EncryptionConf{}
+				err := json.Unmarshal([]byte(redis_obj), &encryconf)
+				if e.RsaStruct_Now.Sign == encryconf.Now {
+					log.Println("从节点定时更新EncryptionStruct失败,一分钟后重试", e.RsaStruct_Now.Sign)
+					time.Sleep(time.Minute)
+					if redis.GetInt("other", "jynode_"+nodemgr.NodeName) == 1 {
+						break
+					} else {
+						continue
+					}
+				}
+				if err != nil {
+					log.Println("InitEncryptionStruct Unmarshal redis err", err)
+				} else {
+					e.EncryptionConf = &encryconf
+					e.initAllRsa()
+					log.Println("从节点定时更新EncryptionStruct")
+					return
+				}
+			}
+		}
+	} else {
+		e.Lock.Lock()
+		//主结点生成秘钥 存入redis
+		log.Printf("主结点更新EncryptionStruct before  %+v", e.MapRsa)
+		last := e.RsaStruct_Now
+		newRsa := initRsa(getNewRsaConfig())
+		//更新map
+		e.MapRsa = map[string]*RsaStruct{newRsa.Sign: newRsa, last.Sign: last}
+		//更新默认加密
+		e.RsaStruct_Now = newRsa
+		log.Printf("after  %+v", e.MapRsa)
+		e.Lock.Unlock()
+		//更新redis
+		func() {
+			e.EncryptionConf.Now = e.RsaStruct_Now.Sign
+			e.EncryptionConf.MapRsaConf = map[string]*RsaConfig{newRsa.Sign: newRsa.RsaConfig, last.Sign: last.RsaConfig}
+			byteArr, err := json.Marshal(e.EncryptionConf)
+			log.Println("主结点更新sessionEncryption", string(byteArr))
+			if err != nil {
+				log.Printf("InitEncryptionStruct save %s redis err %:v\n", byteArr, err)
+				return
+			}
+			redis.Put("session", "sessionEncryption", string(byteArr), -1)
+		}()
+	}
+}

+ 170 - 0
src/jfw/jyutil/sessionkeep.go

@@ -0,0 +1,170 @@
+package jyutil
+
+import (
+	"encoding/base64"
+	"fmt"
+	"net/http"
+	"regexp"
+	"strings"
+	"time"
+
+	"app.yhyue.com/moapp/jybase/redis"
+
+	. "app.yhyue.com/moapp/jybase/mongodb"
+
+	"app.yhyue.com/moapp/jybase/go-xweb/httpsession"
+)
+
+const (
+	SKCookieName = "userid_secure"
+)
+
+var (
+	Encryption = InitEncryptionStruct()
+	//过滤器
+	//爬虫百度、谷歌、雅虎、新浪、搜狗、搜搜、网易有道
+	//var reg = regexp.MustCompile(`(baidu|google|yahoo|iask|sogou|soso|youdao|Android|Mobile)`)
+	reg = regexp.MustCompile(`(Android|Mobile)`)
+)
+
+// SessionKeep session保持
+type SessionKeep struct {
+	W          http.ResponseWriter
+	R          *http.Request
+	Session    *httpsession.Session
+	GetSession map[string]interface{}
+	SetSession map[string]interface{}
+}
+
+func (sk *SessionKeep) Do() bool {
+	defer func() {
+		if len(sk.SetSession) > 0 {
+			sk.Session.SetMultiple(sk.SetSession)
+		}
+	}()
+	rqu := sk.R.URL.Path
+	if strings.HasSuffix(rqu, "/notin/page") || strings.HasSuffix(rqu, "/swordfish/about") || strings.HasSuffix(rqu, "/orgstructure/invpage") || strings.Contains(rqu, "/exhibition/") {
+		return true
+	} else {
+		rhd := sk.R.Header
+		rhdua := "" //UA
+		if len(rhd["User-Agent"]) > 0 {
+			rhdua = rhd["User-Agent"][0]
+		}
+		ck, err := sk.R.Cookie(SKCookieName)
+		userid := sk.GetSession["userId"]
+		enuserid := ""
+		rhost := sk.R.Host
+		RURL := "" //当前url
+		sk.SetSession["User-Agent"] = rhdua
+		//当前页 模块
+		if strings.HasSuffix(rqu, ".html") {
+			RURL = fmt.Sprintf("%s%s%s", "https://", rhost, sk.R.RequestURI)
+			sk.SetSession["RURL"] = RURL
+		}
+		deuserid := ""
+		flag := 0
+		if userid != nil && userid != "" { //只有有session,就更新cookie失效时间
+			deuserid, _ = userid.(string)
+			enuserid = sk.EncodeString(deuserid)
+			flag = 1
+		} else if err == nil {
+			enuserid = ck.Value //"解密的userid"
+			deuserid = sk.DecodeString(enuserid)
+			flag = 2
+		}
+		if deuserid != "" {
+			b, _ := redis.Exists("sso", "req_"+deuserid)
+			if b {
+				http.Redirect(sk.W, sk.R, "/not/not", 302)
+			} else {
+				if flag == 2 {
+					_, sessionVal := GetSessionVal(map[string]interface{}{"_id": StringTOBsonId(deuserid)})
+					//未登陆账号
+					if i_unlimited, ok := sessionVal["i_unlimited"].(int); i_unlimited > 0 && ok {
+						http.SetCookie(sk.W, sk.cookie("", SKCookieName))
+						http.Redirect(sk.W, sk.R, "/", 302)
+						return false
+					}
+					for k, v := range sessionVal {
+						sk.SetSession[k] = v
+					}
+				}
+				http.SetCookie(sk.W, sk.cookie(enuserid, SKCookieName))
+				http.SetCookie(sk.W, sk.cookie(se.EncodeString(deuserid), "ud_safe"))
+			}
+		} else {
+			if strings.HasPrefix(rqu, "/article/") {
+				if strings.HasPrefix(rqu, "/article/mailprivate") || strings.HasPrefix(rqu, "/article/bdprivate") || strings.HasPrefix(rqu, "/article/bdcontent") || reg.MatchString(rhdua) || strings.HasPrefix(rqu, "/article/indexcontent") {
+					return true
+				} else { //只处理pc
+					sk.SetSession["referer"] = sk.R.RequestURI
+					http.Redirect(sk.W, sk.R, "/notin/page", 302)
+					return false
+				}
+			} else if strings.HasPrefix(rqu, "/front/dataExport") || strings.HasPrefix(rqu, "/front/dataPack") {
+				//数据预览图片导出,需要去掉session拦截
+				sk.SetSession["referer"] = sk.R.RequestURI
+				http.Redirect(sk.W, sk.R, "/notin/page", 302)
+				return false
+			} else if strings.HasPrefix(rqu, "/front/dataReport") {
+				if rqu == "/front/dataReport/payCallback" {
+					return true
+				}
+				http.Redirect(sk.W, sk.R, "/", 302)
+				return false
+			} else if strings.HasPrefix(rqu, "/front/vipsubscribe/") {
+				http.Redirect(sk.W, sk.R, "/swordfish/about", 302)
+				//查找不到此用户信息,(用户合并微信登录防止跳转)
+				return true
+			}
+		}
+	}
+	return true
+}
+
+// 生成cookie
+func (sk *SessionKeep) cookie(userid, keyname string) *http.Cookie {
+	maxAge := int(time.Hour * 72 / time.Second) //3天,单位秒
+	expires := time.Now().Add(72 * time.Hour)
+	cookie := &http.Cookie{
+		Name:     keyname,
+		Value:    userid,
+		Path:     "/",
+		HttpOnly: false,
+		MaxAge:   maxAge,
+		Expires:  expires,
+		Domain:   httpsession.Domain,
+	}
+	return cookie
+}
+
+// DecodeString 解密
+func (sk *SessionKeep) DecodeString(encodeStr string) string {
+	byteArr, err := base64.StdEncoding.DecodeString(encodeStr)
+	if err != nil {
+		fmt.Println("base64解密出错", encodeStr)
+		return ""
+	}
+	//获取加密字段和加密标识
+	ctxArr := strings.Split(string(byteArr), "***")
+	if len(ctxArr) != 2 {
+		return ""
+	}
+
+	enuserid := ctxArr[0]
+	signFlsg := ctxArr[1]
+	rs := Encryption.MapRsa[signFlsg]
+	if rs == nil {
+		fmt.Printf("sign %s不存在\n", signFlsg)
+		return ""
+	}
+	str := Encryption.MapRsa[signFlsg].Decrypt(enuserid)
+	return str
+}
+
+// EncodeString 加密
+func (sk *SessionKeep) EncodeString(userid string) string {
+	str := Encryption.RsaStruct_Now.Encrypt(userid) + "***" + Encryption.RsaStruct_Now.Sign
+	return base64.StdEncoding.EncodeToString([]byte(str))
+}

+ 27 - 0
src/jfw/jyutil/sort.go

@@ -0,0 +1,27 @@
+// sort
+package jyutil
+
+type ObjectMap struct {
+	Key string `json:"key"` //
+	Num int    `json:"num"` //
+
+}
+type ObjSort []*ObjectMap
+
+func (list ObjSort) Len() int {
+	return len(list)
+}
+
+func (list ObjSort) Less(i, j int) bool {
+	if list[i].Num > list[j].Num {
+		return true
+	} else {
+		return false
+	}
+}
+
+func (list ObjSort) Swap(i, j int) {
+	var temp *ObjectMap = list[i]
+	list[i] = list[j]
+	list[j] = temp
+}

+ 3 - 2
src/jfw/modules/app/src/app/filter/baseuserfilter.go

@@ -2,11 +2,12 @@ package filter
 
 import (
 	"jy/src/jfw/modules/app/src/jfw/config"
-	"app.yhyue.com/moapp/jypkg/public"
 	"log"
 	"net/http"
+
 	util "app.yhyue.com/moapp/jybase/common"
-	"qfw/util/usercenter"
+	"app.yhyue.com/moapp/jybase/usercenter"
+	"app.yhyue.com/moapp/jypkg/public"
 
 	"app.yhyue.com/moapp/jybase/go-xweb/httpsession"
 )

+ 5 - 6
src/jfw/modules/app/src/app/filter/mergefilter.go

@@ -2,17 +2,16 @@ package filter
 
 import (
 	"fmt"
-	"log"
-	"net/http"
-	"app.yhyue.com/moapp/jybase/redis"
-	"jfw/config"
-	"jfw/public"
+	"jy/src/jfw/modules/app/src/jfw/config"
 	"log"
 	"net/http"
 
-	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
 	"app.yhyue.com/moapp/jypkg/public"
 
+	util "app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/redis"
+	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
+
 	"app.yhyue.com/moapp/jybase/go-xweb/httpsession"
 )
 

+ 7 - 6
src/jfw/modules/app/src/app/front/follow.go

@@ -8,17 +8,18 @@ import (
 	"sync"
 	"time"
 
+	"jy/src/jfw/modules/app/src/app/jyutil"
+	. "jy/src/jfw/modules/app/src/public"
+
 	util "app.yhyue.com/moapp/jybase/common"
 	. "app.yhyue.com/moapp/jybase/date"
 	"app.yhyue.com/moapp/jybase/encrypt"
 	. "app.yhyue.com/moapp/jybase/mongodb"
-	"app.yhyue.com/moapp/jypkg/jyutil"
 
 	elastic "app.yhyue.com/moapp/jybase/esv1"
 	"app.yhyue.com/moapp/jybase/redis"
 	"app.yhyue.com/moapp/jybase/rpc"
 	"app.yhyue.com/moapp/jypkg/public"
-
 	"github.com/pkg/errors"
 
 	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
@@ -161,7 +162,7 @@ func (m *Follow) Fwsave() {
 			if id := public.BaseMysql.Insert("follow_project_monitor", data); id > 0 {
 				followId = util.InterfaceToStr(id)
 				status = "y"
-				go public.FollowPush(&rpc.FollowPush{
+				go FollowPush(&rpc.FollowPush{
 					ProjectName: projectname,
 					ProjectCode: projectcode,
 					InfoId:      s_id,
@@ -291,7 +292,7 @@ func (m *Follow) Photo(tp string) error {
 			m.T["a_lastpushids"] = (*data)["a_lastpushids"]
 		}
 		if len(projectname) > 0 || len(projectcode) > 0 {
-			res, _ := public.FollowPush(&rpc.FollowPush{
+			res, _ := FollowPush(&rpc.FollowPush{
 				ProjectName: projectname,
 				ProjectCode: projectcode,
 				InfoId:      id,
@@ -377,7 +378,7 @@ func (m *Follow) AjaxReq() {
 
 				if followId = util.InterfaceToStr(public.BaseMysql.Insert("follow_project_monitor", data)); len(followId) > 0 {
 					status = "y"
-					go public.FollowPush(&rpc.FollowPush{
+					go FollowPush(&rpc.FollowPush{
 						ProjectName: projectname,
 						ProjectCode: projectcode,
 						InfoId:      s_id,
@@ -583,7 +584,7 @@ func (m *Follow) Addsave() error {
 			}
 			if public.BaseMysql.Insert("follow_project_monitor", data) > 0 {
 				status = "y"
-				go public.FollowPush(&rpc.FollowPush{
+				go FollowPush(&rpc.FollowPush{
 					ProjectName: projectname,
 					ProjectCode: projectcode,
 					InfoId:      sid,

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

@@ -3,8 +3,8 @@ module jy/src/jfw/modules/app/src
 go 1.18
 
 require (
-	app.yhyue.com/moapp/jybase v0.0.0-20221229074840-790b25997170
-	app.yhyue.com/moapp/jypkg v0.0.0-20221229090523-854669eee0ff
+	app.yhyue.com/moapp/jybase v0.0.0-20221230025810-b88f2a62c467
+	app.yhyue.com/moapp/jypkg v0.0.0-20221230080706-5ea76d175cfb
 	github.com/SKatiyar/qr v0.0.0-20151201054752-25b6bdf44e67
 	github.com/dchest/captcha v1.0.0
 	github.com/pkg/errors v0.9.1
@@ -28,7 +28,6 @@ require (
 	github.com/nsqio/go-nsq v1.1.0 // indirect
 	github.com/olivere/elastic v6.2.37+incompatible // indirect
 	github.com/robfig/cron v1.2.0 // indirect
-	github.com/robfig/cron/v3 v3.0.1 // indirect
 	github.com/tealeg/xlsx v1.0.5 // indirect
 	github.com/thinxer/go-word2vec v0.0.0-20150917053916-5c19ec7379ed // indirect
 	github.com/xdg-go/pbkdf2 v1.0.0 // indirect

+ 4 - 6
src/jfw/modules/app/src/go.sum

@@ -2,10 +2,10 @@ app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d h1:WPsYuuptAd3UEgN+j
 app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d/go.mod h1:91/lSD/hS+ckMVP3WdidRzDhC60lLMdyce9QHy0cSMA=
 app.yhyue.com/moapp/jyPoints v1.1.1/go.mod h1:SvP8p5L3jGrejHiH2LXfgCg/NPlFiKBC5Yd0gsI12FU=
 app.yhyue.com/moapp/jybase v0.0.0-20220427020729-974c1a148186/go.mod h1:qNRA0sHuYqcLoYoP8irpaWnW9YsXixe6obBIkwaXpD0=
-app.yhyue.com/moapp/jybase v0.0.0-20221229074840-790b25997170 h1:gjx6+x7P1Vp/++OyfuEdR3Bcjj4/HrgIaRnE1cMTP3k=
-app.yhyue.com/moapp/jybase v0.0.0-20221229074840-790b25997170/go.mod h1:efAeRPDpJ13JuNODuqtfLlKQSQgCbnUcwGPzhFU5krY=
-app.yhyue.com/moapp/jypkg v0.0.0-20221229090523-854669eee0ff h1:l4Dn9mg6+y6voFomnLcGyoIRT0dYG9bZIXh09qI2Ido=
-app.yhyue.com/moapp/jypkg v0.0.0-20221229090523-854669eee0ff/go.mod h1:R19Q6Q1AOM47lY194ZQ6qdggbjkijDufoDnJndnRrRM=
+app.yhyue.com/moapp/jybase v0.0.0-20221230025810-b88f2a62c467 h1:MTZBSIzrqrwieb1gLhls3Wjz0Q2u75n+O2jfPw40iEA=
+app.yhyue.com/moapp/jybase v0.0.0-20221230025810-b88f2a62c467/go.mod h1:zB47XTeJvpcbtBRYgkQuxOICWNexiZfbUO+7aUf6mNs=
+app.yhyue.com/moapp/jypkg v0.0.0-20221230080706-5ea76d175cfb h1:EpO8FAT6xsnaZW3TuLVz8RrDff1c7eXwgGqmlBtUUyQ=
+app.yhyue.com/moapp/jypkg v0.0.0-20221230080706-5ea76d175cfb/go.mod h1:CkGGBvyteATKUfm7n0SqAm1LlCftmiWwlFGR80YEkWo=
 app.yhyue.com/moapp/message v0.0.0-20221202072401-d825fc65512c h1:CrcvbsXZ4aQkNikBi7FUUQZNnY8hKsNo2LLe/SqeXs8=
 app.yhyue.com/moapp/message v0.0.0-20221202072401-d825fc65512c/go.mod h1:b0zZHev3gmJao1Fo+2Z2KPVjsuLOJVvVxf+kCnu9WkA=
 cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
@@ -513,8 +513,6 @@ github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqn
 github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
 github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ=
 github.com/robfig/cron v1.2.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k=
-github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
-github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
 github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
 github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=

+ 2 - 5
src/jfw/modules/app/src/main.go

@@ -11,8 +11,6 @@ import (
 	. "jy/src/jfw/modules/app/src/jfw/config"
 	"net/http"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
-
 	util "app.yhyue.com/moapp/jybase/common"
 
 	"app.yhyue.com/moapp/jypkg/public"
@@ -20,10 +18,11 @@ import (
 	"strings"
 	"time"
 
-	_ "app.yhyue.com/moapp/jypkg/common/src/qfw/util/jylog" //日志文件
+	_ "jy/src/jfw/modules/app/src/public"
 
 	"app.yhyue.com/moapp/jybase/go-xweb/httpsession"
 	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
+	_ "app.yhyue.com/moapp/jypkg/common/src/qfw/util/jylog" //日志文件
 )
 
 func init() {
@@ -35,8 +34,6 @@ func main() {
 	//限制全文检索查询
 	go public.InitLimitSearchText(true, Sysconfig)
 	active.Init()
-	public.InitRpcCall(Sysconfig)
-	jyutil.InitEncryptionStructByConf(Sysconfig)
 	//
 	mux1 := http.NewServeMux()
 	mux1.HandleFunc("/jyapp/res/", func(w http.ResponseWriter, r *http.Request) {

+ 140 - 0
src/jfw/modules/app/src/public/rpccall.go

@@ -0,0 +1,140 @@
+package public
+
+import (
+	"encoding/json"
+	config "jy/src/jfw/modules/app/src/jfw/config"
+	"log"
+	"net/rpc"
+
+	util "app.yhyue.com/moapp/jybase/common"
+	qrpc "app.yhyue.com/moapp/jybase/rpc"
+)
+
+var rpcserver string
+var followPushRpcServer string
+
+func init() {
+	rpcserver, _ = config.Sysconfig["weixinrpc"].(string)
+	followPushRpcServer, _ = config.Sysconfig["followPushRpc"].(string)
+}
+
+//发送管理员模板消息
+func SendBidOpenMsg(p *qrpc.NotifyMsg) bool {
+	ok, _ := qrpc.WxPush(rpcserver, "WeiXinRpc.SendBidOpenMsg", p)
+	return ok
+}
+
+//发送数据报告模板消息
+func SendDataReportMsg(p *qrpc.NotifyMsg) bool {
+	ok, _ := qrpc.WxPush(rpcserver, "WeiXinRpc.SendDataReportMsg", p)
+	return ok
+}
+
+//发送保函申请消息
+func SendLOGApplyMsg(p *qrpc.NotifyMsg) bool {
+	ok, _ := qrpc.WxPush(rpcserver, "WeiXinRpc.SendLOGApplyMsg", p)
+	return ok
+}
+
+//发送年终活动消息
+func SendACTIVEApplyMsg(p *qrpc.NotifyMsg) bool {
+	ok, _ := qrpc.WxPush(rpcserver, "WeiXinRpc.SendACTIVEApplyMsg", p)
+	return ok
+}
+
+//项目更新推送
+func FollowPush(p *qrpc.FollowPush) (repls []*map[string]interface{}, err error) {
+	util.Try(func() {
+		client, e := rpc.DialHTTP("tcp", followPushRpcServer)
+		defer client.Close()
+		if e != nil {
+			err = e
+			log.Println(err.Error())
+			return
+		}
+		var repl []byte
+		err = client.Call("FollowPushRpc.FollowPush", p, &repl)
+		if err == nil && repl != nil && len(repl) > 0 {
+			var mp []*map[string]interface{}
+			json.Unmarshal(repl, &mp)
+			repls = mp
+		}
+		if err != nil {
+			log.Println(err.Error())
+		}
+	}, func(e interface{}) {})
+	return
+}
+
+//返回项目更新
+func FollowPushBack(p *qrpc.FollowPush) (err error) {
+	util.Try(func() {
+		client, e := rpc.DialHTTP("tcp", followPushRpcServer)
+		defer client.Close()
+		if e != nil {
+			err = e
+			log.Println(err.Error())
+			return
+		}
+		var repl []byte
+		err = client.Call("FollowPushRpc.FollowPush", p, &repl)
+		if err != nil {
+			log.Println(err.Error())
+		}
+	}, func(e interface{}) {})
+	return
+}
+
+//分享二维码图片
+func GetShareQR(url uint32) string {
+	var ret string
+	util.Try(func() {
+		client, err := rpc.DialHTTP("tcp", rpcserver)
+		defer client.Close()
+		if err != nil {
+			log.Println(err.Error())
+			return
+		}
+		err = client.Call("WeiXinRpc.GetShareQR", url, &ret)
+		if err != nil {
+			log.Println(err.Error())
+		}
+	}, func(e interface{}) {})
+	return ret
+}
+
+//分享二维码图片
+func GetShareQRStr(url string) string {
+	var ret string
+	util.Try(func() {
+		client, err := rpc.DialHTTP("tcp", rpcserver)
+		defer client.Close()
+		if err != nil {
+			log.Println(err.Error())
+			return
+		}
+		err = client.Call("WeiXinRpc.GetShareQRStr", url, &ret)
+		if err != nil {
+			log.Println(err.Error())
+		}
+	}, func(e interface{}) {})
+	return ret
+}
+
+//获取未关注用户unionid
+func GetUnionid(openid string) string {
+	var unionid string
+	util.Try(func() {
+		client, err := rpc.DialHTTP("tcp", rpcserver)
+		defer client.Close()
+		if err != nil {
+			log.Println(err.Error())
+			return
+		}
+		err = client.Call("WeiXinRpc.GetUnionid", openid, &unionid)
+		if err != nil {
+			log.Println(err.Error())
+		}
+	}, func(e interface{}) {})
+	return unionid
+}

+ 0 - 65
src/jfw/modules/common/src/qfw/util/jy/nsq.go

@@ -1,65 +0,0 @@
-package jy
-
-import (
-	"encoding/json"
-	"errors"
-	"fmt"
-	. "mongodb"
-	"time"
-
-	"app.yhyue.com/moapp/message/model"
-	"github.com/nsqio/go-nsq"
-)
-
-const (
-	Jyweb_article_open     = "jyweb_article_open"     //打开招投标信息三级页
-	Jydocs_doc_open        = "jydocs_doc_open"        //打开文库三级页
-	Jyapp_wx_register      = "jyapp_wx_register"      //app微信注册
-	Jyapp_phone_register   = "jyapp_phone_register"   //app手机号注册
-	Jypc_phone_register    = "jypc_phone_register"    //pc端手机号注册
-	Jywx_subscribe_new     = "jywx_subscribe_new"     //微信新用户关注
-	Jywx_subscribe_invite  = "jywx_subscribe_invite"  //已邀请并产生了新用户
-	Jywx_subscribe_invited = "jywx_subscribe_invited" //被邀请产生新用户
-	Jywx_report_invited    = "jywx_report_invited"    //年终报告被邀请产生新用户
-
-	Jywx_node1  = "jywx_node1"  //微信端
-	Jyweb_node2 = "jyweb_node2" //pc端
-	Jyapp_node1 = "jyapp_node1" //app端
-	Jysubscrib  = "jysubscribe" //支付
-)
-
-//e_code 模块
-//e_app 终端
-func Publish(mg MongodbSim, ip, topicName, e_code, e_userid, e_app string) error {
-	if topicName == "" {
-		return errors.New("未找到topicName,请检查tye参数是否正确")
-	}
-	cfg := nsq.NewConfig()
-	producer, err := nsq.NewProducer(ip, cfg)
-	if err != nil {
-		fmt.Println("err1---", err)
-	}
-	msg := &model.Message{
-		E_code:   e_code,
-		E_userId: e_userid,
-		E_time:   time.Now().Unix(), //1605223065
-		E_app:    e_app,
-	}
-	b, _ := json.Marshal(msg)
-	err = producer.Publish(topicName, b)
-	if err != nil {
-		fmt.Println("errr2:", err)
-	}
-	producer.Stop()
-	saveLog(mg, topicName, *msg)
-	return err
-}
-
-func saveLog(mg MongodbSim, topicName string, msg model.Message) {
-	mg.Save("nsq_logs", map[string]interface{}{
-		"body":       msg,
-		"topicName":  topicName,
-		"createtime": time.Now().Unix(),
-		"type":       "producer",
-	})
-}

+ 0 - 167
src/jfw/modules/common/src/qfw/util/jy/userMerge.go

@@ -1,167 +0,0 @@
-package jy
-
-import (
-	"fmt"
-	. "mongodb"
-	"net/http"
-	qutil "qfw/util"
-	"qfw/util/mysql"
-	"qfw/util/usercenter"
-	"strings"
-
-	"github.com/go-xweb/httpsession"
-	"go.mongodb.org/mongo-driver/bson"
-)
-
-//dev3.7 账号合并
-type UserMerge struct {
-	mysqlDb       *mysql.Mysql
-	mg            MongodbSim
-	sess          *httpsession.Session
-	userCenterApi string //获取用户中台api
-}
-
-func CreateUserMerge(mg MongodbSim, msql *mysql.Mysql, sess *httpsession.Session, ucapi string) *UserMerge {
-	return &UserMerge{
-		mysqlDb:       msql,
-		mg:            mg,
-		sess:          sess,
-		userCenterApi: ucapi,
-	}
-}
-
-var (
-	MergeEncrypt = qutil.SimpleEncrypt{Key: "jy_merge_user"}
-)
-
-//查询合并
-//wId 微信用户id
-//pId 手机用户id
-//当wId和pId都为空时 即不需要合并
-func (this *UserMerge) MergeQuery() (wId, pId, bPhone string, err error) {
-	userId, _ := this.sess.Get("userId").(string)
-	if userId == "" {
-		err = fmt.Errorf("未获取到用户身份")
-		return
-	}
-	tud, _ := this.mg.FindById("user", userId, `{"s_m_phone":1,"s_phone":1,"s_unionid":1,"s_m_openid":1,"s_nickname":1}`)
-	if tud == nil || len(*tud) == 0 {
-		err = fmt.Errorf("查询用户身份异常")
-		return
-	}
-	s_m_phone, s_phone := qutil.ObjToString((*tud)["s_m_phone"]), qutil.ObjToString((*tud)["s_phone"])
-	if s_phone != "" {
-		bPhone = s_phone
-	} else {
-		bPhone = s_m_phone
-	}
-	//查询是否有对应微信需要合并
-	if unionid := qutil.ObjToString((*tud)["s_unionid"]); unionid != "" && len(unionid) > 11 {
-		mud, _ := this.mg.FindOneByField("user", bson.M{"i_appid": 2, "s_unionid": unionid, "_id": bson.M{"$ne": StringTOBsonId(userId)}}, `{"_id":1,"s_nickname":1,"s_phone":1}`)
-		if mud != nil && len(*mud) > 0 {
-			if qutil.ObjToString((*tud)["s_phone"]) == "" {
-				wId = userId
-				pId = BsonIdToSId((*mud)["_id"])
-				bPhone = qutil.ObjToString((*mud)["s_phone"])
-			} else {
-				pId = userId
-				wId = BsonIdToSId((*mud)["_id"])
-			}
-			return
-		}
-	}
-	//查询是否有对应手机号需要合并
-	if s_phone == s_m_phone { //已合并
-		return
-	}
-	if s_m_phone != "" { //当前用户为微信用户;查询对应的手机号用户
-		mud, _ := this.mg.FindOneByField("user", bson.M{"i_appid": 2, "s_phone": s_m_phone, "_id": bson.M{"$ne": StringTOBsonId(userId)}}, `{"_id":1}`)
-		if mud != nil && len(*mud) > 0 {
-			wId = BsonIdToSId((*tud)["_id"])
-			pId = BsonIdToSId((*mud)["_id"])
-			return
-		}
-	} else if s_phone != "" { //当前用户为手机号用户;查询对应的微信用户
-		mud, _ := this.mg.FindOneByField("user", bson.M{"i_appid": 2, "s_m_phone": s_phone, "_id": bson.M{"$ne": StringTOBsonId(userId)}}, `{"_id":1,"s_nickname":1}`)
-		if mud != nil && len(*mud) > 0 {
-			wId = BsonIdToSId((*mud)["_id"])
-			pId = BsonIdToSId((*tud)["_id"])
-			return
-		}
-	}
-	return
-}
-
-//更新session
-func (this *UserMerge) FlushSession(userData *map[string]interface{}, userId string) {
-	if userData == nil {
-		userData, _ = this.mg.FindById("user", userId, `{"_id":1,"i_shareknow":1,"s_m_openid":1,"s_nickname":1,"s_headimage":1,"s_headimageurl":1,"s_phone":1,"s_m_phone":1,"s_jpushid":1,"s_opushid":1,"s_appponetype":1,"s_appversion":1,"base_user_id":1}`)
-	}
-	sessionVal := make(map[string]interface{})
-	sessionVal["user"] = *userData
-	if (*userData)["i_shareknow"] != nil {
-		sessionVal["shareknow"] = (*userData)["i_shareknow"]
-	}
-	if userId == "" {
-		userId = BsonIdToSId((*userData)["_id"])
-	}
-	ClearBigVipUserPower(userId) //大会员状态刷新
-	sessionVal["userId"] = userId
-	nickName, _ := (*userData)["s_nickname"].(string)
-	phone, _ := (*userData)["s_phone"].(string)
-	if nickName == "" {
-		if phone != "" && len(phone) > 3 {
-			nickName = string(phone[0:3]) + "****" + string(phone[len(phone)-4:])
-		}
-	}
-	sessionVal["s_nickname"] = nickName
-	sessionVal["nickname"] = nickName
-	avatar, _ := (*userData)["s_headimageurl"].(string)
-	if avatar == "" {
-		avatar, _ = (*userData)["s_headimage"].(string)
-	}
-	sessionVal["s_avatar"] = strings.Replace(avatar, "http://", "https://", 1)
-	sessionVal["s_m_openid"], _ = (*userData)["s_m_openid"].(string)
-	sessionVal["openid"] = sessionVal["s_m_openid"]
-	//app端
-	sessionVal["s_phone"] = phone
-	if phone == "" {
-		phone, _ = (*userData)["s_m_phone"].(string)
-	}
-	sessionVal["phone"] = phone
-	sessionVal["s_headimageurl"] = strings.Replace(avatar, "http://", "https://", 1)
-	sessionVal["s_jpushid"], _ = (*userData)["s_jpushid"].(string)
-	sessionVal["s_opushid"], _ = (*userData)["s_opushid"].(string)
-	sessionVal["s_appponetype"], _ = (*userData)["s_appponetype"].(string)
-	sessionVal["s_appversion"], _ = (*userData)["s_appversion"].(string)
-	sessionVal["app_name"] = nickName
-	if base_userid := qutil.IntAllDef((*userData)["base_user_id"], 0); base_userid != 0 {
-		sessionVal["base_user_id"] = base_userid
-
-		identity := usercenter.GetUserIdentity(this.userCenterApi, userId, int64(base_userid), 0, &http.Cookie{})
-		if identity != nil {
-			if identity.PersonId > 0 {
-				sessionVal["personId"] = identity.PersonId
-			}
-			if identity.UserName != "" {
-				sessionVal["userName"] = identity.UserName
-			}
-			if identity.UserAccountId > 0 {
-				sessionVal["userAccountId"] = identity.UserAccountId
-			}
-			if identity.EntAccountId > 0 {
-				sessionVal["entAccountId"] = identity.EntAccountId
-			}
-			if identity.EntUserAccountId > 0 {
-				sessionVal["entUserAccountId"] = identity.EntUserAccountId
-			}
-			if identity.UserPositionId > 0 {
-				sessionVal["userPositionId"] = identity.UserPositionId
-			}
-			if identity.EntUserPositionId > 0 {
-				sessionVal["entUserPositionId"] = identity.EntUserPositionId
-			}
-		}
-	}
-	this.sess.SetMultiple(sessionVal)
-}

+ 3 - 2
src/jfw/modules/entsesearch/src/go.mod

@@ -3,8 +3,8 @@ module jy/src/jfw/modules/entsesearch/src
 go 1.18
 
 require (
-	app.yhyue.com/moapp/jybase v0.0.0-20221229074840-790b25997170
-	app.yhyue.com/moapp/jypkg v0.0.0-20221230014931-c9afd45ba90b
+	app.yhyue.com/moapp/jybase v0.0.0-20221230025810-b88f2a62c467
+	app.yhyue.com/moapp/jypkg v0.0.0-20221230074431-bc1be703f357
 )
 
 require (
@@ -13,6 +13,7 @@ require (
 	github.com/dchest/captcha v0.0.0-20200903113550-03f5f0333e1f // indirect
 	github.com/garyburd/redigo v1.6.2 // indirect
 	github.com/go-sql-driver/mysql v1.6.0 // indirect
+	github.com/golang-jwt/jwt/v4 v4.4.2 // indirect
 	github.com/golang/snappy v0.0.4 // indirect
 	github.com/gomodule/redigo v1.8.9 // indirect
 	github.com/howeyc/fsnotify v0.9.0 // indirect

+ 5 - 4
src/jfw/modules/entsesearch/src/go.sum

@@ -2,10 +2,10 @@ app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d h1:WPsYuuptAd3UEgN+j
 app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d/go.mod h1:91/lSD/hS+ckMVP3WdidRzDhC60lLMdyce9QHy0cSMA=
 app.yhyue.com/moapp/jyPoints v1.1.1/go.mod h1:SvP8p5L3jGrejHiH2LXfgCg/NPlFiKBC5Yd0gsI12FU=
 app.yhyue.com/moapp/jybase v0.0.0-20220427020729-974c1a148186/go.mod h1:qNRA0sHuYqcLoYoP8irpaWnW9YsXixe6obBIkwaXpD0=
-app.yhyue.com/moapp/jybase v0.0.0-20221229074840-790b25997170 h1:gjx6+x7P1Vp/++OyfuEdR3Bcjj4/HrgIaRnE1cMTP3k=
-app.yhyue.com/moapp/jybase v0.0.0-20221229074840-790b25997170/go.mod h1:efAeRPDpJ13JuNODuqtfLlKQSQgCbnUcwGPzhFU5krY=
-app.yhyue.com/moapp/jypkg v0.0.0-20221230014931-c9afd45ba90b h1:RZ/8iz9U+jo1V97Wxm1lIRnp6UzUsM5A0k+pLUXIQug=
-app.yhyue.com/moapp/jypkg v0.0.0-20221230014931-c9afd45ba90b/go.mod h1:R19Q6Q1AOM47lY194ZQ6qdggbjkijDufoDnJndnRrRM=
+app.yhyue.com/moapp/jybase v0.0.0-20221230025810-b88f2a62c467 h1:MTZBSIzrqrwieb1gLhls3Wjz0Q2u75n+O2jfPw40iEA=
+app.yhyue.com/moapp/jybase v0.0.0-20221230025810-b88f2a62c467/go.mod h1:zB47XTeJvpcbtBRYgkQuxOICWNexiZfbUO+7aUf6mNs=
+app.yhyue.com/moapp/jypkg v0.0.0-20221230074431-bc1be703f357 h1:qC+18XW1NeYkDMvAAj7LlWXn+ewiFQySzvarN++Tme4=
+app.yhyue.com/moapp/jypkg v0.0.0-20221230074431-bc1be703f357/go.mod h1:CkGGBvyteATKUfm7n0SqAm1LlCftmiWwlFGR80YEkWo=
 app.yhyue.com/moapp/message v0.0.0-20221202072401-d825fc65512c h1:CrcvbsXZ4aQkNikBi7FUUQZNnY8hKsNo2LLe/SqeXs8=
 app.yhyue.com/moapp/message v0.0.0-20221202072401-d825fc65512c/go.mod h1:b0zZHev3gmJao1Fo+2Z2KPVjsuLOJVvVxf+kCnu9WkA=
 cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
@@ -227,6 +227,7 @@ github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a
 github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
 github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
 github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
+github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs=
 github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
 github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=

+ 3 - 2
src/jfw/modules/followent/src/go.mod

@@ -3,8 +3,8 @@ module jy/src/jfw/modules/followent/src
 go 1.18
 
 require (
-	app.yhyue.com/moapp/jybase v0.0.0-20221229074840-790b25997170
-	app.yhyue.com/moapp/jypkg v0.0.0-20221230014931-c9afd45ba90b
+	app.yhyue.com/moapp/jybase v0.0.0-20221230025810-b88f2a62c467
+	app.yhyue.com/moapp/jypkg v0.0.0-20221230074431-bc1be703f357
 	go.mongodb.org/mongo-driver v1.11.1
 )
 
@@ -14,6 +14,7 @@ require (
 	github.com/dchest/captcha v0.0.0-20200903113550-03f5f0333e1f // indirect
 	github.com/garyburd/redigo v1.6.2 // indirect
 	github.com/go-sql-driver/mysql v1.6.0 // indirect
+	github.com/golang-jwt/jwt/v4 v4.4.2 // indirect
 	github.com/golang/snappy v0.0.4 // indirect
 	github.com/gomodule/redigo v1.8.9 // indirect
 	github.com/howeyc/fsnotify v0.9.0 // indirect

+ 5 - 4
src/jfw/modules/followent/src/go.sum

@@ -2,10 +2,10 @@ app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d h1:WPsYuuptAd3UEgN+j
 app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d/go.mod h1:91/lSD/hS+ckMVP3WdidRzDhC60lLMdyce9QHy0cSMA=
 app.yhyue.com/moapp/jyPoints v1.1.1/go.mod h1:SvP8p5L3jGrejHiH2LXfgCg/NPlFiKBC5Yd0gsI12FU=
 app.yhyue.com/moapp/jybase v0.0.0-20220427020729-974c1a148186/go.mod h1:qNRA0sHuYqcLoYoP8irpaWnW9YsXixe6obBIkwaXpD0=
-app.yhyue.com/moapp/jybase v0.0.0-20221229074840-790b25997170 h1:gjx6+x7P1Vp/++OyfuEdR3Bcjj4/HrgIaRnE1cMTP3k=
-app.yhyue.com/moapp/jybase v0.0.0-20221229074840-790b25997170/go.mod h1:efAeRPDpJ13JuNODuqtfLlKQSQgCbnUcwGPzhFU5krY=
-app.yhyue.com/moapp/jypkg v0.0.0-20221230014931-c9afd45ba90b h1:RZ/8iz9U+jo1V97Wxm1lIRnp6UzUsM5A0k+pLUXIQug=
-app.yhyue.com/moapp/jypkg v0.0.0-20221230014931-c9afd45ba90b/go.mod h1:R19Q6Q1AOM47lY194ZQ6qdggbjkijDufoDnJndnRrRM=
+app.yhyue.com/moapp/jybase v0.0.0-20221230025810-b88f2a62c467 h1:MTZBSIzrqrwieb1gLhls3Wjz0Q2u75n+O2jfPw40iEA=
+app.yhyue.com/moapp/jybase v0.0.0-20221230025810-b88f2a62c467/go.mod h1:zB47XTeJvpcbtBRYgkQuxOICWNexiZfbUO+7aUf6mNs=
+app.yhyue.com/moapp/jypkg v0.0.0-20221230074431-bc1be703f357 h1:qC+18XW1NeYkDMvAAj7LlWXn+ewiFQySzvarN++Tme4=
+app.yhyue.com/moapp/jypkg v0.0.0-20221230074431-bc1be703f357/go.mod h1:CkGGBvyteATKUfm7n0SqAm1LlCftmiWwlFGR80YEkWo=
 app.yhyue.com/moapp/message v0.0.0-20221202072401-d825fc65512c h1:CrcvbsXZ4aQkNikBi7FUUQZNnY8hKsNo2LLe/SqeXs8=
 app.yhyue.com/moapp/message v0.0.0-20221202072401-d825fc65512c/go.mod h1:b0zZHev3gmJao1Fo+2Z2KPVjsuLOJVvVxf+kCnu9WkA=
 cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
@@ -227,6 +227,7 @@ github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a
 github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
 github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
 github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
+github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs=
 github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
 github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=

BIN
src/jfw/modules/weixin/src/src


+ 3 - 2
src/jfw/nodemgr/nodemgr.go

@@ -6,9 +6,10 @@ import (
 	"log"
 	"time"
 
-	"app.yhyue.com/moapp/jypkg/public"
+	. "jy/src/jfw/public"
 
 	"app.yhyue.com/moapp/jybase/rpc"
+	"app.yhyue.com/moapp/jypkg/public"
 
 	util "app.yhyue.com/moapp/jybase/common"
 	"app.yhyue.com/moapp/jybase/redis"
@@ -133,7 +134,7 @@ func MasterMgr() {
 							Remark:  "",
 							Url:     webdomain + "/_set/_setMaster2019",
 						}
-						log.Println("发送模板消息", openid, public.SendBidOpenMsg(&msg))
+						log.Println("发送模板消息", openid, SendBidOpenMsg(&msg))
 					}
 				}
 			}

+ 140 - 0
src/jfw/public/rpccall.go

@@ -0,0 +1,140 @@
+package public
+
+import (
+	"encoding/json"
+	config "jy/src/jfw/config"
+	"log"
+	"net/rpc"
+
+	util "app.yhyue.com/moapp/jybase/common"
+	qrpc "app.yhyue.com/moapp/jybase/rpc"
+)
+
+var rpcserver string
+var followPushRpcServer string
+
+func init() {
+	rpcserver, _ = config.Sysconfig["weixinrpc"].(string)
+	followPushRpcServer, _ = config.Sysconfig["followPushRpc"].(string)
+}
+
+//发送管理员模板消息
+func SendBidOpenMsg(p *qrpc.NotifyMsg) bool {
+	ok, _ := qrpc.WxPush(rpcserver, "WeiXinRpc.SendBidOpenMsg", p)
+	return ok
+}
+
+//发送数据报告模板消息
+func SendDataReportMsg(p *qrpc.NotifyMsg) bool {
+	ok, _ := qrpc.WxPush(rpcserver, "WeiXinRpc.SendDataReportMsg", p)
+	return ok
+}
+
+//发送保函申请消息
+func SendLOGApplyMsg(p *qrpc.NotifyMsg) bool {
+	ok, _ := qrpc.WxPush(rpcserver, "WeiXinRpc.SendLOGApplyMsg", p)
+	return ok
+}
+
+//发送年终活动消息
+func SendACTIVEApplyMsg(p *qrpc.NotifyMsg) bool {
+	ok, _ := qrpc.WxPush(rpcserver, "WeiXinRpc.SendACTIVEApplyMsg", p)
+	return ok
+}
+
+//项目更新推送
+func FollowPush(p *qrpc.FollowPush) (repls []*map[string]interface{}, err error) {
+	util.Try(func() {
+		client, e := rpc.DialHTTP("tcp", followPushRpcServer)
+		defer client.Close()
+		if e != nil {
+			err = e
+			log.Println(err.Error())
+			return
+		}
+		var repl []byte
+		err = client.Call("FollowPushRpc.FollowPush", p, &repl)
+		if err == nil && repl != nil && len(repl) > 0 {
+			var mp []*map[string]interface{}
+			json.Unmarshal(repl, &mp)
+			repls = mp
+		}
+		if err != nil {
+			log.Println(err.Error())
+		}
+	}, func(e interface{}) {})
+	return
+}
+
+//返回项目更新
+func FollowPushBack(p *qrpc.FollowPush) (err error) {
+	util.Try(func() {
+		client, e := rpc.DialHTTP("tcp", followPushRpcServer)
+		defer client.Close()
+		if e != nil {
+			err = e
+			log.Println(err.Error())
+			return
+		}
+		var repl []byte
+		err = client.Call("FollowPushRpc.FollowPush", p, &repl)
+		if err != nil {
+			log.Println(err.Error())
+		}
+	}, func(e interface{}) {})
+	return
+}
+
+//分享二维码图片
+func GetShareQR(url uint32) string {
+	var ret string
+	util.Try(func() {
+		client, err := rpc.DialHTTP("tcp", rpcserver)
+		defer client.Close()
+		if err != nil {
+			log.Println(err.Error())
+			return
+		}
+		err = client.Call("WeiXinRpc.GetShareQR", url, &ret)
+		if err != nil {
+			log.Println(err.Error())
+		}
+	}, func(e interface{}) {})
+	return ret
+}
+
+//分享二维码图片
+func GetShareQRStr(url string) string {
+	var ret string
+	util.Try(func() {
+		client, err := rpc.DialHTTP("tcp", rpcserver)
+		defer client.Close()
+		if err != nil {
+			log.Println(err.Error())
+			return
+		}
+		err = client.Call("WeiXinRpc.GetShareQRStr", url, &ret)
+		if err != nil {
+			log.Println(err.Error())
+		}
+	}, func(e interface{}) {})
+	return ret
+}
+
+//获取未关注用户unionid
+func GetUnionid(openid string) string {
+	var unionid string
+	util.Try(func() {
+		client, err := rpc.DialHTTP("tcp", rpcserver)
+		defer client.Close()
+		if err != nil {
+			log.Println(err.Error())
+			return
+		}
+		err = client.Call("WeiXinRpc.GetUnionid", openid, &unionid)
+		if err != nil {
+			log.Println(err.Error())
+		}
+	}, func(e interface{}) {})
+	return unionid
+}

+ 3 - 2
src/jfw/rpcfollow/rpc.go

@@ -6,9 +6,10 @@ import (
 	"strings"
 	"time"
 
-	public "app.yhyue.com/moapp/jypkg/public"
+	. "jy/src/jfw/public"
 
 	frpc "app.yhyue.com/moapp/jybase/rpc"
+	public "app.yhyue.com/moapp/jypkg/public"
 
 	util "app.yhyue.com/moapp/jybase/common"
 	"app.yhyue.com/moapp/jybase/encrypt"
@@ -111,7 +112,7 @@ func setMyFollowKey(userid, projectname string) string {
 			}
 			if id := public.MQFW.Save("follow_project", data); len(id) > 0 {
 				rep = id
-				go public.FollowPush(&frpc.FollowPush{
+				go FollowPush(&frpc.FollowPush{
 					ProjectName: projectname,
 					ProjectCode: projectcode,
 					InfoId:      sid,

+ 3 - 3
src/main.go

@@ -5,7 +5,7 @@ import (
 	"jy/src/jfw/config"
 	. "jy/src/jfw/config"
 
-	"app.yhyue.com/moapp/jypkg/jyutil"
+	"jy/src/jfw/jyutil"
 
 	"app.yhyue.com/moapp/jybase/fsw"
 	_ "app.yhyue.com/moapp/jypkg/common/src/qfw/util/jylog"
@@ -29,6 +29,8 @@ import (
 	"strings"
 	"time"
 
+	_ "jy/src/jfw/public"
+
 	util "app.yhyue.com/moapp/jybase/common"
 	"app.yhyue.com/moapp/jybase/endless"
 	"app.yhyue.com/moapp/jybase/go-xweb/httpsession"
@@ -70,8 +72,6 @@ func main() {
 	go func() {
 		front.GetRedisPoolVal()
 	}()
-	public.InitRpcCall(config.Sysconfig)
-	jyutil.InitEncryptionStructByConf(config.Sysconfig)
 	//开启web
 	mux1 := http.NewServeMux()
 	mux1.HandleFunc("/res/", func(w http.ResponseWriter, r *http.Request) {