mh_goadmin_server/app/admin/models/store.go
chenlin b750b19199 1.修改门店名称后同步修改库存商品的门店信息;
2.修改扫码付查询订单的商户信息,改为迪为商户;
2024-07-08 10:47:28 +08:00

307 lines
8.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 {
// 查询门店信息
oldStoreInfo, err := GetStore(m.ID)
if err != nil {
logger.Errorf("GetStore err:", logger.Field("err", err))
return err
}
begin := orm.Eloquent.Begin()
err = begin.Table(m.TableName()).Unscoped().Where("id", m.ID).Updates(para).Error
if err != nil {
begin.Rollback()
logger.Errorf("err:", logger.Field("err", err))
return err
}
if oldStoreInfo.Name != m.Name {
// 更新库存表
err = begin.Table("erp_stock").Where("store_id=?", m.ID).
Updates(map[string]interface{}{
"store_name": m.Name,
}).Error
if err != nil {
begin.Rollback()
logger.Error("Update erp_stock err:", logger.Field("err", err))
return err
}
// 更新库存详情表
err = begin.Table("erp_stock_commodity").Where("store_id=?", m.ID).
Updates(map[string]interface{}{
"store_name": m.Name,
}).Error
if err != nil {
begin.Rollback()
logger.Error("Update erp_stock_commodity err:", logger.Field("err", err))
return err
}
}
err = begin.Commit().Error
if err != nil {
begin.Rollback()
logger.Error("commit 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
}