s_local_life.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506
  1. package service
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/issue9/conv"
  6. "github.com/sirupsen/logrus"
  7. "time"
  8. "youngee_b_api/db"
  9. "youngee_b_api/model/common_model"
  10. "youngee_b_api/model/gorm_model"
  11. "youngee_b_api/model/http_model"
  12. )
  13. var SLocalLife *sLocalLife
  14. type sLocalLife struct {
  15. }
  16. // CreateSLocalLife 新建服务商加入商单后的公开本地生活
  17. func (*sLocalLife) CreateSLocalLife(ctx context.Context, request *http_model.LocalLifeAddToListRequest) error {
  18. var sLocalLifeInfo *gorm_model.YounggeeSLocalLifeInfo
  19. sLocalLifeInfo = &gorm_model.YounggeeSLocalLifeInfo{}
  20. // 1. 建立SLocalLife信息
  21. // 1.1. 根据传入的LocalLifeId去LocalLife表查找信息补全SLocalLife
  22. localLifeInfo, localErr := db.GetLocalLifeDetail(ctx, request.LocalId)
  23. if localErr != nil {
  24. return localErr
  25. }
  26. if localLifeInfo != nil {
  27. sLocalLifeInfo.LocalId = localLifeInfo.LocalId
  28. sLocalLifeInfo.SettleNum = 0
  29. sLocalLifeInfo.RecruitNum = 0
  30. sLocalLifeInfo.ApplyNum = 0
  31. sLocalLifeInfo.LocalType = localLifeInfo.LocalType
  32. sLocalLifeInfo.LocalName = localLifeInfo.LocalName
  33. sLocalLifeInfo.LocalPlatform = localLifeInfo.LocalPlatform
  34. sLocalLifeInfo.TaskStatus = localLifeInfo.TaskStatus
  35. sLocalLifeInfo.StoreId = localLifeInfo.StoreId
  36. sLocalLifeInfo.TeamBuyingId = localLifeInfo.TeamBuyingId
  37. sLocalLifeInfo.TaskForm = localLifeInfo.TaskForm
  38. sLocalLifeInfo.ContentType = localLifeInfo.ContentType
  39. sLocalLifeInfo.SLocalStatus = 2
  40. // 1.2. 填入加入商单操作人信息
  41. sLocalLifeInfo.SubAccountId = request.SubAccountId
  42. sLocalLifeInfo.SupplierId = request.SupplierId
  43. sLocalLifeInfo.OperatorType = request.OperatorType
  44. currTime := time.Now()
  45. sLocalLifeInfo.CreateTime = &currTime
  46. // 2. 入库
  47. sLocalId, createErr := db.CreateSLocalLife(ctx, sLocalLifeInfo)
  48. if createErr != nil {
  49. return createErr
  50. }
  51. // 2. 建立新的recruitStrategy
  52. // 2.1. 根据projectId去查找原来的recruitStrategy
  53. recruitStrategys, strategyErr := db.GetRecruitStrategyByProjectId(ctx, request.LocalId)
  54. if strategyErr != nil {
  55. return strategyErr
  56. }
  57. // 2.2. 设置新的结构体以写入
  58. var currRecruitStrategys []gorm_model.RecruitStrategy
  59. for _, strategy := range recruitStrategys {
  60. var currStrategy gorm_model.RecruitStrategy
  61. currStrategy.StrategyID = strategy.StrategyID
  62. currStrategy.QuoteRecruitStrategyId = int(strategy.RecruitStrategyID)
  63. currStrategy.FeeForm = strategy.FeeForm
  64. currStrategy.FollowersLow = strategy.FollowersLow
  65. currStrategy.FollowersUp = strategy.FollowersUp
  66. currStrategy.RecruitNumber = strategy.RecruitNumber
  67. currStrategy.Offer = strategy.Offer
  68. currStrategy.TOffer = strategy.TOffer
  69. currStrategy.ProjectID = "0"
  70. currStrategy.ServiceCharge = strategy.ServiceCharge
  71. currStrategy.ServiceRate = strategy.ServiceRate
  72. currStrategy.SLocalId = sLocalId
  73. currStrategy.StrategyType = 2
  74. currRecruitStrategys = append(currRecruitStrategys, currStrategy)
  75. }
  76. // 2.3. 写入
  77. createStrategyErr := db.CreateSpecialStrategy(ctx, currRecruitStrategys)
  78. if createStrategyErr != nil {
  79. return createStrategyErr
  80. }
  81. }
  82. return nil
  83. }
  84. func (*sLocalLife) ShowSLocalLife(ctx context.Context, req *http_model.ShowSLocalRequest) (*http_model.ShowSLocalData, error) {
  85. var sLocalInfo *http_model.ShowSLocalData
  86. sLocalInfo = &http_model.ShowSLocalData{}
  87. // 1. 查询系统信息
  88. localInfo, localErr := db.GetLocalLifeDetail(ctx, req.LocalId)
  89. if localErr != nil {
  90. return nil, localErr
  91. }
  92. if localInfo != nil {
  93. sLocalInfo.LocalId = localInfo.LocalId
  94. sLocalInfo.SLocalId = req.SLocalId
  95. sLocalInfo.LocalPlatform = localInfo.LocalPlatform
  96. sLocalInfo.TaskStatus = localInfo.TaskStatus
  97. sLocalInfo.EnterpriseId = localInfo.EnterpriseId
  98. sLocalInfo.ServiceChargeRate = localInfo.ServiceChargeRate
  99. sLocalInfo.EstimatedCost = localInfo.EstimatedCost
  100. sLocalInfo.CreateAt = conv.MustString(localInfo.CreatedAt)
  101. // 2. 关联主体
  102. // 2.1. 门店信息
  103. storeInfo, storeErr := db.FindStoreById(ctx, localInfo.StoreId)
  104. if storeErr != nil {
  105. return nil, storeErr
  106. }
  107. if storeInfo != nil {
  108. sLocalInfo.StoreId = storeInfo.StoreId
  109. sLocalInfo.StoreName = storeInfo.StoreName
  110. sLocalInfo.StoreCategory = storeInfo.StoreCategory
  111. sLocalInfo.StoreRelatedAt = conv.MustString(localInfo.StoreRelatedAt)
  112. // 2.2. 门店图片信息
  113. storePhotoInfo, storePhotoErr := db.GetStorePhotoByStoreID(ctx, localInfo.StoreId)
  114. if storePhotoErr != nil {
  115. return nil, storePhotoErr
  116. }
  117. if storePhotoInfo != nil {
  118. for _, photo := range storePhotoInfo {
  119. if photo.Symbol == 1 {
  120. sLocalInfo.StoreMainPhotoSymbol = 1
  121. sLocalInfo.StoreMainPhotoUrl = photo.PhotoUrl
  122. sLocalInfo.StoreMainPhotoUid = photo.PhotoUid
  123. }
  124. }
  125. }
  126. }
  127. // 2.3. 团购信息
  128. teamInfo, teamErr := db.FindTeamById(ctx, localInfo.StoreId)
  129. if teamErr != nil {
  130. return nil, teamErr
  131. }
  132. if teamInfo != nil {
  133. sLocalInfo.TeamBuyingId = teamInfo.StoreId
  134. sLocalInfo.TeamBuyingName = teamInfo.TeamBuyingName
  135. sLocalInfo.TeamBuyingCategory = teamInfo.TeamBuyingCategory
  136. sLocalInfo.TeamBuyingRelatedAt = conv.MustString(localInfo.TeamBuyingRelatedAt)
  137. // 2.4. 团购图片信息
  138. teamPhotoInfo, teamPhotoErr := db.GetTeamPhotoByStoreID(ctx, localInfo.StoreId)
  139. if teamPhotoErr != nil {
  140. return nil, teamPhotoErr
  141. }
  142. if teamPhotoInfo != nil {
  143. for _, photo := range teamPhotoInfo {
  144. if photo.Symbol == 1 {
  145. sLocalInfo.TeamMainPhotoSymbol = 1
  146. sLocalInfo.TeamMainPhotoUrl = photo.PhotoUrl
  147. sLocalInfo.TeamMainPhotoUid = photo.PhotoUid
  148. }
  149. }
  150. }
  151. }
  152. // 3. 招募要求
  153. sLocalInfo.TalentType = localInfo.TalentType
  154. sLocalInfo.RecruitDdl = conv.MustString(localInfo.RecruitDdl)
  155. recruitStrategy, recruitErr := db.GetRecruitStrategyBySLocalId(ctx, req.SLocalId)
  156. if recruitErr != nil {
  157. return nil, recruitErr
  158. }
  159. if recruitStrategy != nil {
  160. for _, strategy := range recruitStrategy {
  161. showStrategy := http_model.ShowSRecruitStrategy{
  162. StrategyID: strategy.StrategyID,
  163. FeeForm: strategy.FeeForm,
  164. FollowersLow: strategy.FollowersLow,
  165. FollowersUp: strategy.FollowersUp,
  166. RecruitNumber: strategy.RecruitNumber,
  167. Offer: strategy.Offer,
  168. }
  169. sLocalInfo.RecruitStrategys = append(sLocalInfo.RecruitStrategys, showStrategy)
  170. }
  171. }
  172. // 4. 执行要求
  173. sLocalInfo.TaskForm = localInfo.TaskForm
  174. sLocalInfo.ContentType = localInfo.ContentType
  175. briefInfo, briefErr := db.FindBriefByLocalId(ctx, req.LocalId)
  176. if briefErr != nil {
  177. return nil, briefErr
  178. }
  179. if briefInfo != nil {
  180. sLocalInfo.LocalBrief = briefInfo
  181. }
  182. materialInfo, materialErr := db.FindMaterialByLocalId(ctx, req.LocalId)
  183. if materialErr != nil {
  184. return nil, materialErr
  185. }
  186. if materialInfo != nil {
  187. sLocalInfo.LocalMaterial = materialInfo
  188. }
  189. }
  190. return sLocalInfo, nil
  191. }
  192. func (*sLocalLife) GetFullSLocalLifeList(ctx context.Context, pageSize, pageNum int32, supplierId int, condition *common_model.SLocalLifeCondition) (*http_model.FullSLocalListData, error) {
  193. // 1. 查询本地生活任务基本信息
  194. fullLocals, total, err := db.GetFullSLocalLifeList(ctx, pageSize, pageNum, condition)
  195. if err != nil {
  196. logrus.WithContext(ctx).Errorf("[fullLocals service] call GetFullSLocalLifeList error,err:%+v", err)
  197. return nil, err
  198. }
  199. var fullLocalData *http_model.FullSLocalListData
  200. fullLocalData = &http_model.FullSLocalListData{}
  201. fullLocalData.Total = total
  202. for _, fullLocal := range fullLocals {
  203. var fullLocalPreview *http_model.FullSLocalPreview
  204. fullLocalPreview = &http_model.FullSLocalPreview{}
  205. fullLocalPreview.LocalId = fullLocal.LocalId
  206. fullLocalPreview.TaskStatus = fullLocal.TaskStatus
  207. fullLocalPreview.LocalPlatform = fullLocal.LocalPlatform
  208. fullLocalPreview.TaskForm = fullLocal.TaskForm
  209. fullLocalPreview.LocalType = fullLocal.LocalType
  210. fullLocalPreview.LocalContentType = fullLocal.ContentType
  211. fullLocalPreview.SupplierId = supplierId
  212. fullLocalPreview.SubAccountId = fullLocal.SubAccountId
  213. fullLocalPreview.OperatorType = fullLocal.OperatorType
  214. fullLocalPreview.CreateTime = conv.MustString(fullLocal.CreateTime)
  215. fullLocalPreview.ServiceCharge = fullLocal.ServiceCharge
  216. fullLocalPreview.ServiceChargeActual = fullLocal.ServiceChargeActual
  217. fullLocalPreview.ApplyNum = fullLocal.ApplyNum
  218. fullLocalPreview.RecruitNum = fullLocal.RecruitNum
  219. fullLocalPreview.SettleNum = fullLocal.SettleNum
  220. fullLocalData.FullSLocalPreview = append(fullLocalData.FullSLocalPreview, fullLocalPreview)
  221. }
  222. // 2. 查询本地生活补充信息:门店信息,招募策略
  223. for _, local := range fullLocalData.FullSLocalPreview {
  224. // 2.1. 门店信息
  225. storeInfo, productErr := db.FindStoreById(ctx, local.StoreId)
  226. if productErr != nil {
  227. return nil, productErr
  228. }
  229. if storeInfo != nil {
  230. local.StoreId = storeInfo.StoreId
  231. local.StoreName = storeInfo.StoreName
  232. }
  233. // 2.2. 门店图片信息
  234. productPhotoInfo, productPhotoErr := db.GetStorePhotoByStoreID(ctx, local.StoreId)
  235. if productPhotoErr != nil {
  236. return nil, productPhotoErr
  237. }
  238. if productPhotoInfo != nil {
  239. for _, photo := range productPhotoInfo {
  240. fmt.Println(photo)
  241. if photo.Symbol == 1 {
  242. local.StoreMainPhotoSymbol = 1
  243. local.StoreMainPhotoUrl = photo.PhotoUrl
  244. local.StoreMainPhotoUid = photo.PhotoUid
  245. }
  246. }
  247. }
  248. }
  249. return fullLocalData, nil
  250. }
  251. // GetLocalTaskList 查询本地生活子任务
  252. func (*sLocalLife) GetLocalTaskList(ctx context.Context, pageSize, pageNum int32, condition *common_model.LocalTaskConditions) (*http_model.LocalTaskListData, error) {
  253. var localTaskListData *http_model.LocalTaskListData
  254. localTaskListData = &http_model.LocalTaskListData{}
  255. // 1. 根据condition查询子任务信息
  256. localTaskList, total, localTaskErr := db.GetLocalTaskList(ctx, pageSize, pageNum, condition)
  257. if localTaskErr != nil {
  258. return nil, localTaskErr
  259. }
  260. if localTaskList != nil {
  261. localTaskListData.Total = total
  262. for _, localTask := range localTaskList {
  263. var localTaskInfo *http_model.LocalTaskPreview
  264. localTaskInfo = &http_model.LocalTaskPreview{}
  265. // 2. 补充查询达人身份信息
  266. talentInfo, talentErr := db.FindUserInfoByTalentId(ctx, localTask.TalentID)
  267. if talentErr != nil {
  268. return nil, talentErr
  269. }
  270. if talentInfo != nil {
  271. localTaskInfo.TaskId = localTask.TaskID
  272. localTaskInfo.TaskStage = localTask.TaskStage
  273. localTaskInfo.ServiceCharge = localTask.ServiceCharge
  274. localTaskInfo.DraftFee = localTask.DraftFee
  275. localTaskInfo.SupportFee = localTask.SupportFee
  276. localTaskInfo.StrategyId = localTask.StrategyID
  277. localTaskInfo.TaskStatus = localTask.TaskStatus
  278. localTaskInfo.CreateDate = conv.MustString(localTask.CreateDate)
  279. localTaskInfo.SelectDate = conv.MustString(localTask.SelectDate)
  280. localTaskInfo.DeliveryDate = conv.MustString(localTask.DeliveryDate)
  281. localTaskInfo.SignedTime = conv.MustString(localTask.SignedTime)
  282. localTaskInfo.CurBreakAt = conv.MustString(localTask.CurBreakAt)
  283. localTaskInfo.FansNum = localTask.FansNum
  284. localTaskInfo.VoteAvg = localTask.VoteAvg
  285. localTaskInfo.CommitAvg = localTask.CommitAvg
  286. localTaskInfo.BOperator = localTask.BOperator
  287. localTaskInfo.BOperatorType = localTask.BOperatorType
  288. localTaskInfo.SOperator = localTask.SOperator
  289. localTaskInfo.SOperatorType = localTask.SOperatorType
  290. localTaskInfo.PlatformNickname = talentInfo.NickName
  291. localTaskInfo.FansCount = talentInfo.Fan
  292. localTaskInfo.AvatarUrl = talentInfo.HeadUri
  293. localTaskInfo.Location = talentInfo.City
  294. localTaskInfo.Gender = talentInfo.Gender
  295. localTaskListData.LocalTaskPreview = append(localTaskListData.LocalTaskPreview, localTaskInfo)
  296. }
  297. }
  298. // 3. 本地生活任务信息补充
  299. sLocalInfo, sLocalErr := db.GetSLocalLifeDetail(ctx, condition.SLocalId)
  300. if sLocalErr != nil {
  301. return nil, sLocalErr
  302. }
  303. if sLocalInfo != nil {
  304. localTaskListData.SettleNum = sLocalInfo.SettleNum
  305. localTaskListData.RecruitNum = sLocalInfo.RecruitNum
  306. localTaskListData.ServiceChargeActual = sLocalInfo.ServiceChargeActual
  307. }
  308. }
  309. return localTaskListData, nil
  310. }
  311. // ChangeTaskSupplierStatus 本地生活达人报名通过、拒绝报名
  312. func (*sLocalLife) ChangeTaskSupplierStatus(ctx context.Context, req *http_model.LocalChangeSupplierStatusRequest) error {
  313. RecruitStrategyIDs, err := db.ChangeLocalTaskStatus(ctx, req.TaskIds, req.SupplierStatus)
  314. if err != nil {
  315. logrus.WithContext(ctx).Errorf("[project service] call ChangeTaskStatus error,err:%+v", err)
  316. return err
  317. }
  318. fmt.Println(RecruitStrategyIDs)
  319. return nil
  320. }
  321. // ChangeSupplierStatus 定向本地生活加入商单或拒绝
  322. func (*sLocalLife) ChangeSupplierStatus(ctx context.Context, req *http_model.SpecialLocalAddToListRequest) error {
  323. var sLocalInfo *gorm_model.YounggeeSLocalLifeInfo
  324. sLocalInfo = &gorm_model.YounggeeSLocalLifeInfo{}
  325. sLocalInfo.SLocalId = req.SLocalId
  326. sLocalInfo.SupplierId = req.SupplierId
  327. sLocalInfo.SubAccountId = req.SubAccountId
  328. sLocalInfo.OperatorType = req.OperatorType
  329. sLocalInfo.SLocalStatus = req.SLocalStatus
  330. err := db.UpdateSLocal(ctx, sLocalInfo)
  331. if err != nil {
  332. return err
  333. }
  334. return nil
  335. }
  336. // CreateSpecialStrategy 定向本地生活替换服务费率
  337. func (*sLocalLife) CreateSpecialStrategy(ctx context.Context, request *http_model.LocalSpecialAddStrategyRequest) error {
  338. // 1. 添加服务商招募策略
  339. // 1.1. 整理数据
  340. for _, strategy := range request.RecruitStrategys {
  341. // 一口价需要计算服务费率和达人所见报价
  342. strategy.ServiceRate = int(strategy.ServiceCharge / strategy.Offer)
  343. strategy.TOffer = strategy.Offer - strategy.ServiceCharge
  344. strategy.ProjectID = "0"
  345. strategy.SLocalId = request.SLocalId
  346. strategy.QuoteRecruitStrategyId = int(strategy.RecruitStrategyID)
  347. }
  348. createErr := db.CreateSpecialStrategy(ctx, request.RecruitStrategys)
  349. if createErr != nil {
  350. return createErr
  351. }
  352. // 2. 修改sProject中的字段
  353. var sLocalInfo *gorm_model.YounggeeSLocalLifeInfo
  354. sLocalInfo = &gorm_model.YounggeeSLocalLifeInfo{}
  355. sLocalInfo.SLocalId = request.SLocalId
  356. sLocalInfo.StrategyStatus = 1
  357. sLocalInfo.CreateStrategyId = request.CreateStrategyId
  358. sLocalInfo.CreateStrategyType = request.CreateStrategyType
  359. updateErr := db.UpdateSLocal(ctx, sLocalInfo)
  360. if updateErr != nil {
  361. return updateErr
  362. }
  363. return nil
  364. }
  365. // GetFullSLocalBillList 服务商本地生活任务账单列表
  366. func (*sLocalLife) GetFullSLocalBillList(ctx context.Context, req *http_model.FullSLocalBillListRequest) (*http_model.FullSLocalBillData, error) {
  367. // 1. 查询本地生活任务基本信息
  368. fullLocals, total, err := db.GetFullSLocalBillList(ctx, req.PageSize, req.PageNum, req.SupplierId)
  369. if err != nil {
  370. logrus.WithContext(ctx).Errorf("[fullLocals service] call GetFullSLocalLifeList error,err:%+v", err)
  371. return nil, err
  372. }
  373. var fullLocalData *http_model.FullSLocalBillData
  374. fullLocalData = &http_model.FullSLocalBillData{}
  375. fullLocalData.Total = total
  376. for _, fullLocal := range fullLocals {
  377. var fullLocalPreview *http_model.FullSLocalBillListData
  378. fullLocalPreview = &http_model.FullSLocalBillListData{}
  379. fullLocalPreview.SLocalId = fullLocal.SLocalId
  380. fullLocalPreview.LocalId = fullLocal.LocalId
  381. fullLocalPreview.LocalPlatform = fullLocal.LocalPlatform
  382. fullLocalPreview.TaskForm = fullLocal.TaskForm
  383. fullLocalPreview.ContentType = fullLocal.ContentType
  384. fullLocalPreview.TaskStatus = fullLocal.TaskStatus
  385. fullLocalPreview.EnterpriseId = fullLocal.EnterpriseId
  386. fullLocalPreview.SupplierId = fullLocal.SupplierId
  387. fullLocalPreview.SubAccountId = fullLocal.SubAccountId
  388. fullLocalPreview.ServiceChargeActual = fullLocal.ServiceChargeActual
  389. fullLocalPreview.ServiceChargeSettle = fullLocal.ServiceChargeSettle
  390. fullLocalPreview.StoreId = fullLocal.StoreId
  391. fullLocalData.SLocalList = append(fullLocalData.SLocalList, fullLocalPreview)
  392. }
  393. // 2. 查询本地生活补充信息:门店信息,招募策略
  394. for _, local := range fullLocalData.SLocalList {
  395. // 2.1. 门店信息
  396. storeInfo, productErr := db.FindStoreById(ctx, local.StoreId)
  397. if productErr != nil {
  398. return nil, productErr
  399. }
  400. if storeInfo != nil {
  401. local.StoreId = storeInfo.StoreId
  402. local.StoreName = storeInfo.StoreName
  403. }
  404. // 2.2. 门店图片信息
  405. productPhotoInfo, productPhotoErr := db.GetStorePhotoByStoreID(ctx, local.StoreId)
  406. if productPhotoErr != nil {
  407. return nil, productPhotoErr
  408. }
  409. if productPhotoInfo != nil {
  410. for _, photo := range productPhotoInfo {
  411. fmt.Println(photo)
  412. if photo.Symbol == 1 {
  413. local.StorePhotoSymbol = 1
  414. local.StorePhotoUrl = photo.PhotoUrl
  415. local.StorePhotoUid = photo.PhotoUid
  416. }
  417. }
  418. }
  419. }
  420. return fullLocalData, nil
  421. }
  422. // FullSLocalTaskBillList 服务商本地生活子任务账单列表
  423. func (*sLocalLife) FullSLocalTaskBillList(ctx context.Context, request *http_model.FullSLocalTaskBillListRequest) (*http_model.FullSLocalTaskBillData, error) {
  424. var currSLocalTaskBillData *http_model.FullSLocalTaskBillData
  425. currSLocalTaskBillData = &http_model.FullSLocalTaskBillData{}
  426. currSLocalTaskBillData.DraftFee = 0
  427. currSLocalTaskBillData.DraftFeeSettle = 0
  428. // 1. 查找子任务
  429. taskList, total, taskListErr := db.GetSLocalTaskList(ctx, request.SLocalId, request.TalentId, request.PageSize, request.PageNum)
  430. if taskListErr != nil {
  431. return nil, taskListErr
  432. }
  433. if taskList != nil {
  434. currSLocalTaskBillData.Total = total
  435. for _, task := range taskList {
  436. var curr *http_model.FullSLocalTaskBillListData
  437. curr = &http_model.FullSLocalTaskBillListData{}
  438. curr.TaskId = task.TaskID
  439. curr.ServiceCharge = task.ServiceCharge
  440. curr.ViewNum = 0
  441. curr.VoteNum = 0
  442. curr.CommitNum = 0
  443. curr.CollectNum = 0
  444. curr.ServiceCharge = task.ServiceCharge
  445. curr.DraftFee = task.DraftFee
  446. curr.DelayRate = task.ScriptBreakRate + task.SketchBreakRate + task.LinkBreakRate + task.DataBreakRate
  447. curr.RealServiceCharge = task.RealPayment - task.SettleAmount
  448. curr.SettleAmount = task.SettleAmount
  449. curr.SettleTime = conv.MustString(task.CompleteDate)
  450. currSLocalTaskBillData.DraftFee += curr.DraftFee
  451. currSLocalTaskBillData.DraftFeeSettle += curr.SettleAmount
  452. currSLocalTaskBillData.SLocalTaskList = append(currSLocalTaskBillData.SLocalTaskList, curr)
  453. }
  454. // 2. 补充任务信息
  455. sLocalInfo, sLocalErr := db.GetSLocalLifeDetail(ctx, request.SLocalId)
  456. if sLocalErr != nil {
  457. return nil, sLocalErr
  458. }
  459. if sLocalInfo != nil {
  460. currSLocalTaskBillData.SettleNum = sLocalInfo.SettleNum
  461. currSLocalTaskBillData.ChooseNum = sLocalInfo.ApplyNum
  462. currSLocalTaskBillData.ServiceCharge = sLocalInfo.ServiceCharge
  463. currSLocalTaskBillData.ServiceChargeSettle = sLocalInfo.ServiceChargeSettle
  464. }
  465. }
  466. return currSLocalTaskBillData, nil
  467. }