| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814 |
- // 业务逻辑服务基类,提供基本的添删改查功能
- //
- // 修改纪录
- // 2016.06.06 版本:1.0 yy 新建账户分表结构的处理
- package mydb
- import (
- "encoding/json"
- "fmt"
- "reflect"
- "strconv"
- "strings"
- "dashoo.cn/utils"
- . "dashoo.cn/utils/db"
- // "github.com/go-xorm/xorm"
- )
- type MyServiceBase struct {
- ServiceBase
- }
- type String_Id struct {
- Id string
- }
- type MyInt_Id struct {
- Id int
- }
- type Templatedata struct {
- Templdata string
- }
- //
- func (s *MyServiceBase) GetPagingEntitiesWithOrderBytbl(AccCode string, pageIndex, itemsPerPage int64, order string, asc bool, entitiesPtr interface{}, where ...string) (total int64) {
- var err error
- var resultsSlice []map[string][]byte
- //获取表名
- tableName := AccCode + GetTableName(entitiesPtr)
- if len(where) == 0 {
- if asc {
- err = s.DBE.Table(tableName).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Asc(order).Find(entitiesPtr)
- } else {
- err = s.DBE.Table(tableName).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Desc(order).Find(entitiesPtr)
- }
- //获取总记录数
- sql := "SELECT COUNT(*) AS total FROM " + tableName
- resultsSlice, err = s.DBE.Query(sql)
- LogError(err)
- } else {
- if asc {
- err = s.DBE.Table(tableName).Where(where[0]).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Asc(order).Find(entitiesPtr)
- } else {
- err = s.DBE.Table(tableName).Where(where[0]).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Desc(order).Find(entitiesPtr)
- }
- sql := "SELECT COUNT(*) AS total FROM " + tableName + " where " + where[0]
- resultsSlice, err = s.DBE.Query(sql)
- }
- LogError(err)
- if len(resultsSlice) > 0 {
- results := resultsSlice[0]
- for _, value := range results {
- total, err = strconv.ParseInt(string(value), 10, 64)
- LogError(err)
- break
- }
- }
- return total
- }
- func (s *MyServiceBase) GetPagingEntitiesWithoutAccCode(pageIndex, itemsPerPage int64, order string, asc bool, entitiesPtr interface{}, where ...string) (total int64) {
- var err error
- var resultsSlice []map[string][]byte
- //获取表名
- tableName := GetTableName(entitiesPtr)
- if len(where) == 0 {
- if asc {
- err = s.DBE.Table(tableName).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Asc(order).Find(entitiesPtr)
- } else {
- err = s.DBE.Table(tableName).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Desc(order).Find(entitiesPtr)
- }
- //获取总记录数
- sql := "SELECT COUNT(*) AS total FROM " + tableName
- resultsSlice, err = s.DBE.Query(sql)
- LogError(err)
- } else {
- if asc {
- err = s.DBE.Table(tableName).Where(where[0]).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Asc(order).Find(entitiesPtr)
- } else {
- err = s.DBE.Table(tableName).Where(where[0]).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Desc(order).Find(entitiesPtr)
- }
- sql := "SELECT COUNT(*) AS total FROM " + tableName + " where " + where[0]
- resultsSlice, err = s.DBE.Query(sql)
- }
- LogError(err)
- if len(resultsSlice) > 0 {
- results := resultsSlice[0]
- for _, value := range results {
- total, err = strconv.ParseInt(string(value), 10, 64)
- LogError(err)
- break
- }
- }
- return total
- }
- //样本库分表
- func (s *MyServiceBase) InsertEntityBytbl(tablename string, entity interface{}) (affected int64, err error) {
- affected, err = s.DBE.Table(tablename).Insert(entity)
- LogError(err)
- return
- }
- func (s *MyServiceBase) GetEntityByIdBytbl(tablename string, id interface{}, entityPtr interface{}) (has bool) {
- has, err := s.DBE.Table(tablename).Id(id).Get(entityPtr)
- LogError(err)
- return
- }
- func (s *MyServiceBase) GetEntityByWhere(tablename string, where string, entityPtr interface{}) (has bool) {
- has, err := s.DBE.Table(tablename).Where(where).Get(entityPtr)
- LogError(err)
- return
- }
- func (s *MyServiceBase) GetEntitysByWhere(tablename string, where string, entityPtr interface{}) {
- err := s.DBE.Table(tablename).Where(where).Find(entityPtr)
- LogError(err)
- return
- }
- func (s *MyServiceBase) GetEntitysByOrderbyWhere(tablename, where, orderby string, entityPtr interface{}) {
- err := s.DBE.Table(tablename).Where(where).OrderBy(orderby).Find(entityPtr)
- LogError(err)
- return
- }
- //更新实体写入日志,会自动备份数据
- func (s *MyServiceBase) UpdateEntityBytbl(tablename string, id interface{}, entity interface{}, cols []string) (err error) {
- session := s.DBE.NewSession()
- defer session.Close()
- err = session.Begin()
- LogError(err)
- if err != nil {
- session.Rollback()
- return err
- }
- _, err = s.DBE.Table(tablename).Id(id).Cols(cols...).Update(entity) //执行更新
- LogError(err)
- if err != nil {
- session.Rollback()
- return err
- }
- err = session.Commit()
- if err != nil {
- return err
- }
- return
- }
- //根据条件修改数据,不记录日志
- func (s *MyServiceBase) UpdateEntityBywheretbl(tablename string, entity interface{}, cols []string, where string) (err error) {
- _, err = s.DBE.Table(tablename).Where(where).Cols(cols...).Update(entity) //执行更新
- return err
- }
- //更新实体写入日志,会自动备份数据
- func (s *MyServiceBase) UpdateDonorAndWriteLogBytbl(tablename string, tablelogname string, id interface{}, entity interface{}, entityEmpty interface{}, cols []string, userid, username, opdesc, acccode, sourcename string) (err error) {
- s.GetEntityByIdBytbl(tablename, id, entityEmpty)
- session := s.DBE.NewSession()
- defer session.Close()
- err = session.Begin()
- json, err := json.Marshal(entityEmpty)
- LogError(err)
- updatem := new(DonorsLog)
- //获取表名
- objT := reflect.TypeOf(entity)
- objT = objT.Elem()
- tableName := objT.Name()
- updatem.TableName = tableName
- updatem.AccCode = acccode
- updatem.OpDesc = opdesc
- updatem.OpType = 1
- updatem.SourceName = sourcename
- updatem.RecordId = fmt.Sprintf("%v", id)
- updatem.RecordData = string(json)
- updatem.CreateUserId = userid
- updatem.CreateBy = username
- _, err = s.DBE.Table(tablelogname).Insert(updatem) //保存到更新历史表
- LogError(err)
- if err != nil {
- session.Rollback()
- return err
- }
- _, err = s.DBE.Table(tablename).Id(id).Cols(cols...).Update(entity) //执行更新
- LogError(err)
- if err != nil {
- session.Rollback()
- return err
- }
- err = session.Commit()
- if err != nil {
- return err
- }
- return
- }
- //删除实体并写入日志,会自动备份数据,entity为空的表结构
- func (s *MyServiceBase) DeleteDonorAndWriteLogBytbl(tablename string, tablelogname string, id interface{}, entity interface{}, entityEmpty interface{}, userid, username, opdesc, acccode, sourcename string) (err error) {
- has := s.GetEntityByIdBytbl(tablename, id, entity)
- if has {
- session := s.DBE.NewSession()
- defer session.Close()
- err := session.Begin()
- json, err := json.Marshal(entity)
- LogError(err)
- deleted := new(DonorsLog)
- //获取表名
- objT := reflect.TypeOf(entity)
- objT = objT.Elem()
- tableName := objT.Name()
- deleted.TableName = tableName
- deleted.AccCode = acccode
- deleted.OpDesc = opdesc
- deleted.OpType = 2
- deleted.SourceName = sourcename
- deleted.RecordId = fmt.Sprintf("%v", id)
- deleted.RecordData = string(json)
- deleted.CreateUserId = userid
- deleted.CreateBy = username
- _, err = s.DBE.Table(tablelogname).Insert(deleted) //保存到更新历史表
- LogError(err)
- if err != nil {
- session.Rollback()
- return err
- }
- _, err = s.DBE.Table(tablename).Id(id).Delete(entityEmpty) //执行删除
- LogError(err)
- if err != nil {
- session.Rollback()
- return err
- }
- err = session.Commit()
- if err != nil {
- return err
- }
- }
- return
- }
- //主信息不存在,首次添加样本
- func (s *MyServiceBase) InsertSampleAndBuss(tblmain, tbldetail, tblbuss string, entitymain, entitydetail, entitybuss interface{}) (affected int64, err error) {
- session := s.DBE.NewSession()
- defer session.Close()
- err = session.Begin()
- affected, err = s.DBE.Table(tblmain).Insert(entitymain)
- LogError(err)
- if err != nil {
- session.Rollback()
- return 0, err
- }
- affected, err = s.DBE.Table(tbldetail).Insert(entitydetail)
- if err != nil {
- session.Rollback()
- return 0, err
- }
- affected, err = s.DBE.Table(tblbuss).Insert(entitybuss)
- if err != nil {
- session.Rollback()
- return 0, err
- }
- err = session.Commit()
- if err != nil {
- return 0, err
- }
- return
- }
- //主信息已存在,添加分管信息
- func (s *MyServiceBase) InsertOtherSampleAndBuss(tblmain, tbldetail, tblbuss string, entitymain, entitydetail, entitybuss interface{},
- cols []string, id interface{}, mainentityEmpty interface{}, tablelogname, acccode, userid, username, samplecode string, sampletype int) (affected int64, err error) {
- s.GetEntityByIdBytbl(tblmain, id, mainentityEmpty)
- session := s.DBE.NewSession()
- defer session.Close()
- err = session.Begin()
- json, err := json.Marshal(mainentityEmpty)
- LogError(err)
- updatem := new(SamplesLog)
- //获取表名
- objT := reflect.TypeOf(entitymain)
- objT = objT.Elem()
- tableName := objT.Name()
- updatem.TableName = tableName
- updatem.AccCode = acccode
- updatem.OpType = 3
- updatem.SampleCode = samplecode
- updatem.SampleType = sampletype
- updatem.MId = fmt.Sprintf("%v", id)
- updatem.RecordData = string(json)
- updatem.CreateUserId = userid
- updatem.CreateBy = username
- _, err = s.DBE.Table(tablelogname).Insert(updatem) //保存到更新历史表
- LogError(err)
- if err != nil {
- session.Rollback()
- return 0, err
- }
- _, err = s.DBE.Table(tblmain).Id(id).Cols(cols...).Update(entitymain) //执行更新
- LogError(err)
- if err != nil {
- session.Rollback()
- return 0, err
- }
- affected, err = s.DBE.Table(tbldetail).Insert(entitydetail)
- if err != nil {
- session.Rollback()
- return 0, err
- }
- affected, err = s.DBE.Table(tblbuss).Insert(entitybuss)
- if err != nil {
- session.Rollback()
- return 0, err
- }
- err = session.Commit()
- if err != nil {
- return 0, err
- }
- return
- }
- //主信息不存在,首次添加样本 预录入新增,不写入buss
- func (s *MyServiceBase) InsertSamplePre(tblmain, tbldetail string, entitymain, entitydetail interface{}) (affected int64, err error) {
- session := s.DBE.NewSession()
- defer session.Close()
- err = session.Begin()
- affected, err = s.DBE.Table(tblmain).Insert(entitymain)
- LogError(err)
- if err != nil {
- session.Rollback()
- return 0, err
- }
- affected, err = s.DBE.Table(tbldetail).Insert(entitydetail)
- if err != nil {
- session.Rollback()
- return 0, err
- }
- err = session.Commit()
- if err != nil {
- return 0, err
- }
- return
- }
- //主信息已存在,添加分管信息 预录入新增,不写入buss
- func (s *MyServiceBase) InsertOtherSamplePre(tblmain, tbldetail string, entitymain, entitydetail interface{},
- cols []string, id interface{}, mainentityEmpty interface{}, tablelogname, acccode, userid, username, samplecode string, sampletype int) (affected int64, err error) {
- s.GetEntityByIdBytbl(tblmain, id, mainentityEmpty)
- session := s.DBE.NewSession()
- defer session.Close()
- err = session.Begin()
- json, err := json.Marshal(mainentityEmpty)
- LogError(err)
- updatem := new(SamplesLog)
- //获取表名
- objT := reflect.TypeOf(entitymain)
- objT = objT.Elem()
- tableName := objT.Name()
- updatem.TableName = tableName
- updatem.AccCode = acccode
- updatem.OpType = 3
- updatem.SampleCode = samplecode
- updatem.SampleType = sampletype
- updatem.MId = fmt.Sprintf("%v", id)
- updatem.RecordData = string(json)
- updatem.CreateUserId = userid
- updatem.CreateBy = username
- _, err = s.DBE.Table(tablelogname).Insert(updatem) //保存到更新历史表
- LogError(err)
- if err != nil {
- session.Rollback()
- return 0, err
- }
- _, err = s.DBE.Table(tblmain).Id(id).Cols(cols...).Update(entitymain) //执行更新
- LogError(err)
- if err != nil {
- session.Rollback()
- return 0, err
- }
- affected, err = s.DBE.Table(tbldetail).Insert(entitydetail)
- if err != nil {
- session.Rollback()
- return 0, err
- }
- err = session.Commit()
- if err != nil {
- return 0, err
- }
- return
- }
- //出入库信息。修改主表和从表,添加buss表
- func (s *MyServiceBase) UpdateOtherSampleAndBuss(tblmain, tbldetail, tblbuss string, entitymain, entitydetail, entitybuss interface{},
- cols, colsdetail []string, id interface{}, mainentityEmpty, detailentityEmpty interface{}, tablelogname, acccode, userid, username, samplecode string) (affected int64, err error) {
- s.GetEntityByIdBytbl(tblmain, id, mainentityEmpty)
- session := s.DBE.NewSession()
- defer session.Close()
- err = session.Begin()
- json, err := json.Marshal(mainentityEmpty)
- LogError(err)
- updatem := new(SamplesLog)
- //获取表名
- objT := reflect.TypeOf(entitymain)
- objT = objT.Elem()
- tableName := objT.Name()
- updatem.TableName = tableName
- updatem.AccCode = acccode
- updatem.OpType = 1
- updatem.SampleCode = samplecode
- updatem.BarCode = samplecode
- updatem.RecordId = fmt.Sprintf("%v", id)
- updatem.RecordData = string(json)
- updatem.CreateUserId = userid
- updatem.CreateBy = username
- _, err = s.DBE.Table(tablelogname).Insert(updatem) //保存到更新历史表
- LogError(err)
- if err != nil {
- session.Rollback()
- return 0, err
- }
- _, err = s.DBE.Table(tblmain).Id(id).Cols(cols...).Update(entitymain) //执行更新
- LogError(err)
- if err != nil {
- session.Rollback()
- return 0, err
- }
- s.GetEntityByIdBytbl(tbldetail, id, detailentityEmpty)
- affected, err = s.DBE.Table(tbldetail).Insert(entitydetail)
- if err != nil {
- session.Rollback()
- return 0, err
- }
- affected, err = s.DBE.Table(tblbuss).Insert(entitybuss)
- if err != nil {
- session.Rollback()
- return 0, err
- }
- err = session.Commit()
- if err != nil {
- return 0, err
- }
- return
- }
- //更改样本表
- func (s *MyServiceBase) UpdateSample(tablename string, id interface{}, entity interface{}, cols []string) (err error) {
- // fmt.Println("=====")
- session := s.DBE.NewSession()
- defer session.Close()
- err = session.Begin()
- _, err = s.DBE.Table(tablename).Id(id).Cols(cols...).Update(entity) //执行更新
- LogError(err)
- if err != nil {
- session.Rollback()
- return err
- }
- err = session.Commit()
- if err != nil {
- return err
- }
- return
- }
- //复苏分装提取信息。修改从表,添加buss表
- func (s *MyServiceBase) UpdateDetailAndBuss(tbldetail, tblbuss string, id interface{}, entitydetail, entitybuss interface{}, colsdetail []string) (err error) {
- session := s.DBE.NewSession()
- defer session.Close()
- err = session.Begin()
- _, err = s.DBE.Table(tbldetail).Id(id).Cols(colsdetail...).Update(entitydetail) //执行更新
- LogError(err)
- if err != nil {
- session.Rollback()
- return err
- }
- _, err = s.DBE.Table(tblbuss).Insert(entitybuss)
- if err != nil {
- session.Rollback()
- return err
- }
- err = session.Commit()
- if err != nil {
- return err
- }
- return
- }
- //更改样本表并写入日志
- func (s *MyServiceBase) WriteSampleLog(tablelogname string, id interface{}, mid interface{}, entity interface{}, userid, username, acccode, samplecode, barcode string, sampletype int) (err error) {
- session := s.DBE.NewSession()
- defer session.Close()
- err = session.Begin()
- json, err := json.Marshal(entity)
- LogError(err)
- updatem := new(SamplesLog)
- //获取表名
- updatem.TableName = "SamplesInfoShow"
- updatem.AccCode = acccode
- updatem.OpType = 1
- updatem.SampleCode = samplecode
- updatem.BarCode = barcode
- updatem.RecordId = fmt.Sprintf("%v", id)
- updatem.MId = fmt.Sprintf("%v", mid)
- updatem.RecordData = string(json)
- updatem.CreateUserId = userid
- updatem.CreateBy = username
- updatem.SampleType = sampletype
- _, err = s.DBE.Table(tablelogname).Insert(updatem) //保存到更新历史表
- LogError(err)
- if err != nil {
- session.Rollback()
- return err
- }
- err = session.Commit()
- if err != nil {
- return err
- }
- return
- }
- //写入样本删除日志
- func (s *MyServiceBase) WriteDeleteSampleLog(tablelogname string, id interface{}, mid interface{}, entity interface{}, userid, username, acccode, samplecode, barcode string, sampletype int) (err error) {
- session := s.DBE.NewSession()
- defer session.Close()
- err = session.Begin()
- json, err := json.Marshal(entity)
- LogError(err)
- updatem := new(SamplesLog)
- //获取表名
- updatem.TableName = "SamplesInfoShow"
- updatem.AccCode = acccode
- updatem.OpType = 2
- updatem.SampleCode = samplecode
- updatem.BarCode = barcode
- updatem.RecordId = fmt.Sprintf("%v", id)
- updatem.MId = fmt.Sprintf("%v", mid)
- updatem.RecordData = string(json)
- updatem.CreateUserId = userid
- updatem.CreateBy = username
- updatem.SampleType = sampletype
- _, err = s.DBE.Table(tablelogname).Insert(updatem) //保存到更新历史表
- LogError(err)
- if err != nil {
- session.Rollback()
- return err
- }
- err = session.Commit()
- if err != nil {
- return err
- }
- return
- }
- func StrSplit(s, sep string) []string {
- return strings.Split(s, sep)
- }
- func GetKuoZhan(entity interface{}, filedname string) string {
- sfiledtype, _ := reflect.TypeOf(entity).FieldByName(filedname)
- objV := reflect.ValueOf(entity).FieldByName(filedname)
- switch sfiledtype.Type.Kind() {
- case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
- return utils.ToStr(objV.Int())
- case reflect.Float32, reflect.Float64:
- return utils.ToStr(utils.FloatPoint(objV.Float(), 2))
- case reflect.String:
- return objV.String()
- case reflect.Struct:
- switch sfiledtype.Type.String() {
- case "time.Time":
- rfvalue := fmt.Sprintf("%v", objV)
- return rfvalue[0:19]
- }
- }
- return ""
- }
- func Boxlinename(x int) string {
- switch x {
- case 1:
- return "A"
- case 2:
- return "B"
- case 3:
- return "C"
- case 4:
- return "D"
- case 5:
- return "E"
- case 6:
- return "F"
- case 7:
- return "G"
- case 8:
- return "H"
- case 9:
- return "I"
- case 10:
- return "J"
- case 11:
- return "K"
- case 12:
- return "L"
- case 13:
- return "M"
- case 14:
- return "N"
- case 15:
- return "O"
- case 16:
- return "P"
- case 17:
- return "Q"
- case 18:
- return "R"
- case 19:
- return "S"
- case 20:
- return "T"
- default:
- return "A"
- }
- }
- func Boxlineumber(x string) int {
- switch x {
- case "A":
- return 1
- case "B":
- return 2
- case "C":
- return 3
- case "D":
- return 4
- case "E":
- return 5
- case "F":
- return 6
- case "G":
- return 7
- case "H":
- return 8
- case "I":
- return 9
- case "J":
- return 10
- case "K":
- return 11
- case "L":
- return 12
- case "M":
- return 13
- case "N":
- return 14
- case "O":
- return 15
- case "P":
- return 16
- case "Q":
- return 17
- case "R":
- return 18
- case "S":
- return 19
- case "T":
- return 20
- default:
- return 1
- }
- }
- //更新实体写入日志,会自动备份数据
- func (s *MyServiceBase) UpdateOperationAndWriteLogBytbl(tablename string, tablelogname string, id interface{}, entity interface{}, entityEmpty interface{}, cols []string, userid, username, opdesc, acccode, tabledesc string) (err error) {
- s.GetEntityByIdBytbl(tablename, id, entityEmpty)
- session := s.DBE.NewSession()
- defer session.Close()
- err = session.Begin()
- json, err := json.Marshal(entityEmpty)
- LogError(err)
- updatem := new(Base_OperationLog)
- //获取表名
- objT := reflect.TypeOf(entity)
- objT = objT.Elem()
- tableName := objT.Name()
- updatem.TableName = tableName
- updatem.AccCode = acccode
- updatem.OpDesc = opdesc
- updatem.OpTage = 1
- updatem.TableDesc = tabledesc
- updatem.RecordId = fmt.Sprintf("%v", id)
- updatem.RecordData = string(json)
- updatem.Createuserid = userid
- updatem.Createby = username
- _, err = s.DBE.Table(tablelogname).Insert(updatem) //保存到更新历史表
- LogError(err)
- if err != nil {
- session.Rollback()
- return err
- }
- _, err = s.DBE.Table(tablename).Id(id).Cols(cols...).Update(entity) //执行更新
- LogError(err)
- if err != nil {
- session.Rollback()
- return err
- }
- err = session.Commit()
- if err != nil {
- return err
- }
- return
- }
- //删除实体并写入日志,会自动备份数据,entity为空的表结构
- func (s *MyServiceBase) DeleteOperationAndWriteLogBytbl(tablename string, tablelogname string, id interface{}, entity interface{}, entityEmpty interface{}, userid, username, opdesc, acccode, tabledesc string) (err error) {
- has := s.GetEntityByIdBytbl(tablename, id, entity)
- if has {
- session := s.DBE.NewSession()
- defer session.Close()
- err := session.Begin()
- json, err := json.Marshal(entity)
- LogError(err)
- deleted := new(Base_OperationLog)
- //获取表名
- objT := reflect.TypeOf(entity)
- objT = objT.Elem()
- tableName := objT.Name()
- deleted.TableName = tableName
- deleted.AccCode = acccode
- deleted.OpDesc = opdesc
- deleted.OpTage = 2
- deleted.TableDesc = tabledesc
- deleted.RecordId = fmt.Sprintf("%v", id)
- deleted.RecordData = string(json)
- deleted.Createuserid = userid
- deleted.Createby = username
- _, err = s.DBE.Table(tablelogname).Insert(deleted) //保存到更新历史表
- LogError(err)
- if err != nil {
- session.Rollback()
- return err
- }
- _, err = s.DBE.Table(tablename).Id(id).Delete(entityEmpty) //执行删除
- LogError(err)
- if err != nil {
- session.Rollback()
- return err
- }
- err = session.Commit()
- if err != nil {
- return err
- }
- }
- return
- }
- //根据条件删除数据,不记录日志
- func (s *MyServiceBase) DeleteEntityBytbl(tablename string, where string) (err error) {
- if where == "" {
- where = "1=2"
- }
- sql := `delete from ` + tablename + ` where ` + where
- _, err = s.DBE.Exec(sql)
- return
- }
- func (s *MyServiceBase) GetTopNEntities(tablename string, topN int, where string, entitiesPtr interface{}) {
- err := s.DBE.Table(tablename).Where(where).Limit(topN, 0).Find(entitiesPtr)
- LogError(err)
- return
- }
- //按准入范围编码查询所有准入
- func (s *MyServiceBase) FindGoodsByCode(tablename string, where string,entitiesPtr interface{} ){
- err := s.DBE.Table(tablename).Where(where).Find(entitiesPtr)
- LogError(err)
- return
- }
- //按公司查找资质
- func (s *MyServiceBase) FindFileByCompany(tablename string, where string,entitiesPtr interface{} ){
- err := s.DBE.Table(tablename).Where(where).Find(entitiesPtr)
- LogError(err)
- return
- }
|