152 lines
4.1 KiB
Go
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
|
|
}
|