package manage import ( model2 "ArmedPolice/app/common/model" "ArmedPolice/app/controller/basic" "ArmedPolice/app/model" "ArmedPolice/app/service" "ArmedPolice/serve/orm" "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 } list := make([]*model2.ManageEquipmentMaterial, 0) for _, v := range params.MaterialIDs { list = append(list, &model2.ManageEquipmentMaterial{ EquipmentID: params.EquipmentID, MaterialID: v, }) } 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} } }