column_setting.go 3.4 KB
package domain

import "time"

// 默认选中栏目
var DefaultColumns = []Column{
	{
		Id:       "index",
		ParamCn:  "序号",
		ParamFix: 1,
	}, {
		Id:       "orderId",
		ParamCn:  "订单号",
		ParamFix: 1,
	}, {
		Id:       "shipmentsId",
		ParamCn:  "发货单号",
		ParamFix: 2,
	}, {
		Id:       "saleDate",
		ParamCn:  "销售日期",
		ParamFix: 2,
	}, {
		Id:       "orderNum",
		ParamCn:  "订单数量",
		ParamFix: 2,
	}, {
		Id:       "quantityControl",
		ParamCn:  "数量调整",
		ParamFix: 2,
	}, {
		Id:       "orderPrice",
		ParamCn:  "订单金额",
		ParamFix: 2,
	}, {
		Id:       "priceControl",
		ParamCn:  "金额调整",
		ParamFix: 2,
	}, {
		Id:       "orderDist",
		ParamCn:  "订单区域",
		ParamFix: 2,
	}, {
		Id:       "partnerCategory",
		ParamCn:  "合伙人类型",
		ParamFix: 2,
	}, {
		Id:       "buyer",
		ParamCn:  "客户",
		ParamFix: 2,
	}, {
		Id:       "partner",
		ParamCn:  "合伙人",
		ParamFix: 2,
	},
}

// 默认未选中栏目
var DefaultInvalidColumns = []Column{
	{
		Id:       "updateTime",
		ParamCn:  "更新时间",
		ParamFix: 2,
	}, {
		Id:       "createTime",
		ParamCn:  "创建时间",
		ParamFix: 2,
	},
}

// 栏目设置
type ColumnSetting struct {
	// 栏目设置id
	Id int64 `json:"id"`
	// 栏目设置关联用户公司id
	CompanyId int `json:"companyId"`
	// 栏目设置创建时间
	CreatedAt time.Time `json:"createdAt"`
	// 栏目设置描述
	Description string `json:"description"`
	// 栏目设置模块名称
	Key string `json:"key"`
	// 栏目设置关联用户uid
	Uid int64 `json:"uid"`
	// 栏目设置更新时间
	UpdatedAt time.Time `json:"updatedAt"`
	// 栏目设置关联用户名称
	UserName string `json:"userName"`
	// 有效栏目数组
	Value []Column `json:"value"`
	// 无效栏目数组
	InvalidValue []Column `json:"invalidValue"`
}

type ColumnSettingFindQuery struct {
	Ids       []int64
	Uid       int64
	CompanyId int
	Offset    int
	Limit     int
}

type ColumnSettingRepository interface {
	Save(columnSetting *ColumnSetting) (*ColumnSetting, error)
	Remove(columnSetting *ColumnSetting, columnSettings []*ColumnSetting) (*ColumnSetting, []*ColumnSetting, error)
	FindOne(queryOptions map[string]interface{}) (*ColumnSetting, error)
	//Find(queryOptions map[string]interface{}) (int64, []*ColumnSetting, error)
	Find(queryOptions ColumnSettingFindQuery) (int64, []*ColumnSetting, error)
}

func (columnSetting *ColumnSetting) Identify() interface{} {
	if columnSetting.Id == 0 {
		return nil
	}
	return columnSetting.Id
}

func (columnSetting *ColumnSetting) Update(data map[string]interface{}) error {
	if companyId, ok := data["companyId"]; ok {
		columnSetting.CompanyId = companyId.(int)
	}
	if createdAt, ok := data["createdAt"]; ok {
		columnSetting.CreatedAt = createdAt.(time.Time)
	}
	if description, ok := data["description"]; ok {
		columnSetting.Description = description.(string)
	}
	if key, ok := data["key"]; ok {
		columnSetting.Key = key.(string)
	}
	if uid, ok := data["uid"]; ok {
		columnSetting.Uid = uid.(int64)
	}
	if updatedAt, ok := data["updatedAt"]; ok {
		columnSetting.UpdatedAt = updatedAt.(time.Time)
	}
	if userName, ok := data["userName"]; ok {
		columnSetting.UserName = userName.(string)
	}
	if value, ok := data["value"]; ok {
		columnSetting.Value = value.([]Column)
	}
	if invalidValue, ok := data["invalidValue"]; ok {
		columnSetting.InvalidValue = invalidValue.([]Column)
	}
	return nil
}