package models import ( "errors" "lapp_-wy/db" "lapp_-wy/utils" "time" ) type Otherchargetab struct { Cid int `json:"cid" xorm:"not null pk INT(4)"` Otherid int `json:"otherid" xorm:"not null pk INT(10)"` Contact string `json:"contact" xorm:"VARCHAR(32)"` Phone string `json:"phone" xorm:"VARCHAR(20)"` Serialnumber string `json:"serialnumber" xorm:"VARCHAR(32)"` Chargeway string `json:"chargeway" xorm:"VARCHAR(100)"` Category string `json:"category" xorm:"VARCHAR(32)"` Chargestartdate string `json:"chargestartdate" xorm:"VARCHAR(20)"` Chargeenddate string `json:"chargeenddate" xorm:"VARCHAR(20)"` ChargeMoney float64 `json:"charge_money" xorm:"DECIMAL(10,2)"` Chargetime string `json:"chargetime" xorm:"VARCHAR(20)"` Chargeby string `json:"chargeby" xorm:"VARCHAR(20)"` Remark string `json:"remark" xorm:"VARCHAR(255)"` Createtime string `json:"createtime" xorm:"VARCHAR(20)"` } func (t *Otherchargetab) TableName() string { return "otherchargetab" } //增 func (t *Otherchargetab) Add() error { engine := db.MasterEngine() session := engine.NewSession() defer session.Close() // add Begin() before any action err := session.Begin() if err != nil { session.Rollback() return err } //生成流水号 me := new(Snrtab) me.Cid = t.Cid Otherid, err := me.GetNextSnr("Otherid") if err != nil { session.Rollback() return err } //生成流水号 numId := new(Snrtab) numId.Cid = t.Cid serialnumber, err := numId.GetNextSnr("Serialnumber") if err != nil { session.Rollback() return err } t.Serialnumber = serialnumber t.Otherid = utils.ValueToInt(Otherid, 0) t.Chargetime = utils.TimeFormat(time.Now(), "yyyy-MM-dd") _, err = session.Table("otherchargetab").Insert(t) if err != nil { session.Rollback() return err } //生成流水号 chargenr := new(Snrtab) chargenr.Cid = t.Cid cnr, err := chargenr.GetNextSnr("Chargenr") if err != nil { session.Rollback() return err } //添加记录 charge := new(Chargetab) charge.Cid = t.Cid charge.Chargetype = 4 charge.Info = t.Remark charge.Createtime = t.Createtime charge.Lastmodifytime = t.Createtime charge.Chargableexpense = t.ChargeMoney charge.Chargedexpense = t.ChargeMoney charge.Chargetime = t.Chargetime charge.Chargeway = t.Chargeway charge.Serialnumber = serialnumber charge.Chargenr = utils.ValueToInt(cnr, 0) charge.Chargestartdate = t.Chargestartdate charge.Chargeenddate = t.Chargeenddate _, err = session.Table("chargetab").Insert(charge) if err != nil { session.Rollback() return err } result := ChargeShareTheMonth(session, charge.Cid, charge.Chargenr, charge.Chargestartdate, charge.Chargeenddate, charge.Chargedexpense) if !result { session.Rollback() return errors.New("分摊费用计算错误") } err = session.Commit() if err != nil { return err } return nil } //查 func (t *Otherchargetab) SelectOne() (data Otherchargetab,err error) { e := db.MasterEngine() query := e.Table("otherchargetab").Where("cid = ? ", t.Cid) if !utils.ValueIsEmpty(t.Remark) { query = query.And("remark = ?", t.Remark) } if !utils.ValueIsEmpty(t.Contact) { query = query.And("contact = ?", t.Contact) } if !utils.ValueIsEmpty(t.Category) { query = query.And("category = ?", t.Category) } _, err = query.Desc("createtime").Get(&data) if err != nil { return data, err } return data, nil } //分页 func (t *Otherchargetab) GetPage(pageSize int, pageIndex int) ([]Otherchargetab, int, error) { data := make([]Otherchargetab, 0) e := db.MasterEngine() query := e.Table("otherchargetab").Where("cid = ? ", t.Cid) table := e.Table("otherchargetab").Where("cid = ? ", t.Cid) if !utils.ValueIsEmpty(t.Remark) { descr := "%" + t.Remark + "%" query = query.And("remark like ?", descr) table = table.And("remark like ?", descr) } if !utils.ValueIsEmpty(t.Contact) { query = query.And("contact = ?", t.Contact) table = table.And("contact = ?", t.Contact) } Offset := (pageIndex - 1) * pageSize err := query.Limit(pageSize, Offset).Desc("createtime").Find(&data) pcount := new(Otherchargetab) count, err := table.Count(pcount) if err != nil { return data, 0, err } return data, int(count), nil }