181 lines
8.4 KiB
Go
181 lines
8.4 KiB
Go
package mysql
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"finclip-app-manager/domain/entity"
|
|
"finclip-app-manager/domain/repository"
|
|
"finclip-app-manager/infrastructure/utility"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
var _ repository.IAppTempInfoRepo = new(AppTempInfoByMysqlRepo)
|
|
|
|
type AppTempInfoByMysqlRepo struct {
|
|
}
|
|
|
|
type AppTempInfoMysql struct {
|
|
Id uint64 `json:"id" gorm:"primary_key;column:id;type:BIGINT(16) AUTO_INCREMENT;comment:'自增id'" sql:"auto_increment;primary_key"`
|
|
AppID string `json:"appId" gorm:"column:app_id;type:varchar(64);comment:id"`
|
|
Name string `json:"name" gorm:"column:name;type:varchar(256);comment:名字"`
|
|
Sequence int `json:"sequence" gorm:"column:sequence;type:INT(4);comment:版本号"`
|
|
AppClass string `json:"appClass" gorm:"column:app_class;type:varchar(64);comment:用途"`
|
|
AppType string `json:"appType" gorm:"column:app_type;type:varchar(64);comment:应用类型--mop使用为了和应用市场区分开"`
|
|
StatusValue string `json:"statusValue" gorm:"column:status_value;type:varchar(64);comment:状态值"`
|
|
StatusReason string `json:"statusReason" gorm:"column:status_reason;type:varchar(64);comment:状态原因"`
|
|
StatusLastUpdated int64 `json:"statusLastUpdated" gorm:"column:status_last_updated;type:BIGINT(16);comment:状态更新时间"`
|
|
StatusModifiedBy string `json:"statusModifiedBy" gorm:"column:status_modified_by;type:varchar(64);comment:状态更新人"`
|
|
DeveloperID string `json:"developerId" gorm:"column:developer_id;type:varchar(64);comment:开发者id"`
|
|
GroupID string `json:"groupId" gorm:"column:group_id;type:varchar(64);comment:组id"`
|
|
Created int64 `json:"created" gorm:"column:created;type:BIGINT(16);comment:创建时间"`
|
|
CreatedBy string `json:"createdBy" gorm:"column:created_by;type:varchar(64);comment:组id"`
|
|
CustomDataDetailDescription string `json:"customDataDetailDescription" gorm:"column:customData_detail_description;type:varchar(64);comment:小程序详细描述"`
|
|
CustomDataSourceFile string `json:"customDataSourceFile" gorm:"column:customData_source_file;type:TEXT;comment:编译文件"`
|
|
CustomDataVersionDescription string `json:"customDataVersionDescription" gorm:"column:customData_version_description;type:varchar(64);comment:小程序编译包版本描述"`
|
|
CustomDataDeveloper string `json:"customDataDeveloper" gorm:"column:customData_developer;type:varchar(64);comment:开发者"`
|
|
Version string `json:"version" gorm:"column:version;type:varchar(64);comment:应用版本"`
|
|
CoreDescription string `json:"coreDescription" gorm:"column:core_description;type:varchar(64);comment:核心描述"`
|
|
Logo string `json:"logo" gorm:"column:logo;type:varchar(64);comment:图标"`
|
|
ProjectType int `gorm:"column:project_type;type:tinyint(1);default:0;comment:'项目类型'"`
|
|
}
|
|
|
|
func (AppTempInfoMysql) TableName() string {
|
|
return "app_temp_info_mysqls"
|
|
}
|
|
|
|
func (b AppTempInfoByMysqlRepo) Insert(ctx context.Context, info *entity.AppTempInfo) error {
|
|
sqlInfo := convertAppTempInfoToAppTempInfoMysql(info)
|
|
return DB.Debug().Model(&AppTempInfoMysql{}).Create(&sqlInfo).Error
|
|
}
|
|
|
|
func (b AppTempInfoByMysqlRepo) UpdateInfo(ctx context.Context, info *entity.AppTempInfo) error {
|
|
query := "app_id = ? and sequence = ?"
|
|
args := []interface{}{info.AppID, info.Sequence}
|
|
sqlInfo := convertAppTempInfoToAppTempInfoMysql(info)
|
|
|
|
params := map[string]interface{}{
|
|
"app_id": sqlInfo.AppID,
|
|
"name": sqlInfo.Name,
|
|
"sequence": sqlInfo.Sequence,
|
|
"app_class": sqlInfo.AppClass,
|
|
"app_type": sqlInfo.AppType,
|
|
"status_value": sqlInfo.StatusValue,
|
|
"status_reason": sqlInfo.StatusValue,
|
|
"status_last_updated": sqlInfo.StatusLastUpdated,
|
|
"status_modified_by": sqlInfo.StatusModifiedBy,
|
|
"developer_id": sqlInfo.DeveloperID,
|
|
"group_id": sqlInfo.GroupID,
|
|
"created": sqlInfo.Created,
|
|
"created_by": sqlInfo.CreatedBy,
|
|
"customData_detail_description": sqlInfo.CustomDataDetailDescription,
|
|
"customData_source_file": sqlInfo.CustomDataSourceFile,
|
|
"customData_version_description": sqlInfo.CustomDataVersionDescription,
|
|
"customData_developer": sqlInfo.CustomDataDeveloper,
|
|
"version": sqlInfo.Version,
|
|
"core_description": sqlInfo.CoreDescription,
|
|
"logo": sqlInfo.Logo,
|
|
}
|
|
|
|
return DB.Model(&AppTempInfoMysql{}).Where(query, args...).Updates(¶ms).Error
|
|
}
|
|
|
|
func (b AppTempInfoByMysqlRepo) GetInfoByAppId(ctx context.Context, appId string) (*entity.AppTempInfo, error) {
|
|
query := "app_id = ? and sequence = ?"
|
|
args := []interface{}{appId, entity.AppTempDefSequence}
|
|
|
|
appTempInfoMysql := AppTempInfoMysql{}
|
|
err := DB.Model(&AppTempInfoMysql{}).Where(query, args...).First(&appTempInfoMysql).Error
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
result := convertAppTempInfoMysqlToAppTempInfo(appTempInfoMysql)
|
|
return &result, err
|
|
}
|
|
|
|
func (b AppTempInfoByMysqlRepo) GetInfoByAppIdAndSeq(ctx context.Context, appId string, seq int) (*entity.AppTempInfo, error) {
|
|
query := "app_id = ? and sequence = ?"
|
|
args := []interface{}{appId, seq}
|
|
|
|
appTempInfoMysql := AppTempInfoMysql{}
|
|
err := DB.Model(&AppTempInfoMysql{}).Where(query, args...).First(&appTempInfoMysql).Error
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
result := convertAppTempInfoMysqlToAppTempInfo(appTempInfoMysql)
|
|
return &result, err
|
|
}
|
|
|
|
func (b AppTempInfoByMysqlRepo) NotFound(err error) bool {
|
|
return err == gorm.ErrRecordNotFound
|
|
}
|
|
|
|
func convertAppTempInfoToAppTempInfoMysql(appTempInfo *entity.AppTempInfo) AppTempInfoMysql {
|
|
result := AppTempInfoMysql{}
|
|
|
|
result.AppID = appTempInfo.AppID
|
|
result.Name = appTempInfo.Name
|
|
result.Sequence = appTempInfo.Sequence
|
|
result.AppClass = appTempInfo.AppClass
|
|
result.AppType = appTempInfo.AppType
|
|
result.StatusValue = appTempInfo.Status.Value
|
|
result.StatusReason = appTempInfo.Status.Reason
|
|
result.StatusLastUpdated = appTempInfo.Status.LastUpdated
|
|
result.StatusModifiedBy = appTempInfo.Status.ModifiedBy
|
|
result.DeveloperID = appTempInfo.DeveloperID
|
|
result.GroupID = appTempInfo.GroupID
|
|
result.Created = appTempInfo.Created
|
|
result.CreatedBy = appTempInfo.CreatedBy
|
|
result.CustomDataDetailDescription = appTempInfo.CustomData.DetailDescription
|
|
result.CustomDataSourceFile = utility.InterfaceToJsonString(appTempInfo.CustomData.SourceFile)
|
|
result.CustomDataVersionDescription = appTempInfo.CustomData.VersionDescription
|
|
result.CustomDataDeveloper = appTempInfo.CustomData.Developer
|
|
result.Version = appTempInfo.Version
|
|
result.CoreDescription = appTempInfo.CoreDescription
|
|
result.Logo = appTempInfo.Logo
|
|
result.ProjectType = appTempInfo.ProjectType
|
|
|
|
return result
|
|
}
|
|
|
|
func convertAppTempInfoMysqlToAppTempInfo(appTempInfoMysql AppTempInfoMysql) entity.AppTempInfo {
|
|
result := entity.AppTempInfo{}
|
|
|
|
status := entity.Status{
|
|
Value: appTempInfoMysql.StatusValue,
|
|
Reason: appTempInfoMysql.StatusReason,
|
|
LastUpdated: appTempInfoMysql.StatusLastUpdated,
|
|
ModifiedBy: appTempInfoMysql.StatusModifiedBy,
|
|
}
|
|
|
|
var sourceFile []entity.CustomDataSourceFile
|
|
json.Unmarshal([]byte(appTempInfoMysql.CustomDataSourceFile), &sourceFile)
|
|
|
|
customData := entity.CustomDataInfo{
|
|
DetailDescription: appTempInfoMysql.CustomDataDetailDescription,
|
|
SourceFile: sourceFile,
|
|
VersionDescription: appTempInfoMysql.CustomDataVersionDescription,
|
|
Developer: appTempInfoMysql.CustomDataDeveloper,
|
|
}
|
|
|
|
result.AppID = appTempInfoMysql.AppID
|
|
result.Name = appTempInfoMysql.Name
|
|
result.Sequence = appTempInfoMysql.Sequence
|
|
result.AppClass = appTempInfoMysql.AppClass
|
|
result.AppType = appTempInfoMysql.AppType
|
|
result.Status = status
|
|
result.DeveloperID = appTempInfoMysql.DeveloperID
|
|
result.GroupID = appTempInfoMysql.GroupID
|
|
result.Created = appTempInfoMysql.Created
|
|
result.CreatedBy = appTempInfoMysql.CreatedBy
|
|
result.CustomData = customData
|
|
result.Version = appTempInfoMysql.Version
|
|
result.CoreDescription = appTempInfoMysql.CoreDescription
|
|
result.Logo = appTempInfoMysql.Logo
|
|
result.ProjectType = appTempInfoMysql.ProjectType
|
|
|
|
return result
|
|
}
|