|
@@ -312,12 +312,14 @@ func (ptr *CooperationStatisticsService) CompanyCooperationUsersStatistics(query |
|
@@ -312,12 +312,14 @@ func (ptr *CooperationStatisticsService) CompanyCooperationUsersStatistics(query |
312
|
|
312
|
|
313
|
userService, _ := NewUserService()
|
313
|
userService, _ := NewUserService()
|
314
|
|
314
|
|
|
|
315
|
+ contractUndertakerDao, _ := dao.NewCooperationContractUndertakerDao(ptr.transactionContext)
|
|
|
316
|
+ dividendsOrderDao, _ := dao.NewDividendsOrderDao(ptr.transactionContext)
|
315
|
var retMap = make([]interface{}, 0)
|
317
|
var retMap = make([]interface{}, 0)
|
316
|
for i := range responses {
|
318
|
for i := range responses {
|
317
|
responses[i].CooperationTime = time.Now().Unix() * 1000
|
319
|
responses[i].CooperationTime = time.Now().Unix() * 1000
|
318
|
|
320
|
|
319
|
item := map[string]interface{}{
|
321
|
item := map[string]interface{}{
|
320
|
- "dividendsOrderAmount": responses[i].DividendsOrderAmount,
|
322
|
+ "dividendsOrderAmount": 0,
|
321
|
"actuallyPaidAmount": responses[i].ActuallyPaidAmount,
|
323
|
"actuallyPaidAmount": responses[i].ActuallyPaidAmount,
|
322
|
"unPaidAmount": responses[i].UnPaidAmount,
|
324
|
"unPaidAmount": responses[i].UnPaidAmount,
|
323
|
"cooperationTime": time.Now().Unix() * 1000,
|
325
|
"cooperationTime": time.Now().Unix() * 1000,
|
|
@@ -337,6 +339,16 @@ func (ptr *CooperationStatisticsService) CompanyCooperationUsersStatistics(query |
|
@@ -337,6 +339,16 @@ func (ptr *CooperationStatisticsService) CompanyCooperationUsersStatistics(query |
337
|
},
|
339
|
},
|
338
|
}
|
340
|
}
|
339
|
}
|
341
|
}
|
|
|
342
|
+ // 订单金额
|
|
|
343
|
+ _, contracts, _ := contractUndertakerDao.Find(map[string]interface{}{"orgId": request.OrgId, "userId": responses[i].UserId})
|
|
|
344
|
+ var contractsNumbers []string
|
|
|
345
|
+ for i := range contracts {
|
|
|
346
|
+ contractsNumbers = append(contractsNumbers, contracts[i].CooperationContractNumber)
|
|
|
347
|
+ }
|
|
|
348
|
+ if len(contractsNumbers) > 0 {
|
|
|
349
|
+ item["dividendsOrderAmount"], _ = dividendsOrderDao.CalculateGoodOrderAmount(map[string]interface{}{"orgId": request.OrgId, "cooperationContractNumbers": contractsNumbers})
|
|
|
350
|
+ }
|
|
|
351
|
+
|
340
|
retMap = append(retMap, item)
|
352
|
retMap = append(retMap, item)
|
341
|
}
|
353
|
}
|
342
|
|
354
|
|
|
@@ -367,63 +379,208 @@ func (ptr *CooperationStatisticsService) CooperationUserModeStatistics(queryOpti |
|
@@ -367,63 +379,208 @@ func (ptr *CooperationStatisticsService) CooperationUserModeStatistics(queryOpti |
367
|
}
|
379
|
}
|
368
|
queryOptions = tool_funs.SimpleStructToMap(&request)
|
380
|
queryOptions = tool_funs.SimpleStructToMap(&request)
|
369
|
|
381
|
|
370
|
- orderGoodDao, _ := dao.NewOrderGoodDao(ptr.transactionContext)
|
|
|
371
|
- modeStatistics, err := orderGoodDao.CooperationUserModeStatistics(queryOptions)
|
|
|
372
|
- if err != nil {
|
|
|
373
|
- return nil, err
|
382
|
+ contractUndertakerDao, _ := dao.NewCooperationContractUndertakerDao(ptr.transactionContext)
|
|
|
383
|
+ contractDao, _ := dao.NewCooperationContractDao(ptr.transactionContext)
|
|
|
384
|
+ cooperationModeRepository, _ := repository.NewCooperationModeRepository(ptr.transactionContext)
|
|
|
385
|
+
|
|
|
386
|
+ // 1.查询承接的合约
|
|
|
387
|
+ _, contractUndertakers, _ := contractUndertakerDao.Find(map[string]interface{}{"orgId": request.OrgId, "userId": request.UserId})
|
|
|
388
|
+ var contractsNumbers []string
|
|
|
389
|
+ for i := range contractUndertakers {
|
|
|
390
|
+ contractsNumbers = append(contractsNumbers, contractUndertakers[i].CooperationContractNumber)
|
374
|
}
|
391
|
}
|
375
|
- if len(modeStatistics) == 0 {
|
392
|
+ if len(contractsNumbers) == 0 {
|
|
|
393
|
+ return struct{}{}, nil
|
|
|
394
|
+ }
|
|
|
395
|
+ _, contracts, _ := contractDao.Find(map[string]interface{}{"orgId": request.OrgId, "cooperationContractNumbers": contractsNumbers})
|
|
|
396
|
+ if len(contracts) == 0 {
|
376
|
return struct{}{}, nil
|
397
|
return struct{}{}, nil
|
377
|
}
|
398
|
}
|
378
|
|
399
|
|
379
|
var modeNumbers []string
|
400
|
var modeNumbers []string
|
380
|
- var mapModeStatistics = make(map[string]*domain.CooperationModeStatisticsDto)
|
|
|
381
|
- for i := range modeStatistics {
|
|
|
382
|
- mapModeStatistics[modeStatistics[i].CooperationModeNumber] = modeStatistics[i]
|
|
|
383
|
- modeNumbers = append(modeNumbers, modeStatistics[i].CooperationModeNumber)
|
401
|
+ for i := range contracts {
|
|
|
402
|
+ modeNumbers = append(modeNumbers, contracts[i].CooperationMode.CooperationModeNumber)
|
|
|
403
|
+ }
|
|
|
404
|
+ // 2.查询模式
|
|
|
405
|
+ _, modes, _ := cooperationModeRepository.Find(map[string]interface{}{"orgId": request.OrgId, "cooperationModeNumbers": modeNumbers})
|
|
|
406
|
+ if len(modes) == 0 {
|
|
|
407
|
+ return struct{}{}, nil
|
|
|
408
|
+ }
|
|
|
409
|
+ var mapMode = make(map[string]*domain.CooperationMode)
|
|
|
410
|
+ var mapModeContracts = make(map[string][]string)
|
|
|
411
|
+ var cooperationTypes []interface{}
|
|
|
412
|
+ for i := range modes {
|
|
|
413
|
+ mapMode[modes[i].CooperationModeNumber] = modes[i]
|
|
|
414
|
+ mapModeContracts[modes[i].CooperationModeNumber] = make([]string, 0)
|
|
|
415
|
+ cooperationTypes = append(cooperationTypes, map[string]interface{}{
|
|
|
416
|
+ "cooperationModeId": modes[i].CooperationModeId,
|
|
|
417
|
+ "cooperationModeName": modes[i].CooperationModeName,
|
|
|
418
|
+ "cooperationModeNumber": modes[i].CooperationModeNumber,
|
|
|
419
|
+ })
|
|
|
420
|
+ }
|
|
|
421
|
+ for i := range contracts {
|
|
|
422
|
+ key := contracts[i].CooperationMode.CooperationModeNumber
|
|
|
423
|
+ if _, ok := mapMode[key]; ok {
|
|
|
424
|
+ mapModeContracts[key] = append(mapModeContracts[key], contracts[i].CooperationContractNumber)
|
|
|
425
|
+ }
|
384
|
}
|
426
|
}
|
385
|
|
427
|
|
386
|
- cooperationModeRepository, _ := repository.NewCooperationModeRepository(ptr.transactionContext)
|
|
|
387
|
- _, cooperModes, err := cooperationModeRepository.Find(map[string]interface{}{"cooperationModeNumbers": modeNumbers, "orgId": request.OrgId})
|
428
|
+ // 3.分红支出
|
|
|
429
|
+ dividendsDetails, err := ptr.userModeDividend(request.OrgId, mapMode, mapModeContracts)
|
|
|
430
|
+ if err != nil {
|
|
|
431
|
+ return nil, err
|
|
|
432
|
+ }
|
|
|
433
|
+ // 4.成交订单
|
|
|
434
|
+ orderDetails, err := ptr.userModeOrder(request.OrgId, mapMode, mapModeContracts)
|
388
|
if err != nil {
|
435
|
if err != nil {
|
389
|
return nil, err
|
436
|
return nil, err
|
390
|
}
|
437
|
}
|
391
|
- var cooperationTypes, dividendsExpenseByTypes, orderAmountByTypes []interface{}
|
|
|
392
|
- var totalOrderAmount float64
|
|
|
393
|
- var totalDividendAmount float64
|
|
|
394
|
- for i := range cooperModes {
|
|
|
395
|
- m := cooperModes[i]
|
|
|
396
|
- if modeStatistics, ok := mapModeStatistics[m.CooperationModeNumber]; ok {
|
|
|
397
|
- totalOrderAmount += modeStatistics.OrderAmount
|
|
|
398
|
- totalDividendAmount += modeStatistics.DividendsEstimate
|
|
|
399
|
- dividendsExpenseByTypes = append(dividendsExpenseByTypes, map[string]interface{}{
|
|
|
400
|
- "dividendsTypeName": m.CooperationModeName + "分红支出",
|
|
|
401
|
- "dividendsExpense": modeStatistics.DividendsEstimate, //实际已支付金额
|
|
|
402
|
- })
|
|
|
403
|
- orderAmountByTypes = append(orderAmountByTypes, map[string]interface{}{
|
|
|
404
|
- "orderAmount": modeStatistics.OrderAmount,
|
|
|
405
|
- "orderTypeName": m.CooperationModeName + "成交订单",
|
|
|
406
|
- })
|
438
|
+ return map[string]interface{}{
|
|
|
439
|
+ "cooperationTypes": cooperationTypes,
|
|
|
440
|
+ "dividendsDetails": dividendsDetails,
|
|
|
441
|
+ "orderDetails": orderDetails,
|
|
|
442
|
+ }, nil
|
|
|
443
|
+}
|
|
|
444
|
+
|
|
|
445
|
+// 用户模式分红
|
|
|
446
|
+func (ptr *CooperationStatisticsService) userModeDividend(orgId int64, mapMode map[string]*domain.CooperationMode, mapModeContracts map[string][]string) (interface{}, error) {
|
|
|
447
|
+ creditAccountDao, _ := dao.NewCreditAccountDao(ptr.transactionContext)
|
|
|
448
|
+ var dividends dividendsExpenseByTypes = make([]dividendsExpenseByType, 0)
|
|
|
449
|
+ var total float64 = 0
|
|
|
450
|
+ for _, v := range mapMode {
|
|
|
451
|
+ numbers := mapModeContracts[v.CooperationModeNumber]
|
|
|
452
|
+ var dividendsEstimate = &CreditAccountStatisticsResponse{}
|
|
|
453
|
+ err := creditAccountDao.DividendsStatistics(map[string]interface{}{"orgId": orgId, "cooperationContractNumbers": numbers}, dividendsEstimate)
|
|
|
454
|
+ if err != nil {
|
|
|
455
|
+ return nil, err
|
|
|
456
|
+ }
|
|
|
457
|
+ dividends = append(dividends, dividendsExpenseByType{
|
|
|
458
|
+ DividendsTypeName: v.CooperationModeName + "分红支出",
|
|
|
459
|
+ DividendsExpense: dividendsEstimate.Paid, //实际已支付金额
|
|
|
460
|
+ })
|
|
|
461
|
+ total += dividendsEstimate.Paid
|
|
|
462
|
+ }
|
|
|
463
|
+ return map[string]interface{}{
|
|
|
464
|
+ "dividendsExpense": total,
|
|
|
465
|
+ "dividendsExpenseByTypes": dividends,
|
|
|
466
|
+ }, nil
|
|
|
467
|
+}
|
|
|
468
|
+
|
|
|
469
|
+// 用户模式订单
|
|
|
470
|
+func (ptr *CooperationStatisticsService) userModeOrder(orgId int64, mapMode map[string]*domain.CooperationMode, mapModeContracts map[string][]string) (interface{}, error) {
|
|
|
471
|
+ creditAccountDao, _ := dao.NewDividendsOrderDao(ptr.transactionContext)
|
|
|
472
|
+ var dividends orderAmountByTypes = make([]orderAmountByType, 0)
|
|
|
473
|
+ var total float64 = 0
|
|
|
474
|
+ for _, v := range mapMode {
|
|
|
475
|
+ numbers := mapModeContracts[v.CooperationModeNumber]
|
|
|
476
|
+ amount, err := creditAccountDao.CalculateGoodOrderAmount(map[string]interface{}{"orgId": orgId, "cooperationContractNumbers": numbers})
|
|
|
477
|
+ if err != nil {
|
|
|
478
|
+ return nil, err
|
407
|
}
|
479
|
}
|
408
|
- cooperationTypes = append(cooperationTypes, map[string]interface{}{
|
|
|
409
|
- "cooperationModeId": m.CooperationModeId,
|
|
|
410
|
- "cooperationModeName": m.CooperationModeName,
|
|
|
411
|
- "cooperationModeNumber": m.CooperationModeNumber,
|
480
|
+ dividends = append(dividends, orderAmountByType{
|
|
|
481
|
+ OrderAmount: amount,
|
|
|
482
|
+ OrderTypeName: v.CooperationModeName + "成交订单",
|
412
|
})
|
483
|
})
|
|
|
484
|
+ total += amount
|
413
|
}
|
485
|
}
|
414
|
return map[string]interface{}{
|
486
|
return map[string]interface{}{
|
415
|
- "cooperationTypes": cooperationTypes,
|
|
|
416
|
- "dividendsDetails": map[string]interface{}{
|
|
|
417
|
- "dividendsExpense": totalDividendAmount,
|
|
|
418
|
- "dividendsExpenseByTypes": dividendsExpenseByTypes,
|
|
|
419
|
- },
|
|
|
420
|
- "orderDetails": map[string]interface{}{
|
|
|
421
|
- "orderAmount": totalOrderAmount,
|
|
|
422
|
- "orderAmountByTypes": orderAmountByTypes,
|
|
|
423
|
- },
|
487
|
+ "orderAmount": total,
|
|
|
488
|
+ "orderAmountByTypes": dividends,
|
424
|
}, nil
|
489
|
}, nil
|
425
|
}
|
490
|
}
|
426
|
|
491
|
|
|
|
492
|
+// 公司 - 共创用户模式统计
|
|
|
493
|
+func (ptr *CooperationStatisticsService) CooperationUserModeStatisticsBak(queryOptions map[string]interface{}) (interface{}, error) {
|
|
|
494
|
+ // 参数验证
|
|
|
495
|
+ //var request = struct {
|
|
|
496
|
+ // UserId int64 `json:"userId" valid:"Required"`
|
|
|
497
|
+ // OrgId int64 `json:"orgId" valid:"Required"`
|
|
|
498
|
+ //}{}
|
|
|
499
|
+ //if err := LoadQueryObject(queryOptions, &request); err != nil {
|
|
|
500
|
+ // return nil, err
|
|
|
501
|
+ //}
|
|
|
502
|
+ //queryOptions = tool_funs.SimpleStructToMap(&request)
|
|
|
503
|
+ //
|
|
|
504
|
+ //orderGoodDao, _ := dao.NewOrderGoodDao(ptr.transactionContext)
|
|
|
505
|
+ //modeStatistics, err := orderGoodDao.CooperationUserModeStatistics(queryOptions)
|
|
|
506
|
+ //if err != nil {
|
|
|
507
|
+ // return nil, err
|
|
|
508
|
+ //}
|
|
|
509
|
+ //if len(modeStatistics) == 0 {
|
|
|
510
|
+ // return struct{}{}, nil
|
|
|
511
|
+ //}
|
|
|
512
|
+ //
|
|
|
513
|
+ //var modeNumbers []string
|
|
|
514
|
+ //var mapModeStatistics = make(map[string]*domain.CooperationModeStatisticsDto)
|
|
|
515
|
+ //for i := range modeStatistics {
|
|
|
516
|
+ // mapModeStatistics[modeStatistics[i].CooperationModeNumber] = modeStatistics[i]
|
|
|
517
|
+ // modeNumbers = append(modeNumbers, modeStatistics[i].CooperationModeNumber)
|
|
|
518
|
+ //}
|
|
|
519
|
+ //
|
|
|
520
|
+ //cooperationModeRepository, _ := repository.NewCooperationModeRepository(ptr.transactionContext)
|
|
|
521
|
+ //_, cooperModes, err := cooperationModeRepository.Find(map[string]interface{}{"cooperationModeNumbers": modeNumbers, "orgId": request.OrgId})
|
|
|
522
|
+ //if err != nil {
|
|
|
523
|
+ // return nil, err
|
|
|
524
|
+ //}
|
|
|
525
|
+ //var cooperationTypes, dividendsExpenseByTypes, orderAmountByTypes []interface{}
|
|
|
526
|
+ //var totalOrderAmount float64
|
|
|
527
|
+ //var totalDividendAmount float64
|
|
|
528
|
+ //for i := range cooperModes {
|
|
|
529
|
+ // m := cooperModes[i]
|
|
|
530
|
+ // if modeStatistics, ok := mapModeStatistics[m.CooperationModeNumber]; ok {
|
|
|
531
|
+ // totalOrderAmount += modeStatistics.OrderAmount
|
|
|
532
|
+ // totalDividendAmount += modeStatistics.DividendsEstimate
|
|
|
533
|
+ // dividendsExpenseByTypes = append(dividendsExpenseByTypes, map[string]interface{}{
|
|
|
534
|
+ // "dividendsTypeName": m.CooperationModeName + "分红支出",
|
|
|
535
|
+ // "dividendsExpense": modeStatistics.DividendsEstimate, //实际已支付金额
|
|
|
536
|
+ // })
|
|
|
537
|
+ // orderAmountByTypes = append(orderAmountByTypes, map[string]interface{}{
|
|
|
538
|
+ // "orderAmount": modeStatistics.OrderAmount,
|
|
|
539
|
+ // "orderTypeName": m.CooperationModeName + "成交订单",
|
|
|
540
|
+ // })
|
|
|
541
|
+ // }
|
|
|
542
|
+ // cooperationTypes = append(cooperationTypes, map[string]interface{}{
|
|
|
543
|
+ // "cooperationModeId": m.CooperationModeId,
|
|
|
544
|
+ // "cooperationModeName": m.CooperationModeName,
|
|
|
545
|
+ // "cooperationModeNumber": m.CooperationModeNumber,
|
|
|
546
|
+ // })
|
|
|
547
|
+ //}
|
|
|
548
|
+ //return map[string]interface{}{
|
|
|
549
|
+ // "cooperationTypes": cooperationTypes,
|
|
|
550
|
+ // "dividendsDetails": map[string]interface{}{
|
|
|
551
|
+ // "dividendsExpense": totalDividendAmount,
|
|
|
552
|
+ // "dividendsExpenseByTypes": dividendsExpenseByTypes,
|
|
|
553
|
+ // },
|
|
|
554
|
+ // "orderDetails": map[string]interface{}{
|
|
|
555
|
+ // "orderAmount": totalOrderAmount,
|
|
|
556
|
+ // "orderAmountByTypes": orderAmountByTypes,
|
|
|
557
|
+ // },
|
|
|
558
|
+ //}, nil
|
|
|
559
|
+ return nil, nil
|
|
|
560
|
+}
|
|
|
561
|
+
|
|
|
562
|
+type dividendsExpenseByType struct {
|
|
|
563
|
+ DividendsTypeName string `json:"dividendsTypeName"`
|
|
|
564
|
+ DividendsExpense float64 `json:"dividendsExpense"`
|
|
|
565
|
+}
|
|
|
566
|
+type orderAmountByType struct {
|
|
|
567
|
+ OrderTypeName string `json:"orderTypeName"`
|
|
|
568
|
+ OrderAmount float64 `json:"orderAmount"`
|
|
|
569
|
+}
|
|
|
570
|
+type dividendsExpenseByTypes []dividendsExpenseByType
|
|
|
571
|
+
|
|
|
572
|
+func (s dividendsExpenseByTypes) Len() int { return len(s) }
|
|
|
573
|
+func (s dividendsExpenseByTypes) Less(i, j int) bool {
|
|
|
574
|
+ return s[i].DividendsExpense < s[j].DividendsExpense
|
|
|
575
|
+}
|
|
|
576
|
+func (s dividendsExpenseByTypes) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
|
|
|
577
|
+
|
|
|
578
|
+type orderAmountByTypes []orderAmountByType
|
|
|
579
|
+
|
|
|
580
|
+func (s orderAmountByTypes) Len() int { return len(s) }
|
|
|
581
|
+func (s orderAmountByTypes) Less(i, j int) bool { return s[i].OrderAmount < s[j].OrderAmount }
|
|
|
582
|
+func (s orderAmountByTypes) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
|
|
|
583
|
+
|
427
|
// 公司 - 共创用户分红支付统计
|
584
|
// 公司 - 共创用户分红支付统计
|
428
|
func (ptr *CooperationStatisticsService) CompanyPaymentHistoryStatistics(queryOptions map[string]interface{}) (interface{}, error) {
|
585
|
func (ptr *CooperationStatisticsService) CompanyPaymentHistoryStatistics(queryOptions map[string]interface{}) (interface{}, error) {
|
429
|
// 参数验证
|
586
|
// 参数验证
|