Merge branch 'dev'

This commit is contained in:
wucongxing8150 2025-04-15 09:18:15 +08:00
commit fce37aaa1b
10 changed files with 195 additions and 30 deletions

View File

@ -8,6 +8,7 @@ import (
"hospital-admin-api/config"
"hospital-admin-api/global"
"hospital-admin-api/utils"
"time"
)
type Public struct{}
@ -27,20 +28,6 @@ func (b *Public) GetCaptcha(c *gin.Context) {
// Login 登陆
func (b *Public) Login(c *gin.Context) {
//orderService := service.OrderService{}
//res, err := orderService.PdfToImg()
//if err != nil {
// responses.FailWithMessage(err.Error(), c)
// return
//}
//
//if res != true {
// responses.FailWithMessage("错误", c)
// return
//}
//responses.Ok(c)
//return
var adminRequest requests.AdminRequest
if err := c.ShouldBind(&adminRequest.Login); err != nil {
@ -72,5 +59,15 @@ func (b *Public) Login(c *gin.Context) {
return
}
// 开始记录api请求时间
key := "request_" + token.UserId
// 增加缓存
_, err = global.Redis.Set(c, "request_api"+key, time.Now().Unix(), 30*60*time.Second).Result()
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
responses.OkWithData(token, c)
}

View File

@ -0,0 +1,62 @@
package dao
import (
"gorm.io/gorm"
"hospital-admin-api/api/model"
"hospital-admin-api/global"
)
type AdminApiRequestDao struct {
}
// GetAdminApiRequestById 获取接口数据-接口id
func (r *AdminApiRequestDao) GetAdminApiRequestById(RequestId int64) (m *model.AdminAPI, err error) {
err = global.Db.First(&m, RequestId).Error
if err != nil {
return nil, err
}
return m, nil
}
// AddAdminApiRequest 新增接口
func (r *AdminApiRequestDao) AddAdminApiRequest(tx *gorm.DB, model *model.AdminAPI) (*model.AdminAPI, error) {
if err := tx.Create(model).Error; err != nil {
return nil, err
}
return model, nil
}
// GetAdminApiRequestList 获取接口列表
func (r *AdminApiRequestDao) GetAdminApiRequestList(maps interface{}) (m []*model.AdminAPI, err error) {
err = global.Db.Where(maps).Find(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// GetAdminApiRequest 获取
func (r *AdminApiRequestDao) GetAdminApiRequest(maps interface{}) (m *model.AdminAPI, err error) {
err = global.Db.Where(maps).First(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// DeleteAdminApiRequestById 删除接口-接口id
func (r *AdminApiRequestDao) DeleteAdminApiRequestById(tx *gorm.DB, RequestId int64) error {
if err := tx.Delete(&model.AdminAPI{}, RequestId).Error; err != nil {
return err
}
return nil
}
// EditAdminApiRequestById 修改接口-接口id
func (r *AdminApiRequestDao) EditAdminApiRequestById(tx *gorm.DB, RequestId int64, data interface{}) error {
err := tx.Model(&model.AdminAPI{}).Where("request_id = ?", RequestId).Updates(data).Error
if err != nil {
return err
}
return nil
}

View File

@ -46,6 +46,8 @@ func (r *AdminRoleDao) GetAdminRolePageSearch(roleName string, page, pageSize in
query = query.Where("role_name = ?", roleName)
}
query = query.Where("role_id != ?", 1)
// 查询总数量
if err := query.Count(&totalRecords).Error; err != nil {
return nil, 0, err

View File

@ -0,0 +1,60 @@
package middlewares
import (
"fmt"
"github.com/gin-gonic/gin"
"hospital-admin-api/api/responses"
"hospital-admin-api/consts"
"hospital-admin-api/global"
"net/http"
"strconv"
"time"
)
// RequestApi 请求api处理
func RequestApi() gin.HandlerFunc {
return func(c *gin.Context) {
// 获取用户id
userId := c.GetInt64("UserId")
if userId == 0 {
responses.Fail(c)
c.Abort()
return
}
key := "request_" + fmt.Sprintf("%d", userId)
res, _ := global.Redis.Get(c, "request_api"+key).Result()
if res == "" {
c.JSON(http.StatusOK, gin.H{
"message": "长时间未操作,重新登录",
"code": consts.TokenExptired,
"data": "",
})
c.Abort()
return
}
timestamp, err := strconv.ParseInt(res, 10, 64)
if err != nil {
fmt.Println("时间戳转换错误:", err)
return
}
now := time.Now().Unix() // 当前时间戳
diff := now - timestamp // 计算时间差(秒)
// 20-30分钟时重新缓存
if diff >= 25*60 && diff <= 30*60 {
// 增加缓存
_, err := global.Redis.Set(c, "request_api"+key, time.Now().Unix(), 30*60*time.Second).Result()
if err != nil {
responses.FailWithMessage("错误", c)
return
}
}
c.Next()
}
}

View File

@ -0,0 +1,36 @@
package model
import (
"gorm.io/gorm"
"hospital-admin-api/global"
"time"
)
// AdminApiRequest 后台api请求记录
type AdminApiRequest struct {
RequestId int64 `gorm:"column:request_id;type:bigint(19);primary_key;comment:主键id" json:"request_id"`
UserId int64 `gorm:"column:user_id;type:bigint(19);comment:后台用户id" json:"user_id"`
ApiName string `gorm:"column:api_name;type:varchar(100);comment:api名称" json:"api_name"`
ApiPath string `gorm:"column:api_path;type:varchar(255);comment: 接口路径(全路径 id为:id" json:"api_path"`
ApiMethod string `gorm:"column:api_method;type:varchar(10);comment:请求类型put:修改 post:新增 get:获取 " json:"api_method"`
RequestTime LocalTime `gorm:"column:request_time;type:datetime;comment:请求时间" json:"request_time"`
Model
}
func (m *AdminApiRequest) TableName() string {
return "gdxz_admin_api_request"
}
func (m *AdminApiRequest) BeforeCreate(tx *gorm.DB) error {
if m.RequestId == 0 {
m.RequestId = global.Snowflake.Generate().Int64()
}
m.CreatedAt = LocalTime(time.Now())
tx.Statement.SetColumn("CreatedAt", m.CreatedAt)
m.UpdatedAt = LocalTime(time.Now())
tx.Statement.SetColumn("UpdatedAt", m.UpdatedAt)
return nil
}

View File

@ -15,6 +15,7 @@ type OrderProductItem struct {
ProductId int64 `gorm:"column:product_id;type:bigint(19);comment:商品id" json:"product_id"`
ProductName string `gorm:"column:product_name;type:varchar(255);comment:商品名称" json:"product_name"`
ProductPrice float64 `gorm:"column:product_price;type:decimal(10,2);comment:商品价格" json:"product_price"`
ActualProductPrice float64 `gorm:"column:actual_product_price;type:decimal(10,2);comment:实际商品价格" json:"actual_product_price"`
ProductPlatformCode string `gorm:"column:product_platform_code;type:varchar(100);comment:商品处方平台编码" json:"product_platform_code"`
Amount int `gorm:"column:amount;type:int(11);comment:数量" json:"amount"`
Manufacturer string `gorm:"column:manufacturer;type:varchar(255);comment:生产厂家" json:"manufacturer"`

View File

@ -58,6 +58,9 @@ func Init() *gin.Engine {
// 验证权限
r.Use(middlewares.Auth())
// 请求api处理
r.Use(middlewares.RequestApi())
// 私有路由-验证权限
privateRouter(r, api)

View File

@ -2,6 +2,7 @@ package service
import (
"errors"
"fmt"
"gorm.io/gorm"
"hospital-admin-api/api/dao"
"hospital-admin-api/api/dto"
@ -509,6 +510,7 @@ func (r *DoctorInquiryConfigService) AddDoctorInquiryConfig(req requests.AddDoct
tx := global.Db.Begin()
defer func() {
if r := recover(); r != nil {
fmt.Println(r)
tx.Rollback()
}
}()
@ -527,7 +529,7 @@ func (r *DoctorInquiryConfigService) AddDoctorInquiryConfig(req requests.AddDoct
doctorInquiryConfig, err = doctorInquiryConfigDao.AddDoctorInquiryConfig(tx, doctorInquiryConfig)
if err != nil || doctorInquiryConfig == nil {
tx.Rollback()
return false, errors.New(err.Error())
return false, errors.New("失败")
}
// 处理医生问诊时间
@ -584,7 +586,7 @@ func (r *DoctorInquiryConfigService) AddDoctorInquiryConfig(req requests.AddDoct
}
// 新增医生服务设置-疑难会诊
if req.InquiryType == 1 || req.InquiryMode == 6 {
if req.InquiryType == 1 && req.InquiryMode == 6 {
doctorInquiryConfigServiceDao := dao.DoctorInquiryConfigServiceDao{}
doctorInquiryConfigService := &model.DoctorInquiryConfigService{

View File

@ -200,13 +200,14 @@ func (r *OrderService) ReportPreProduct(orderProductId, adminUserId int64) (bool
// 药品数据2
orderDrugRequest := prescription.OrderDrugListRequest{
DrugCode: product.ProductPlatformCode, // 药品编码
ApprovalNumber: product.LicenseNumber, // 批准文号
DrugName: product.ProductName, // 药品名称
Specifications: product.ProductSpec, // 药品规格
Price: product.ProductPrice, // 药品单价
DrugCount: o.Amount, // 药品数量
PackingUnit: product.PackagingUnit, // 药品单位
DrugCode: product.ProductPlatformCode, // 药品编码
ApprovalNumber: product.LicenseNumber, // 批准文号
DrugName: product.ProductName, // 药品名称
Specifications: product.ProductSpec, // 药品规格
Price: product.ProductPrice, // 药品单价
DrugCount: o.Amount, // 药品数量
PackingUnit: product.PackagingUnit, // 药品单位
ActualSellingPrice: o.ActualProductPrice, // 实际商品价格
}
orderDrugListRequests[i] = orderDrugRequest
}

View File

@ -105,13 +105,14 @@ type DrugListRequest struct {
// OrderDrugListRequest 上报处方请求值-药品数据2
type OrderDrugListRequest struct {
DrugCode string `json:"drugCode"` // 药品编码
ApprovalNumber string `json:"approvalNumber"` // 批准文号
DrugName string `json:"drugName"` // 药品名称
Specifications string `json:"specifications"` // 药品规格
Price float64 `json:"price"` // 药品单价
DrugCount int `json:"drugCount"` // 药品数量
PackingUnit string `json:"packingUnit"` // 药品单位
DrugCode string `json:"drugCode"` // 药品编码
ApprovalNumber string `json:"approvalNumber"` // 批准文号
DrugName string `json:"drugName"` // 药品名称
Specifications string `json:"specifications"` // 药品规格
Price float64 `json:"price"` // 药品单价
DrugCount int `json:"drugCount"` // 药品数量
PackingUnit string `json:"packingUnit"` // 药品单位
ActualSellingPrice float64 `json:"actual_product_price"` // 药品实际销售单价
}
// GetProdStockRequest 获取商品库存请求值