bi/platform-basic-libs/service/pannel/pannel_service.go

258 lines
6.8 KiB
Go
Raw Normal View History

2022-01-26 16:40:50 +08:00
package pannel
import (
"database/sql"
"errors"
"fmt"
"github.com/1340691923/xwl_bi/engine/db"
"github.com/1340691923/xwl_bi/model"
"github.com/1340691923/xwl_bi/platform-basic-libs/request"
"strconv"
)
type PannelService struct {
}
func (this *PannelService) UpdatePannelManager(managers string, id int, managerUid int32) (err error) {
_, err = db.SqlBuilder.Update("pannel").SetMap(map[string]interface{}{
"managers": managers,
}).Where(db.Eq{"id": id, "create_by": managerUid}).RunWith(db.Sqlx).Exec()
return
}
func (this *PannelService) RtListByAppid(appid int) (res map[int]model.ReportTable, err error) {
res = map[int]model.ReportTable{}
sql, args, err := db.SqlBuilder.Select("id,name,rt_type,data").From("report_table").Where(db.Eq{"appid": appid}).ToSql()
if err != nil {
return nil, err
}
rows, err := db.Sqlx.Query(sql, args...)
if err != nil {
return nil, err
}
defer rows.Close()
for rows.Next() {
var rtid int
var tmp model.ReportTable
err := rows.Scan(&rtid, &tmp.Name, &tmp.RtType, &tmp.Data)
if err != nil {
return nil, err
}
res[rtid] = tmp
}
return res, nil
}
func (this *PannelService) UpdatePannelRt(reportTables string, id int, managerUid int32) (err error) {
_, err = db.SqlBuilder.
Update("pannel").
SetMap(map[string]interface{}{
"report_tables": reportTables,
}).
Where(db.Eq{"id": id, "create_by": managerUid}).
RunWith(db.Sqlx).
Exec()
return
}
func (this *PannelService) CopyPannel(data model.Pannel, managerUid int32) (err error) {
_, err = db.Sqlx.Exec(`insert into pannel(folder_id,pannel_name,create_by,report_tables) values (?,?,?,?)`,
data.FolderId, data.PannelName, managerUid, data.ReportTables)
return
}
func (this *PannelService) DeleteDir(data model.PannelFolder) (err error) {
_, err = db.Sqlx.Exec(`
DELETE p1,p2 FROM
pannel_folder p1
LEFT JOIN pannel p2 ON p1.id = p2.folder_id where p1.id = ? and p1.appid = ? and p1.create_by = ?`, data.Id, data.Appid, data.CreateBy)
return
}
func (this *PannelService) DeletePannel(id int, managerUid int32) (err error) {
_, err = db.SqlBuilder.
Delete("pannel").
Where(db.Eq{"id": id, "create_by": managerUid}).
RunWith(db.Sqlx).
Exec()
return
}
func (this *PannelService) MovePannel2Dir(id, folderId int, managerUid int32) (err error) {
_, err = db.SqlBuilder.
Update("pannel").
SetMap(map[string]interface{}{"folder_id": folderId}).
Where(db.Eq{"id": id, "create_by": managerUid}).
RunWith(db.Sqlx).
Exec()
return
}
func (this *PannelService) Rename(pannelName string, id int, managerUid int32) (err error) {
_, err = db.SqlBuilder.
Update("pannel").
2022-03-16 16:04:29 +08:00
SetMap(map[string]interface{}{"pannel_name": pannelName}).
2022-01-26 16:40:50 +08:00
Where(db.Eq{"id": id, "create_by": managerUid}).
RunWith(db.Sqlx).
Exec()
return
}
func (this *PannelService) AddDir(data request.NewDir) (err error) {
_, err = db.SqlBuilder.Insert("pannel_folder").
SetMap(map[string]interface{}{
"appid": data.Appid,
"create_by": data.CreateBy,
"folder_name": data.FolderName,
}).RunWith(db.Sqlx).Exec()
return
}
func (this *PannelService) AddPannel(data request.NewPannel, managerUid int32) (err error) {
_, err = db.SqlBuilder.
Insert("pannel").
SetMap(map[string]interface{}{
"folder_id": data.FolderId,
"pannel_name": data.PannelName,
"create_by": managerUid,
}).RunWith(db.Sqlx).Exec()
return
}
type Pannel struct {
Folder_name string `json:"folder_name" db:"folder_name"`
FolderType int `json:"folder_type" db:"folder_type"`
FolderId int `json:"folder_id" db:"folder_id"`
PannelId int `json:"pannel_id" db:"pannel_id"`
PannelName string `json:"pannel_name" db:"pannel_name"`
Managers string `json:"managers" db:"managers"`
ReportTables string `json:"report_tables" db:"report_tables"`
CreateBy int `json:"create_by" db:"create_by"`
}
func (this *PannelService) GetPannelList(managerUid int32, appid int) (res []Pannel, err error) {
sql := `
SELECT
p1.folder_name,
p1.id AS folder_id,
ifnull(p2.report_tables,'') as report_tables ,
ifnull(p2.id,0)as pannel_id,
2022-03-08 14:23:21 +08:00
ifnull(p2.pannel_name,'') as pannel_name,ifnull(p1.create_by,0) as create_by,ifnull(FIND_IN_SET(?,p2.managers),0) as folder_type,ifnull(p2.managers,'') as managers
2022-01-26 16:40:50 +08:00
FROM
pannel_folder p1
LEFT JOIN pannel p2 ON p1.id = p2.folder_id
WHERE
2022-03-08 14:23:21 +08:00
(p1.create_by = ? OR FIND_IN_SET(?,p2.managers) ) and appid= ?`
2022-01-26 16:40:50 +08:00
err = db.Sqlx.Select(&res, sql, managerUid, managerUid, managerUid, appid)
if err != nil {
return
}
var userModel model.GmUserModel
list, err := userModel.Select(strconv.Itoa(appid))
if err != nil {
return
}
userMap := map[int]string{}
for _, v := range list {
userMap[int(v.ID)] = v.Realname
}
for k, v := range res {
if v.FolderType != 0 {
if _, ok := userMap[v.CreateBy]; ok {
res[k].PannelName = fmt.Sprintf("%s(%s)", res[k].PannelName, userMap[v.CreateBy])
res[k].Folder_name = "共享文件夹"
res[k].FolderId = -1
}
}
}
return
}
2022-03-16 16:04:29 +08:00
func (this *PannelService) FindRtById(id int, managerUid int32) (reportTable model.ReportTable, err error) {
2022-01-26 16:40:50 +08:00
sqls, args, err := db.SqlBuilder.
Select("*").
From("report_table").
Where(db.Eq{"id": id, "user_id": managerUid}).
ToSql()
if err != nil {
2022-03-16 16:04:29 +08:00
return reportTable, err
2022-01-26 16:40:50 +08:00
}
if err := db.Sqlx.Get(&reportTable, sqls, args...); err != nil {
if err == sql.ErrNoRows {
2022-03-16 16:04:29 +08:00
return reportTable, errors.New("您无权限操作该报表或该报表已被删除")
2022-01-26 16:40:50 +08:00
}
2022-03-16 16:04:29 +08:00
return reportTable, err
2022-01-26 16:40:50 +08:00
}
2022-03-16 16:04:29 +08:00
return reportTable, err
2022-01-26 16:40:50 +08:00
}
2022-03-16 16:04:29 +08:00
func (this *PannelService) FindNameCount(data request.FindNameCount, managerUid int32) (count int, err error) {
2022-01-26 16:40:50 +08:00
if err := db.SqlBuilder.
Select("count(1)").
From("report_table").
Where(db.Eq{"name": data.Name, "rt_type": data.RtType, "appid": data.Appid, "user_id": managerUid}).
RunWith(db.Sqlx).
QueryRow().
2022-03-16 16:04:29 +08:00
Scan(&count); err != nil {
return 0, err
2022-01-26 16:40:50 +08:00
}
2022-03-16 16:04:29 +08:00
return count, nil
2022-01-26 16:40:50 +08:00
}
2022-03-16 16:04:29 +08:00
func (this *PannelService) DeleteReportTableByID(data model.ReportTable, managerUid int32) (err error) {
if _, err := db.SqlBuilder.Delete("report_table").Where(db.Eq{"id": data.Id, "user_id": managerUid}).RunWith(db.Sqlx).Exec(); err != nil {
2022-01-26 16:40:50 +08:00
return err
}
if _, err := db.Sqlx.Exec(`UPDATE pannel SET report_tables = TRIM(BOTH ',' FROM REPLACE(CONCAT(',', report_tables, ','), concat(',',?,','), ','))
WHERE FIND_IN_SET(?, report_tables) and create_by = ?`, data.Id, data.Id, managerUid); err != nil {
return err
}
return nil
}
2022-03-16 16:04:29 +08:00
func (this *PannelService) ReportTableList(appid int, rtType int8, managerUid int32) (list []model.ReportTable, err error) {
2022-01-26 16:40:50 +08:00
where := db.Eq{
"appid": appid,
"user_id": managerUid,
}
if rtType != 0 {
where["rt_type"] = rtType
}
sql, args, err := db.SqlBuilder.Select("*").From("report_table").Where(where).OrderBy("rt_type").ToSql()
if err != nil {
2022-03-16 16:04:29 +08:00
return nil, err
2022-01-26 16:40:50 +08:00
}
if err := db.Sqlx.Select(&list, sql, args...); err != nil {
2022-03-16 16:04:29 +08:00
return nil, err
2022-01-26 16:40:50 +08:00
}
2022-03-16 16:04:29 +08:00
return list, nil
2022-01-26 16:40:50 +08:00
2022-03-16 16:04:29 +08:00
}