2025-05-28 16:19:21 +08:00

152 lines
4.1 KiB
Go

package service
import (
"context"
"time"
"github.com/emsoft/HospitalPay-Go/internal/model"
"github.com/emsoft/HospitalPay-Go/internal/pkg/database"
"github.com/emsoft/HospitalPay-Go/internal/pkg/errcode"
"github.com/emsoft/HospitalPay-Go/internal/pkg/logger"
"go.uber.org/zap"
"gorm.io/gorm"
)
// CriminalService 病人服务实现
type CriminalService struct {
db *gorm.DB
}
// NewCriminalService 创建病人服务
func NewCriminalService() *CriminalService {
return &CriminalService{
db: database.GetDB(),
}
}
// CriminalIn 入院登记
func (s *CriminalService) CriminalIn(ctx context.Context, fcode string) (*model.CriminalResponse, error) {
logger.Info("开始入院登记处理", zap.String("fcode", fcode))
// TODO: 实现数据库操作
// 这里是模拟实现,实际应该从数据库查询
info := &model.CriminalInfo{
FCode: fcode,
FName: "测试病人",
AmountA: 100.00,
AmountB: 50.00,
AmountC: 150.00,
BankAccNo: "6222021234567890",
BankAmount: 1000.00,
Fflag: 0,
Flimitflag: 0,
Flimitamt: 0,
}
logger.Info("入院登记处理完成", zap.String("fcode", fcode))
return &model.CriminalResponse{
ResultCode: errcode.Success.Code,
ResultData: info,
}, nil
}
// ConsumeQuota 消费额度查询
func (s *CriminalService) ConsumeQuota(ctx context.Context, fcode string) (*model.CriminalResponse, error) {
logger.Info("开始消费额度查询", zap.String("fcode", fcode))
// TODO: 实现数据库操作
quota := &model.ConsumeQuota{
AmountA: 50.00,
AmountB: 30.00,
FreeAmountA: 0,
FreeAmountB: 0,
Checkflag: 0,
FCode: fcode,
FCriminal: "测试病人",
Flag: 0,
}
logger.Info("消费额度查询完成", zap.String("fcode", fcode))
return &model.CriminalResponse{
ResultCode: errcode.Success.Code,
ResultData: quota,
}, nil
}
// CriminalOut 出院处理
func (s *CriminalService) CriminalOut(ctx context.Context, fcode string) (*model.CriminalResponse, error) {
logger.Info("开始出院处理", zap.String("fcode", fcode))
// TODO: 实现数据库操作
logger.Info("出院处理完成", zap.String("fcode", fcode))
return &model.CriminalResponse{
ResultCode: errcode.Success.Code,
ResultMsg: "出院处理成功",
}, nil
}
// ConsumeRecord 消费记录
func (s *CriminalService) ConsumeRecord(ctx context.Context, record *model.ConsumeRecord) (*model.CriminalResponse, error) {
logger.Info("开始保存消费记录",
zap.String("fcode", record.FCode),
zap.String("invoiceNo", record.InvoiceNo),
zap.Float64("amount", record.Amount))
// TODO: 实现数据库操作
logger.Info("消费记录保存完成", zap.String("fcode", record.FCode))
return &model.CriminalResponse{
ResultCode: errcode.Success.Code,
ResultMsg: "消费记录保存成功",
}, nil
}
// RealTimeBalance 实时余额查询
func (s *CriminalService) RealTimeBalance(ctx context.Context, fcode string) (*model.CriminalResponse, error) {
logger.Info("开始实时余额查询", zap.String("fcode", fcode))
// TODO: 实现数据库操作
info := &model.CriminalInfo{
FCode: fcode,
FName: "测试病人",
AmountA: 100.00,
AmountB: 50.00,
AmountC: 150.00,
BankAccNo: "6222021234567890",
BankAmount: 1000.00,
Fflag: 0,
Flimitflag: 0,
Flimitamt: 0,
}
logger.Info("实时余额查询完成", zap.String("fcode", fcode))
return &model.CriminalResponse{
ResultCode: errcode.Success.Code,
ResultData: info,
}, nil
}
// InvoiceSync 发票同步
func (s *CriminalService) InvoiceSync(ctx context.Context, invoiceList []string) (*model.CriminalResponse, error) {
logger.Info("开始发票同步", zap.Strings("invoiceList", invoiceList))
// TODO: 实现数据库操作
results := make([]model.InvoiceSyncResult, 0)
for _, invoice := range invoiceList {
result := model.InvoiceSyncResult{
BankFlag: 2,
CAmount: 100.00,
FCode: "3516022343",
Origid: invoice,
SendDate: time.Now(),
}
results = append(results, result)
}
logger.Info("发票同步完成", zap.Int("count", len(results)))
return &model.CriminalResponse{
ResultCode: errcode.Success.Code,
ResultData: results,
}, nil
}