Some checks failed
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 31s
将 api 层校验规则提示语、service 层 gerror.Wrap 与 response.Error 错误信息、panic 未注册提示统一改为中文,并同步中文化 cmd 路由注释 与变更记录。仅涉及注释、文档与字符串改动,无业务逻辑变更。
114 lines
3.4 KiB
Go
114 lines
3.4 KiB
Go
// Package house_community 提供楼盘/小区领域服务。
|
|
package house_community
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/gogf/gf/v2/errors/gerror"
|
|
|
|
"service.xpcool.com/internal/dao"
|
|
"service.xpcool.com/internal/model/do"
|
|
"service.xpcool.com/internal/model/dto"
|
|
"service.xpcool.com/internal/model/entity"
|
|
)
|
|
|
|
// ICommunity 小区/楼盘领域服务接口。
|
|
type ICommunity interface {
|
|
List(context.Context, int, int, string, string) ([]entity.HouseCommunity, int, error)
|
|
Create(context.Context, dto.HouseCommunityInput) (uint64, error)
|
|
Update(context.Context, dto.HouseCommunityInput) error
|
|
Delete(context.Context, uint64) error
|
|
}
|
|
|
|
type community struct{}
|
|
|
|
var localCommunity ICommunity
|
|
|
|
func NewCommunity() ICommunity { return &community{} }
|
|
|
|
// Community 返回已注册的小区服务实现。
|
|
func Community() ICommunity {
|
|
if localCommunity == nil {
|
|
panic("Community 实现未注册")
|
|
}
|
|
return localCommunity
|
|
}
|
|
|
|
// RegisterCommunity 注册小区服务实现。
|
|
func RegisterCommunity(i ICommunity) { localCommunity = i }
|
|
|
|
// List 分页查询小区,支持关键字(名称)与区域过滤。
|
|
func (s *community) List(ctx context.Context, page, size int, keyword, region string) ([]entity.HouseCommunity, int, error) {
|
|
m := dao.HouseCommunity.Ctx(ctx)
|
|
if keyword != "" {
|
|
m = m.WhereLike("name", "%"+keyword+"%")
|
|
}
|
|
if region != "" {
|
|
m = m.Where("region", region)
|
|
}
|
|
total, err := m.Clone().Count()
|
|
if err != nil {
|
|
return nil, 0, gerror.Wrap(err, "统计小区总数失败")
|
|
}
|
|
var list []entity.HouseCommunity
|
|
if err = m.Clone().Page(page, size).OrderDesc("id").Scan(&list); err != nil {
|
|
return nil, 0, gerror.Wrap(err, "查询小区列表失败")
|
|
}
|
|
return list, total, nil
|
|
}
|
|
|
|
// Create 新增小区。
|
|
func (s *community) Create(ctx context.Context, in dto.HouseCommunityInput) (uint64, error) {
|
|
id, err := dao.HouseCommunity.Ctx(ctx).Data(do.HouseCommunity{
|
|
Name: in.Name,
|
|
Region: in.Region,
|
|
BusinessDistrict: in.BusinessDistrict,
|
|
Address: in.Address,
|
|
Lng: in.Lng,
|
|
Lat: in.Lat,
|
|
BuildYear: in.BuildYear,
|
|
Households: in.Households,
|
|
PlotRatio: in.PlotRatio,
|
|
GreenRate: in.GreenRate,
|
|
PropertyCompany: in.PropertyCompany,
|
|
PropertyFee: in.PropertyFee,
|
|
Developer: in.Developer,
|
|
Source: in.Source,
|
|
}).InsertAndGetId()
|
|
if err != nil {
|
|
return 0, gerror.Wrap(err, "新增小区失败")
|
|
}
|
|
return uint64(id), nil
|
|
}
|
|
|
|
// Update 更新小区。
|
|
func (s *community) Update(ctx context.Context, in dto.HouseCommunityInput) error {
|
|
_, err := dao.HouseCommunity.Ctx(ctx).Where(do.HouseCommunity{Id: in.Id}).Data(do.HouseCommunity{
|
|
Name: in.Name,
|
|
Region: in.Region,
|
|
BusinessDistrict: in.BusinessDistrict,
|
|
Address: in.Address,
|
|
Lng: in.Lng,
|
|
Lat: in.Lat,
|
|
BuildYear: in.BuildYear,
|
|
Households: in.Households,
|
|
PlotRatio: in.PlotRatio,
|
|
GreenRate: in.GreenRate,
|
|
PropertyCompany: in.PropertyCompany,
|
|
PropertyFee: in.PropertyFee,
|
|
Developer: in.Developer,
|
|
}).Update()
|
|
if err != nil {
|
|
return gerror.Wrap(err, "更新小区失败")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Delete 软删除小区。
|
|
func (s *community) Delete(ctx context.Context, id uint64) error {
|
|
if _, err := dao.HouseCommunity.Ctx(ctx).Where(do.HouseCommunity{Id: id}).Delete(); err != nil {
|
|
return gerror.Wrap(err, "删除小区失败")
|
|
}
|
|
return nil
|
|
}
|