瀏覽代碼

投研资源库4.0

hsun 2 天之前
父節點
當前提交
33334f9dd8
共有 8 個文件被更改,包括 324 次插入25 次删除
  1. 166 0
      controllers/eta_business/eta_business.go
  2. 0 2
      go.mod
  3. 5 14
      go.sum
  4. 59 0
      models/chart_permission.go
  5. 9 1
      models/db.go
  6. 56 0
      models/eta_business/business_report_permission.go
  7. 18 0
      routers/commentsRouter.go
  8. 11 8
      utils/config.go

+ 166 - 0
controllers/eta_business/eta_business.go

@@ -1871,3 +1871,169 @@ func (this *EtaBusinessController) AllList() {
 	br.Success = true
 	br.Msg = "获取成功"
 }
+
+// GetReportPermission
+// @Title 获取报告分类权限
+// @Description 获取报告分类权限
+// @Param   EtaBusinessId  query  int  false  "商户ID"
+// @Success 200 Ret=200 操作成功
+// @router /get_report_permission [get]
+func (this *EtaBusinessController) GetReportPermission() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	etaBusinessId, _ := this.GetInt("EtaBusinessId")
+
+	permissions := make([]*models.ChartPermission, 0)
+	{
+		permissionOb := new(models.ChartPermission)
+		cond := ` AND product_id = 1`
+		pars := make([]interface{}, 0)
+		list, e := permissionOb.GetItemsByCondition(cond, pars)
+		if e != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = fmt.Sprintf("获取品种分类失败, %v", e)
+			return
+		}
+		permissions = list
+	}
+
+	// 品种树
+	resp := new(models.BusinessReportPermissionResp)
+	resp.CheckList = make([]int, 0)
+	resp.List = make([]*models.ChartPermissionItem, 0)
+	childMap := make(map[int][]*models.ChartPermissionItem)
+
+	for _, v := range permissions {
+		t := new(models.ChartPermissionItem)
+		t.PermissionId = v.ChartPermissionId
+		t.PermissionName = v.PermissionName
+		t.ParentId = v.ParentId
+		t.IsPublic = v.IsPublic
+		t.Enabled = v.Enabled
+		t.Sort = v.Sort
+		t.CreateTime = v.CreatedTime.Format(utils.FormatDateTime)
+		t.Child = make([]*models.ChartPermissionItem, 0)
+		if v.ParentId == 0 {
+			resp.List = append(resp.List, t)
+			continue
+		}
+		if v.ParentId > 0 {
+			if childMap[v.ParentId] == nil {
+				childMap[v.ParentId] = make([]*models.ChartPermissionItem, 0)
+			}
+			childMap[v.ParentId] = append(childMap[v.ParentId], t)
+		}
+	}
+	for _, r := range resp.List {
+		r.Child = childMap[r.PermissionId]
+	}
+
+	// 获取商家勾选权限
+	if etaBusinessId > 0 {
+		selected, e := eta_business.GetBusinessReportPermission(etaBusinessId)
+		if e != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = fmt.Sprintf("获取商家已勾选报告权限失败, %v", e)
+			return
+		}
+		for _, v := range selected {
+			resp.CheckList = append(resp.CheckList, v.ChartPermissionId)
+		}
+	}
+
+	br.Data = resp
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+}
+
+// AddReportPermission
+// @Title 设置报告分类权限
+// @Description 设置报告分类权限
+// @Param	request	body eta_business.AddBusinessReportPermissionReq true "type json string"
+// @Success 200 {object} system.SysRoleListResp
+// @router /add_report_permission [post]
+func (this *EtaBusinessController) AddReportPermission() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		return
+	}
+	var req eta_business.AddBusinessReportPermissionReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.EtaBusinessId <= 0 {
+		br.Msg = "请选择商户"
+		return
+	}
+
+	// 权限校验
+	ok, e := etaBusinessService.CheckEtaBusinessOperateAuth(sysUser.RoleTypeCode)
+	if e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "操作权限校验失败, ErrMsg: " + e.Error()
+		return
+	}
+	if !ok {
+		br.Msg = "无权操作"
+		return
+	}
+
+	ob := new(eta_business.EtaBusiness)
+	businessInfo, e := ob.GetItemById(req.EtaBusinessId)
+	if e != nil {
+		if e.Error() == utils.ErrNoRow() {
+			br.Msg = "商家不存在, 请刷新页面"
+			return
+		}
+		br.Msg = "操作失败"
+		br.ErrMsg = fmt.Sprintf("获取商户信息失败, %v", e)
+		return
+	}
+	addList := make([]*eta_business.BusinessReportPermission, 0)
+	for _, v := range req.ChartPermissionIds {
+		item := new(eta_business.BusinessReportPermission)
+		item.ChartPermissionId = v
+		item.BusinessCode = businessInfo.BusinessCode
+		item.EtaBusinessId = req.EtaBusinessId
+		item.CreateTime = time.Now()
+		item.ModifyTime = time.Now()
+		item.AdminId = sysUser.AdminId
+		addList = append(addList, item)
+	}
+
+	err = eta_business.AddBusinessReportPermission(addList, businessInfo.BusinessCode)
+	if err != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = fmt.Sprintf("设置商户报告权限失败, %v", err)
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.IsAddLog = true
+	br.Msg = "操作成功"
+}

+ 0 - 2
go.mod

@@ -46,7 +46,6 @@ require (
 	github.com/json-iterator/go v1.1.12 // indirect
 	github.com/klauspost/compress v1.17.9 // indirect
 	github.com/klauspost/cpuid/v2 v2.2.8 // indirect
-	github.com/kr/text v0.2.0 // indirect
 	github.com/mailru/easyjson v0.7.7 // indirect
 	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
 	github.com/minio/md5-simd v1.1.2 // indirect
@@ -62,7 +61,6 @@ require (
 	github.com/prometheus/procfs v0.9.0 // indirect
 	github.com/rs/xid v1.5.0 // indirect
 	github.com/shiena/ansicolor v0.0.0-20200904210342-c7312218db18 // indirect
-	github.com/stretchr/testify v1.9.0 // indirect
 	github.com/xdg-go/pbkdf2 v1.0.0 // indirect
 	github.com/xdg-go/scram v1.1.2 // indirect
 	github.com/xdg-go/stringprep v1.0.4 // indirect

+ 5 - 14
go.sum

@@ -129,6 +129,7 @@ github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uG
 github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
 github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
 github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
+github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
 github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
 github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
 github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
@@ -138,8 +139,6 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr
 github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
 github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
 github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
-github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc=
-github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
 github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
 github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
 github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
@@ -251,14 +250,15 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
-github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
 github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
 github.com/syndtr/goleveldb v0.0.0-20160425020131-cfa635847112/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0=
 github.com/syndtr/goleveldb v0.0.0-20181127023241-353a9fca669c/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0=
 github.com/tealeg/xlsx v1.0.5 h1:+f8oFmvY8Gw1iUXzPk+kz+4GpbDZPK1FhPiQRd+ypgE=
 github.com/tealeg/xlsx v1.0.5/go.mod h1:btRS8dz54TDnvKNosuAqxrM1QgN1udgk9O34bDCnORM=
+github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o=
 github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
+github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg=
 github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
 github.com/ugorji/go v0.0.0-20171122102828-84cb69a8af83/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ=
 github.com/wendal/errors v0.0.0-20130201093226-f66c77a7882b/go.mod h1:Q12BUT7DqIlHRmgv3RskH+UCM/4eqVMgI0EMmlSpAXc=
@@ -275,14 +275,13 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t
 github.com/yuin/gopher-lua v0.0.0-20171031051903-609c9cd26973/go.mod h1:aEV29XrmTYFr3CiRxZeGHpkvbwq+prZduBqMaascyCU=
 go.mongodb.org/mongo-driver v1.15.0 h1:rJCKC8eEliewXjZGf0ddURtl7tTVy1TK3bfl0gkUSLc=
 go.mongodb.org/mongo-driver v1.15.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c=
+go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
 go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo=
-golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
 golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI=
 golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
 golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -304,8 +303,6 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
 golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
-golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
 golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
 golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -314,8 +311,6 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
-golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
 golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
 golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -334,8 +329,6 @@ golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBc
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
-golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
 golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@@ -344,8 +337,6 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/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/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
-golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
-golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
 golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
 golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
 golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg=

+ 59 - 0
models/chart_permission.go

@@ -0,0 +1,59 @@
+package models
+
+import (
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// ChartPermission 报告权限表
+type ChartPermission struct {
+	ChartPermissionId     int       `orm:"column(chart_permission_id);pk" gorm:"column:chart_permission_id;primaryKey"` //`orm:"column(chart_permission_id);pk" gorm:"primaryKey"  description:"问题ID" json:"chart_permission_id"`
+	ChartPermissionName   string    `gorm:"column:chart_permission_name"`                                               //`description:"名称" json:"chart_permission_name"`
+	PermissionName        string    `gorm:"column:permission_name"`                                                     //`description:"权限名" json:"permission_name"`
+	Sort                  int       `gorm:"column:sort"`                                                                //`description:"排序" json:"sort"`
+	Enabled               int       `gorm:"column:enabled"`                                                             //`description:"是否可用" json:"enabled"`
+	CreatedTime           time.Time `gorm:"column:created_time"`                                                        //`description:"创建时间" json:"created_time"`
+	LastUpdatedTime       time.Time `gorm:"column:last_updated_time"`                                                   //`description:"更新时间" json:"last_updated_time"`
+	TeleconferenceSort    int       `gorm:"column:teleconference_sort"`                                                 //`description:"电话会类型排序" json:"teleconference_sort"`
+	Remark                string    `gorm:"column:remark"`                                                              //`description:"备注" json:"remark"`
+	ClassifyName          string    `gorm:"column:classify_name"`                                                       //`description:"分类名称" json:"classify_name"`
+	ProductName           string    `gorm:"column:product_name"`                                                        //`description:"产品名称" json:"product_name"`
+	ProductId             int       `gorm:"column:product_id"`                                                          //`description:"产品ID" json:"product_id"`
+	ImageURL              string    `gorm:"column:image_url"`                                                           //`orm:"column(image_url);" description:"图片地址" json:"image_url"`
+	ShowType              int       `gorm:"column:show_type"`                                                           //`description:"1:查研观向小程序展示" json:"show_type"`
+	IsOther               int       `gorm:"column:is_other"`                                                            //`description:"是否是其他,用于查研观向小程序后台展示" json:"is_other"`
+	IsReport              int       `gorm:"column:is_report"`                                                           //`description:"是否是报告,用于查研观向小程序前台报告展示" json:"is_report"`
+	CygxAuth              int       `gorm:"column:cygx_auth"`                                                           //`description:"是否是权限,用于查研观向小程序前台权限校验" json:"cygx_auth"`
+	PermissionType        int       `gorm:"column:permission_type"`                                                     //`description:"1主观,2客观" json:"permission_type"`
+	YbImgUrl              string    `gorm:"column:yb_img_url"`                                                          //`description:"研报小程序报告列表icon" json:"yb_img_url"`
+	ProductPermissionName string    `gorm:"column:product_permission_name"`                                             //`description:"种类权限名称" json:"product_permission_name"`
+	PriceDrivenState      int       `gorm:"column:price_driven_state"`                                                  //`description:"品种价格驱动开启状态 0-关闭 1-开启" json:"price_driven_state"`
+	ImageUrlM             string    `gorm:"column:image_url_m"`                                                         //`description:"图片地址(查研观向移动端)" json:"image_url_m"`
+	ParentId              int       `gorm:"column:parent_id"`                                                           //`description:"父级权限id" json:"parent_id"`
+	IsPublic              int       `gorm:"column:is_public"`                                                           //`description:"是否是公有权限1:公有权限,0私有权限" json:"is_public"`
+}
+
+// GetItemsByCondition 查询列表
+func (m *ChartPermission) GetItemsByCondition(condition string, pars []interface{}) (items []*ChartPermission, err error) {
+	o := orm.NewOrmUsingDB("weekly")
+	sql := fmt.Sprintf(`SELECT * FROM chart_permission WHERE 1=1 %s ORDER BY sort ASC, chart_permission_id ASC`, condition)
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+type ChartPermissionItem struct {
+	PermissionId   int                    `description:"品种权限ID"`
+	PermissionName string                 `description:"品种权限名称"`
+	ParentId       int                    `description:"父级ID"`
+	Enabled        int                    `description:"是否可用:1可用,0不可用" `
+	Sort           int                    `description:"排序"`
+	CreateTime     string                 `description:"创建时间"`
+	IsPublic       int                    `description:"是否是公有权限1:公有权限,0私有权限"`
+	Child          []*ChartPermissionItem `description:"子分类"`
+}
+
+type BusinessReportPermissionResp struct {
+	CheckList []int                  `description:"选中的权限"`
+	List      []*ChartPermissionItem `description:"权限列表"`
+}

+ 9 - 1
models/db.go

@@ -21,6 +21,13 @@ func init() {
 	db, _ := orm.GetDB("default")
 	db.SetConnMaxLifetime(10 * time.Minute)
 
+	_ = orm.RegisterDataBase("weekly", "mysql", utils.MYSQL_WEEKLY_URL)
+	orm.SetMaxIdleConns("weekly", 50)
+	orm.SetMaxOpenConns("weekly", 100)
+
+	weeklyDb, _ := orm.GetDB("weekly")
+	weeklyDb.SetConnMaxLifetime(10 * time.Minute)
+
 	orm.Debug = true
 	orm.DebugLog = orm.NewLog(utils.Binlog)
 
@@ -92,6 +99,7 @@ func initEtaBusiness() {
 		new(eta_business.EtaBusinessMenuIcon),             // ETA商家菜单icon表
 		new(User),                                         // 商家用户表
 		new(eta_business.BusinessChartClassifyPermission), //商家图表权限表
+		new(eta_business.BusinessReportPermission),        // 商家报告权限表
 	)
 }
 
@@ -116,7 +124,7 @@ func initHelpDoc() {
 	orm.RegisterModel(
 		new(help_doc.HelpDocClassify), //分类
 		new(help_doc.HelpDoc),         //文章
-		new(Resource),        //文件
+		new(Resource),                 //文件
 	)
 }
 

+ 56 - 0
models/eta_business/business_report_permission.go

@@ -0,0 +1,56 @@
+package eta_business
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type BusinessReportPermission struct {
+	BusinessReportPermissionId int       `orm:"column(business_report_permission_id);pk"`
+	ChartPermissionId          int       `description:"权限ID"`
+	EtaBusinessId              int       `description:"商家ID"`
+	BusinessCode               string    `description:"商户号"`
+	AdminId                    int       `description:"操作人ID"`
+	CreateTime                 time.Time `description:"创建时间"`
+	ModifyTime                 time.Time `description:"更新时间"`
+}
+
+func AddBusinessReportPermission(list []*BusinessReportPermission, businessCode string) (err error) {
+	// 事务,先执行删除,再新增
+	o := orm.NewOrm()
+
+	to, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
+	}()
+	sql := `DELETE FROM business_report_permission WHERE business_code = ?`
+	_, err = to.Raw(sql, businessCode).Exec()
+	if err != nil {
+		return
+	}
+	if len(list) > 0 {
+		_, err = o.InsertMulti(len(list), list)
+		return
+	}
+	return
+}
+
+type AddBusinessReportPermissionReq struct {
+	EtaBusinessId      int   `description:"商家ID"`
+	ChartPermissionIds []int `description:"报告分类IDs"`
+}
+
+// GetBusinessReportPermission 获取商家报告权限
+func GetBusinessReportPermission(businessId int) (list []*BusinessReportPermission, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM business_report_permission WHERE eta_business_id = ?`
+	_, err = o.Raw(sql, businessId).QueryRows(&list)
+	return
+}

+ 18 - 0
routers/commentsRouter.go

@@ -25,6 +25,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_forum_admin/controllers/eta_business:EtaBusinessController"] = append(beego.GlobalControllerRouter["eta/eta_forum_admin/controllers/eta_business:EtaBusinessController"],
+        beego.ControllerComments{
+            Method: "AddReportPermission",
+            Router: `/add_report_permission`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_forum_admin/controllers/eta_business:EtaBusinessController"] = append(beego.GlobalControllerRouter["eta/eta_forum_admin/controllers/eta_business:EtaBusinessController"],
         beego.ControllerComments{
             Method: "ContractList",
@@ -79,6 +88,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_forum_admin/controllers/eta_business:EtaBusinessController"] = append(beego.GlobalControllerRouter["eta/eta_forum_admin/controllers/eta_business:EtaBusinessController"],
+        beego.ControllerComments{
+            Method: "GetReportPermission",
+            Router: `/get_report_permission`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_forum_admin/controllers/eta_business:EtaBusinessController"] = append(beego.GlobalControllerRouter["eta/eta_forum_admin/controllers/eta_business:EtaBusinessController"],
         beego.ControllerComments{
             Method: "AllList",

+ 11 - 8
utils/config.go

@@ -9,14 +9,15 @@ import (
 )
 
 var (
-	RunMode       string //运行模式
-	APP_NAME_CN   string
-	MYSQL_URL     string        //数据库连接
-	Re            error         //redis错误
-	Rc            RedisClient   //redis缓存
-	MgoUrlData    string        // mongodb数据库连接配置
-	MgoDataCli    *mongo.Client // mongodb客户端连接
-	MgoDataDbName string        // mongodb指标数据的库名
+	RunMode          string //运行模式
+	APP_NAME_CN      string
+	MYSQL_URL        string        //数据库连接
+	MYSQL_WEEKLY_URL string        //用户主库
+	Re               error         //redis错误
+	Rc               RedisClient   //redis缓存
+	MgoUrlData       string        // mongodb数据库连接配置
+	MgoDataCli       *mongo.Client // mongodb客户端连接
+	MgoDataDbName    string        // mongodb指标数据的库名
 )
 
 // ES配置
@@ -166,6 +167,8 @@ func init() {
 	}
 	APP_NAME_CN = appNameCn
 	MYSQL_URL = config["mysql_url"]
+	MYSQL_WEEKLY_URL = config["mysql_url_weekly"]
+
 	// mongodb数据库连接配置
 	MgoUrlData = config["mgo_url_data"]
 	//日志配置