package controllers import ( "fmt" "github.com/gin-gonic/gin" "github.com/sirupsen/logrus" "net/http" "psi/constant" "psi/database" systemReq "psi/models/request" systemRes "psi/models/response" "psi/service" "psi/utils" ) type SplitAccountConfigApi struct{} var splitAccountConfigService = service.SplitAccountConfigService{} // GetSplitAccountConfigList 获取分账配置列表 func (r *SplitAccountConfigApi) GetSplitAccountConfigList(c *gin.Context) { var req systemReq.GetSplitAccountConfigListRequest if err := c.ShouldBindQuery(&req); err != nil { ValidAndFail(constant.LoggerChannelRequest, "分账配置列表请求参数异常", "参数错误: "+err.Error(), c, err) return } result, err := splitAccountConfigService.GetSplitAccountConfigList(req, database.GetDB(c)) if err != nil { utils.FailWithRequestLog(constant.LoggerChannelWork, "分账配置列表异常", err, c, req) return } c.JSON(http.StatusOK, gin.H{ "code": 200, "data": result, }) } // GetSplitAccountConfigDetail 获取分账配置详情 func (r *SplitAccountConfigApi) GetSplitAccountConfigDetail(c *gin.Context) { idStr := c.Param("id") if idStr == "" { utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ "source": "获取分账配置详情请求参数异常", "err_msg": "ID参数不能为空", }) systemRes.FailWithValidateMessage("参数错误: ID不能为空", c) return } var id int64 if _, err := fmt.Sscanf(idStr, "%d", &id); err != nil || id <= 0 { utils.ErrorLog(constant.LoggerChannelRequest, logrus.Fields{ "source": "获取分账配置详情请求参数异常", "err_msg": "ID格式错误: " + idStr, }) systemRes.FailWithValidateMessage("参数错误: ID格式不正确", c) return } result, err := splitAccountConfigService.GetSplitAccountConfigDetail(id, database.GetDB(c)) if err != nil { utils.FailWithRequestLog(constant.LoggerChannelWork, "分账配置详情异常", err, c, gin.H{"id": id}) return } systemRes.OkWithDetailed(result, "查询成功", c) } // CreateSplitAccountConfig 创建分账配置 func (r *SplitAccountConfigApi) CreateSplitAccountConfig(c *gin.Context) { var req systemReq.AddSplitAccountConfigRequest if err := c.ShouldBind(&req); err != nil { ValidAndFail(constant.LoggerChannelRequest, "创建分账配置请求参数异常", "参数错误: "+err.Error(), c, err) return } userInfo := utils.GetUserInfo(c) id, err := splitAccountConfigService.CreateSplitAccountConfig(req, userInfo.Username, database.GetDB(c)) if err != nil { utils.FailWithRequestLog(constant.LoggerChannelWork, "创建分账配置异常", err, c, req) return } systemRes.OkWithDetailed(gin.H{"id": id}, "创建成功", c) } // UpdateSplitAccountConfig 更新分账配置 func (r *SplitAccountConfigApi) UpdateSplitAccountConfig(c *gin.Context) { var req systemReq.UpdateSplitAccountConfigRequest if err := c.ShouldBind(&req); err != nil { ValidAndFail(constant.LoggerChannelRequest, "更新分账配置请求参数异常", "参数错误: "+err.Error(), c, err) return } userInfo := utils.GetUserInfo(c) err := splitAccountConfigService.UpdateSplitAccountConfig(req, userInfo.Username, database.GetDB(c)) if err != nil { utils.FailWithRequestLog(constant.LoggerChannelWork, "更新分账配置异常", err, c, req) return } systemRes.OkWithMessage("更新成功", c) } // DeleteSplitAccountConfig 删除分账配置 func (r *SplitAccountConfigApi) DeleteSplitAccountConfig(c *gin.Context) { var req systemReq.DeleteSplitAccountConfigRequest if err := c.ShouldBind(&req); err != nil { ValidAndFail(constant.LoggerChannelRequest, "删除分账配置请求参数异常", "参数错误: "+err.Error(), c, err) return } userInfo := utils.GetUserInfo(c) err := splitAccountConfigService.DeleteSplitAccountConfig(req, userInfo.Username, database.GetDB(c)) if err != nil { utils.FailWithRequestLog(constant.LoggerChannelWork, "删除分账配置异常", err, c, req) return } systemRes.OkWithMessage("删除成功", c) }