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 }