| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- package parking
- import (
- "errors"
- "wails-app/internal/dao"
- "wails-app/internal/global"
- "wails-app/internal/modules/parking/model/request"
- )
- type channelService struct{}
- func NewChannelService() *channelService {
- return &channelService{}
- }
- // CreateChannel 创建通道
- func (s *channelService) CreateChannel(req request.ChannelCreate) error {
- // 检查通道编码是否已存在
- var existingChannel dao.Channel
- result := global.GVA_DB.Where("channel_code = ?", req.ChannelCode).First(&existingChannel)
- if result.RowsAffected > 0 {
- return errors.New("通道编码已存在")
- }
- var booth dao.Booth
- global.GVA_DB.Model(&booth).Where("id = ?", req.BoothId).First(&booth)
- channel := dao.Channel{
- ChannelCode: req.ChannelCode,
- ChannelName: req.ChannelName,
- Direction: req.Direction,
- AllowTemporary: req.AllowTemporary,
- Description: req.Description,
- BoothID: req.BoothId,
- ParkingLotID: booth.ParkingLotID,
- }
- return global.GVA_DB.Create(&channel).Error
- }
- // UpdateChannel 更新通道
- func (s *channelService) UpdateChannel(req request.ChannelUpdate) error {
- var channel dao.Channel
- result := global.GVA_DB.First(&channel, req.ID)
- if result.RowsAffected == 0 {
- return errors.New("通道不存在")
- }
- // 检查通道编码是否被其他通道使用
- var existingChannel dao.Channel
- result = global.GVA_DB.Where("channel_code = ? AND id != ?", req.ChannelCode, req.ID).First(&existingChannel)
- if result.RowsAffected > 0 {
- return errors.New("通道编码已被其他通道使用")
- }
- channel.ChannelCode = req.ChannelCode
- channel.ChannelName = req.ChannelName
- channel.Direction = req.Direction
- channel.AllowTemporary = req.AllowTemporary
- channel.Description = req.Description
- channel.BoothID = req.BoothId
- return global.GVA_DB.Save(&channel).Error
- }
- // GetChannelByID 根据ID获取通道
- func (s *channelService) GetChannelByID(id uint) (dao.Channel, error) {
- var channel dao.Channel
- result := global.GVA_DB.First(&channel, id)
- if result.RowsAffected == 0 {
- return dao.Channel{}, errors.New("通道不存在")
- }
- return channel, nil
- }
- // GetChannelByCode 根据编码获取通道
- func (s *channelService) GetChannelByCode(code string) (dao.Channel, error) {
- var channel dao.Channel
- result := global.GVA_DB.Where("channel_code = ?", code).First(&channel)
- if result.RowsAffected == 0 {
- return dao.Channel{}, errors.New("通道不存在")
- }
- return channel, nil
- }
- func (s *channelService) QueryAllChannels() ([]dao.Channel, error) {
- var channels []dao.Channel
- err := global.GVA_DB.Find(&channels).Error
- if err != nil {
- return channels, err
- }
- return channels, nil
- }
- // ListChannels 获取通道列表
- func (s *channelService) ListChannels(req request.ChannelQuery) (int64, []dao.Channel, error) {
- var channels []dao.Channel
- var total int64
- query := global.GVA_DB.Model(&dao.Channel{})
- if req.ChannelCode != "" {
- query = query.Where("channel_code LIKE ?", "%"+req.ChannelCode+"%")
- }
- if req.ChannelName != "" {
- query = query.Where("channel_name LIKE ?", "%"+req.ChannelName+"%")
- }
- if req.Direction != "" {
- query = query.Where("direction = ?", req.Direction)
- }
- if req.ParkingLotID != 0 {
- query = query.Where("parking_lot_id = ?", req.ParkingLotID)
- }
- // 计算总数
- query.Count(&total)
- // 分页查询
- offset := (req.Page - 1) * req.PageSize
- result := query.Offset(offset).Limit(req.PageSize).Find(&channels)
- if result.Error != nil {
- return 0, nil, result.Error
- }
- return total, channels, nil
- }
- // DeleteChannel 删除通道
- func (s *channelService) DeleteChannel(id uint) error {
- result := global.GVA_DB.Delete(&dao.Channel{}, id)
- if result.RowsAffected == 0 {
- return errors.New("通道不存在")
- }
- return result.Error
- }
|