Browse Source

风险等级测试

kobe6258 7 months ago
parent
commit
6b13525155

+ 12 - 1
controllers/report/report_controller.go

@@ -67,6 +67,7 @@ func (r *ReportController) List(permissionIds string) {
 			Current:  r.PageInfo.Current,
 			PageSize: r.PageInfo.PageSize,
 		}
+		detailType := r.Data["detailType"].(string)
 		permissionIdList, err := r.TransPermissionIds(permissionIds)
 		if err != nil {
 			logger.Error("品种列表解析错误:%v", err)
@@ -99,7 +100,7 @@ func (r *ReportController) List(permissionIds string) {
 		if len(permissionIdList) == 0 && len(reportOrgIds) == 0 {
 			all = true
 		}
-		list, err := report.GetReportPage(r.PageInfo, reportOrgIds, all)
+		list, err := report.GetReportPage(r.PageInfo, reportOrgIds, all, isLogin(detailType))
 		if err != nil {
 			r.FailedResult("分页查询报告列表失败", result)
 			return
@@ -111,6 +112,16 @@ func (r *ReportController) List(permissionIds string) {
 		return
 	})
 }
+func isLogin(listType string) bool {
+	if listType == "logout" {
+		logger.Info("当前用户未登录,展示部分详情")
+		return false
+	}
+	if listType == "login" {
+		return true
+	}
+	return false
+}
 
 // HotRanked @Title 获取本周最热的报告列表
 // @Description 获取本周最热的报告列表

+ 7 - 11
controllers/user/user_controller.go

@@ -313,9 +313,10 @@ func (u *UserController) FollowingAnalysts(analystId int) {
 }
 
 type UserProfileReq struct {
-	UserName  string `json:"userName"`
-	RiskLevel string `json:"riskLevel"`
-	Mobile    string `json:"mobile"`
+	UserName        string `json:"userName"`
+	RiskLevel       string `json:"riskLevel"`
+	Mobile          string `json:"mobile"`
+	RiskLevelStatus string `json:"riskLevelStatus"`
 }
 
 // Profile  获取用户信息
@@ -327,7 +328,9 @@ func (u *UserController) Profile() {
 	controllers.Wrap(&u.BaseController, func() (result *controllers.WrapData, err error) {
 		result = u.InitWrapData("获取用户信息详情失败")
 		userInfo := u.Data["user"].(user.User)
-		u.SuccessResult("获取研究员详情成功", covertToUserProfile(userInfo), result)
+		var userProfile user.UserProfile
+		userProfile, err = user.GetUserProfile(userInfo.Id)
+		u.SuccessResult("获取研究员详情成功", userProfile, result)
 		return
 	})
 }
@@ -430,13 +433,6 @@ func (u *UserController) ReadMessages() {
 		}
 	})
 }
-func covertToUserProfile(user user.User) UserProfileReq {
-	return UserProfileReq{
-		UserName:  user.Username,
-		RiskLevel: user.RiskLevel,
-		Mobile:    user.Mobile,
-	}
-}
 
 // ReadMessages  绑定微信公众号
 // @Summary 绑定微信公众号

+ 32 - 17
domian/user/user_serivce.go

@@ -16,15 +16,16 @@ const (
 )
 
 type UserDTO struct {
-	Id           int
-	Username     string
-	Mobile       string
-	OpenId       string
-	UnionId      string
-	RiskLevel    string
-	LoginStatus  userDao.LogType
-	FollowingGzh int
-	GzhOpenId    string
+	Id               int
+	Username         string
+	Mobile           string
+	OpenId           string
+	UnionId          string
+	RiskLevel        string
+	RiskValidEndDate string
+	LoginStatus      userDao.LogType
+	FollowingGzh     int
+	GzhOpenId        string
 }
 
 type FeedbackDTO struct {
@@ -35,13 +36,14 @@ type FeedbackDTO struct {
 
 func convertUserDTO(user userDao.TemplateUser) UserDTO {
 	return UserDTO{
-		Id:           user.Id,
-		Username:     user.Username,
-		Mobile:       user.Mobile,
-		OpenId:       user.OpenId,
-		LoginStatus:  user.LoginStatus,
-		RiskLevel:    user.RiskLevel,
-		FollowingGzh: user.FollowingGzh,
+		Id:               user.Id,
+		Username:         user.Username,
+		Mobile:           user.Mobile,
+		OpenId:           user.OpenId,
+		LoginStatus:      user.LoginStatus,
+		RiskLevel:        user.RiskLevel,
+		RiskValidEndDate: user.RiskValidEndDate,
+		FollowingGzh:     user.FollowingGzh,
 	}
 }
 func GetUserByMobile(mobile string) (dto UserDTO, err error) {
@@ -133,7 +135,20 @@ func BindUserMobile(userId int, mobile string) (err error) {
 	}
 	return
 }
-
+func GetUserById(userId int) (userDto UserDTO, err error) {
+	templateUser, err := userDao.GetUserById(userId)
+	if err != nil {
+		logger.Error("查询用户失败:%v", err)
+		return
+	}
+	if templateUser.IsDeleted == 1 {
+		logger.Error("用户已删除:%v", err)
+		err = errors.New("用户已删除")
+		return
+	}
+	userDto = convertUserDTO(templateUser)
+	return
+}
 func GetUserByOpenId(openId string) (userDto UserDTO, err error) {
 	templateUser, err := userDao.GetUserByOpenId(openId)
 	if err != nil {

+ 2 - 0
middleware/auth_middleware.go

@@ -42,7 +42,9 @@ var detailRoutes = []string{
 	"/media/media",
 	"/report/report",
 	"/media/list",
+	"/report/list",
 	"/media/search",
+	"/report/search",
 }
 var publicRoutes = []string{
 	"/auth/areaCodes",

+ 4 - 1
models/user/template_user.go

@@ -53,11 +53,14 @@ func GetUserByOpenId(openId string) (user TemplateUser, err error) {
 	return queryByColumn("open_id", openId)
 }
 
+func GetUserById(userId int) (user TemplateUser, err error) {
+	return queryByColumn("id", userId)
+}
 func GetUserByUnionId(unionId string) (user TemplateUser, err error) {
 	return queryByColumn("union_id", unionId)
 }
 
-func queryByColumn(column string, value string) (user TemplateUser, err error) {
+func queryByColumn(column string, value interface{}) (user TemplateUser, err error) {
 	err = models.Main().Unscoped().Where(column, value).First(&user).Error
 	return
 }

+ 1 - 0
models/user/user_event_flow.go

@@ -24,6 +24,7 @@ type UserEventFlow struct {
 // BeforeCreate 钩子用于在创建记录前设置 CreateTime
 func (uef *UserEventFlow) BeforeCreate(tx *gorm.DB) (err error) {
 	uef.CreateTime = time.Now()
+	uef.EventTime = time.Now()
 	return
 }
 

+ 2 - 1
service/report/report_service.go

@@ -167,7 +167,7 @@ func SearchMaxReportId(key string) (total int64, id int64) {
 }
 
 // GetReportPage 分页获取报告列表
-func GetReportPage(pageInfo page.PageInfo, orgIds map[string][]int, searchAll bool) (list []reportService.ReportDTO, err error) {
+func GetReportPage(pageInfo page.PageInfo, orgIds map[string][]int, searchAll bool, isLogin bool) (list []reportService.ReportDTO, err error) {
 	list, err = reportService.GetReportPageByOrgIds(pageInfo, orgIds, searchAll)
 	//并发获取研报的标签
 	var wg sync.WaitGroup
@@ -175,6 +175,7 @@ func GetReportPage(pageInfo page.PageInfo, orgIds map[string][]int, searchAll bo
 	for i := 0; i < len(list); i++ {
 		go func(report *reportService.ReportDTO) {
 			defer wg.Done()
+			report.Login = isLogin
 			report.PermissionNames = getReportPermissionNames(report.OrgId, report.Source)
 			var src string
 			src, err = mediaService.GetImageSrc(report.CoverSrc)

+ 56 - 0
service/user/user_service.go

@@ -12,6 +12,12 @@ import (
 	"time"
 )
 
+const (
+	riskValid   = "valid"
+	riskExpired = "expired"
+	riskUnTest  = "unTest"
+)
+
 type User struct {
 	Id        int    `json:"id"`
 	Username  string `json:"username"`
@@ -27,6 +33,56 @@ type AnalystDetail struct {
 	Followed     string `json:"Followed"`
 }
 
+type UserProfile struct {
+	Mobile          string `json:"mobile"`
+	RiskLevel       string `json:"riskLevel"`
+	RiskLevelStatus string `json:"riskLevelStatus"`
+	UserName        string `json:"userName"`
+}
+
+func convertUserDTOToProfile(dto userService.UserDTO) (profile UserProfile) {
+	profile = UserProfile{
+		Mobile:    dto.Mobile,
+		RiskLevel: dto.RiskLevel,
+		UserName:  dto.Username,
+	}
+	if profile.UserName == "" {
+		profile.UserName = dto.Mobile
+	}
+	if dto.RiskLevel == "" {
+		profile.RiskLevelStatus = riskUnTest
+		return
+	}
+	date, err := time.Parse(time.DateOnly, dto.RiskValidEndDate)
+	if err != nil {
+		logger.Error("解析日期失败:%v", err)
+		profile.RiskLevelStatus = riskExpired
+		return
+	}
+	currentDate := time.Now().Truncate(24 * time.Hour)
+	expiryDate := date.Truncate(24 * time.Hour)
+	if expiryDate.Before(currentDate) {
+		profile.RiskLevelStatus = riskExpired
+		return
+	}
+	profile.RiskLevelStatus = riskValid
+	return
+}
+func GetUserProfile(userId int) (userProfile UserProfile, err error) {
+	userDTO, err := userService.GetUserById(userId)
+	if err != nil {
+		if errors.Is(err, gorm.ErrRecordNotFound) {
+			logger.Error("用户不存在,用户Id:%d", userId)
+			err = exception.New(exception.TemplateUserNotFound)
+		} else {
+			logger.Error("获取用户信息失败:%v", err)
+			err = exception.New(exception.TemplateUserFoundFailed)
+		}
+		return
+	}
+	userProfile = convertUserDTOToProfile(userDTO)
+	return
+}
 func GetAnalystDetail(userId int, analystId int) (analystDetail AnalystDetail, err error) {
 	analyst, err := analystService.GetAnalystById(analystId)
 	if err != nil {