1 Star 0 Fork 0

jackly-chao / joy-admin-server

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
agency.go 3.65 KB
一键复制 编辑 原始数据 按行查看 历史
jackly-chao 提交于 2023-09-28 10:50 . 请求参数绑定的处理
package agency
import (
"encoding/json"
"errors"
"reflect"
"gitee.com/jackly-chao/joy-admin-server/src/global"
"gitee.com/jackly-chao/joy-admin-server/src/global/request"
"gitee.com/jackly-chao/joy-admin-server/src/model/agency"
"gitee.com/jackly-chao/joy-admin-server/src/model/platform"
"gorm.io/gorm"
)
type AgencyService struct{}
func (s *AgencyService) GetAgency(request request.IdRequest) (result agency.Agency, err error) {
err = global.DbMap[dbName].First(&result, request.Id).Error
return
}
func (s *AgencyService) GetAgencys(request agency.AgencyRequest) (result []agency.Agency, total int64, err error) {
db := global.DbMap[dbName].Model(&agency.Agency{})
handleAgencyRequest(db, request)
db = db.Limit(request.PageSize).Offset(request.PageSize * (request.Page - 1))
err = db.Find(&result).Error
return
}
func (s *AgencyService) GetAllAgencys(request agency.AgencyRequest) (result []agency.Agency, err error) {
db := global.DbMap[dbName].Model(&agency.Agency{})
handleAgencyRequest(db, request)
err = db.Find(&result).Error
return
}
func (s *AgencyService) CreateAgency(request agency.Agency) (result agency.Agency, err error) {
err = checkAddOrModAgency(request)
if err != nil {
return
}
err = global.DbMap[dbName].Create(&request).Error
return request, err
}
func (s *AgencyService) UpdateAgency(request agency.Agency) (result agency.Agency, err error) {
err = checkAddOrModAgency(request)
if err != nil {
return
}
err = global.DbMap[dbName].Save(&request).Error
return request, err
}
func (s *AgencyService) DeleteAgencys(request request.IdsRequest) (err error) {
err = global.DbMap[dbName].Delete(&agency.Agency{}, request.Ids).Error
return
}
func (s *AgencyService) SwitchAgencys(request request.SwitchRequest) (err error) {
err = global.DbMap[dbName].Model(&agency.Agency{}).Where("id in ?", request.Ids).Update("is_enable", request.IsEnable).Error
return
}
func handleAgencyRequest(db *gorm.DB, request agency.AgencyRequest) {
if request.Name != "" {
db = db.Where("name Like ?", "%"+request.Name+"%")
}
if !reflect.ValueOf(request.IsEnable).IsNil() {
db = db.Where("is_enable = ?", request.IsEnable)
}
db = db.Order("is_enable desc")
db = db.Order("sort")
}
func checkAddOrModAgency(request agency.Agency) (err error) {
var result agency.Agency
db := global.DbMap[dbName].Model(&result)
db = db.Where("id != ?", request.Id)
db = db.Where("name = ?", request.Name)
err = db.First(&result).Error
if !errors.Is(err, gorm.ErrRecordNotFound) {
err = errors.New("存在相同代售点")
return
}
var platformAccountIds []int64
json.Unmarshal([]byte(request.PlatformAccountIds), &platformAccountIds)
if len(platformAccountIds) > 0 {
var agencys []agency.Agency
global.DbMap[dbName].Model(&result).Where("id != ?", request.Id).Where("is_enable = ?", true).Find(&agencys)
var platformAccountIdExist int64 = 0
for _, v := range agencys {
var platformAccountIdsTmp []int64
json.Unmarshal([]byte(v.PlatformAccountIds), &platformAccountIdsTmp)
if len(platformAccountIds) < 1 {
continue
}
for _, platformAccountIdTmp := range platformAccountIdsTmp {
for _, platformAccountId := range platformAccountIds {
if platformAccountIdTmp == platformAccountId {
platformAccountIdExist = platformAccountIdTmp
break
}
}
if platformAccountIdExist > 0 {
break
}
}
if platformAccountIdExist > 0 {
break
}
}
if platformAccountIdExist > 0 {
var platformAccount platform.PlatformAccount
global.DbMap["platform"].First(&platformAccount, platformAccountIdExist)
err = errors.New("存在已匹配其它代售点的平台账户:" + platformAccount.Name)
return
}
}
return nil
}
Go
1
https://gitee.com/jackly-chao/joy-admin-server.git
git@gitee.com:jackly-chao/joy-admin-server.git
jackly-chao
joy-admin-server
joy-admin-server
01c5a3fec7ab

搜索帮助