✨ Init
This commit is contained in:
		
							
								
								
									
										6
									
								
								service/example/enter.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								service/example/enter.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
package example
 | 
			
		||||
 | 
			
		||||
type ServiceGroup struct {
 | 
			
		||||
	CustomerService
 | 
			
		||||
	FileUploadAndDownloadService
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										69
									
								
								service/example/exa_breakpoint_continue.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								service/example/exa_breakpoint_continue.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,69 @@
 | 
			
		||||
package example
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"errors"
 | 
			
		||||
 | 
			
		||||
	"gorm.io/gorm"
 | 
			
		||||
	"miniapp/global"
 | 
			
		||||
	"miniapp/model/example"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type FileUploadAndDownloadService struct{}
 | 
			
		||||
 | 
			
		||||
//@author: [piexlmax](https://github.com/piexlmax)
 | 
			
		||||
//@function: FindOrCreateFile
 | 
			
		||||
//@description: 上传文件时检测当前文件属性,如果没有文件则创建,有则返回文件的当前切片
 | 
			
		||||
//@param: fileMd5 string, fileName string, chunkTotal int
 | 
			
		||||
//@return: file model.ExaFile, err error
 | 
			
		||||
 | 
			
		||||
func (e *FileUploadAndDownloadService) FindOrCreateFile(fileMd5 string, fileName string, chunkTotal int) (file example.ExaFile, err error) {
 | 
			
		||||
	var cfile example.ExaFile
 | 
			
		||||
	cfile.FileMd5 = fileMd5
 | 
			
		||||
	cfile.FileName = fileName
 | 
			
		||||
	cfile.ChunkTotal = chunkTotal
 | 
			
		||||
 | 
			
		||||
	if errors.Is(global.GVA_DB.Where("file_md5 = ? AND is_finish = ?", fileMd5, true).First(&file).Error, gorm.ErrRecordNotFound) {
 | 
			
		||||
		err = global.GVA_DB.Where("file_md5 = ? AND file_name = ?", fileMd5, fileName).Preload("ExaFileChunk").FirstOrCreate(&file, cfile).Error
 | 
			
		||||
		return file, err
 | 
			
		||||
	}
 | 
			
		||||
	cfile.IsFinish = true
 | 
			
		||||
	cfile.FilePath = file.FilePath
 | 
			
		||||
	err = global.GVA_DB.Create(&cfile).Error
 | 
			
		||||
	return cfile, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//@author: [piexlmax](https://github.com/piexlmax)
 | 
			
		||||
//@function: CreateFileChunk
 | 
			
		||||
//@description: 创建文件切片记录
 | 
			
		||||
//@param: id uint, fileChunkPath string, fileChunkNumber int
 | 
			
		||||
//@return: error
 | 
			
		||||
 | 
			
		||||
func (e *FileUploadAndDownloadService) CreateFileChunk(id uint, fileChunkPath string, fileChunkNumber int) error {
 | 
			
		||||
	var chunk example.ExaFileChunk
 | 
			
		||||
	chunk.FileChunkPath = fileChunkPath
 | 
			
		||||
	chunk.ExaFileID = id
 | 
			
		||||
	chunk.FileChunkNumber = fileChunkNumber
 | 
			
		||||
	err := global.GVA_DB.Create(&chunk).Error
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//@author: [piexlmax](https://github.com/piexlmax)
 | 
			
		||||
//@function: DeleteFileChunk
 | 
			
		||||
//@description: 删除文件切片记录
 | 
			
		||||
//@param: fileMd5 string, fileName string, filePath string
 | 
			
		||||
//@return: error
 | 
			
		||||
 | 
			
		||||
func (e *FileUploadAndDownloadService) DeleteFileChunk(fileMd5 string, filePath string) error {
 | 
			
		||||
	var chunks []example.ExaFileChunk
 | 
			
		||||
	var file example.ExaFile
 | 
			
		||||
	err := global.GVA_DB.Where("file_md5 = ? ", fileMd5).First(&file).
 | 
			
		||||
		Updates(map[string]interface{}{
 | 
			
		||||
			"IsFinish":  true,
 | 
			
		||||
			"file_path": filePath,
 | 
			
		||||
		}).Error
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	err = global.GVA_DB.Where("exa_file_id = ?", file.ID).Delete(&chunks).Unscoped().Error
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										85
									
								
								service/example/exa_customer.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								service/example/exa_customer.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,85 @@
 | 
			
		||||
package example
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"miniapp/global"
 | 
			
		||||
	"miniapp/model/common/request"
 | 
			
		||||
	"miniapp/model/example"
 | 
			
		||||
	"miniapp/model/system"
 | 
			
		||||
	systemService "miniapp/service/system"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type CustomerService struct{}
 | 
			
		||||
 | 
			
		||||
//@author: [piexlmax](https://github.com/piexlmax)
 | 
			
		||||
//@function: CreateExaCustomer
 | 
			
		||||
//@description: 创建客户
 | 
			
		||||
//@param: e model.ExaCustomer
 | 
			
		||||
//@return: err error
 | 
			
		||||
 | 
			
		||||
func (exa *CustomerService) CreateExaCustomer(e example.ExaCustomer) (err error) {
 | 
			
		||||
	err = global.GVA_DB.Create(&e).Error
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//@author: [piexlmax](https://github.com/piexlmax)
 | 
			
		||||
//@function: DeleteFileChunk
 | 
			
		||||
//@description: 删除客户
 | 
			
		||||
//@param: e model.ExaCustomer
 | 
			
		||||
//@return: err error
 | 
			
		||||
 | 
			
		||||
func (exa *CustomerService) DeleteExaCustomer(e example.ExaCustomer) (err error) {
 | 
			
		||||
	err = global.GVA_DB.Delete(&e).Error
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//@author: [piexlmax](https://github.com/piexlmax)
 | 
			
		||||
//@function: UpdateExaCustomer
 | 
			
		||||
//@description: 更新客户
 | 
			
		||||
//@param: e *model.ExaCustomer
 | 
			
		||||
//@return: err error
 | 
			
		||||
 | 
			
		||||
func (exa *CustomerService) UpdateExaCustomer(e *example.ExaCustomer) (err error) {
 | 
			
		||||
	err = global.GVA_DB.Save(e).Error
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//@author: [piexlmax](https://github.com/piexlmax)
 | 
			
		||||
//@function: GetExaCustomer
 | 
			
		||||
//@description: 获取客户信息
 | 
			
		||||
//@param: id uint
 | 
			
		||||
//@return: customer model.ExaCustomer, err error
 | 
			
		||||
 | 
			
		||||
func (exa *CustomerService) GetExaCustomer(id uint) (customer example.ExaCustomer, err error) {
 | 
			
		||||
	err = global.GVA_DB.Where("id = ?", id).First(&customer).Error
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//@author: [piexlmax](https://github.com/piexlmax)
 | 
			
		||||
//@function: GetCustomerInfoList
 | 
			
		||||
//@description: 分页获取客户列表
 | 
			
		||||
//@param: sysUserAuthorityID string, info request.PageInfo
 | 
			
		||||
//@return: list interface{}, total int64, err error
 | 
			
		||||
 | 
			
		||||
func (exa *CustomerService) GetCustomerInfoList(sysUserAuthorityID uint, info request.PageInfo) (list interface{}, total int64, err error) {
 | 
			
		||||
	limit := info.PageSize
 | 
			
		||||
	offset := info.PageSize * (info.Page - 1)
 | 
			
		||||
	db := global.GVA_DB.Model(&example.ExaCustomer{})
 | 
			
		||||
	var a system.SysAuthority
 | 
			
		||||
	a.AuthorityId = sysUserAuthorityID
 | 
			
		||||
	auth, err := systemService.AuthorityServiceApp.GetAuthorityInfo(a)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	var dataId []uint
 | 
			
		||||
	for _, v := range auth.DataAuthorityId {
 | 
			
		||||
		dataId = append(dataId, v.AuthorityId)
 | 
			
		||||
	}
 | 
			
		||||
	var CustomerList []example.ExaCustomer
 | 
			
		||||
	err = db.Where("sys_user_authority_id in ?", dataId).Count(&total).Error
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return CustomerList, total, err
 | 
			
		||||
	} else {
 | 
			
		||||
		err = db.Limit(limit).Offset(offset).Preload("SysUser").Where("sys_user_authority_id in ?", dataId).Find(&CustomerList).Error
 | 
			
		||||
	}
 | 
			
		||||
	return CustomerList, total, err
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										108
									
								
								service/example/exa_file_upload_download.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								service/example/exa_file_upload_download.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,108 @@
 | 
			
		||||
package example
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"errors"
 | 
			
		||||
	"mime/multipart"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"miniapp/global"
 | 
			
		||||
	"miniapp/model/common/request"
 | 
			
		||||
	"miniapp/model/example"
 | 
			
		||||
	"miniapp/utils/upload"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
//@author: [piexlmax](https://github.com/piexlmax)
 | 
			
		||||
//@function: Upload
 | 
			
		||||
//@description: 创建文件上传记录
 | 
			
		||||
//@param: file model.ExaFileUploadAndDownload
 | 
			
		||||
//@return: error
 | 
			
		||||
 | 
			
		||||
func (e *FileUploadAndDownloadService) Upload(file example.ExaFileUploadAndDownload) error {
 | 
			
		||||
	return global.GVA_DB.Create(&file).Error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//@author: [piexlmax](https://github.com/piexlmax)
 | 
			
		||||
//@function: FindFile
 | 
			
		||||
//@description: 查询文件记录
 | 
			
		||||
//@param: id uint
 | 
			
		||||
//@return: model.ExaFileUploadAndDownload, error
 | 
			
		||||
 | 
			
		||||
func (e *FileUploadAndDownloadService) FindFile(id uint) (example.ExaFileUploadAndDownload, error) {
 | 
			
		||||
	var file example.ExaFileUploadAndDownload
 | 
			
		||||
	err := global.GVA_DB.Where("id = ?", id).First(&file).Error
 | 
			
		||||
	return file, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//@author: [piexlmax](https://github.com/piexlmax)
 | 
			
		||||
//@function: DeleteFile
 | 
			
		||||
//@description: 删除文件记录
 | 
			
		||||
//@param: file model.ExaFileUploadAndDownload
 | 
			
		||||
//@return: err error
 | 
			
		||||
 | 
			
		||||
func (e *FileUploadAndDownloadService) DeleteFile(file example.ExaFileUploadAndDownload) (err error) {
 | 
			
		||||
	var fileFromDb example.ExaFileUploadAndDownload
 | 
			
		||||
	fileFromDb, err = e.FindFile(file.ID)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	oss := upload.NewOss()
 | 
			
		||||
	if err = oss.DeleteFile(fileFromDb.Key); err != nil {
 | 
			
		||||
		return errors.New("文件删除失败")
 | 
			
		||||
	}
 | 
			
		||||
	err = global.GVA_DB.Where("id = ?", file.ID).Unscoped().Delete(&file).Error
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EditFileName 编辑文件名或者备注
 | 
			
		||||
func (e *FileUploadAndDownloadService) EditFileName(file example.ExaFileUploadAndDownload) (err error) {
 | 
			
		||||
	var fileFromDb example.ExaFileUploadAndDownload
 | 
			
		||||
	return global.GVA_DB.Where("id = ?", file.ID).First(&fileFromDb).Update("name", file.Name).Error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//@author: [piexlmax](https://github.com/piexlmax)
 | 
			
		||||
//@function: GetFileRecordInfoList
 | 
			
		||||
//@description: 分页获取数据
 | 
			
		||||
//@param: info request.PageInfo
 | 
			
		||||
//@return: list interface{}, total int64, err error
 | 
			
		||||
 | 
			
		||||
func (e *FileUploadAndDownloadService) GetFileRecordInfoList(info request.PageInfo) (list interface{}, total int64, err error) {
 | 
			
		||||
	limit := info.PageSize
 | 
			
		||||
	offset := info.PageSize * (info.Page - 1)
 | 
			
		||||
	keyword := info.Keyword
 | 
			
		||||
	db := global.GVA_DB.Model(&example.ExaFileUploadAndDownload{})
 | 
			
		||||
	var fileLists []example.ExaFileUploadAndDownload
 | 
			
		||||
	if len(keyword) > 0 {
 | 
			
		||||
		db = db.Where("name LIKE ?", "%"+keyword+"%")
 | 
			
		||||
	}
 | 
			
		||||
	err = db.Count(&total).Error
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	err = db.Limit(limit).Offset(offset).Order("updated_at desc").Find(&fileLists).Error
 | 
			
		||||
	return fileLists, total, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//@author: [piexlmax](https://github.com/piexlmax)
 | 
			
		||||
//@function: UploadFile
 | 
			
		||||
//@description: 根据配置文件判断是文件上传到本地或者七牛云
 | 
			
		||||
//@param: header *multipart.FileHeader, noSave string
 | 
			
		||||
//@return: file model.ExaFileUploadAndDownload, err error
 | 
			
		||||
 | 
			
		||||
func (e *FileUploadAndDownloadService) UploadFile(header *multipart.FileHeader, noSave string) (file example.ExaFileUploadAndDownload, err error) {
 | 
			
		||||
	oss := upload.NewOss()
 | 
			
		||||
	filePath, key, uploadErr := oss.UploadFile(header)
 | 
			
		||||
	if uploadErr != nil {
 | 
			
		||||
		panic(uploadErr)
 | 
			
		||||
	}
 | 
			
		||||
	s := strings.Split(header.Filename, ".")
 | 
			
		||||
	f := example.ExaFileUploadAndDownload{
 | 
			
		||||
		Url:  filePath,
 | 
			
		||||
		Name: header.Filename,
 | 
			
		||||
		Tag:  s[len(s)-1],
 | 
			
		||||
		Key:  key,
 | 
			
		||||
	}
 | 
			
		||||
	if noSave == "0" {
 | 
			
		||||
		return f, e.Upload(f)
 | 
			
		||||
	}
 | 
			
		||||
	return f, nil
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user