package models import ( "errors" "fmt" orm "go-admin/common/global" "go-admin/logger" ) type Store struct { Model Name string `json:"name"` // 门店名称 Img string `json:"img"` // 门面图 Tel string `json:"tel" gorm:"type:varchar(20)"` // 电话 Province string `json:"province" gorm:"type:varchar(100)"` // 省 City string `json:"city" gorm:"type:varchar(100)"` // 市 District string `json:"district" gorm:"type:varchar(100)"` // 区 Address string `json:"address" gorm:"type:varchar(100)"` // 详细地址 Longitude float64 `json:"longitude" gorm:"column:longitude"` // 经度 Latitude float64 `json:"latitude" gorm:"column:latitude"` // 纬度 IsOnline uint32 `json:"is_online"` // 在线 CooperativeBusinessId uint32 `json:"cooperative_business_id" gorm:"index"` // 合作商id CooperativeName string `json:"cooperative_name"` // 合作商名称 MemberService uint32 `json:"member_service"` // 会员服务:1 开启 2 不开启 SalesCommRate float64 `json:"sales_comm_rate"` // 门店销售提成比例 //GameCardGoods CooperativeAssistantMemberDeduct *CooperativeAssistantMemberDeduct `json:"cooperative_assistant_member_deduct" gorm:"-"` } func (*Store) TableName() string { return "store" } type GetCooperativeStoreReq struct { Name string `json:"name"` CooperativeBusinessId uint32 `json:"cooperative_business_id"` // 合作商id CooperativeName string `json:"cooperative_name"` // 合作商名称 //SysType uint32 `json:"sys_type"` // 1-管理系统 2-合作商系统 SysUid string `json:"sys_uid"` Page int `json:"pageIndex"` PageSize int `json:"pageSize"` } func (m *GetCooperativeStoreReq) List() ([]Store, int64, error) { fmt.Println("store name:", m.Name) stores := make([]Store, 0) if m.CooperativeBusinessId == 0 { var sysUser SysUser err := orm.Eloquent.Table("sys_user").Where("user_id=?", m.SysUid).Find(&sysUser).Error if err != nil { logger.Error("sys user err:", logger.Field("err", err)) return stores, 0, err } m.CooperativeBusinessId = sysUser.CooperativeBusinessId } qs := orm.Eloquent.Table("store") if m.Name != "" { qs = qs.Where("name LIKE '%" + m.Name + "%'") } if m.CooperativeBusinessId != 0 { qs = qs.Where("cooperative_business_id=?", m.CooperativeBusinessId) } if m.CooperativeName != "" { qs = qs.Where("cooperative_name LIKE '%" + m.CooperativeName + "%'") } //if m.SysType == 2 && m.CooperativeBusinessId == 0 { // logger.Error("cooperative business id err:") // return stores, 0, errors.New("cooperative business id err") //} page := m.Page - 1 if page < 0 { page = 0 } if m.PageSize == 0 { m.PageSize = 10 } var count int64 err := qs.Count(&count).Error if err != nil { logger.Error("count err:", logger.Field("err", err)) return stores, count, err } err = qs.Order("id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&stores).Error if err != nil && err != RecordNotFound { logger.Errorf("err:", logger.Field("err", err)) return stores, count, err } stores = StoreListSetCooperativeAssistantMemberDeduct(stores) return stores, count, nil } type GetStoreReq struct { Name string `json:"name"` CooperativeBusinessId uint32 `json:"cooperative_business_id"` // 合作商id CooperativeName string `json:"cooperative_name"` // 合作商名称 SysType uint32 `json:"sys_type"` // 1-管理系统 2-合作商系统 SysUid string `json:"sys_uid"` Page int `json:"pageIndex"` PageSize int `json:"pageSize"` } func (m *GetStoreReq) List() ([]Store, int64, error) { fmt.Println("store name:", m.Name) stores := make([]Store, 0) //if m.CooperativeBusinessId == 0 { // var sysUser SysUser // err := orm.Eloquent.Table("sys_user").Where("user_id=?", m.SysUid).Find(&sysUser).Error // if err != nil { // logger.Error("sys user err:",logger.Field("err",err)) // return stores, 0, err // } // m.CooperativeBusinessId = sysUser.CooperativeBusinessId //} //qs := orm.Eloquent.Table("store").Where("member_service = ?", 1) qs := orm.Eloquent.Table("store") if m.Name != "" { qs = qs.Where("name LIKE '%" + m.Name + "%'") } if m.CooperativeBusinessId != 0 { qs = qs.Where("cooperative_business_id=?", m.CooperativeBusinessId) } if m.CooperativeName != "" { qs = qs.Where("cooperative_name LIKE '%" + m.CooperativeName + "%'") } if m.SysType == 2 && m.CooperativeBusinessId == 0 { logger.Error("cooperative business id err:") return stores, 0, errors.New("cooperative business id err") } page := m.Page - 1 if page < 0 { page = 0 } if m.PageSize == 0 { m.PageSize = 10 } var count int64 err := qs.Count(&count).Error if err != nil { logger.Error("count err:", logger.Field("err", err)) return stores, count, err } err = qs.Order("id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&stores).Error if err != nil && err != RecordNotFound { logger.Errorf("err:", logger.Field("err", err)) return stores, count, err } stores = StoreListSetCooperativeAssistantMemberDeduct(stores) return stores, count, nil } func StoreListSetCooperativeAssistantMemberDeduct(list []Store) []Store { ids := make([]uint32, 0, len(list)) for i, _ := range list { ids = append(ids, list[i].ID) } memberDeductMap, err := GetCooperativeAssistantMemberDeductMap(ids) if err != nil { logger.Error("cooperative assistant member deduct map err:", logger.Field("err", err)) return list } for i, _ := range list { v, ok := memberDeductMap[list[i].ID] if ok { list[i].CooperativeAssistantMemberDeduct = v } } return list } func (m *Store) Add() error { err := orm.Eloquent.Create(m).Error if err != nil { logger.Errorf("err:", logger.Field("err", err)) return err } return nil } func (m *Store) Modify() error { para := m.getModifyPara() if len(para) > 0 { err := orm.Eloquent.Table(m.TableName()).Unscoped().Where("id", m.ID).Updates(para).Error if err != nil { logger.Errorf("err:", logger.Field("err", err)) return err } } return nil } func (m *Store) getModifyPara() map[string]interface{} { paraMap := make(map[string]interface{}, 0) if m.Name != "" { paraMap["name"] = m.Name } if m.Img != "" { paraMap["img"] = m.Img } if m.Tel != "" { paraMap["tel"] = m.Tel } if m.Province != "" { paraMap["province"] = m.Province } if m.City != "" { paraMap["city"] = m.City } if m.District != "" { paraMap["district"] = m.District } if m.Address != "" { paraMap["address"] = m.Address } if m.Longitude != 0 { paraMap["longitude"] = m.Longitude } if m.Latitude != 0 { paraMap["latitude"] = m.Latitude } if m.MemberService != 0 { paraMap["member_service"] = m.MemberService } paraMap["sales_comm_rate"] = m.SalesCommRate return paraMap } func (m *Store) MDel(ids []uint32) error { err := orm.Eloquent.Table(m.TableName()).Unscoped().Where("id in (?)", ids).Delete(m).Error if err != nil { logger.Errorf("err:", logger.Field("err", err)) return err } return nil } func GetStore(id uint32) (*Store, error) { var store Store err := orm.Eloquent.Table("store").Where("id=?", id).Find(&store).Error if err != nil { logger.Errorf("err:", logger.Field("err", err)) return &store, err } return &store, nil } func GetStoreIdsByCooperativeBusinessId(id uint32) ([]uint32, error) { ids := make([]uint32, 0) var stores []Store err := orm.Eloquent.Table("store").Where("cooperative_business_id=?", id).Find(&stores).Error if err != nil { logger.Errorf("err:", logger.Field("err", err)) return ids, err } for i, _ := range stores { ids = append(ids, stores[i].ID) } return ids, nil }