From f55e94035fe06c03dc2addcdfce0afec1d7763bc Mon Sep 17 00:00:00 2001 From: likun <906102152@qq.com> Date: Wed, 13 Aug 2025 10:38:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E7=BD=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/init.go | 41 +++++++++++-------- build_all_bin_linux.sh | 6 +++ build_all_linux.sh | 9 ++-- cmd/init_app/ck/init.go | 22 +++++++++- cmd/init_app/main.go | 1 + config/config.json | 8 ++-- engine/db/sqlx.go | 4 +- ops/docker/Dockerfile_init | 7 +++- ops/docker/Dockerfile_manager | 6 ++- ops/docker/Dockerfile_reporter | 11 +++++ ops/docker/Dockerfile_sinker | 11 +++++ ops/docker/build_all.sh | 18 ++++++++ ops/docker/docker-compose.yaml | 30 ++++++++++++++ ops/docker/run.sh | 8 ++++ platform-basic-libs/util/token.go | 9 +++- views/dist/index.html | 2 +- .../dist/static/js/chunk-689cea2e.29aa4e27.js | 1 + .../dist/static/js/chunk-689cea2e.9fe40d46.js | 1 - vue/.env.development | 3 +- vue/src/views/behavior-analysis/event.vue | 1 + vue/vue.config.js | 2 +- 21 files changed, 162 insertions(+), 39 deletions(-) create mode 100755 build_all_bin_linux.sh create mode 100644 ops/docker/Dockerfile_reporter create mode 100644 ops/docker/Dockerfile_sinker create mode 100755 ops/docker/build_all.sh create mode 100644 ops/docker/docker-compose.yaml create mode 100644 ops/docker/run.sh create mode 100644 views/dist/static/js/chunk-689cea2e.29aa4e27.js delete mode 100644 views/dist/static/js/chunk-689cea2e.9fe40d46.js diff --git a/application/init.go b/application/init.go index 484f952..7019d56 100644 --- a/application/init.go +++ b/application/init.go @@ -22,6 +22,10 @@ import ( "strconv" ) +func init() { + log.SetFlags(log.LstdFlags | log.Llongfile) +} + // 初始化日志 func InitLogs() (fn func(), err error) { logger := logs.NewLog( @@ -40,13 +44,23 @@ func InitLogs() (fn func(), err error) { // 初始化mysql连接 func InitMysql() (fn func(), err error) { config := model.GlobConfig.Comm.Mysql - dbSource := fmt.Sprintf( - "%s:%s@tcp(%s:%s)/%s", - config.Username, - config.Pwd, - config.IP, - config.Port, - config.DbName) + dbSource := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True", + config.Username, config.Pwd, config.IP, config.Port, config.DbName) + dbNotDbSource := fmt.Sprintf("%s:%s@tcp(%s:%s)/?charset=utf8&parseTime=True", + config.Username, config.Pwd, config.IP, config.Port) + + sqlX, err := db.NewSQLX("mysql", dbNotDbSource, config.MaxOpenConns, config.MaxIdleConns) + if err != nil { + return nil, fmt.Errorf("创建不指定数据库的mysql连接池报错:%v", err) + } + + // 数据库不存在,创建它 + sql := fmt.Sprintf(`create database if not exists %s default charset utf8mb4 collate utf8mb4_unicode_ci`, config.DbName) + if _, e := sqlX.Exec(sql); e != nil { + return nil, fmt.Errorf("failed to create database:%v", e) + } + _ = sqlX.Close() + db.Sqlx, err = db.NewSQLX( "mysql", dbSource, @@ -70,18 +84,9 @@ func InitClickHouse() (fn func(), err error) { config := model.GlobConfig.Comm.ClickHouse dbSource := fmt.Sprintf( "tcp://%s:%s?username=%s&password=%s&database=%s&compress=true", - config.IP, - config.Port, - config.Username, - config.Pwd, - config.DbName, - ) - db.ClickHouseSqlx, err = db.NewSQLX( - "clickhouse", - dbSource, - config.MaxOpenConns, - config.MaxIdleConns, + config.IP, config.Port, config.Username, config.Pwd, config.DbName, ) + db.ClickHouseSqlx, err = db.NewSQLX("clickhouse", dbSource, config.MaxOpenConns, config.MaxIdleConns) if err != nil { return fn, fmt.Errorf("init clickhouse error:%v", err) diff --git a/build_all_bin_linux.sh b/build_all_bin_linux.sh new file mode 100755 index 0000000..35df655 --- /dev/null +++ b/build_all_bin_linux.sh @@ -0,0 +1,6 @@ +export GOOS=linux && \ + go build -tags netgo -ldflags "-s -w" -trimpath -buildvcs=false -o bin/linux/manager cmd/manager/main.go && \ + go build -tags netgo -ldflags "-s -w" -trimpath -buildvcs=false -o bin/linux/report_server cmd/report_server/main.go && \ + go build -tags netgo -ldflags "-s -w" -trimpath -buildvcs=false -o bin/linux/sinker cmd/sinker/main.go && \ + go build -tags netgo -ldflags "-s -w" -trimpath -buildvcs=false -o bin/linux/init_app cmd/init_app/main.go +echo "build success" \ No newline at end of file diff --git a/build_all_linux.sh b/build_all_linux.sh index 805e6b3..fedd064 100755 --- a/build_all_linux.sh +++ b/build_all_linux.sh @@ -1,6 +1,7 @@ cd vue && npm run build:prod \ - && cd .. && export GOOS=linux&&go build -ldflags="-w -s" -o bin/linux/manager cmd/manager/main.go \ - && go build -ldflags="-w -s" -o bin/linux/report_server cmd/report_server/main.go \ - && go build -ldflags="-w -s" -o bin/linux/sinker cmd/sinker/main.go \ - && go build -ldflags="-w -s" -o bin/linux/init_app cmd/init_app/main.go + && cd .. && export GOOS=linux \ + && go build -tags netgo -ldflags "-s -w" -trimpath -buildvcs=false -o bin/linux/manager cmd/manager/main.go \ + && go build -tags netgo -ldflags "-s -w" -trimpath -buildvcs=false -o bin/linux/report_server cmd/report_server/main.go \ + && go build -tags netgo -ldflags "-s -w" -trimpath -buildvcs=false -o bin/linux/sinker cmd/sinker/main.go \ + && go build -tags netgo -ldflags "-s -w" -trimpath -buildvcs=false -o bin/linux/init_app cmd/init_app/main.go echo "build success" \ No newline at end of file diff --git a/cmd/init_app/ck/init.go b/cmd/init_app/ck/init.go index 2252eab..011a99e 100644 --- a/cmd/init_app/ck/init.go +++ b/cmd/init_app/ck/init.go @@ -8,9 +8,19 @@ import ( "log" ) -//初始化clickhouse 表数据 -func Init() { +func CreateDb() (func(), error) { + config := model.GlobConfig.Comm.ClickHouse + dbSource := fmt.Sprintf( + "tcp://%s:%s?username=%s&password=%s&compress=true&database=default", + config.IP, config.Port, config.Username, config.Pwd) + var err error + db.ClickHouseSqlx, err = db.NewSQLX("clickhouse", dbSource, config.MaxOpenConns, config.MaxIdleConns) + if err != nil { + log.Println(fmt.Sprintf("clickhouse 创建 "+model.GlobConfig.Comm.ClickHouse.DbName+" 失败:%s", err.Error())) + panic(err) + } + defer db.ClickHouseSqlx.Close() _, err = db.ClickHouseSqlx.Exec(` create database if not exists ` + model.GlobConfig.Comm.ClickHouse.DbName + ` ` + sinker.GetClusterSql()) @@ -18,6 +28,12 @@ func Init() { log.Println(fmt.Sprintf("clickhouse 建库 "+model.GlobConfig.Comm.ClickHouse.DbName+" 失败:%s", err.Error())) panic(err) } + return func() {}, nil +} + +// 初始化clickhouse 表数据 +func Init() (func(), error) { + var err error _, err = db.ClickHouseSqlx.Exec(`DROP TABLE IF EXISTS xwl_acceptance_status` + sinker.GetClusterSql() + `;`) @@ -102,4 +118,6 @@ func Init() { } log.Println("初始化CK数据完成!") + + return func() {}, nil } diff --git a/cmd/init_app/main.go b/cmd/init_app/main.go index 76963ea..20d6f4b 100644 --- a/cmd/init_app/main.go +++ b/cmd/init_app/main.go @@ -36,6 +36,7 @@ func main() { application.WithConfigFileExt(configFileExt), application.RegisterInitFnObserver(application.InitLogs), application.RegisterInitFnObserver(application.InitMysql), + application.RegisterInitFnObserver(ck.CreateDb), application.RegisterInitFnObserver(application.InitClickHouse), ) diff --git a/config/config.json b/config/config.json index b35ddc6..2345f2d 100644 --- a/config/config.json +++ b/config/config.json @@ -36,8 +36,8 @@ "mysql": { "username":"root", "pwd":"dev123", - "ip":"192.168.78.128", - "port":"3306", + "ip":"192.168.6.83", + "port":"13306", "dbName":"databi", "maxOpenConns":10, "maxIdleConns":10 @@ -45,7 +45,7 @@ "clickhouse": { "username":"root", "pwd":"dev123", - "ip":"192.168.78.128", + "ip":"192.168.6.83", "port":"9000", "dbName":"databi", "clusterName":"", @@ -66,7 +66,7 @@ "realTimeDataGroup": "realTimeDataGroup2" }, "redis": { - "addr":"192.168.78.128:6379", + "addr":"192.168.6.83:6379", "passwd":"", "db": 7, "maxIdle": 10, diff --git a/engine/db/sqlx.go b/engine/db/sqlx.go index 2b18870..6e4d9a5 100644 --- a/engine/db/sqlx.go +++ b/engine/db/sqlx.go @@ -52,12 +52,12 @@ func NewSQLX(driverName, dbSource string, maxOpenConns, maxIdleConns int) (db *s if err != nil { return nil, fmt.Errorf("sqlx ping driver %v source %v error:%v", driverName, dbSource, err) } - + go func() { for { err = db.Ping() if err != nil { - log.Println("mysql db can't connect!") + log.Printf("mysql db can't connect!:%v", err) } time.Sleep(time.Minute) } diff --git a/ops/docker/Dockerfile_init b/ops/docker/Dockerfile_init index f83fc59..dee9752 100644 --- a/ops/docker/Dockerfile_init +++ b/ops/docker/Dockerfile_init @@ -1,8 +1,11 @@ -FROM openjdk:8-jdk-alpine +FROM harbor.devops.u.niu/tools/alpine:3.21 + +RUN apk add libc6-compat && apk add tzdata + WORKDIR /data -COPY init_app . +COPY linux/init_app . RUN mkdir -p config diff --git a/ops/docker/Dockerfile_manager b/ops/docker/Dockerfile_manager index 7264856..7dda4bd 100644 --- a/ops/docker/Dockerfile_manager +++ b/ops/docker/Dockerfile_manager @@ -1,8 +1,10 @@ -FROM openjdk:8-jdk-alpine +FROM harbor.devops.u.niu/tools/alpine:3.21 + +RUN apk add libc6-compat && apk add tzdata WORKDIR /data -COPY manager . +COPY linux/manager . RUN mkdir -p config diff --git a/ops/docker/Dockerfile_reporter b/ops/docker/Dockerfile_reporter new file mode 100644 index 0000000..1624a53 --- /dev/null +++ b/ops/docker/Dockerfile_reporter @@ -0,0 +1,11 @@ +FROM harbor.devops.u.niu/tools/alpine:3.21 + +RUN apk add libc6-compat && apk add tzdata + +WORKDIR /data + +COPY linux/report_server . + +RUN mkdir -p config + +CMD ["./report_server", "-configFileDir=./config"] \ No newline at end of file diff --git a/ops/docker/Dockerfile_sinker b/ops/docker/Dockerfile_sinker new file mode 100644 index 0000000..2df10e9 --- /dev/null +++ b/ops/docker/Dockerfile_sinker @@ -0,0 +1,11 @@ +FROM harbor.devops.u.niu/tools/alpine:3.21 + +RUN apk add libc6-compat && apk add tzdata + +WORKDIR /data + +COPY linux/sinker . + +RUN mkdir -p config + +CMD ["./sinker", "-configFileDir=./config"] \ No newline at end of file diff --git a/ops/docker/build_all.sh b/ops/docker/build_all.sh new file mode 100755 index 0000000..b2e4102 --- /dev/null +++ b/ops/docker/build_all.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +set -e + +apps=(init manager reporter sinker) +build_ctx="../../bin/linux" +img_prefix="harbor.gamegold.net.cn/bi" +img_tag="1.0.1" + +cp -rf ../../bin/linux . + +for app in "${apps[@]}"; do + echo "准备构建:$app" + docker build -t $img_prefix/$app:$img_tag --file Dockerfile_$app . + docker push $img_prefix/$app:$img_tag +done + +rm -rf linux \ No newline at end of file diff --git a/ops/docker/docker-compose.yaml b/ops/docker/docker-compose.yaml new file mode 100644 index 0000000..9745389 --- /dev/null +++ b/ops/docker/docker-compose.yaml @@ -0,0 +1,30 @@ +services: + manager: + image: harbor.devops.u.niu/bi/manager:1.0.0 + restart: always + volumes: + - ./logs:/data/logs + - ./config:/data/config + - /etc/localtime:/etc/localtime + - /etc/timezone:/etc/timezone + ports: + - 11090:8090 + reporter: + image: harbor.devops.u.niu/bi/reporter:1.0.0 + restart: always + volumes: + - ./logs:/data/logs + - ./config:/data/config + - /etc/localtime:/etc/localtime + - /etc/timezone:/etc/timezone + ports: + - 11091:8091 + + sinker: + image: harbor.devops.u.niu/bi/sinker:1.0.0 + restart: always + volumes: + - ./logs:/data/logs + - ./config:/data/config + - /etc/localtime:/etc/localtime + - /etc/timezone:/etc/timezone \ No newline at end of file diff --git a/ops/docker/run.sh b/ops/docker/run.sh new file mode 100644 index 0000000..43066bc --- /dev/null +++ b/ops/docker/run.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set -e + +docker pull harbor.devops.u.niu/bi/init:1.0.0 +docker run -ti -v ./config:/data/config -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone harbor.devops.u.niu/bi/init:1.0.0 + +docker compose up -d \ No newline at end of file diff --git a/platform-basic-libs/util/token.go b/platform-basic-libs/util/token.go index 01fe0ae..4909414 100644 --- a/platform-basic-libs/util/token.go +++ b/platform-basic-libs/util/token.go @@ -10,7 +10,14 @@ import ( var TokenBucket sync.Map func GetUUid() string { - flake := sonyflake.NewSonyflake(sonyflake.Settings{}) + flake := sonyflake.NewSonyflake(sonyflake.Settings{ + MachineID: func() (uint16, error) { + return uint16(1), nil + }, + }) + if flake == nil { + log.Printf("new sony flake error!!") + } id, err := flake.NextID() if err != nil { log.Println("err", err) diff --git a/views/dist/index.html b/views/dist/index.html index 3459bf8..4e0cd38 100644 --- a/views/dist/index.html +++ b/views/dist/index.html @@ -1 +1 @@ -铸龙-埋点数据分析平台
\ No newline at end of file +铸龙-埋点数据分析平台
\ No newline at end of file diff --git a/views/dist/static/js/chunk-689cea2e.29aa4e27.js b/views/dist/static/js/chunk-689cea2e.29aa4e27.js new file mode 100644 index 0000000..353c2c1 --- /dev/null +++ b/views/dist/static/js/chunk-689cea2e.29aa4e27.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-689cea2e"],{"49eb":function(e,t,a){"use strict";a.r(t);var n=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"app-container"},[a("el-card",{staticClass:"box-card",staticStyle:{"min-height":"850px"}},[a("div",{staticStyle:{height:"50px","line-height":"50px",display:"flex","align-items":"center","justify-content":"space-between","border-bottom":"1px solid #f0f2f5"}},[a("a-tooltip",{staticStyle:{cursor:"pointer"},attrs:{placement:"right"}},[a("template",{slot:"title"},[a("span",[e._v("将具有共同特征的用户组建成分群,方便在各种模型中利用分群进行细分筛选分析")])]),e._v(" "),a("span",{staticClass:"title_xwl",staticStyle:{color:"#202d3f"}},[e._v("  用户分群 "),a("a-icon",{attrs:{type:"question-circle"}})],1)],2),e._v(" "),a("div",[a("a-input-search",{staticStyle:{width:"200px"},attrs:{placeholder:"请输入搜索"},model:{value:e.input,callback:function(t){e.input=t},expression:"input"}})],1)],1),e._v(" "),e.tableShow?a("page-table",{attrs:{border:!1,"connect-loading":e.loading,"table-list":e.tableData,"table-info":e.tableInfo,input:e.input}},[a("el-table-column",{attrs:{slot:"operate",align:"center",prop:"id",label:"分群ID",width:"100"},slot:"operate"}),e._v(" "),a("el-table-column",{attrs:{slot:"operate",align:"center",label:"分群名"},slot:"operate",scopedSlots:e._u([{key:"default",fn:function(t){return[t.row.isEdit?a("div",[a("el-input",{attrs:{size:"small"},model:{value:t.row.group_name,callback:function(a){e.$set(t.row,"group_name",a)},expression:"scope.row.group_name"}})],1):a("div",[e._v("\n "+e._s(t.row.group_name)+"\n ")])]}}],null,!1,2716694467)}),e._v(" "),a("el-table-column",{attrs:{slot:"operate",align:"center",label:"分群备注"},slot:"operate",scopedSlots:e._u([{key:"default",fn:function(t){return[t.row.isEdit?a("div",[a("el-input",{attrs:{size:"small"},model:{value:t.row.group_remark,callback:function(a){e.$set(t.row,"group_remark",a)},expression:"scope.row.group_remark"}})],1):a("div",[e._v("\n "+e._s(t.row.group_remark)+"\n ")])]}}],null,!1,1958917379)}),e._v(" "),a("el-table-column",{attrs:{slot:"operate",align:"center",sortable:"",prop:"create_time",label:"创建时间",width:"150"},slot:"operate"}),e._v(" "),a("el-table-column",{attrs:{slot:"operate",align:"center",sortable:"",prop:"update_time",label:"更新时间",width:"150"},slot:"operate"}),e._v(" "),a("el-table-column",{attrs:{slot:"operate",align:"center",sortable:"",prop:"user_count",label:"用户群人数",width:"100"},slot:"operate"}),e._v(" "),a("el-table-column",{attrs:{slot:"operate",align:"center",fixed:"right",label:"操作",width:"500"},slot:"operate",scopedSlots:e._u([{key:"default",fn:function(t){return[t.row.isEdit?a("el-button",{attrs:{size:"mini",icon:"el-icon-check"},nativeOn:{click:function(a){return a.preventDefault(),e.Save(t.row.index,t.row)}}},[e._v("\n 保存\n ")]):e._e(),e._v(" "),t.row.isEdit?e._e():a("el-button",{attrs:{type:"primary",size:"mini",icon:"el-icon-edit"},nativeOn:{click:function(a){return a.preventDefault(),e.Update(t.row.index)}}},[e._v("\n 修改\n ")]),e._v(" "),a("el-button",{attrs:{type:"danger",size:"mini",icon:"el-icon-close"},nativeOn:{click:function(a){return a.preventDefault(),e.Delete(t.row.id,t.$index)}}},[e._v("\n 删除\n ")]),e._v(" "),a("el-button",{attrs:{type:"success",size:"mini",icon:"el-icon-user"},nativeOn:{click:function(a){return a.preventDefault(),e.drillDown(t.row.user_list)}}},[e._v("\n 进入该用户分群\n ")])]}}],null,!1,3216082355)})],1):e._e()],1)],1)},r=[],s=(a("ac6a"),a("c80c")),i=(a("96cf"),a("3b8d")),o=a("fa8d"),l={name:"Tag",components:{PageTable:function(){return a.e("chunk-b022bae4").then(a.bind(null,"e94a"))},AddUserGroup:function(){return a.e("chunk-2d0e1fde").then(a.bind(null,"7d94"))}},data:function(){return{tableInfo:[{slot:"operate"}],tableShow:!0,input:"",loading:!1,tableData:[]}},mounted:function(){this.init()},methods:{drillDown:function(e){this.$store.dispatch("baseData/SETUI",e),this.$router.push({path:"/user-analysis/user_list"})},Delete:function(){var e=Object(i["a"])(Object(s["a"])().mark((function e(t,a){var n=this;return Object(s["a"])().wrap((function(e){while(1)switch(e.prev=e.next){case 0:this.$confirm("确定删除该分群吗?","警告",{confirmButtonText:"确认",cancelButtonText:"取消",type:"warning"}).then(Object(i["a"])(Object(s["a"])().mark((function e(){var r,i;return Object(s["a"])().wrap((function(e){while(1)switch(e.prev=e.next){case 0:return r={appid:n.$store.state.baseData.EsConnectID},r["id"]=t,e.next=4,Object(o["b"])(r);case 4:if(i=e.sent,0==i.code){e.next=8;break}return n.$message({showClose:!0,offset:60,type:"error",message:i.msg}),e.abrupt("return");case 8:n.$message({showClose:!0,offset:60,type:"success",message:i.msg}),n.tableData.splice(a,1),n.refreshTable();case 11:case"end":return e.stop()}}),e)})))).catch((function(e){console.error(e)}));case 1:case"end":return e.stop()}}),e,this)})));function t(t,a){return e.apply(this,arguments)}return t}(),Save:function(){var e=Object(i["a"])(Object(s["a"])().mark((function e(t,a){var n,r,i;return Object(s["a"])().wrap((function(e){while(1)switch(e.prev=e.next){case 0:return n={appid:this.$store.state.baseData.EsConnectID},n["id"]=a["id"],n["name"]=a["group_name"],n["remark"]=a["group_remark"],e.next=6,Object(o["c"])(n);case 6:if(r=e.sent,0==r.code){e.next=10;break}return this.$message({showClose:!0,offset:60,type:"error",message:r.msg}),e.abrupt("return");case 10:this.$message({showClose:!0,offset:60,type:"success",message:r.msg}),e.t0=Object(s["a"])().keys(this.tableData);case 12:if((e.t1=e.t0()).done){e.next=19;break}if(i=e.t1.value,this.tableData[i].index!=t){e.next=17;break}return this.tableData[i].isEdit=!1,e.abrupt("break",19);case 17:e.next=12;break;case 19:this.refreshTable();case 20:case"end":return e.stop()}}),e,this)})));function t(t,a){return e.apply(this,arguments)}return t}(),Update:function(e){for(var t in this.tableData)if(this.tableData[t].index==e){this.tableData[t].isEdit=!0;break}this.refreshTable()},refreshTable:function(){var e=this;this.tableShow=!1,this.$nextTick((function(){e.tableShow=!0}))},init:function(){var e=Object(i["a"])(Object(s["a"])().mark((function e(){var t,a,n;return Object(s["a"])().wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.tableData=[],t={appid:this.$store.state.baseData.EsConnectID},this.loading=!0,e.next=5,Object(o["d"])(t);case 5:if(a=e.sent,this.loading=!1,0==a.code){e.next=11;break}return this.$message({showClose:!0,offset:60,type:"error",message:a.msg}),this.refreshTable(),e.abrupt("return");case 11:for(n in this.$message({showClose:!0,offset:60,type:"success",message:a.msg}),null==a.data&&(a.data=[]),this.tableData=a.data,this.tableData)this.tableData[n].index=n,this.tableData[n].isEdit=!1;this.refreshTable();case 16:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}},c=l,u=a("2877"),p=Object(u["a"])(c,n,r,!1,null,"4f18875c",null);t["default"]=p.exports},fa8d:function(e,t,a){"use strict";a.d(t,"a",(function(){return s})),a.d(t,"c",(function(){return i})),a.d(t,"b",(function(){return o})),a.d(t,"d",(function(){return l})),a.d(t,"e",(function(){return c}));var n=a("b775"),r="/api/user_group/";function s(e){return Object(n["a"])({url:r+"AddUserGroup",method:"post",data:e})}function i(e){return Object(n["a"])({url:r+"ModifyUserGroup",method:"post",data:e})}function o(e){return Object(n["a"])({url:r+"DeleteUserGroup",method:"post",data:e})}function l(e){return Object(n["a"])({url:r+"UserGroupList",method:"post",data:e})}function c(e){return Object(n["a"])({url:r+"UserGroupSelect",method:"post",data:e})}}}]); \ No newline at end of file diff --git a/views/dist/static/js/chunk-689cea2e.9fe40d46.js b/views/dist/static/js/chunk-689cea2e.9fe40d46.js deleted file mode 100644 index cc0f5ca..0000000 --- a/views/dist/static/js/chunk-689cea2e.9fe40d46.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-689cea2e"],{"49eb":function(e,t,a){"use strict";a.r(t);var n=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"app-container"},[a("el-card",{staticClass:"box-card",staticStyle:{"min-height":"850px"}},[a("div",{staticStyle:{height:"50px","line-height":"50px",display:"flex","align-items":"center","justify-content":"space-between","border-bottom":"1px solid #f0f2f5"}},[a("a-tooltip",{staticStyle:{cursor:"pointer"},attrs:{placement:"right"}},[a("template",{slot:"title"},[a("span",[e._v("将具有共同特征的用户组建成分群,方便在各种模型中利用分群进行细分筛选分析")])]),e._v(" "),a("span",{staticClass:"title_xwl",staticStyle:{color:"#202d3f"}},[e._v("  用户分群 "),a("a-icon",{attrs:{type:"question-circle"}})],1)],2),e._v(" "),a("div",[a("a-input-search",{staticStyle:{width:"200px"},attrs:{placeholder:"请输入搜索"},model:{value:e.input,callback:function(t){e.input=t},expression:"input"}})],1)],1),e._v(" "),e.tableShow?a("page-table",{attrs:{border:!1,"connect-loading":e.loading,"table-list":e.tableData,"table-info":e.tableInfo,input:e.input}},[a("el-table-column",{attrs:{slot:"operate",align:"center",prop:"id",label:"分群ID",width:"100"},slot:"operate"}),e._v(" "),a("el-table-column",{attrs:{slot:"operate",align:"center",label:"分群名"},slot:"operate",scopedSlots:e._u([{key:"default",fn:function(t){return[t.row.isEdit?a("div",[a("el-input",{attrs:{size:"small"},model:{value:t.row.group_name,callback:function(a){e.$set(t.row,"group_name",a)},expression:"scope.row.group_name"}})],1):a("div",[e._v("\n "+e._s(t.row.group_name)+"\n ")])]}}],null,!1,3358576963)}),e._v(" "),a("el-table-column",{attrs:{slot:"operate",align:"center",label:"分群备注"},slot:"operate",scopedSlots:e._u([{key:"default",fn:function(t){return[t.row.isEdit?a("div",[a("el-input",{attrs:{size:"small"},model:{value:t.row.group_remark,callback:function(a){e.$set(t.row,"group_remark",a)},expression:"scope.row.group_remark"}})],1):a("div",[e._v("\n "+e._s(t.row.group_remark)+"\n ")])]}}],null,!1,3981738371)}),e._v(" "),a("el-table-column",{attrs:{slot:"operate",align:"center",sortable:"",prop:"create_time",label:"创建时间",width:"150"},slot:"operate"}),e._v(" "),a("el-table-column",{attrs:{slot:"operate",align:"center",sortable:"",prop:"update_time",label:"更新时间",width:"150"},slot:"operate"}),e._v(" "),a("el-table-column",{attrs:{slot:"operate",align:"center",sortable:"",prop:"user_count",label:"用户群人数",width:"100"},slot:"operate"}),e._v(" "),a("el-table-column",{attrs:{slot:"operate",align:"center",fixed:"right",label:"操作",width:"500"},slot:"operate",scopedSlots:e._u([{key:"default",fn:function(t){return[t.row.isEdit?a("el-button",{attrs:{size:"mini",icon:"el-icon-check"},nativeOn:{click:function(a){return a.preventDefault(),e.Save(t.row.index,t.row)}}},[e._v("\n 保存\n ")]):e._e(),e._v(" "),t.row.isEdit?e._e():a("el-button",{attrs:{type:"primary",size:"mini",icon:"el-icon-edit"},nativeOn:{click:function(a){return a.preventDefault(),e.Update(t.row.index)}}},[e._v("\n 修改\n ")]),e._v(" "),a("el-button",{attrs:{type:"danger",size:"mini",icon:"el-icon-close"},nativeOn:{click:function(a){return a.preventDefault(),e.Delete(t.row.id,t.$index)}}},[e._v("\n 删除\n ")]),e._v(" "),a("el-button",{attrs:{type:"success",size:"mini",icon:"el-icon-user"},nativeOn:{click:function(a){return a.preventDefault(),e.drillDown(t.row.user_list)}}},[e._v("\n 进入该用户分群\n ")])]}}],null,!1,3433526579)})],1):e._e()],1)],1)},r=[],s=(a("ac6a"),a("c80c")),i=(a("96cf"),a("3b8d")),o=a("fa8d"),l={name:"Tag",components:{PageTable:function(){return a.e("chunk-b022bae4").then(a.bind(null,"e94a"))},AddUserGroup:function(){return a.e("chunk-2d0e1fde").then(a.bind(null,"7d94"))}},data:function(){return{tableInfo:[{slot:"operate"}],tableShow:!0,input:"",loading:!1,tableData:[]}},mounted:function(){this.init()},methods:{drillDown:function(e){this.$store.dispatch("baseData/SETUI",e),this.$router.push({path:"/user-analysis/user_list"})},Delete:function(){var e=Object(i["a"])(Object(s["a"])().mark((function e(t,a){var n=this;return Object(s["a"])().wrap((function(e){while(1)switch(e.prev=e.next){case 0:this.$confirm("确定删除该分群吗?","警告",{confirmButtonText:"确认",cancelButtonText:"取消",type:"warning"}).then(Object(i["a"])(Object(s["a"])().mark((function e(){var r,i;return Object(s["a"])().wrap((function(e){while(1)switch(e.prev=e.next){case 0:return r={appid:n.$store.state.baseData.EsConnectID},r["id"]=t,e.next=4,Object(o["b"])(r);case 4:if(i=e.sent,0==i.code){e.next=8;break}return n.$message({showClose:!0,offset:60,type:"error",message:i.msg}),e.abrupt("return");case 8:n.$message({showClose:!0,offset:60,type:"success",message:i.msg}),n.tableData.splice(a,1),n.refreshTable();case 11:case"end":return e.stop()}}),e)})))).catch((function(e){console.error(e)}));case 1:case"end":return e.stop()}}),e,this)})));function t(t,a){return e.apply(this,arguments)}return t}(),Save:function(){var e=Object(i["a"])(Object(s["a"])().mark((function e(t,a){var n,r,i;return Object(s["a"])().wrap((function(e){while(1)switch(e.prev=e.next){case 0:return n={appid:this.$store.state.baseData.EsConnectID},n["id"]=a["id"],n["name"]=a["group_name"],n["remark"]=a["group_remark"],e.next=6,Object(o["c"])(n);case 6:if(r=e.sent,0==r.code){e.next=10;break}return this.$message({showClose:!0,offset:60,type:"error",message:r.msg}),e.abrupt("return");case 10:this.$message({showClose:!0,offset:60,type:"success",message:r.msg}),e.t0=Object(s["a"])().keys(this.tableData);case 12:if((e.t1=e.t0()).done){e.next=19;break}if(i=e.t1.value,this.tableData[i].index!=t){e.next=17;break}return this.tableData[i].isEdit=!1,e.abrupt("break",19);case 17:e.next=12;break;case 19:this.refreshTable();case 20:case"end":return e.stop()}}),e,this)})));function t(t,a){return e.apply(this,arguments)}return t}(),Update:function(e){for(var t in this.tableData)if(this.tableData[t].index==e){this.tableData[t].isEdit=!0;break}this.refreshTable()},refreshTable:function(){var e=this;this.tableShow=!1,this.$nextTick((function(){e.tableShow=!0}))},init:function(){var e=Object(i["a"])(Object(s["a"])().mark((function e(){var t,a,n;return Object(s["a"])().wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.tableData=[],t={appid:this.$store.state.baseData.EsConnectID},this.loading=!0,e.next=5,Object(o["d"])(t);case 5:if(a=e.sent,this.loading=!1,0==a.code){e.next=11;break}return this.$message({showClose:!0,offset:60,type:"error",message:a.msg}),this.refreshTable(),e.abrupt("return");case 11:for(n in this.$message({showClose:!0,offset:60,type:"success",message:a.msg}),null==a.data&&(a.data=[]),this.tableData=a.data,this.tableData)this.tableData[n].index=n,this.tableData[n].isEdit=!1;this.refreshTable();case 16:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}},c=l,u=a("2877"),p=Object(u["a"])(c,n,r,!1,null,"ffe0cadc",null);t["default"]=p.exports},fa8d:function(e,t,a){"use strict";a.d(t,"a",(function(){return s})),a.d(t,"c",(function(){return i})),a.d(t,"b",(function(){return o})),a.d(t,"d",(function(){return l})),a.d(t,"e",(function(){return c}));var n=a("b775"),r="/api/user_group/";function s(e){return Object(n["a"])({url:r+"AddUserGroup",method:"post",data:e})}function i(e){return Object(n["a"])({url:r+"ModifyUserGroup",method:"post",data:e})}function o(e){return Object(n["a"])({url:r+"DeleteUserGroup",method:"post",data:e})}function l(e){return Object(n["a"])({url:r+"UserGroupList",method:"post",data:e})}function c(e){return Object(n["a"])({url:r+"UserGroupSelect",method:"post",data:e})}}}]); \ No newline at end of file diff --git a/vue/.env.development b/vue/.env.development index 98f8d93..8489545 100644 --- a/vue/.env.development +++ b/vue/.env.development @@ -3,7 +3,8 @@ ENV = 'development' # base api # 开发环境 -VUE_APP_BASE_API = 'http://localhost:8090/' +#VUE_APP_BASE_API = 'http://192.168.6.83:11090/' +VUE_APP_BASE_API = 'http://192.168.78.128:8090/' VUE_APP_BASE_TITLE = '铸龙-埋点数据分析平台(开发)' # vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable, # to control whether the babel-plugin-dynamic-import-node plugin is enabled. diff --git a/vue/src/views/behavior-analysis/event.vue b/vue/src/views/behavior-analysis/event.vue index a3a29f8..9cf9801 100644 --- a/vue/src/views/behavior-analysis/event.vue +++ b/vue/src/views/behavior-analysis/event.vue @@ -598,6 +598,7 @@ export default { return } this.metaEventList = res.data.event_name_list + console.log("get meta zhibiao:", res.data) const attributeMap = res.data.attributeMap const allAttrOptions = [] diff --git a/vue/vue.config.js b/vue/vue.config.js index 0018b68..714839e 100644 --- a/vue/vue.config.js +++ b/vue/vue.config.js @@ -50,7 +50,7 @@ module.exports = { changeOrigin: true, },*/ [process.env.VUE_APP_BASE_API]: { - target: `http://192.168.78.128:${port}`, + target: `http://192.168.78.128:${port}/mock`, changeOrigin: true, pathRewrite: { ['^' + process.env.VUE_APP_BASE_API]: ''