接口已全部新增完毕
This commit is contained in:
parent
29632f7d50
commit
90c2cf1ce0
@ -156,7 +156,7 @@ func (b *Res) GetResCaseRecordList(c *gin.Context) {
|
||||
|
||||
// 获取数据
|
||||
caseUserDao := dao.CaseUserDao{}
|
||||
caseUsers, total, err := caseUserDao.GetCaseUserRecordList(req, page, pageSize)
|
||||
caseUsers, total, err := caseUserDao.GetResCaseUserRecordList(req, page, pageSize)
|
||||
if err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
@ -306,3 +306,92 @@ func (b *Res) GetResCaseRecordList(c *gin.Context) {
|
||||
result["data"] = g
|
||||
responses.OkWithData(result, c)
|
||||
}
|
||||
|
||||
// GetResCaseBehaviorList 获取病例用户操作行为列表
|
||||
func (b *Res) GetResCaseBehaviorList(c *gin.Context) {
|
||||
resRequest := requests.ResRequest{}
|
||||
req := resRequest.GetResCaseBehaviorList
|
||||
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
|
||||
}
|
||||
|
||||
platformId := c.GetInt64("platformId") // 平台id
|
||||
if platformId == 0 {
|
||||
responses.FailWithMessage("非法请求", c)
|
||||
return
|
||||
}
|
||||
|
||||
req.PlatformId = platformId
|
||||
|
||||
if req.StartTime != "" {
|
||||
if req.EndTime == "" {
|
||||
responses.FailWithMessage("参数错误", c)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// 获取数据
|
||||
caseUserDao := dao.CaseUserDao{}
|
||||
caseUsers, err := caseUserDao.GetResCaseBehaviorList(req)
|
||||
if err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
// 处理返回值
|
||||
g := make([]*dto.ResCaseBehaviorDto, len(caseUsers))
|
||||
|
||||
if len(caseUsers) > 0 {
|
||||
userBehaviorRecordDao := dao.UserBehaviorRecordDao{}
|
||||
|
||||
for i, v := range caseUsers {
|
||||
response := &dto.ResCaseBehaviorDto{
|
||||
TslUid: v.User.UserIden,
|
||||
Sid: fmt.Sprintf("%d", v.CaseId),
|
||||
StartTime: time.Time(v.StartTime).Format("2006-01-02 15:04:05"),
|
||||
EndTime: time.Time(v.StartTime).Format("2006-01-02 15:04:05"),
|
||||
UseTime: v.ReadDuration,
|
||||
IsComplete: 1,
|
||||
Action: nil,
|
||||
}
|
||||
|
||||
// 获取用户操作行为记录
|
||||
maps := make(map[string]interface{})
|
||||
maps["case_id"] = v.CaseId
|
||||
maps["platform_id"] = v.PlatformId
|
||||
maps["user_id"] = v.UserId
|
||||
userBehaviorRecords, _ := userBehaviorRecordDao.GetUserBehaviorRecordList(maps)
|
||||
|
||||
// 评论
|
||||
if len(userBehaviorRecords) > 0 {
|
||||
response.Action = make([]*dto.ActionDto, len(userBehaviorRecords))
|
||||
|
||||
for i2, record := range userBehaviorRecords {
|
||||
// 用时
|
||||
useTime := time.Time(record.EndTime).Sub(time.Time(record.StartTime))
|
||||
|
||||
actionDto := &dto.ActionDto{
|
||||
Step: record.Step,
|
||||
In: time.Time(record.StartTime).Format("2006-01-02 15:04:05"),
|
||||
Out: time.Time(record.EndTime).Format("2006-01-02 15:04:05"),
|
||||
UseTime: int(useTime.Seconds()),
|
||||
}
|
||||
|
||||
response.Action[i2] = actionDto
|
||||
}
|
||||
}
|
||||
|
||||
// 将转换后的结构体添加到新切片中
|
||||
g[i] = response
|
||||
}
|
||||
}
|
||||
|
||||
responses.OkWithData(g, c)
|
||||
}
|
||||
|
||||
@ -108,8 +108,8 @@ func (r *CaseUserDao) GetCaseUser(maps interface{}) (m *model.CaseUser, err erro
|
||||
return m, nil
|
||||
}
|
||||
|
||||
// GetCaseUserRecordList 病例领取记录
|
||||
func (r *CaseUserDao) GetCaseUserRecordList(req requests.GetResCaseRecordList, page, pageSize int) (m []*model.CaseUser, total int64, err error) {
|
||||
// GetResCaseUserRecordList 病例领取记录
|
||||
func (r *CaseUserDao) GetResCaseUserRecordList(req requests.GetResCaseRecordList, page, pageSize int) (m []*model.CaseUser, total int64, err error) {
|
||||
var totalRecords int64
|
||||
|
||||
// 构建查询条件
|
||||
@ -144,3 +144,28 @@ func (r *CaseUserDao) GetCaseUserRecordList(req requests.GetResCaseRecordList, p
|
||||
}
|
||||
return m, totalRecords, nil
|
||||
}
|
||||
|
||||
// GetResCaseBehaviorList 获取病例用户操作行为列表
|
||||
func (r *CaseUserDao) GetResCaseBehaviorList(req requests.GetResCaseBehaviorList) (m []*model.CaseUser, err error) {
|
||||
// 构建查询条件
|
||||
query := global.Db.Model(&model.CaseUser{})
|
||||
|
||||
query = query.Preload("User")
|
||||
|
||||
query = query.Where("case_id = ?", req.CaseId)
|
||||
query = query.Where("platform_id = ?", req.PlatformId)
|
||||
|
||||
// 时间
|
||||
if req.StartTime != "" && req.EndTime != "" {
|
||||
query = query.Where("created_at BETWEEN ? AND ?", req.StartTime, req.EndTime)
|
||||
}
|
||||
|
||||
// 排序
|
||||
query = query.Order("created_at desc")
|
||||
|
||||
err = query.Find(&m).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
@ -11,8 +11,8 @@ type UserAnswerRecordDao struct {
|
||||
}
|
||||
|
||||
// GetUserAnswerRecordById 获取数据-id
|
||||
func (r *UserAnswerRecordDao) GetUserAnswerRecordById(CaseUserQuestionId int64) (m *model.UserAnswerRecord, err error) {
|
||||
err = global.Db.First(&m, CaseUserQuestionId).Error
|
||||
func (r *UserAnswerRecordDao) GetUserAnswerRecordById(RecordId int64) (m *model.UserAnswerRecord, err error) {
|
||||
err = global.Db.First(&m, RecordId).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -20,8 +20,8 @@ func (r *UserAnswerRecordDao) GetUserAnswerRecordById(CaseUserQuestionId int64)
|
||||
}
|
||||
|
||||
// GetUserAnswerRecordPreloadById 获取数据-加载全部关联-id
|
||||
func (r *UserAnswerRecordDao) GetUserAnswerRecordPreloadById(CaseUserQuestionId int64) (m *model.UserAnswerRecord, err error) {
|
||||
err = global.Db.Preload(clause.Associations).First(&m, CaseUserQuestionId).Error
|
||||
func (r *UserAnswerRecordDao) GetUserAnswerRecordPreloadById(RecordId int64) (m *model.UserAnswerRecord, err error) {
|
||||
err = global.Db.Preload(clause.Associations).First(&m, RecordId).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -38,8 +38,8 @@ func (r *UserAnswerRecordDao) DeleteUserAnswerRecord(tx *gorm.DB, maps interface
|
||||
}
|
||||
|
||||
// DeleteUserAnswerRecordById 删除-id
|
||||
func (r *UserAnswerRecordDao) DeleteUserAnswerRecordById(tx *gorm.DB, CaseUserQuestionId int64) error {
|
||||
if err := tx.Delete(&model.UserAnswerRecord{}, CaseUserQuestionId).Error; err != nil {
|
||||
func (r *UserAnswerRecordDao) DeleteUserAnswerRecordById(tx *gorm.DB, RecordId int64) error {
|
||||
if err := tx.Delete(&model.UserAnswerRecord{}, RecordId).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
@ -55,8 +55,8 @@ func (r *UserAnswerRecordDao) EditUserAnswerRecord(tx *gorm.DB, maps interface{}
|
||||
}
|
||||
|
||||
// EditUserAnswerRecordById 修改-id
|
||||
func (r *UserAnswerRecordDao) EditUserAnswerRecordById(tx *gorm.DB, CaseUserQuestionId int64, data interface{}) error {
|
||||
err := tx.Model(&model.UserAnswerRecord{}).Where("case_user_question_id = ?", CaseUserQuestionId).Updates(data).Error
|
||||
func (r *UserAnswerRecordDao) EditUserAnswerRecordById(tx *gorm.DB, RecordId int64, data interface{}) error {
|
||||
err := tx.Model(&model.UserAnswerRecord{}).Where("record_id = ?", RecordId).Updates(data).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
117
api/dao/UserBehaviorRecord.go
Normal file
117
api/dao/UserBehaviorRecord.go
Normal file
@ -0,0 +1,117 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"case-open-api/api/model"
|
||||
"case-open-api/global"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/clause"
|
||||
)
|
||||
|
||||
type UserBehaviorRecordDao struct {
|
||||
}
|
||||
|
||||
// GetUserBehaviorRecordById 获取数据-id
|
||||
func (r *UserBehaviorRecordDao) GetUserBehaviorRecordById(RecordId int64) (m *model.UserBehaviorRecord, err error) {
|
||||
err = global.Db.First(&m, RecordId).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
// GetUserBehaviorRecordPreloadById 获取数据-加载全部关联-id
|
||||
func (r *UserBehaviorRecordDao) GetUserBehaviorRecordPreloadById(RecordId int64) (m *model.UserBehaviorRecord, err error) {
|
||||
err = global.Db.Preload(clause.Associations).First(&m, RecordId).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
// DeleteUserBehaviorRecord 删除
|
||||
func (r *UserBehaviorRecordDao) DeleteUserBehaviorRecord(tx *gorm.DB, maps interface{}) error {
|
||||
err := tx.Where(maps).Delete(&model.UserBehaviorRecord{}).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeleteUserBehaviorRecordById 删除-id
|
||||
func (r *UserBehaviorRecordDao) DeleteUserBehaviorRecordById(tx *gorm.DB, RecordId int64) error {
|
||||
if err := tx.Delete(&model.UserBehaviorRecord{}, RecordId).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// EditUserBehaviorRecord 修改
|
||||
func (r *UserBehaviorRecordDao) EditUserBehaviorRecord(tx *gorm.DB, maps interface{}, data interface{}) error {
|
||||
err := tx.Model(&model.UserBehaviorRecord{}).Where(maps).Updates(data).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// EditUserBehaviorRecordById 修改-id
|
||||
func (r *UserBehaviorRecordDao) EditUserBehaviorRecordById(tx *gorm.DB, RecordId int64, data interface{}) error {
|
||||
err := tx.Model(&model.UserBehaviorRecord{}).Where("record_id = ?", RecordId).Updates(data).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetUserBehaviorRecordList 获取列表
|
||||
func (r *UserBehaviorRecordDao) GetUserBehaviorRecordList(maps interface{}) (m []*model.UserBehaviorRecord, err error) {
|
||||
err = global.Db.Where(maps).Find(&m).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
// GetUserBehaviorRecordPreloadList 获取列表
|
||||
func (r *UserBehaviorRecordDao) GetUserBehaviorRecordPreloadList(maps interface{}) (m []*model.UserBehaviorRecord, err error) {
|
||||
err = global.Db.Preload(clause.Associations).Where(maps).Find(&m).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
// GetUserBehaviorRecordCount 获取数量
|
||||
func (r *UserBehaviorRecordDao) GetUserBehaviorRecordCount(maps interface{}) (total int64, err error) {
|
||||
err = global.Db.Model(&model.UserBehaviorRecord{}).Where(maps).Count(&total).Error
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return total, nil
|
||||
}
|
||||
|
||||
// GetUserBehaviorRecordListRand 获取列表-随机
|
||||
func (r *UserBehaviorRecordDao) GetUserBehaviorRecordListRand(maps interface{}, limit int) (m []*model.UserBehaviorRecord, err error) {
|
||||
err = global.Db.Where(maps).Order("rand()").Limit(limit).Find(&m).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
// AddUserBehaviorRecord 新增
|
||||
func (r *UserBehaviorRecordDao) AddUserBehaviorRecord(tx *gorm.DB, model *model.UserBehaviorRecord) (*model.UserBehaviorRecord, error) {
|
||||
if err := tx.Create(model).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return model, nil
|
||||
}
|
||||
|
||||
// GetUserBehaviorRecord 获取
|
||||
func (r *UserBehaviorRecordDao) GetUserBehaviorRecord(maps interface{}) (m *model.UserBehaviorRecord, err error) {
|
||||
err = global.Db.Where(maps).First(&m).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
@ -63,6 +63,25 @@ type ResCaseRecordDto struct {
|
||||
Remark []*RemarkDto `json:"remark"` // 评论
|
||||
}
|
||||
|
||||
// ResCaseBehaviorDto 病例用户操作行为
|
||||
type ResCaseBehaviorDto struct {
|
||||
TslUid string `json:"tsl_uid"` // 天士力系统uid
|
||||
Sid string `json:"sid"` // 病例id
|
||||
StartTime string `json:"starttime"` // 开始时间
|
||||
EndTime string `json:"endtime"` // 结束时间
|
||||
UseTime int `json:"usetime"` // 总用时单位秒
|
||||
IsComplete int `json:"is_complete"` // 是否完成了问卷 1是,0 否
|
||||
Action []*ActionDto `json:"action"` // 步骤数组
|
||||
}
|
||||
|
||||
// ActionDto 病例用户操作行为-步骤数组
|
||||
type ActionDto struct {
|
||||
Step string `json:"step"` //步骤名称
|
||||
In string `json:"in"` //进入时间
|
||||
Out string `json:"out"` //结束时间
|
||||
UseTime int `json:"usetime"` //用时 单位秒
|
||||
}
|
||||
|
||||
// QuestionAnswerDto 病例领取记录-问题
|
||||
type QuestionAnswerDto struct {
|
||||
Question string `json:"question"` // 问题标题
|
||||
|
||||
@ -8,13 +8,15 @@ import (
|
||||
|
||||
// CaseUser 统计数据-病例-用户
|
||||
type CaseUser struct {
|
||||
CaseUserId int64 `gorm:"column:case_user_id;type:bigint(19);primary_key;comment:主键id" json:"case_user_id"`
|
||||
CaseId int64 `gorm:"column:case_id;type:bigint(19);comment:所属病例id;NOT NULL" json:"case_id"`
|
||||
PlatformId int64 `gorm:"column:platform_id;type:bigint(19);comment:用户所属平台id;NOT NULL" json:"platform_id"`
|
||||
UserId int64 `gorm:"column:user_id;type:bigint(19);comment:用户id;NOT NULL" json:"user_id"`
|
||||
ShareUserIden string `gorm:"column:share_user_iden;type:varchar(100);comment:分享人标识" json:"share_user_iden"`
|
||||
ReadDuration int `gorm:"column:read_duration;type:int(5);default:0;comment:阅读时长(秒)" json:"read_duration"`
|
||||
TotalScore int `gorm:"column:total_score;type:int(5);default:0;comment:单个病例领取总积分" json:"total_score"`
|
||||
CaseUserId int64 `gorm:"column:case_user_id;type:bigint(19);primary_key;comment:主键id" json:"case_user_id"`
|
||||
CaseId int64 `gorm:"column:case_id;type:bigint(19);comment:所属病例id;NOT NULL" json:"case_id"`
|
||||
PlatformId int64 `gorm:"column:platform_id;type:bigint(19);comment:用户所属平台id;NOT NULL" json:"platform_id"`
|
||||
UserId int64 `gorm:"column:user_id;type:bigint(19);comment:用户id;NOT NULL" json:"user_id"`
|
||||
ShareUserIden string `gorm:"column:share_user_iden;type:varchar(100);comment:分享人标识" json:"share_user_iden"`
|
||||
ReadDuration int `gorm:"column:read_duration;type:int(5);default:0;comment:阅读时长(秒)" json:"read_duration"`
|
||||
TotalScore int `gorm:"column:total_score;type:int(5);default:0;comment:单个病例领取总积分" json:"total_score"`
|
||||
StartTime LocalTime `gorm:"column:start_time;type:datetime;comment:开始参与时间" json:"start_time"`
|
||||
EndTime LocalTime `gorm:"column:end_time;type:datetime;comment:结束参与时间" json:"end_time"`
|
||||
Model
|
||||
Platform *Platform `gorm:"foreignKey:PlatformId;references:platform_id" json:"platform"`
|
||||
User *User `gorm:"foreignKey:UserId;references:user_id" json:"user"`
|
||||
|
||||
@ -20,7 +20,7 @@ type UserAnswerRecord struct {
|
||||
}
|
||||
|
||||
func (m *UserAnswerRecord) TableName() string {
|
||||
return "user_answer_records"
|
||||
return "user_answer_record"
|
||||
}
|
||||
|
||||
func (m *UserAnswerRecord) BeforeCreate(tx *gorm.DB) error {
|
||||
|
||||
37
api/model/UserBehaviorRecord.go
Normal file
37
api/model/UserBehaviorRecord.go
Normal file
@ -0,0 +1,37 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"case-open-api/global"
|
||||
"gorm.io/gorm"
|
||||
"time"
|
||||
)
|
||||
|
||||
// UserBehaviorRecord 用户操作记录
|
||||
type UserBehaviorRecord struct {
|
||||
RecordId int64 `gorm:"column:record_id;type:bigint(19);primary_key;comment:主键id" json:"record_id"`
|
||||
CaseId int64 `gorm:"column:case_id;type:bigint(19);comment:病例id;NOT NULL" json:"case_id"`
|
||||
PlatformId int64 `gorm:"column:platform_id;type:bigint(19);comment:平台id;NOT NULL" json:"platform_id"`
|
||||
UserId int64 `gorm:"column:user_id;type:bigint(19);comment:用户id;NOT NULL" json:"user_id"`
|
||||
Step string `gorm:"column:step;type:varchar(100);comment:步骤名称" json:"step"`
|
||||
StartTime LocalTime `gorm:"column:start_time;type:datetime;comment:开始时间" json:"start_time"`
|
||||
EndTime LocalTime `gorm:"column:end_time;type:datetime;comment:结束时间" json:"end_time"`
|
||||
Model
|
||||
}
|
||||
|
||||
func (m *UserBehaviorRecord) TableName() string {
|
||||
return "user_behavior_record"
|
||||
}
|
||||
|
||||
func (m *UserBehaviorRecord) BeforeCreate(tx *gorm.DB) error {
|
||||
if m.RecordId == 0 {
|
||||
m.RecordId = 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
|
||||
}
|
||||
@ -1,9 +1,10 @@
|
||||
package requests
|
||||
|
||||
type ResRequest struct {
|
||||
GetResProjectList // 获取项目列表
|
||||
GetResCaseList // 获取病例列表
|
||||
GetResCaseRecordList // 病例领取记录
|
||||
GetResProjectList // 获取项目列表
|
||||
GetResCaseList // 获取病例列表
|
||||
GetResCaseRecordList // 病例领取记录
|
||||
GetResCaseBehaviorList // 获取病例用户操作行为列表
|
||||
}
|
||||
|
||||
// GetResProjectList 获取项目列表
|
||||
@ -25,3 +26,11 @@ type GetResCaseRecordList struct {
|
||||
StartTime string `json:"starttime" form:"starttime" label:"开始时间"`
|
||||
EndTime string `json:"endtime" form:"endtime" label:"结束时间"`
|
||||
}
|
||||
|
||||
// GetResCaseBehaviorList 获取病例用户操作行为列表
|
||||
type GetResCaseBehaviorList struct {
|
||||
PlatformId int64 `json:"platform_id" form:"platform_id" label:"平台id"`
|
||||
CaseId string `json:"sid" form:"sid" label:"病例标识" validate:"required"`
|
||||
StartTime string `json:"starttime" form:"starttime" label:"开始时间" validate:"required"`
|
||||
EndTime string `json:"endtime" form:"endtime" label:"结束时间" validate:"required"`
|
||||
}
|
||||
|
||||
@ -101,6 +101,9 @@ func privateRouter(r *gin.Engine, api controller.Api) {
|
||||
|
||||
// 病例领取记录
|
||||
resCaseGroup.GET("/record", api.Res.GetResCaseRecordList)
|
||||
|
||||
// 获取病例用户操作行为列表
|
||||
resCaseGroup.GET("/behavior/list", api.Res.GetResCaseBehaviorList)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user