123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394 |
- package service
- import (
- "context"
- "fmt"
- "github.com/issue9/conv"
- "github.com/sirupsen/logrus"
- "time"
- "youngee_b_api/db"
- "youngee_b_api/model/common_model"
- "youngee_b_api/model/gorm_model"
- "youngee_b_api/model/http_model"
- )
- var SLocalLife *sLocalLife
- type sLocalLife struct {
- }
- // CreateSLocalLife 新建服务商加入商单后的公开本地生活
- func (*sLocalLife) CreateSLocalLife(ctx context.Context, request *http_model.LocalLifeAddToListRequest) error {
- var sLocalLifeInfo *gorm_model.YounggeeSLocalLifeInfo
- sLocalLifeInfo = &gorm_model.YounggeeSLocalLifeInfo{}
- // 1. 建立SLocalLife信息
- // 1.1. 根据传入的LocalLifeId去LocalLife表查找信息补全SLocalLife
- localLifeInfo, localErr := db.GetLocalLifeDetail(ctx, request.LocalId)
- if localErr != nil {
- return localErr
- }
- if localLifeInfo != nil {
- sLocalLifeInfo.LocalId = localLifeInfo.LocalId
- sLocalLifeInfo.SettleNum = 0
- sLocalLifeInfo.RecruitNum = 0
- sLocalLifeInfo.ApplyNum = 0
- sLocalLifeInfo.LocalType = localLifeInfo.LocalType
- sLocalLifeInfo.LocalName = localLifeInfo.LocalName
- sLocalLifeInfo.LocalPlatform = localLifeInfo.LocalPlatform
- sLocalLifeInfo.TaskStatus = localLifeInfo.TaskStatus
- sLocalLifeInfo.StoreId = localLifeInfo.StoreId
- sLocalLifeInfo.TeamBuyingId = localLifeInfo.TeamBuyingId
- sLocalLifeInfo.TaskForm = localLifeInfo.TaskForm
- sLocalLifeInfo.ContentType = localLifeInfo.ContentType
- sLocalLifeInfo.SLocalStatus = 2
- // 1.2. 填入加入商单操作人信息
- sLocalLifeInfo.SubAccountId = request.SubAccountId
- sLocalLifeInfo.SupplierId = request.SupplierId
- sLocalLifeInfo.OperatorType = request.OperatorType
- sLocalLifeInfo.CreateTime = time.Now()
- // 2. 入库
- sLocalId, createErr := db.CreateSLocalLife(ctx, sLocalLifeInfo)
- if createErr != nil {
- return createErr
- }
- // 2. 建立新的recruitStrategy
- // 2.1. 根据projectId去查找原来的recruitStrategy
- recruitStrategys, strategyErr := db.GetRecruitStrategyByProjectId(ctx, request.LocalId)
- if strategyErr != nil {
- return strategyErr
- }
- // 2.2. 设置新的结构体以写入
- var currRecruitStrategys []gorm_model.RecruitStrategy
- for _, strategy := range recruitStrategys {
- var currStrategy gorm_model.RecruitStrategy
- currStrategy.StrategyID = strategy.StrategyID
- currStrategy.QuoteRecruitStrategyId = int(strategy.RecruitStrategyID)
- currStrategy.FeeForm = strategy.FeeForm
- currStrategy.FollowersLow = strategy.FollowersLow
- currStrategy.FollowersUp = strategy.FollowersUp
- currStrategy.RecruitNumber = strategy.RecruitNumber
- currStrategy.Offer = strategy.Offer
- currStrategy.TOffer = strategy.TOffer
- currStrategy.ProjectID = "0"
- currStrategy.ServiceCharge = strategy.ServiceCharge
- currStrategy.ServiceRate = strategy.ServiceRate
- currStrategy.SLocalId = sLocalId
- currStrategy.StrategyType = 2
- currRecruitStrategys = append(currRecruitStrategys, currStrategy)
- }
- // 2.3. 写入
- createStrategyErr := db.CreateSpecialStrategy(ctx, currRecruitStrategys)
- if createStrategyErr != nil {
- return createStrategyErr
- }
- }
- return nil
- }
- func (*sLocalLife) ShowSLocalLife(ctx context.Context, req *http_model.ShowSLocalRequest) (*http_model.ShowSLocalData, error) {
- var sLocalInfo *http_model.ShowSLocalData
- sLocalInfo = &http_model.ShowSLocalData{}
- // 1. 查询系统信息
- localInfo, localErr := db.GetLocalLifeDetail(ctx, req.LocalId)
- if localErr != nil {
- return nil, localErr
- }
- if localInfo != nil {
- sLocalInfo.LocalId = localInfo.LocalId
- sLocalInfo.SLocalId = req.SLocalId
- sLocalInfo.LocalPlatform = localInfo.LocalPlatform
- sLocalInfo.TaskStatus = localInfo.TaskStatus
- sLocalInfo.EnterpriseId = localInfo.EnterpriseId
- sLocalInfo.ServiceChargeRate = localInfo.ServiceChargeRate
- sLocalInfo.EstimatedCost = localInfo.EstimatedCost
- sLocalInfo.CreateAt = conv.MustString(localInfo.CreatedAt)
- // 2. 关联主体
- // 2.1. 门店信息
- storeInfo, storeErr := db.FindStoreById(ctx, localInfo.StoreId)
- if storeErr != nil {
- return nil, storeErr
- }
- if storeInfo != nil {
- sLocalInfo.StoreId = storeInfo.StoreId
- sLocalInfo.StoreName = storeInfo.StoreName
- sLocalInfo.StoreCategory = storeInfo.StoreCategory
- sLocalInfo.StoreRelatedAt = conv.MustString(localInfo.StoreRelatedAt)
- // 2.2. 门店图片信息
- storePhotoInfo, storePhotoErr := db.GetStorePhotoByStoreID(ctx, localInfo.StoreId)
- if storePhotoErr != nil {
- return nil, storePhotoErr
- }
- if storePhotoInfo != nil {
- for _, photo := range storePhotoInfo {
- if photo.Symbol == 1 {
- sLocalInfo.StoreMainPhotoSymbol = 1
- sLocalInfo.StoreMainPhotoUrl = photo.PhotoUrl
- sLocalInfo.StoreMainPhotoUid = photo.PhotoUid
- }
- }
- }
- }
- // 2.3. 团购信息
- teamInfo, teamErr := db.FindTeamById(ctx, localInfo.StoreId)
- if teamErr != nil {
- return nil, teamErr
- }
- if teamInfo != nil {
- sLocalInfo.TeamBuyingId = teamInfo.StoreId
- sLocalInfo.TeamBuyingName = teamInfo.TeamBuyingName
- sLocalInfo.TeamBuyingCategory = teamInfo.TeamBuyingCategory
- sLocalInfo.TeamBuyingRelatedAt = conv.MustString(localInfo.TeamBuyingRelatedAt)
- // 2.4. 团购图片信息
- teamPhotoInfo, teamPhotoErr := db.GetTeamPhotoByStoreID(ctx, localInfo.StoreId)
- if teamPhotoErr != nil {
- return nil, teamPhotoErr
- }
- if teamPhotoInfo != nil {
- for _, photo := range teamPhotoInfo {
- if photo.Symbol == 1 {
- sLocalInfo.TeamMainPhotoSymbol = 1
- sLocalInfo.TeamMainPhotoUrl = photo.PhotoUrl
- sLocalInfo.TeamMainPhotoUid = photo.PhotoUid
- }
- }
- }
- }
- // 3. 招募要求
- sLocalInfo.TalentType = localInfo.TalentType
- sLocalInfo.RecruitDdl = conv.MustString(localInfo.RecruitDdl)
- recruitStrategy, recruitErr := db.GetRecruitStrategyBySLocalId(ctx, req.SLocalId)
- if recruitErr != nil {
- return nil, recruitErr
- }
- if recruitStrategy != nil {
- for _, strategy := range recruitStrategy {
- showStrategy := http_model.ShowSRecruitStrategy{
- StrategyID: strategy.StrategyID,
- FeeForm: strategy.FeeForm,
- FollowersLow: strategy.FollowersLow,
- FollowersUp: strategy.FollowersUp,
- RecruitNumber: strategy.RecruitNumber,
- Offer: strategy.Offer,
- }
- sLocalInfo.RecruitStrategys = append(sLocalInfo.RecruitStrategys, showStrategy)
- }
- }
- // 4. 执行要求
- sLocalInfo.TaskForm = localInfo.TaskForm
- sLocalInfo.ContentType = localInfo.ContentType
- briefInfo, briefErr := db.FindBriefByLocalId(ctx, req.LocalId)
- if briefErr != nil {
- return nil, briefErr
- }
- if briefInfo != nil {
- sLocalInfo.LocalBrief = briefInfo
- }
- materialInfo, materialErr := db.FindMaterialByLocalId(ctx, req.LocalId)
- if materialErr != nil {
- return nil, materialErr
- }
- if materialInfo != nil {
- sLocalInfo.LocalMaterial = materialInfo
- }
- }
- return sLocalInfo, nil
- }
- func (*sLocalLife) GetFullSLocalLifeList(ctx context.Context, pageSize, pageNum int32, supplierId int, condition *common_model.SLocalLifeCondition) (*http_model.FullSLocalListData, error) {
- // 1. 查询本地生活任务基本信息
- fullLocals, total, err := db.GetFullSLocalLifeList(ctx, pageSize, pageNum, condition)
- if err != nil {
- logrus.WithContext(ctx).Errorf("[fullLocals service] call GetFullSLocalLifeList error,err:%+v", err)
- return nil, err
- }
- var fullLocalData *http_model.FullSLocalListData
- fullLocalData = &http_model.FullSLocalListData{}
- fullLocalData.Total = total
- for _, fullLocal := range fullLocals {
- var fullLocalPreview *http_model.FullSLocalPreview
- fullLocalPreview = &http_model.FullSLocalPreview{}
- fullLocalPreview.LocalId = fullLocal.LocalId
- fullLocalPreview.TaskStatus = fullLocal.TaskStatus
- fullLocalPreview.LocalPlatform = fullLocal.LocalPlatform
- fullLocalPreview.TaskForm = fullLocal.TaskForm
- fullLocalPreview.LocalType = fullLocal.LocalType
- fullLocalPreview.LocalContentType = fullLocal.ContentType
- fullLocalPreview.SupplierId = supplierId
- fullLocalPreview.SubAccountId = fullLocal.SubAccountId
- fullLocalPreview.OperatorType = fullLocal.OperatorType
- fullLocalPreview.CreateTime = conv.MustString(fullLocal.CreateTime)
- fullLocalPreview.ServiceCharge = fullLocal.ServiceCharge
- fullLocalPreview.ServiceChargeActual = fullLocal.ServiceChargeActual
- fullLocalPreview.ApplyNum = fullLocal.ApplyNum
- fullLocalPreview.RecruitNum = fullLocal.RecruitNum
- fullLocalPreview.SettleNum = fullLocal.SettleNum
- fullLocalData.FullSLocalPreview = append(fullLocalData.FullSLocalPreview, fullLocalPreview)
- }
- // 2. 查询本地生活补充信息:门店信息,招募策略
- for _, local := range fullLocalData.FullSLocalPreview {
- // 2.1. 门店信息
- storeInfo, productErr := db.FindStoreById(ctx, local.StoreId)
- if productErr != nil {
- return nil, productErr
- }
- if storeInfo != nil {
- local.StoreId = storeInfo.StoreId
- local.StoreName = storeInfo.StoreName
- }
- // 2.2. 门店图片信息
- productPhotoInfo, productPhotoErr := db.GetStorePhotoByStoreID(ctx, local.StoreId)
- if productPhotoErr != nil {
- return nil, productPhotoErr
- }
- if productPhotoInfo != nil {
- for _, photo := range productPhotoInfo {
- fmt.Println(photo)
- if photo.Symbol == 1 {
- local.StoreMainPhotoSymbol = 1
- local.StoreMainPhotoUrl = photo.PhotoUrl
- local.StoreMainPhotoUid = photo.PhotoUid
- }
- }
- }
- }
- return fullLocalData, nil
- }
- // GetLocalTaskList 查询本地生活子任务
- func (*sLocalLife) GetLocalTaskList(ctx context.Context, pageSize, pageNum int32, condition *common_model.LocalTaskConditions) (*http_model.LocalTaskListData, error) {
- var localTaskListData *http_model.LocalTaskListData
- localTaskListData = &http_model.LocalTaskListData{}
- // 1. 根据condition查询子任务信息
- localTaskList, total, localTaskErr := db.GetLocalTaskList(ctx, pageSize, pageNum, condition)
- if localTaskErr != nil {
- return nil, localTaskErr
- }
- if localTaskList != nil {
- localTaskListData.Total = total
- for _, localTask := range localTaskList {
- var localTaskInfo *http_model.LocalTaskPreview
- localTaskInfo = &http_model.LocalTaskPreview{}
- // 2. 补充查询达人身份信息
- talentInfo, talentErr := db.FindUserInfoByTalentId(ctx, localTask.TalentID)
- if talentErr != nil {
- return nil, talentErr
- }
- if talentInfo != nil {
- localTaskInfo.TaskId = localTask.TaskID
- localTaskInfo.TaskStage = localTask.TaskStage
- localTaskInfo.ServiceCharge = localTask.ServiceCharge
- localTaskInfo.DraftFee = localTask.DraftFee
- localTaskInfo.SupportFee = localTask.SupportFee
- localTaskInfo.StrategyId = localTask.StrategyID
- localTaskInfo.TaskStatus = localTask.TaskStatus
- localTaskInfo.CreateDate = conv.MustString(localTask.CreateDate)
- localTaskInfo.SelectDate = conv.MustString(localTask.SelectDate)
- localTaskInfo.DeliveryDate = conv.MustString(localTask.DeliveryDate)
- localTaskInfo.SignedTime = conv.MustString(localTask.SignedTime)
- localTaskInfo.CurBreakAt = conv.MustString(localTask.CurBreakAt)
- localTaskInfo.FansNum = localTask.FansNum
- localTaskInfo.VoteAvg = localTask.VoteAvg
- localTaskInfo.CommitAvg = localTask.CommitAvg
- localTaskInfo.BOperator = localTask.BOperator
- localTaskInfo.BOperatorType = localTask.BOperatorType
- localTaskInfo.SOperator = localTask.SOperator
- localTaskInfo.SOperatorType = localTask.SOperatorType
- localTaskInfo.PlatformNickname = talentInfo.NickName
- localTaskInfo.FansCount = talentInfo.Fan
- localTaskInfo.AvatarUrl = talentInfo.HeadUri
- localTaskInfo.Location = talentInfo.City
- localTaskInfo.Gender = talentInfo.Gender
- localTaskListData.LocalTaskPreview = append(localTaskListData.LocalTaskPreview, localTaskInfo)
- }
- }
- // 3. 本地生活任务信息补充
- sLocalInfo, sLocalErr := db.GetSLocalLifeDetail(ctx, condition.SLocalId)
- if sLocalErr != nil {
- return nil, sLocalErr
- }
- if sLocalInfo != nil {
- localTaskListData.SettleNum = sLocalInfo.SettleNum
- localTaskListData.RecruitNum = sLocalInfo.RecruitNum
- localTaskListData.ServiceChargeActual = sLocalInfo.ServiceChargeActual
- }
- }
- return localTaskListData, nil
- }
- // ChangeTaskSupplierStatus 本地生活达人报名通过、拒绝报名
- func (*sLocalLife) ChangeTaskSupplierStatus(ctx context.Context, req *http_model.LocalChangeSupplierStatusRequest) error {
- RecruitStrategyIDs, err := db.ChangeLocalTaskStatus(ctx, req.TaskIds, req.SupplierStatus)
- if err != nil {
- logrus.WithContext(ctx).Errorf("[project service] call ChangeTaskStatus error,err:%+v", err)
- return err
- }
- fmt.Println(RecruitStrategyIDs)
- return nil
- }
- // ChangeSupplierStatus 定向本地生活加入商单或拒绝
- func (*sLocalLife) ChangeSupplierStatus(ctx context.Context, req *http_model.SpecialLocalAddToListRequest) error {
- var sLocalInfo *gorm_model.YounggeeSLocalLifeInfo
- sLocalInfo = &gorm_model.YounggeeSLocalLifeInfo{}
- sLocalInfo.SLocalId = req.SLocalId
- sLocalInfo.SupplierId = req.SupplierId
- sLocalInfo.SubAccountId = req.SubAccountId
- sLocalInfo.OperatorType = req.OperatorType
- sLocalInfo.SLocalStatus = req.SLocalStatus
- err := db.UpdateSLocal(ctx, sLocalInfo)
- if err != nil {
- return err
- }
- return nil
- }
- // CreateSpecialStrategy 定向本地生活替换服务费率
- func (*sLocalLife) CreateSpecialStrategy(ctx context.Context, request *http_model.LocalSpecialAddStrategyRequest) error {
- // 1. 添加服务商招募策略
- // 1.1. 整理数据
- for _, strategy := range request.RecruitStrategys {
- // 一口价需要计算服务费率和达人所见报价
- strategy.ServiceRate = int(strategy.ServiceCharge / strategy.Offer)
- strategy.TOffer = strategy.Offer - strategy.ServiceCharge
- strategy.ProjectID = "0"
- strategy.SLocalId = request.SLocalId
- strategy.QuoteRecruitStrategyId = int(strategy.RecruitStrategyID)
- }
- createErr := db.CreateSpecialStrategy(ctx, request.RecruitStrategys)
- if createErr != nil {
- return createErr
- }
- // 2. 修改sProject中的字段
- var sLocalInfo *gorm_model.YounggeeSLocalLifeInfo
- sLocalInfo = &gorm_model.YounggeeSLocalLifeInfo{}
- sLocalInfo.SLocalId = request.SLocalId
- sLocalInfo.StrategyStatus = 1
- sLocalInfo.CreateStrategyId = request.CreateStrategyId
- sLocalInfo.CreateStrategyType = request.CreateStrategyType
- updateErr := db.UpdateSLocal(ctx, sLocalInfo)
- if updateErr != nil {
- return updateErr
- }
- return nil
- }
|