study.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package v1
  2. import (
  3. "auth-server/common"
  4. pb "auth-server/rpc_idl/dr_study_pb"
  5. "auth-server/service"
  6. "fmt"
  7. "github.com/gin-gonic/gin"
  8. "google.golang.org/protobuf/encoding/protojson"
  9. "net/http"
  10. )
  11. func CreateStudy(c *gin.Context) {
  12. request := pb.StudyRequest{}
  13. reqBytes, err := c.GetRawData()
  14. if err != nil {
  15. c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to read request body"})
  16. return
  17. }
  18. unmarshaler := protojson.UnmarshalOptions{
  19. AllowPartial: true, // 允许部分解析,即使缺少必需字段
  20. DiscardUnknown: true, // 丢弃 JSON 中 Protobuf 消息未定义的字段
  21. }
  22. err = unmarshaler.Unmarshal(reqBytes, &request)
  23. if err != nil {
  24. c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("Failed to unmarshal JSON to Protobuf: %v", err)})
  25. return
  26. }
  27. res, err := service.StudyClient.CreateStudy(common.GC2GM(c), &request)
  28. if err != nil {
  29. common.HttpErr(c, err)
  30. return
  31. }
  32. common.HttpSuccess(c, res)
  33. }
  34. func GetStudy(c *gin.Context) {
  35. id := c.Param("id")
  36. res, err := service.StudyClient.GetStudy(common.GC2GM(c), &id)
  37. if err != nil {
  38. common.HttpErr(c, err)
  39. return
  40. }
  41. common.HttpSuccess(c, res)
  42. }
  43. func CreateImage(c *gin.Context) {
  44. request := pb.CreateImageRequest{}
  45. reqBytes, err := c.GetRawData()
  46. if err != nil {
  47. c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to read request body"})
  48. return
  49. }
  50. unmarshaler := protojson.UnmarshalOptions{
  51. AllowPartial: true, // 允许部分解析,即使缺少必需字段
  52. DiscardUnknown: true, // 丢弃 JSON 中 Protobuf 消息未定义的字段
  53. }
  54. err = unmarshaler.Unmarshal(reqBytes, &request)
  55. if err != nil {
  56. c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("Failed to unmarshal JSON to Protobuf: %v", err)})
  57. return
  58. }
  59. res, err := service.StudyClient.CreateImage(common.GC2GM(c), &request)
  60. if err != nil {
  61. common.HttpErr(c, err)
  62. return
  63. }
  64. common.HttpSuccess(c, res)
  65. }
  66. func CopyImage(c *gin.Context) {
  67. request := pb.IDRequest{}
  68. reqBytes, err := c.GetRawData()
  69. if err != nil {
  70. c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to read request body"})
  71. return
  72. }
  73. unmarshaler := protojson.UnmarshalOptions{
  74. AllowPartial: true, // 允许部分解析,即使缺少必需字段
  75. DiscardUnknown: true, // 丢弃 JSON 中 Protobuf 消息未定义的字段
  76. }
  77. err = unmarshaler.Unmarshal(reqBytes, &request)
  78. if err != nil {
  79. c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("Failed to unmarshal JSON to Protobuf: %v", err)})
  80. return
  81. }
  82. if request.InstanceId == nil {
  83. common.HttpErr(c, common.InvalidParam.SetParam("Name", "instance_id"))
  84. return
  85. }
  86. res, err := service.StudyClient.CopyImage(common.GC2GM(c), &request)
  87. if err != nil {
  88. common.HttpErr(c, err)
  89. return
  90. }
  91. common.HttpSuccess(c, res)
  92. }
  93. func SortImage(c *gin.Context) {
  94. request := pb.SortRequest{}
  95. reqBytes, err := c.GetRawData()
  96. if err != nil {
  97. c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to read request body"})
  98. return
  99. }
  100. unmarshaler := protojson.UnmarshalOptions{
  101. AllowPartial: true, // 允许部分解析,即使缺少必需字段
  102. DiscardUnknown: true, // 丢弃 JSON 中 Protobuf 消息未定义的字段
  103. }
  104. err = unmarshaler.Unmarshal(reqBytes, &request)
  105. if err != nil {
  106. c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("Failed to unmarshal JSON to Protobuf: %v", err)})
  107. return
  108. }
  109. res, err := service.StudyClient.SortImage(common.GC2GM(c), &request)
  110. if err != nil {
  111. common.HttpErr(c, err)
  112. return
  113. }
  114. common.HttpSuccess(c, res)
  115. }
  116. func DeleteImage(c *gin.Context) {
  117. id := c.Param("id")
  118. res, err := service.StudyClient.DeleteImage(common.GC2GM(c), &id)
  119. if err != nil {
  120. common.HttpErr(c, err)
  121. return
  122. }
  123. common.HttpSuccess(c, res)
  124. }