// 功能描述:供气单位答复本人合同变更申请,不自动改动合同条款;版本:1.0.0。 package gas import ( "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/heqiapp/platforms/backend/api/internal/impl" "git.apinb.com/heqiapp/platforms/backend/api/internal/models" "github.com/gin-gonic/gin" "gorm.io/gorm" "gorm.io/gorm/clause" "strings" ) // ResolveContractRequest 按原合同气站锁定申请,提交处理结果后等待用户确认。 func ResolveContractRequest(ctx *gin.Context) { account, station, ok := CurrentGasAccount(ctx) if !ok { return } var request struct { Result string `json:"result" binding:"required,max=2000"` } if ctx.ShouldBindJSON(&request) != nil || strings.TrimSpace(request.Result) == "" { infra.Response.Error(ctx, errcode.ErrInvalidArgument) return } result := strings.TrimSpace(request.Result) err := impl.DBService.Transaction(func(tx *gorm.DB) error { var ticket models.CsTicket if err := tx.Clauses(clause.Locking{Strength: "UPDATE"}).Where("identity = ? AND gas_basic_id = ? AND gasorder_contract_id <> 0 AND category = ? AND status <> ?", ctx.Param("identity"), station.ID, "contract_change", 3).First(&ticket).Error; err != nil { return err } if (ticket.TicketStatus == 34 || ticket.TicketStatus == 23) && ticket.Result == result { return nil } if ticket.TicketStatus != 32 && ticket.TicketStatus != 11 { return errcode.ErrInvalidArgument } return tx.Model(&ticket).Updates(map[string]any{"result": result, "ticket_status": 34, "operator_identity": account.Identity}).Error }) if err != nil { infra.Response.Error(ctx, err) return } infra.Response.Success(ctx, gin.H{"updated": true}) }