/* * @description: 合同相关数据库操作 * @Author: CP * @Date: 2020-11-17 10:41:05 * @FilePath: \construction_management\dao\contract_dao.go */ package dao import ( "errors" "log" "github.com/go-xorm/xorm" "go.mod/models" ) //数据库操作引擎 type ContractDao struct { engine *xorm.Engine } //获得一个DAO对象 func NewContractDao(engine *xorm.Engine) *ContractDao { return &ContractDao{ engine: engine, } } // 获得本项目的合同项目节 func (d *ContractDao) Get(id int) *models.CmContracts { data := &models.CmContracts{} _, err := d.engine. Where("id=? ", id). Get(data) if err != nil { data.Id = 0 return data } return data } // 新增合同 func (d *ContractDao) Add(contractData *models.CmContracts) error { session := d.engine.NewSession() defer session.Close() err := session.Begin() if err != nil { return errors.New("新增合同出错-db") } // 1.写入合同表 _, err = session.Insert(contractData) if err != nil { log.Println(err) session.Rollback() return errors.New("新增合同出错") } // 2.更新项目节表 _, err = session.Exec("UPDATE cm_tree_contracts SET `contract_id` = ?,`contract_name` = ?,`contract_code` = ?,`contract_price` = ? "+ "where tree_id = ? and project_id = ? and bidsection_id = ? ", contractData.Id, contractData.Name, contractData.Code, contractData.Price, contractData.TreeId, contractData.ProjectId, contractData.BidsectionId) if err != nil { session.Rollback() return errors.New("新增合同出错-项目节更新失败") } // 3.更新标段目录金额合计 // 3-1 获得项目-标段下合同总数 // 3-2 获得项目标段下合同收入中金额 _, err = session.Exec("UPDATE cm_tree SET `contracts` = ?,`contracts_income` = ? "+ "where project_id = ? and bidsection_id = ? ", contractData.Id, contractData.Name, contractData.Code, contractData.Price, contractData.ProjectId, contractData.BidsectionId) if err != nil { session.Rollback() return errors.New("新增合同出错-标段目录更新失败") } err = session.Commit() if err != nil { session.Rollback() return errors.New("新增合同出错-db") } return nil }