123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350 |
- package material
- import (
- "eta/eta_api/models/system"
- "eta/eta_api/utils"
- "fmt"
- "github.com/beego/beego/v2/client/orm"
- "github.com/rdlucklib/rdluck_tools/paging"
- "time"
- )
- type Material struct {
- MaterialId int `orm:"column(material_id);pk" description:"素材id"`
- MaterialName string `description:"素材名称"`
- ImgUrl string `description:"素材图片地址"`
- SysUserId int `description:"作者id"`
- SysUserName string `description:"作者名称"`
- ModifyTime time.Time `description:"修改时间"`
- CreateTime time.Time `description:"创建时间"`
- ClassifyId int `description:"分类id"`
- Sort int `description:"排序"`
- }
- // Update 素材字段变更
- func (material *Material) Update(cols []string) (err error) {
- o := orm.NewOrmUsingDB("rddp")
- _, err = o.Update(material, cols...)
- return
- }
- // GetMaterialById 根据素材id获取素材详情
- func GetMaterialById(MaterialId int) (materialInfo *Material, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `select * FROM material where material_id = ? and is_delete = 0`
- err = o.Raw(sql, MaterialId).QueryRow(&materialInfo)
- return
- }
- // AddMultiMaterial 批量添加素材
- func AddMultiMaterial(materialInfoList []*Material) (err error) {
- o := orm.NewOrmUsingDB("rddp")
- _, err = o.InsertMulti(utils.MultiAddNum, materialInfoList)
- if err != nil {
- return
- }
- return
- }
- // UpdateMaterial 更新素材
- func UpdateMaterial(materialInfo *Material, updateMaterialColumn []string) (err error) {
- o := orm.NewOrmUsingDB("rddp")
- to, err := o.Begin()
- if err != nil {
- return
- }
- defer func() {
- if err != nil {
- _ = to.Rollback()
- } else {
- _ = to.Commit()
- }
- }()
- _, err = to.Update(materialInfo, updateMaterialColumn...)
- if err != nil {
- return
- }
- return
- }
- // MaterialListItem 素材推演列表数据
- type MaterialListItem struct {
- MaterialId int `description:"素材id"`
- MaterialName string `description:"素材名称"`
- ImgUrl string `description:"素材图片地址"`
- ModifyTime string `description:"修改时间"`
- CreateTime string `description:"创建时间"`
- SysUserId int `description:"作者id"`
- SysUserName string `description:"作者名称"`
- }
- // GetList 获取素材列表页
- func GetList(condition string, pars []interface{}, startSize, pageSize int) (total int, list []*Material, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := "select a.material_id,a.material_name,a.code,a.pic_url,a.sys_user_id,a.sys_user_name,a.modify_time,a.create_time FROM material as a where 1=1 AND a.is_delete = 0 "
- sql += condition
- sql += ` order by a.modify_time desc,a.material_id desc`
- totalSql := `select count(1) total from (` + sql + `) z `
- err = o.Raw(totalSql, pars).QueryRow(&total)
- if err != nil {
- return
- }
- sql += ` LIMIT ?,? `
- _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
- return
- }
- // MaterialSaveResp 保存素材响应体
- type MaterialSaveResp struct {
- *Material
- }
- func GetMaterialAll() (list []*MaterialClassifyItems, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT material_id,classify_id,material_name AS classify_name, sort
- FROM material `
- _, err = o.Raw(sql).QueryRows(&list)
- return
- }
- // CheckOpMaterialPermission 判断素材操作权限
- func CheckOpMaterialPermission(sysUser *system.Admin, createUserId int) (ok bool) {
- if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN {
- ok = true
- }
- // 如果图表创建人与当前操作人相同的话,那么就是允许操作
- if ok == false && createUserId == sysUser.AdminId {
- ok = true
- }
- // 如果图表权限id 是 1 ,那么允许编辑
- if ok == false && sysUser.ChartPermission == 1 {
- ok = true
- }
- return
- }
- // GetMaterialInfoByAdminId 获取所有我创建的素材,用于分类展示
- func GetMaterialInfoByAdminId(adminId int) (items []*MaterialClassifyItems, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := ` SELECT material_id,classify_id,material_name AS classify_name,code,
- sys_user_id,sys_user_name
- FROM material where sys_user_id = ? ORDER BY sort asc,create_time ASC `
- _, err = o.Raw(sql, adminId).QueryRows(&items)
- return
- }
- func GetMaterialClassify(classifyId int) (classify_id string, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT GROUP_CONCAT(t.classify_id) AS classify_id FROM (
- SELECT a.classify_id FROM material_classify AS a
- WHERE a.classify_id=?
- UNION ALL
- SELECT a.classify_id FROM material_classify AS a
- WHERE a.parent_id=? UNION ALL
- SELECT
- classify_id
- FROM
- material_classify
- WHERE
- parent_id IN ( SELECT classify_id FROM material_classify WHERE parent_id = ? )
- )AS t`
- err = o.Raw(sql, classifyId, classifyId, classifyId).QueryRow(&classify_id)
- return
- }
- type MaterialListItems struct {
- Material
- ParentIds string
- }
- func GetMaterialListByCondition(condition string, pars []interface{}, startSize, pageSize int) (item []*MaterialListItems, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := ` SELECT * FROM material WHERE 1=1 `
- if condition != "" {
- sql += condition
- }
- sql += " ORDER BY create_time DESC LIMIT ?,? "
- _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&item)
- return
- }
- func GetMaterialListCountByCondition(condition string, pars []interface{}) (count int, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := ` SELECT COUNT(1) AS count FROM material WHERE 1=1 `
- if condition != "" {
- sql += condition
- }
- err = o.Raw(sql, pars).QueryRow(&count)
- return
- }
- type MaterialListResp struct {
- Paging *paging.PagingItem
- List []*MaterialListItems
- }
- func AddMaterial(item *Material) (lastId int64, err error) {
- o := orm.NewOrmUsingDB("rddp")
- lastId, err = o.Insert(item)
- return
- }
- func GetMaterialItemsByClassifyId(classifyId int) (list []*MaterialClassifyItems, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT material_id,classify_id,material_name AS classify_name, sort
- FROM material WHERE classify_id = ? AND is_delete = 0 ORDER BY sort `
- _, err = o.Raw(sql, classifyId).QueryRows(&list)
- return
- }
- func GetMaterialAllParentByClassifyId(classifyId int) (ids string, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT
- GROUP_CONCAT(DISTINCT m.classify_id ORDER BY m.level) AS ids
- FROM
- (
- SELECT
- @id AS _id,(
- SELECT
- @id := parent_id
- FROM
- material_classify
- WHERE
- classify_id = _id
- )
- FROM
- (
- SELECT
- @id :=(
- SELECT
- parent_id
- FROM
- material_classify
- WHERE
- classify_id = ?
- )) vm,
- material_classify m
- WHERE
- @id IS NOT NULL
- ) vm
- INNER JOIN material_classify m
- WHERE
- classify_id = vm._id `
- err = o.Raw(sql, classifyId).QueryRow(&ids)
- return
- }
- type MoveMaterialReq struct {
- MaterialId int `description:"素材ID"`
- PrevMaterialId int `description:"上一个素材ID"`
- NextMaterialId int `description:"下一个素材ID"`
- ClassifyId int `description:"分类id"`
- }
- func GetMaterialClassifyCountById(classifyId int) (count int, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT count(1) AS count FROM material_classify WHERE classify_id=? `
- err = o.Raw(sql, classifyId).QueryRow(&count)
- return
- }
- // GetMaterialByClassifyIdAndName 根据分类id和素材名获取图表信息
- func GetMaterialByClassifyIdAndName(classifyId int, name string) (item *Material, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := ` SELECT * FROM material WHERE classify_id = ? and material_name=? `
- err = o.Raw(sql, classifyId, name).QueryRow(&item)
- return
- }
- // GetMaterialNameByIds 根据素材名称
- func GetMaterialNameByIds(ids []int) (items []*Material, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := ` SELECT material_id, material_name FROM material WHERE material_id in (` + utils.GetOrmInReplace(len(ids)) + `) `
- _, err = o.Raw(sql, ids).QueryRows(&items)
- return
- }
- func MoveMaterial(MaterialId, classifyId int) (err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := ` UPDATE material
- SET
- classify_id = ?
- WHERE material_id = ?`
- _, err = o.Raw(sql, classifyId, MaterialId).Exec()
- return
- }
- // UpdateMaterialSortByClassifyId 根据素材id更新排序
- func UpdateMaterialSortByClassifyId(classifyId, nowSort, prevMaterialId int, updateSort string) (err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := ` UPDATE material set sort = ` + updateSort + ` WHERE classify_id=? AND `
- if prevMaterialId > 0 {
- sql += ` (sort > ? or (material_id > ` + fmt.Sprint(prevMaterialId) + ` and sort = ` + fmt.Sprint(nowSort) + `))`
- }
- _, err = o.Raw(sql, classifyId, nowSort).Exec()
- return
- }
- // GetFirstMaterialByClassifyId 获取当前分类下,且排序数相同 的排序第一条的数据
- func GetFirstMaterialByClassifyId(classifyId int) (item *Material, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := ` SELECT * FROM material WHERE classify_id=? order by sort asc,material_id asc limit 1`
- err = o.Raw(sql, classifyId).QueryRow(&item)
- return
- }
- type DetailParams struct {
- Code string `json:"code"`
- Id int `json:"id"`
- ClassifyId int `json:"classifyId"`
- }
- // AddAndEditMaterial 添加/编辑素材的请求数据
- type AddAndEditMaterial struct {
- MaterialId int `description:"素材id"`
- MaterialName string `description:"素材名称"`
- ImgUrl string `description:"素材图片地址"`
- ClassifyId int `description:"分类id"`
- }
- // DeleteMaterial 删除素材的请求数据
- type DeleteMaterial struct {
- MaterialId int `description:"素材id"`
- }
- // RenameMaterialReq 添加/编辑素材的请求数据
- type RenameMaterialReq struct {
- MaterialId int `description:"素材id"`
- MaterialName string `description:"素材名称"`
- }
- func GetMaterialInfoCountByClassifyIds(classifyIds []string) (count int, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := ` SELECT COUNT(1) AS count FROM material WHERE classify_id in(` + utils.GetOrmInReplace(len(classifyIds)) + `)`
- err = o.Raw(sql, classifyIds).QueryRow(&count)
- return
- }
- func GetMaterialCountByNames(materialNames []string) (count int, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT COUNT(1) AS count FROM material WHERE material_name in(` + utils.GetOrmInReplace(len(materialNames)) + `)`
- err = o.Raw(sql, materialNames).QueryRow(&count)
- return
- }
- func GetMaterialCountByName(materialName string) (count int, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT COUNT(1) AS count FROM material WHERE material_name=? `
- err = o.Raw(sql, materialName).QueryRow(&count)
- return
- }
- // GetMaterialMaxSort 获取最大的排序数
- func GetMaterialMaxSort() (sort int, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT MAX(sort) AS sort FROM material `
- err = o.Raw(sql).QueryRow(&sort)
- return
- }
|