Files
ArmedPolice/app/controller/manage/equipment_material.go
2021-11-18 09:51:39 +08:00

90 lines
2.3 KiB
Go

package manage
import (
model2 "ArmedPolice/app/common/model"
"ArmedPolice/app/controller/basic"
"ArmedPolice/app/model"
"ArmedPolice/app/service"
"ArmedPolice/serve/orm"
"ArmedPolice/utils"
"gorm.io/gorm"
)
type EquipmentMaterial struct{ *service.Session }
type EquipmentMaterialHandle func(session *service.Session) *EquipmentMaterial
type (
// EquipmentMaterialInfo 装备器材信息
EquipmentMaterialInfo struct {
*model.ManageMaterialBasic
basic.CommonIDString
}
EquipmentMaterialBindParams struct {
EquipmentID uint64
MaterialIDs []uint64
}
)
// List 列表信息
func (c *EquipmentMaterial) List(equipmentID uint64) ([]*EquipmentMaterialInfo, error) {
mManageEquipmentMaterial := model.NewManageEquipmentMaterial()
out, err := mManageEquipmentMaterial.Materials(equipmentID)
if err != nil {
return nil, err
}
list := make([]*EquipmentMaterialInfo, 0)
for _, v := range out {
mManageEquipmentMaterial.ID = v.ID
list = append(list, &EquipmentMaterialInfo{
CommonIDString: basic.CommonIDString{ID: mManageEquipmentMaterial.GetEncodeID()},
ManageMaterialBasic: v,
})
}
return list, nil
}
// Bind 绑定操作
func (c *EquipmentMaterial) Bind(params *EquipmentMaterialBindParams) error {
mManageEquipmentMaterial := model.NewManageEquipmentMaterial()
return orm.GetDB().Transaction(func(tx *gorm.DB) error {
err := model2.DeleteWhere(mManageEquipmentMaterial.ManageEquipmentMaterial, []*model2.ModelWhere{
model2.NewWhere("equipment_id", params.EquipmentID),
})
if err != nil {
return err
}
materialIDs := utils.ArrayUnique(params.MaterialIDs)
list := make([]*model2.ManageEquipmentMaterial, 0)
for _, v := range materialIDs {
list = append(list, &model2.ManageEquipmentMaterial{
EquipmentID: params.EquipmentID,
MaterialID: v.(uint64),
})
}
if len(list) > 0 {
return model2.Creates(mManageEquipmentMaterial.ManageEquipmentMaterial, list)
}
return nil
})
}
func (c *EquipmentMaterial) Delete(id uint64) error {
mManageEquipmentMaterial := model.NewManageEquipmentMaterial()
mManageEquipmentMaterial.ID = id
return model2.Delete(mManageEquipmentMaterial.ManageEquipmentMaterial)
}
func NewEquipmentMaterial() EquipmentMaterialHandle {
return func(session *service.Session) *EquipmentMaterial {
return &EquipmentMaterial{session}
}
}