feat:完善产品详情

This commit is contained in:
henry
2021-12-09 16:17:23 +08:00
parent adc698840c
commit 626f30a2bd
13 changed files with 361 additions and 359 deletions

View File

@ -49,86 +49,6 @@ func (*User) BindMobile(c *gin.Context) {
api.APIResponse(err)(c)
}
//func (*User) SettledCompany(c *gin.Context) {
// form := &struct {
// InviteCode string `json:"invite_code" form:"invite_code"`
// userSettledForm
// }{}
// if err := api.Bind(form)(c); err != nil {
// api.APIFailure(err.(error))(c)
// return
// }
// err := user.NewSettled()(api.GetSession()(c).(*session.Enterprise)).Company(&user.SettledParams{
// Image: form.FilterImageURL(), Name: form.Name, Code: form.Code,
// Area: form.Area, Introduce: form.Introduce, Industrys: form.Industrys, Keywords: form.Keywords,
// }, (&api.IDStringForm{ID: form.InviteCode}).Convert(), nil)
// api.APIResponse(err)(c)
//}
//
//func (*User) SettledExpert(c *gin.Context) {
// form := &struct {
// userSettledForm
// config.IdentityForExpert
// }{}
// if err := api.Bind(form)(c); err != nil {
// api.APIFailure(err.(error))(c)
// return
// }
// err := user.NewSettled()(api.GetSession()(c).(*session.Enterprise)).Expert(&user.SettledParams{
// Area: form.Area, Introduce: form.Introduce, Industrys: form.Industrys,
// Keywords: form.Keywords,
// }, &form.IdentityForExpert)
// api.APIResponse(err)(c)
//}
//
//func (*User) SettledResearch(c *gin.Context) {
// form := &struct {
// userSettledForm
// config.IdentityForResearch
// }{}
// if err := api.Bind(form)(c); err != nil {
// api.APIFailure(err.(error))(c)
// return
// }
// err := user.NewSettled()(api.GetSession()(c).(*session.Enterprise)).Research(&user.SettledParams{
// Image: form.FilterImageURL(), Name: form.Name, Code: form.Code,
// Area: form.Area, Introduce: form.Introduce, Industrys: form.Industrys, Keywords: form.Keywords,
// }, &form.IdentityForResearch)
// api.APIResponse(err)(c)
//}
//
//func (*User) SettledLaboratory(c *gin.Context) {
// form := &struct {
// userSettledForm
// config.IdentityForLaboratory
// }{}
// if err := api.Bind(form)(c); err != nil {
// api.APIFailure(err.(error))(c)
// return
// }
// err := user.NewSettled()(api.GetSession()(c).(*session.Enterprise)).Laboratory(&user.SettledParams{
// Image: form.FilterImageURL(), Name: form.Name, Code: form.Code,
// Area: form.Area, Introduce: form.Introduce, Industrys: form.Industrys, Keywords: form.Keywords,
// }, &form.IdentityForLaboratory)
// api.APIResponse(err)(c)
//}
//
//func (*User) SettledAgent(c *gin.Context) {
// form := &struct {
// api.IDStringForm
// userSettledForm
// }{}
// if err := api.Bind(form)(c); err != nil {
// api.APIFailure(err.(error))(c)
// return
// }
// err := user.NewSettled()(api.GetSession()(c).(*session.Enterprise)).Agent(&user.SettledParams{
// ID: form.Convert(), Image: form.FilterImageURL(), Name: form.Name, Code: form.Code,
// Area: form.Area, Introduce: form.Introduce, Industrys: form.Industrys, Keywords: form.Keywords,
// })
// api.APIResponse(err)(c)
//}
func (*User) IdentityBasic(c *gin.Context) {
data, err := user.NewIdentity()(api.GetSession()(c).(*session.Enterprise)).Basic()
api.APIResponse(err, data)(c)

View File

@ -28,31 +28,31 @@ type InstanceExamineInfo struct {
func (c *Instance) company() (bool, *model2.Examine, error) {
mUserCompany := model.NewUserCompany()
out, err := mUserCompany.Company(c.UID)
out, err := mUserCompany.Settled(c.UID)
return out.ID > 0, out.Examine, err
}
func (c *Instance) expert() (bool, *model2.Examine, error) {
mUserExpert := model.NewUserExpert()
out, err := mUserExpert.Expert(c.UID)
out, err := mUserExpert.Settled(c.UID)
return out.ID > 0, out.Examine, err
}
func (c *Instance) research() (bool, *model2.Examine, error) {
mUserResearch := model.NewUserResearch()
out, err := mUserResearch.Research(c.UID)
out, err := mUserResearch.Settled(c.UID)
return out.ID > 0, out.Examine, err
}
func (c *Instance) laboratory() (bool, *model2.Examine, error) {
mUserLaboratory := model.NewUserLaboratory()
out, err := mUserLaboratory.Laboratory(c.UID)
out, err := mUserLaboratory.Settled(c.UID)
return out.ID > 0, out.Examine, err
}
func (c *Instance) agent() (bool, *model2.Examine, error) {
mUserAgent := model.NewUserAgent()
out, err := mUserAgent.Agent(c.UID)
out, err := mUserAgent.Settled(c.UID)
return out.ID > 0, out.Examine, err
}

View File

@ -17,6 +17,151 @@ type Identity struct{ *session.Enterprise }
type IdentityHandle func(session *session.Enterprise) *Identity
type (
// IdentityForCompany 公司信息
IdentityForCompany struct {
ID string `json:"id"`
*model2.ManageCompany
Industrys []string `json:"industrys"`
Keywords []string `json:"keywords"`
Directions []string `json:"directions"`
}
// IdentityForExpert 专家信息
IdentityForExpert struct {
ID string `json:"id"`
*model2.ManageExpert
Industrys []string `json:"industrys"`
Keywords []string `json:"keywords"`
Researchs []string `json:"researchs"`
}
// IdentityForResearch 科研机构信息
IdentityForResearch struct {
ID string `json:"id"`
*model2.ManageResearch
Industrys []string `json:"industrys"`
Keywords []string `json:"keywords"`
Researchs []string `json:"researchs"`
}
// IdentityForLaboratory 实验室信息
IdentityForLaboratory struct {
ID string `json:"id"`
*model2.ManageLaboratory
Industrys []string `json:"industrys"`
Keywords []string `json:"keywords"`
Researchs []string `json:"researchs"`
}
// IdentityForAgent 经纪人信息
IdentityForAgent struct {
ID string `json:"id"`
*model2.ManageAgent
Industrys []string `json:"industrys"`
Keywords []string `json:"keywords"`
IDImage *model2.ManageAgentIDImage `json:"id_images"`
CredentialImages []string `json:"credential_images"`
}
)
// company 公司信息
func (c *Identity) company() (*IdentityForCompany, error) {
mUserCompany := model.NewUserCompany()
out, err := mUserCompany.Company(c.UID)
if err != nil {
return nil, err
} else if out.UserCompanyID <= 0 {
return nil, nil
}
return &IdentityForCompany{
ID: (&model2.Model{ID: out.UserCompanyID}).GetEncodeID(),
ManageCompany: out.ManageCompany,
Industrys: out.GetIndustryAttribute(),
Keywords: out.GetKeywordAttribute(),
Directions: out.GetDirectionAttribute(),
}, nil
}
func (c *Identity) companyEdit() {
}
// expert 专家信息
func (c *Identity) expert() (*IdentityForExpert, error) {
mUserExpert := model.NewUserExpert()
out, err := mUserExpert.Expert(c.UID)
if err != nil {
return nil, err
} else if out.UserExpertID <= 0 {
return nil, nil
}
return &IdentityForExpert{
ID: (&model2.Model{ID: out.UserExpertID}).GetEncodeID(),
ManageExpert: out.ManageExpert,
Industrys: out.GetIndustryAttribute(),
Keywords: out.GetKeywordAttribute(),
Researchs: out.GetResearchAttribute(),
}, nil
}
// research 科研机构信息
func (c *Identity) research() (*IdentityForResearch, error) {
mUserResearch := model.NewUserResearch()
out, err := mUserResearch.Research(c.UID)
if err != nil {
return nil, err
} else if out.UserResearchID <= 0 {
return nil, nil
}
return &IdentityForResearch{
ID: (&model2.Model{ID: out.UserResearchID}).GetEncodeID(),
ManageResearch: out.ManageResearch,
Industrys: out.GetIndustryAttribute(),
Keywords: out.GetKeywordAttribute(),
Researchs: out.GetResearchAttribute(),
}, nil
}
// Laboratory 实验室信息
func (c *Identity) laboratory() (*IdentityForLaboratory, error) {
mUserLaboratory := model.NewUserLaboratory()
out, err := mUserLaboratory.Laboratory(c.UID)
if err != nil {
return nil, err
} else if out.UserLaboratoryID <= 0 {
return nil, nil
}
return &IdentityForLaboratory{
ID: (&model2.Model{ID: out.UserLaboratoryID}).GetEncodeID(),
ManageLaboratory: out.ManageLaboratory,
Industrys: out.GetIndustryAttribute(),
Keywords: out.GetKeywordAttribute(),
Researchs: out.GetResearchAttribute(),
}, nil
}
// agent 经纪人信息
func (c *Identity) agent() (*IdentityForAgent, error) {
mUserAgent := model.NewUserAgent()
out, err := mUserAgent.Agent(c.UID)
if err != nil {
return nil, err
} else if out.UserAgentID <= 0 {
return nil, nil
}
return &IdentityForAgent{
ID: (&model2.Model{ID: out.UserAgentID}).GetEncodeID(),
ManageAgent: out.ManageAgent,
Industrys: out.GetIndustryAttribute(),
Keywords: out.GetKeywordAttribute(),
IDImage: out.GetIDImageAttribute(),
CredentialImages: out.GetCredentialImageAttribute(),
}, nil
}
// Basic 详细信息
func (c *Identity) Basic() (*InstanceDetailInfo, error) {
resp := &InstanceDetailInfo{InstanceInfo: InstanceInfo{Name: c.Name, Identity: c.Identity, SelectIdentity: c.SelectIdentity}}
@ -40,7 +185,18 @@ func (c *Identity) Basic() (*InstanceDetailInfo, error) {
}
// Detail 详细信息
func (c *Identity) Detail() (*InstanceDetailInfo, error) {
func (c *Identity) Detail() (interface{}, error) {
if c.Identity == config.TenantUserIdentityForCompany { // 公司企业身份
return c.company()
} else if c.Identity == config.TenantUserIdentityForExpert { // 专家身份
return c.expert()
} else if c.Identity == config.TenantUserIdentityForResearch { // 科研机构身份
return c.research()
} else if c.Identity == config.TenantUserIdentityForLaboratory { // 实验室身份
return c.laboratory()
} else if c.Identity == config.TenantUserIdentityForAgent { // 经纪人身份
return c.agent()
}
return nil, nil
}

View File

@ -1,241 +0,0 @@
package user
import (
"SciencesServer/app/api/enterprise/model"
"SciencesServer/app/basic/config"
model2 "SciencesServer/app/common/model"
"SciencesServer/app/session"
"errors"
)
// Settled 入驻
type Settled struct {
*session.Enterprise
local string
}
type SettledHandle func(session *session.Enterprise, local string) *Settled
// SettledParams 绑定信息
type SettledParams struct {
Name, Image, Code, Introduce string // 唯一编码
config.Area
Industrys, Keywords []string
}
// effect 入驻信息有效性
func (c *SettledParams) effect(iModel model2.IModel, local string) error {
//var count int64
//
//if err := model2.Count(iModel, &count, model2.NewWhere("uid", uid)); err != nil {
// return err
//} else if count > 0 {
// return errors.New("无权限操作,当前身份下已含有申请入驻信息")
//}
return nil
}
// pass 入驻信息通过性
func (c *SettledParams) pass(identity int, mStatus model2.ExamineStatusKind) (bool, error) {
if mStatus != model2.ExamineStatusForRefuse {
return false, nil
}
return true, nil
}
// filter 筛选信息
func (c *Settled) filter(identity int, where ...*model2.ModelWhere) (bool, error) {
mSysIdentity := model.NewSysIdentity()
_, err := model2.FirstField(mSysIdentity.SysIdentity, []string{"id", "register_count", "is_examine"}, model2.NewWhere("identity", identity))
if err != nil {
return true, err
}
var iModel model2.IModel
if identity&config.TenantUserIdentityForCompany > 0 {
iModel = model2.NewUserCompany()
} else if identity&config.TenantUserIdentityForExpert > 0 {
iModel = model2.NewUserExpert()
} else if identity&config.TenantUserIdentityForResearch > 0 {
iModel = model2.NewUserResearch()
} else if identity&config.TenantUserIdentityForLaboratory > 0 {
iModel = model2.NewUserLaboratory()
} else if identity&config.TenantUserIdentityForAgent > 0 {
iModel = model2.NewUserAgent()
}
var count int64
where = append(where, model2.NewWhere("status", model2.InvalidStatusForNot))
if err = model2.Count(iModel, &count, where...); err != nil {
return true, err
}
if count >= int64(mSysIdentity.RegisterCount) {
return true, errors.New("操作错误,已超过当前身份最大入驻人数")
}
return mSysIdentity.IsExamine == model2.SysIdentityExamineForYes, nil
}
//// Company 公司企业
//func (c *Settled) Company(params *SettledParams, inviterID uint64, other *config.IdentityForCompany) error {
// mManageCompany := model.NewManageCompany()
//
// isExist, err := model2.FirstField(mManageCompany.ManageCompany, []string{"id", "status"},
// model2.NewWhere("code", params.Code), model2.NewWhere("local", c.local),
// model2.NewWhere("status", model2.ExamineStatusForRefuse))
//
// isExamine := true
//
// if err != nil {
// return err
// } else if isExist {
// if mManageCompany.ExamineStatus == model2.ExamineStatusForOngoing {
// return errors.New("操作错误,当前企业信息审核中,不可入驻")
// }
// // 筛选企业条件
// if isExamine, err = c.filter(config.TenantUserIdentityForCompany, model2.NewWhere("company_id", mManageCompany.ID)); err != nil {
// return err
// }
// }
// mManageCompany.Local.Local = c.local
// mManageCompany.InviterID = inviterID
// mManageCompany.Name = params.Name
// mManageCompany.Code = params.Code
// mManageCompany.Image = model2.Image{Image: params.Image}
// mManageCompany.Area = model2.Area{
// Province: params.Area.Province, City: params.Area.City, District: params.Area.District, Address: params.Area.Address,
// }
// mManageCompany.Url = other.Url
// mManageCompany.SetIndustryAttribute(params.Industrys)
// mManageCompany.SetKeywordAttribute(params.Keywords)
// mManageCompany.Introduce = params.Introduce
//
// if isExamine {
// mManageCompany.ExamineStatus = model2.ExamineStatusForAgree
// }
// return orm.GetDB().Transaction(func(tx *gorm.DB) error {
// if mManageCompany.ID <= 0 {
// if err = model2.Create(mManageCompany.ManageCompany, tx); err != nil {
// return err
// }
// }
// // 过滤用户其他公司入驻信息
// mUserCompany := model.NewUserCompany()
//
// if err := model2.UpdatesWhere(mUserCompany.UserCompany, map[string]interface{}{
// "status": model2.InvalidStatusForYes, "updated_at": time.Now(),
// }, []*model2.ModelWhere{model2.NewWhere("uid", c.UID)}, tx); err != nil {
// return err
// }
// mUserCompany.UID = c.UID
// mUserCompany.CompanyID = mManageCompany.ID
// return model2.Create(mUserCompany.UserCompany, tx)
// })
//}
//
//// Expert 专家
//func (c *Settled) Expert(params *SettledParams, other *config.IdentityForExpert) error {
// mManageExpert := model3.NewManageExpert()
//
// err := params.effect(c.UID, mManageExpert.ManageExpert)
//
// if err != nil {
// return err
// }
// mManageExpert.Area = model2.Area{
// Province: params.Area.Province, City: params.Area.City, District: params.Area.District, Address: params.Area.Address,
// }
// mManageExpert.SetIndustryAttribute(params.Industrys)
// mManageExpert.SetKeywordAttribute(params.Keywords)
// mManageExpert.Introduce = params.Introduce
// mManageExpert.Position = utils.AnyToJSON(model2.Position{Longitude: other.Longitude, Latitude: other.Latitude})
// mManageExpert.School = other.School
// mManageExpert.Major = other.Major
// mManageExpert.Job = other.Job
// mManageExpert.Title = other.Title
// mManageExpert.WorkAt = utils.DataTimeToDate(other.WorkAt)
// mManageExpert.Research = utils.AnyToJSON(other.Research)
//
// if mManageExpert.ID <= 0 {
// mManageExpert.UID = c.UID
// return model2.Create(mManageExpert.ManageExpert)
// }
// if !params.pass(c.UID, mManageExpert.UID, mManageExpert.Status) {
// return errors.New("操作错误,无权限操作")
// }
// mManageExpert.Status = model2.ExamineStatusForOngoing
// return model2.Updates(mManageExpert.ManageExpert, mManageExpert.ManageExpert)
//}
//
//// Research 研究机构
//func (c *Settled) Research(params *SettledParams, other *config.IdentityForResearch) error {
// mManageResearch := model3.NewManageResearch()
//
// err := params.effect(c.UID, mManageResearch.ManageResearch)
//
// if err != nil {
// return err
// }
// mManageResearch.Area = model2.Area{
// Province: params.Area.Province, City: params.Area.City, District: params.Area.District, Address: params.Area.Address,
// }
// mManageResearch.Industry = params.Industrys
// mManageResearch.SetKeywordAttribute(params.Keywords)
// mManageResearch.Introduce = params.Introduce
// mManageResearch.Position = utils.AnyToJSON(model2.Position{Longitude: other.Longitude, Latitude: other.Latitude})
// mManageResearch.Research = other.Research
//
// if mManageResearch.ID <= 0 {
// mManageResearch.UID = c.UID
// return model2.Create(mManageResearch.ManageResearch)
// }
// if !params.pass(c.UID, mManageResearch.UID, mManageResearch.Status) {
// return errors.New("操作错误,无权限操作")
// }
// mManageResearch.Status = model2.ExamineStatusForOngoing
// return model2.Updates(mManageResearch.ManageResearch, mManageResearch.ManageResearch)
//}
//
//// Laboratory 实验室
//func (c *Settled) Laboratory(params *SettledParams, other *config.IdentityForLaboratory) error {
// mManageLaboratory := model3.NewManageLaboratory()
//
// err := params.effect(c.UID, mManageLaboratory.ManageLaboratory)
//
// if err != nil {
// return err
// }
// mManageLaboratory.Name = params.Name
// mManageLaboratory.Code = params.Code
// mManageLaboratory.Area = model2.Area{
// Province: params.Area.Province, City: params.Area.City, District: params.Area.District, Address: params.Area.Address,
// }
// mManageLaboratory.Industry = params.Industrys
// mManageLaboratory.SetKeywordAttribute(params.Keywords)
// mManageLaboratory.Introduce = params.Introduce
// mManageLaboratory.Position = utils.AnyToJSON(model2.Position{Longitude: other.Longitude, Latitude: other.Latitude})
// mManageLaboratory.Research = utils.AnyToJSON(other.Research)
//
// if mManageLaboratory.ID <= 0 {
// mManageLaboratory.UID = c.UID
// return model2.Create(mManageLaboratory.ManageLaboratory)
// }
// if !params.pass(c.UID, mManageLaboratory.UID, mManageLaboratory.Status) {
// return errors.New("操作错误,无权限操作")
// }
// mManageLaboratory.Status = model2.ExamineStatusForOngoing
// return model2.Updates(mManageLaboratory.ManageLaboratory, mManageLaboratory.ManageLaboratory)
//}
//
//// Agent 经纪人
//func (c *Settled) Agent(params *SettledParams) error {
// return nil
//}
func NewSettled() SettledHandle {
return func(session *session.Enterprise, local string) *Settled {
return &Settled{Enterprise: session, local: local}
}
}

View File

@ -10,7 +10,14 @@ type UserAgent struct {
*model.UserAgent
}
func (m *UserAgent) Agent(uid uint64) (*UserSettledInfo, error) {
type (
UserAgentInfo struct {
UserAgentID uint64 `json:"-"`
*model.ManageAgent
}
)
func (m *UserAgent) Settled(uid uint64) (*UserSettledInfo, error) {
out := new(UserSettledInfo)
err := orm.GetDB().Table(m.TableName()+" AS u").
@ -22,6 +29,19 @@ func (m *UserAgent) Agent(uid uint64) (*UserSettledInfo, error) {
return out, err
}
// Agent 经纪人信息
func (m *UserAgent) Agent(uid uint64) (*UserAgentInfo, error) {
out := new(UserAgentInfo)
err := orm.GetDB().Table(m.TableName()+" AS u").
Select("u.id AS user_agent_id", "c.*").
Joins(fmt.Sprintf("LEFT JOIN %s AS c ON u.agent_id = c.id", model.NewManageAgent().TableName())).
Where("u.uid = ?", uid).
Where("u.is_deleted = ? AND u.invalid_status = ?", model.DeleteStatusForNot, model.InvalidStatusForNot).
Scan(out).Error
return out, err
}
func NewUserAgent() *UserAgent {
return &UserAgent{model.NewUserAgent()}
}

View File

@ -10,13 +10,19 @@ type UserCompany struct {
*model.UserCompany
}
type UserSettledInfo struct {
ID uint64 `json:"id"`
*model.Examine
}
type (
UserSettledInfo struct {
ID uint64 `json:"id"`
*model.Examine
}
UserCompanyInfo struct {
*model.ManageCompany
UserCompanyID uint64 `json-"`
}
)
// Company 公司信息
func (m *UserCompany) Company(uid uint64) (*UserSettledInfo, error) {
// Settled 入驻信息
func (m *UserCompany) Settled(uid uint64) (*UserSettledInfo, error) {
out := new(UserSettledInfo)
err := orm.GetDB().Table(m.TableName()+" AS u").
@ -28,6 +34,19 @@ func (m *UserCompany) Company(uid uint64) (*UserSettledInfo, error) {
return out, err
}
// Company 公司信息
func (m *UserCompany) Company(uid uint64) (*UserCompanyInfo, error) {
out := new(UserCompanyInfo)
err := orm.GetDB().Table(m.TableName()+" AS u").
Select("u.id AS user_company_id", "c.*").
Joins(fmt.Sprintf("LEFT JOIN %s AS c ON u.company_id = c.id", model.NewManageCompany().TableName())).
Where("u.uid = ?", uid).
Where("u.is_deleted = ? AND u.invalid_status = ?", model.DeleteStatusForNot, model.InvalidStatusForNot).
Scan(out).Error
return out, err
}
func NewUserCompany() *UserCompany {
return &UserCompany{model.NewUserCompany()}
}

View File

@ -10,7 +10,15 @@ type UserExpert struct {
*model.UserExpert
}
func (m *UserExpert) Expert(uid uint64) (*UserSettledInfo, error) {
type (
// UserExpertInfo 专家信息
UserExpertInfo struct {
UserExpertID uint64 `json:"-"`
*model.ManageExpert
}
)
func (m *UserExpert) Settled(uid uint64) (*UserSettledInfo, error) {
out := new(UserSettledInfo)
err := orm.GetDB().Table(m.TableName()+" AS u").
@ -22,6 +30,19 @@ func (m *UserExpert) Expert(uid uint64) (*UserSettledInfo, error) {
return out, err
}
// Expert 专家信息
func (m *UserExpert) Expert(uid uint64) (*UserExpertInfo, error) {
out := new(UserExpertInfo)
err := orm.GetDB().Table(m.TableName()+" AS u").
Select("u.id AS user_expert_id", "c.*").
Joins(fmt.Sprintf("LEFT JOIN %s AS c ON u.expert_id = c.id", model.NewManageExpert().TableName())).
Where("u.uid = ?", uid).
Where("u.is_deleted = ? AND u.invalid_status = ?", model.DeleteStatusForNot, model.InvalidStatusForNot).
Scan(out).Error
return out, err
}
func NewUserExpert() *UserExpert {
return &UserExpert{model.NewUserExpert()}
}

View File

@ -10,7 +10,14 @@ type UserLaboratory struct {
*model.UserLaboratory
}
func (m *UserLaboratory) Laboratory(uid uint64) (*UserSettledInfo, error) {
type (
UserLaboratoryInfo struct {
UserLaboratoryID uint64 `json:"-"`
*model.ManageLaboratory
}
)
func (m *UserLaboratory) Settled(uid uint64) (*UserSettledInfo, error) {
out := new(UserSettledInfo)
err := orm.GetDB().Table(m.TableName()+" AS u").
@ -22,6 +29,18 @@ func (m *UserLaboratory) Laboratory(uid uint64) (*UserSettledInfo, error) {
return out, err
}
func (m *UserLaboratory) Laboratory(uid uint64) (*UserLaboratoryInfo, error) {
out := new(UserLaboratoryInfo)
err := orm.GetDB().Table(m.TableName()+" AS u").
Select("u.id AS user_laboratory_id", "c.*").
Joins(fmt.Sprintf("LEFT JOIN %s AS c ON u.laboratory_id = c.id", model.NewManageLaboratory().TableName())).
Where("u.uid = ?", uid).
Where("u.is_deleted = ? AND u.invalid_status = ?", model.DeleteStatusForNot, model.InvalidStatusForNot).
Scan(out).Error
return out, err
}
func NewUserLaboratory() *UserLaboratory {
return &UserLaboratory{model.NewUserLaboratory()}
}

View File

@ -10,7 +10,14 @@ type UserResearch struct {
*model.UserResearch
}
func (m *UserResearch) Research(uid uint64) (*UserSettledInfo, error) {
type (
UserResearchInfo struct {
UserResearchID uint64 `json:"-"`
*model.ManageResearch
}
)
func (m *UserResearch) Settled(uid uint64) (*UserSettledInfo, error) {
out := new(UserSettledInfo)
err := orm.GetDB().Table(m.TableName()+" AS u").
@ -22,6 +29,18 @@ func (m *UserResearch) Research(uid uint64) (*UserSettledInfo, error) {
return out, err
}
func (m *UserResearch) Research(uid uint64) (*UserResearchInfo, error) {
out := new(UserResearchInfo)
err := orm.GetDB().Table(m.TableName()+" AS u").
Select("u.id AS user_research_id", "c.*").
Joins(fmt.Sprintf("LEFT JOIN %s AS c ON u.research_id = c.id", model.NewManageResearch().TableName())).
Where("u.uid = ?", uid).
Where("u.is_deleted = ? AND u.invalid_status = ?", model.DeleteStatusForNot, model.InvalidStatusForNot).
Scan(out).Error
return out, err
}
func NewUserResearch() *UserResearch {
return &UserResearch{model.NewUserResearch()}
}