diff --git a/api/controller/base.go b/api/controller/base.go index 4ac8b36..ff52aec 100644 --- a/api/controller/base.go +++ b/api/controller/base.go @@ -11,4 +11,5 @@ type Api struct { type version1 struct { UserDoctor v1.UserDoctor // 角色数据 WeChat v1.WeChat // 微信数据 + Coupon v1.Coupon // 优惠卷数据 } diff --git a/api/controller/v1/coupon.go b/api/controller/v1/coupon.go new file mode 100644 index 0000000..4c77480 --- /dev/null +++ b/api/controller/v1/coupon.go @@ -0,0 +1,39 @@ +package v1 + +import ( + "github.com/gin-gonic/gin" + requestsV1 "hospital-open-api/api/requests/v1" + "hospital-open-api/api/responses" + serviceV1 "hospital-open-api/api/service/v1" + "hospital-open-api/global" + "hospital-open-api/utils" +) + +type Coupon struct{} + +// GetMultiDoctor 获取多点执业医生详情 +func (r *Coupon) GetMultiDoctor(c *gin.Context) { + userDoctorRequest := requestsV1.UserDoctorRequest{} + req := userDoctorRequest.GetMultiDoctor + + if err := c.ShouldBind(&req); err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + // 参数验证 + if err := global.Validate.Struct(req); err != nil { + responses.FailWithMessage(utils.Translate(err), c) + return + } + + // 业务处理 + userDoctorService := serviceV1.UserDoctorService{} + getMultiDoctorResponses, err := userDoctorService.GetMultiDoctor(req) + if err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + responses.OkWithData(getMultiDoctorResponses, c) +} diff --git a/api/controller/v1/userDoctor.go b/api/controller/v1/userDoctor.go index 97d4342..ad31294 100644 --- a/api/controller/v1/userDoctor.go +++ b/api/controller/v1/userDoctor.go @@ -98,6 +98,13 @@ func (r *UserDoctor) GetUserDoctorPage(c *gin.Context) { return } + userDoctorService := serviceV1.UserDoctorService{} + for _, respons := range userDoctor { + if len(respons.DoctorInquiryConfig) > 0 { + respons.MultiPointStatus, _ = userDoctorService.GetDoctorMultiPointEnable(respons.DoctorInquiryConfig) + } + } + // 处理返回值 getUserDoctorPageResponses := dtoV1.GetUserDoctorPageListDto(userDoctor) diff --git a/api/router/router.go b/api/router/router.go index 40c8149..082d822 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -107,11 +107,8 @@ func privateRouter(r *gin.Engine, api controller.Api) { // 优惠卷 couponGroup := v1Group.Group("/coupon") { - // 查询用户某一优惠卷领取状态 - couponGroup.GET("", api.V1.UserDoctor.GetDoctor) - // 领取某一优惠卷 - couponGroup.POST("", api.V1.UserDoctor.GetDoctor) + couponGroup.POST("/receive/:coupon_id", api.V1.Coupon.GetMultiDoctor) } } } diff --git a/api/service/v1/UserDoctor.go b/api/service/v1/UserDoctor.go index 8deb3d6..87d2159 100644 --- a/api/service/v1/UserDoctor.go +++ b/api/service/v1/UserDoctor.go @@ -3,6 +3,7 @@ package v1 import ( "hospital-open-api/api/dao" dtoV1 "hospital-open-api/api/dto/v1" + "hospital-open-api/api/model" requestsV1 "hospital-open-api/api/requests/v1" ) @@ -19,6 +20,11 @@ func (r *UserDoctorService) GetDoctor(req requestsV1.GetDoctor) (g *dtoV1.UserDo return nil, err } + if len(userDoctor.DoctorInquiryConfig) > 0 { + // 获取医生是否可处方图标展示状态 + userDoctor.MultiPointStatus, _ = r.GetDoctorMultiPointEnable(userDoctor.DoctorInquiryConfig) + } + // 处理返回值 g = dtoV1.GetDoctorDto(userDoctor) @@ -59,3 +65,16 @@ func (r *UserDoctorService) GetMultiDoctor(req requestsV1.GetMultiDoctor) (g *dt return g, nil } + +// GetDoctorMultiPointEnable 获取医生是否可处方图标展示状态 +func (r *UserDoctorService) GetDoctorMultiPointEnable(m []*model.DoctorInquiryConfig) (int, error) { + if len(m) > 0 { + for _, config := range m { + if config.InquiryType == 4 && config.InquiryMode == 1 && config.IsEnable == 1 { + return 1, nil + } + } + } + + return 0, nil +}