|
@@ -3,6 +3,7 @@ package service
|
|
|
import (
|
|
|
"context"
|
|
|
"fmt"
|
|
|
+ "github.com/issue9/conv"
|
|
|
log "github.com/sirupsen/logrus"
|
|
|
"strconv"
|
|
|
"strings"
|
|
@@ -67,6 +68,103 @@ func (*supplier) GetSupplierIncomeList(ctx context.Context, req *http_model.Full
|
|
|
// 2. 补充种草/本地生活任务信息
|
|
|
if supplierIncome != nil {
|
|
|
sProjectIncomeData.Total = total
|
|
|
+ for _, income := range supplierIncome {
|
|
|
+ // 2.1. 种草任务基本信息
|
|
|
+ if income.IncomeType == 1 {
|
|
|
+ var sProjectInfo *http_model.FullSProjectIncomeListResponse
|
|
|
+ sProjectInfo = &http_model.FullSProjectIncomeListResponse{}
|
|
|
+ sProjectData, sProjectErr := db.GetSProjectDetail(ctx, income.SProjectID)
|
|
|
+ if sProjectErr != nil {
|
|
|
+ log.Infof("[GetSProjectDetail] fail,err:%+v", sProjectErr)
|
|
|
+ return nil, sProjectErr
|
|
|
+ }
|
|
|
+ if sProjectData != nil {
|
|
|
+ sProjectInfo.SProjectId = sProjectData.SProjectId
|
|
|
+ sProjectInfo.IncomeId = income.IncomeID
|
|
|
+ sProjectInfo.IncomeType = income.IncomeType
|
|
|
+ sProjectInfo.SProjectId = sProjectData.SProjectId
|
|
|
+ sProjectInfo.ProjectName = sProjectData.ProjectName
|
|
|
+ sProjectInfo.ProjectPlatform = sProjectData.ProjectPlatform
|
|
|
+ sProjectInfo.ServiceCharge = sProjectData.ServiceCharge
|
|
|
+ sProjectInfo.ServiceChargeSettle = sProjectData.ServiceChargeSettle
|
|
|
+ sProjectInfo.FinishTime = conv.MustString(sProjectData.FinishTime)
|
|
|
+
|
|
|
+ // 2.2. 商品基本信息
|
|
|
+ productInfo, productErr := db.GetProductByID(ctx, sProjectData.ProductId)
|
|
|
+ if productErr != nil {
|
|
|
+ log.Infof("[GetProductByID] fail,err:%+v", productErr)
|
|
|
+ return nil, productErr
|
|
|
+ }
|
|
|
+ if productInfo != nil {
|
|
|
+ sProjectInfo.ProductName = productInfo.ProductName
|
|
|
+ sProjectInfo.ProductPrice = productInfo.ProductPrice
|
|
|
+ }
|
|
|
+ // 2.3. 商品图片信息
|
|
|
+ productPhotoInfo, productPhotoErr := db.GetProductPhotoByProductID(ctx, sProjectData.ProductId)
|
|
|
+ if productPhotoErr != nil {
|
|
|
+ log.Infof("[GetProductPhotoByProductID] fail,err:%+v", productPhotoErr)
|
|
|
+ return nil, productPhotoErr
|
|
|
+ }
|
|
|
+ if productPhotoInfo != nil {
|
|
|
+ for _, photo := range productPhotoInfo {
|
|
|
+ fmt.Println(photo)
|
|
|
+ if photo.Symbol == 1 {
|
|
|
+ sProjectInfo.ProductPhotoSymbol = 1
|
|
|
+ sProjectInfo.ProductPhotoUrl = photo.PhotoUrl
|
|
|
+ sProjectInfo.ProductPhotoUid = photo.PhotoUid
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2.1. 本地生活任务基本信息
|
|
|
+ if income.IncomeType == 2 {
|
|
|
+ var sLocalInfo *http_model.FullSProjectIncomeListResponse
|
|
|
+ sLocalInfo = &http_model.FullSProjectIncomeListResponse{}
|
|
|
+ sLocalData, sLocalErr := db.GetSLocalLifeDetail(ctx, income.SLocalID)
|
|
|
+ if sLocalErr != nil {
|
|
|
+ log.Infof("[GetSLocalLifeDetail] fail,err:%+v", sLocalErr)
|
|
|
+ return nil, sLocalErr
|
|
|
+ }
|
|
|
+ if sLocalData != nil {
|
|
|
+ sLocalInfo.IncomeId = income.IncomeID
|
|
|
+ sLocalInfo.IncomeType = income.IncomeType
|
|
|
+ sLocalInfo.SLocalId = sLocalData.SLocalId
|
|
|
+ sLocalInfo.LocalName = sLocalData.LocalName
|
|
|
+ sLocalInfo.LocalPlatform = sLocalData.LocalPlatform
|
|
|
+ sLocalInfo.ServiceCharge = sLocalData.ServiceCharge
|
|
|
+ sLocalInfo.ServiceChargeSettle = sLocalData.ServiceChargeSettle
|
|
|
+ sLocalInfo.FinishTime = conv.MustString(sLocalData.FinishTime)
|
|
|
+
|
|
|
+ // 2.2. 门店基本信息
|
|
|
+ storeInfo, storeErr := db.FindStoreById(ctx, sLocalData.StoreId)
|
|
|
+ if storeErr != nil {
|
|
|
+ log.Infof("[GetProductByID] fail,err:%+v", storeErr)
|
|
|
+ return nil, storeErr
|
|
|
+ }
|
|
|
+ if storeInfo != nil {
|
|
|
+ sLocalInfo.StoreName = storeInfo.StoreName
|
|
|
+ }
|
|
|
+ // 2.3. 门店图片信息
|
|
|
+ storePhotoInfo, storePhotoErr := db.GetStorePhotoByStoreID(ctx, sLocalData.StoreId)
|
|
|
+ if storePhotoErr != nil {
|
|
|
+ log.Infof("[GetProductPhotoByProductID] fail,err:%+v", storePhotoErr)
|
|
|
+ return nil, storePhotoErr
|
|
|
+ }
|
|
|
+ if storePhotoInfo != nil {
|
|
|
+ for _, photo := range storePhotoInfo {
|
|
|
+ fmt.Println(photo)
|
|
|
+ if photo.Symbol == 1 {
|
|
|
+ sLocalInfo.StoreMainPhotoSymbol = 1
|
|
|
+ sLocalInfo.StoreMainPhotoUrl = photo.PhotoUrl
|
|
|
+ sLocalInfo.StoreMainPhotoUid = photo.PhotoUid
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
} else {
|
|
|
sProjectIncomeData.Total = 0
|
|
|
}
|
|
@@ -210,11 +308,11 @@ func (*supplier) GetSupplierInvoiceList(ctx context.Context, req *http_model.Sup
|
|
|
if incomeErr != nil {
|
|
|
return nil, incomeErr
|
|
|
}
|
|
|
- sTaskInfo.ServiceCharge = currIncome.SupplierChargeActual
|
|
|
+ sTaskInfo.ServiceCharge = currIncome.ServiceChargeSettle
|
|
|
if currIncome.IncomeType == 1 {
|
|
|
sTaskInfo.Id = currIncome.SProjectID
|
|
|
} else if currIncome.IncomeType == 3 {
|
|
|
- sTaskInfo.Id = currIncome.SLocalLifeID
|
|
|
+ sTaskInfo.Id = currIncome.SLocalID
|
|
|
}
|
|
|
supplierInvoiceInfo.STaskInfo = append(supplierInvoiceInfo.STaskInfo, sTaskInfo)
|
|
|
}
|
|
@@ -226,84 +324,194 @@ func (*supplier) GetSupplierInvoiceList(ctx context.Context, req *http_model.Sup
|
|
|
|
|
|
// GetSupplierToWithdrawList 服务商待提现列表
|
|
|
func (*supplier) GetSupplierToWithdrawList(ctx context.Context, req *http_model.SupplierToWithdrawListRequest) (*http_model.SupplierToWithdrawListData, error) {
|
|
|
- // 1. 查询服务商发票信息
|
|
|
+
|
|
|
+ // 1. 判断服务商类型
|
|
|
var supplierInvoiceData *http_model.SupplierToWithdrawListData
|
|
|
supplierInvoiceData = &http_model.SupplierToWithdrawListData{}
|
|
|
|
|
|
- supplierInvoiceList, total, err := db.GetInvoiceListBySupplierId(ctx, req.SupplierId, 3, 1, req.PageSize, req.PageNum)
|
|
|
- if err != nil {
|
|
|
- return nil, err
|
|
|
+ supplierInfo, supplierErr := db.GetSupplierById(ctx, req.SupplierId)
|
|
|
+ if supplierErr != nil {
|
|
|
+ return nil, supplierErr
|
|
|
}
|
|
|
- if supplierInvoiceList != nil {
|
|
|
+ if supplierInfo != nil {
|
|
|
// 企业服务商
|
|
|
- // 2. 根据发票中的incomeIds去查找任务及其服务费收入
|
|
|
- for _, supplierInvoice := range supplierInvoiceList {
|
|
|
- var supplierInvoiceInfo *http_model.SupplierToWithdrawInfo
|
|
|
- supplierInvoiceInfo = &http_model.SupplierToWithdrawInfo{}
|
|
|
-
|
|
|
- // 2.1. 基础信息填入
|
|
|
- supplierInvoiceInfo.AgreeTime = supplierInvoice.AgreeTime
|
|
|
- supplierInvoiceInfo.Company = supplierInvoice.Company
|
|
|
-
|
|
|
- // 2.2. 任务及其收入信息填入
|
|
|
- incomeIds := supplierInvoice.IncomeIds
|
|
|
- strSlice := strings.Split(incomeIds, ",")
|
|
|
- intSlice := make([]int, len(strSlice))
|
|
|
- for i, s := range strSlice {
|
|
|
- num, err := strconv.Atoi(s)
|
|
|
- if err != nil {
|
|
|
- fmt.Println("转换错误:", err)
|
|
|
- return nil, err
|
|
|
- }
|
|
|
- intSlice[i] = num
|
|
|
+ if supplierInfo.SupplierType == 2 {
|
|
|
+ // 查询企业服务商发票信息
|
|
|
+ supplierInvoiceList, total, supplierInvoiceErr := db.GetInvoiceListBySupplierId(ctx, req.SupplierId, 3, 1, req.PageSize, req.PageNum)
|
|
|
+ if supplierInvoiceErr != nil {
|
|
|
+ return nil, supplierInvoiceErr
|
|
|
}
|
|
|
- for _, incomeId := range intSlice {
|
|
|
- var sTaskInfo *http_model.STaskInfo
|
|
|
- sTaskInfo = &http_model.STaskInfo{}
|
|
|
- currIncome, incomeErr := db.GetIncomeInfoByIncomeId(ctx, incomeId)
|
|
|
- if incomeErr != nil {
|
|
|
- return nil, incomeErr
|
|
|
+ if supplierInvoiceList != nil {
|
|
|
+ for _, supplierInvoice := range supplierInvoiceList {
|
|
|
+ // 2. 根据发票中的incomeIds去查找任务及其服务费收入
|
|
|
+ var supplierInvoiceInfo *http_model.SupplierToWithdrawInfo
|
|
|
+ supplierInvoiceInfo = &http_model.SupplierToWithdrawInfo{}
|
|
|
+
|
|
|
+ // 2.1. 基础信息填入
|
|
|
+ supplierInvoiceInfo.AgreeTime = supplierInvoice.AgreeTime
|
|
|
+ supplierInvoiceInfo.Company = supplierInvoice.Company
|
|
|
+ supplierInvoiceInfo.SupplierType = supplierInfo.SupplierType
|
|
|
+
|
|
|
+ // 2.2. 任务及其收入信息填入
|
|
|
+ incomeIds := supplierInvoice.IncomeIds
|
|
|
+ strSlice := strings.Split(incomeIds, ",")
|
|
|
+ intSlice := make([]int, len(strSlice))
|
|
|
+ for i, s := range strSlice {
|
|
|
+ num, err := strconv.Atoi(s)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("转换错误:", err)
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ intSlice[i] = num
|
|
|
+ }
|
|
|
+ for _, incomeId := range intSlice {
|
|
|
+ var sTaskInfo *http_model.STaskInfo
|
|
|
+ sTaskInfo = &http_model.STaskInfo{}
|
|
|
+ currIncome, incomeErr := db.GetIncomeInfoByIncomeId(ctx, incomeId)
|
|
|
+ if incomeErr != nil {
|
|
|
+ return nil, incomeErr
|
|
|
+ }
|
|
|
+ sTaskInfo.ServiceCharge = currIncome.ServiceChargeSettle
|
|
|
+ supplierInvoiceInfo.Amount += currIncome.ServiceChargeSettle
|
|
|
+ if currIncome.IncomeType == 1 {
|
|
|
+ sTaskInfo.Id = currIncome.SProjectID
|
|
|
+ } else if currIncome.IncomeType == 3 {
|
|
|
+ sTaskInfo.Id = currIncome.SLocalID
|
|
|
+ }
|
|
|
+ supplierInvoiceInfo.STaskInfo = append(supplierInvoiceInfo.STaskInfo, sTaskInfo)
|
|
|
+ }
|
|
|
+ supplierInvoiceData.ToWithdrawList = append(supplierInvoiceData.ToWithdrawList, supplierInvoiceInfo)
|
|
|
}
|
|
|
- sTaskInfo.ServiceCharge = currIncome.SupplierChargeActual
|
|
|
- supplierInvoiceInfo.Amount += currIncome.SupplierChargeActual
|
|
|
- if currIncome.IncomeType == 1 {
|
|
|
- sTaskInfo.Id = currIncome.SProjectID
|
|
|
- } else if currIncome.IncomeType == 3 {
|
|
|
- sTaskInfo.Id = currIncome.SLocalLifeID
|
|
|
+ supplierInvoiceData.Total = total
|
|
|
+ }
|
|
|
+
|
|
|
+ } else if supplierInfo.SupplierType == 1 {
|
|
|
+ // 个人服务商
|
|
|
+ // 查询个人服务商收入信息
|
|
|
+ supplierIncomeList, supplierIncomeTotal, supplierIncomeErr := db.GetSupplierIncomeList(ctx, req.PageSize, req.PageNum, req.SupplierId, 5)
|
|
|
+ if supplierIncomeErr != nil {
|
|
|
+ return nil, supplierIncomeErr
|
|
|
+ }
|
|
|
+ if supplierIncomeList != nil {
|
|
|
+ supplierInvoiceData.Total = supplierIncomeTotal
|
|
|
+ for _, supplierIncome := range supplierIncomeList {
|
|
|
+ var supplierInvoiceInfo *http_model.SupplierToWithdrawInfo
|
|
|
+ supplierInvoiceInfo = &http_model.SupplierToWithdrawInfo{}
|
|
|
+ supplierInvoiceInfo.SupplierType = supplierInfo.SupplierType
|
|
|
+ supplierInvoiceInfo.IncomeId = supplierIncome.IncomeID
|
|
|
+ supplierInvoiceInfo.Amount = supplierIncome.ServiceChargeSettle
|
|
|
+ supplierInvoiceInfo.AmountActual = supplierIncome.ServiceChargeSettle * 0.05
|
|
|
+ var sTaskInfo *http_model.STaskInfo
|
|
|
+ sTaskInfo = &http_model.STaskInfo{}
|
|
|
+ sTaskInfo.ServiceCharge = supplierIncome.ServiceChargeSettle
|
|
|
+ if supplierIncome.IncomeType == 1 {
|
|
|
+ sTaskInfo.Id = supplierIncome.SProjectID
|
|
|
+ } else if supplierIncome.IncomeType == 3 {
|
|
|
+ sTaskInfo.Id = supplierIncome.SLocalID
|
|
|
+ }
|
|
|
+ supplierInvoiceInfo.STaskInfo = append(supplierInvoiceInfo.STaskInfo, sTaskInfo)
|
|
|
+ supplierInvoiceData.ToWithdrawList = append(supplierInvoiceData.ToWithdrawList, supplierInvoiceInfo)
|
|
|
}
|
|
|
- supplierInvoiceInfo.STaskInfo = append(supplierInvoiceInfo.STaskInfo, sTaskInfo)
|
|
|
}
|
|
|
- supplierInvoiceData.ToWithdrawList = append(supplierInvoiceData.ToWithdrawList, supplierInvoiceInfo)
|
|
|
+
|
|
|
}
|
|
|
- supplierInvoiceData.Total = total
|
|
|
- } else {
|
|
|
- // 个人服务商
|
|
|
}
|
|
|
-
|
|
|
return supplierInvoiceData, nil
|
|
|
}
|
|
|
|
|
|
-// CreateSupplierWithdraw TODO
|
|
|
// CreateSupplierWithdraw 创建服务商提现信息
|
|
|
func (*supplier) CreateSupplierWithdraw(ctx context.Context, req *http_model.CreateSupplierWithdrawRequest) error {
|
|
|
|
|
|
- // 1. 数据整理
|
|
|
var supplierWithdrawInfoList []*gorm_model.YounggeeSupplierWithdraw
|
|
|
- for _, withdrawInfo := range req.CreateCompanySupplierWithdraw {
|
|
|
- var supplierWithdrawInfo *gorm_model.YounggeeSupplierWithdraw
|
|
|
- supplierWithdrawInfo = &gorm_model.YounggeeSupplierWithdraw{}
|
|
|
-
|
|
|
- // 1.1. 接口传入信息填入
|
|
|
- supplierWithdrawInfo.SupplierId = req.SupplierId
|
|
|
- supplierWithdrawInfo.WithdrawStatus = 1
|
|
|
- supplierWithdrawInfo.BankName = withdrawInfo.BankName
|
|
|
- supplierWithdrawInfo.BankNumber = withdrawInfo.BankNumber
|
|
|
-
|
|
|
- // 1.2. 查找服务商信息填入
|
|
|
-
|
|
|
- // 1.3. 回票信息填入
|
|
|
- supplierWithdrawInfoList = append(supplierWithdrawInfoList, supplierWithdrawInfo)
|
|
|
|
|
|
+ // 1. 判断服务商类型
|
|
|
+ supplierInfo, supplierErr := db.GetSupplierById(ctx, req.SupplierId)
|
|
|
+ if supplierErr != nil {
|
|
|
+ return supplierErr
|
|
|
+ }
|
|
|
+ if supplierInfo != nil {
|
|
|
+ if supplierInfo.SupplierType == 1 {
|
|
|
+ // 1.1. 个人服务商
|
|
|
+ for _, withdrawInfo := range req.CreatePersonSupplierWithdraw {
|
|
|
+ var supplierWithdrawInfo *gorm_model.YounggeeSupplierWithdraw
|
|
|
+ supplierWithdrawInfo = &gorm_model.YounggeeSupplierWithdraw{}
|
|
|
+
|
|
|
+ // 1.2.1. 接口传入信息填入
|
|
|
+ supplierWithdrawInfo.SupplierId = req.SupplierId
|
|
|
+ supplierWithdrawInfo.WithdrawStatus = 2
|
|
|
+ supplierWithdrawInfo.BankName = withdrawInfo.BankName
|
|
|
+ supplierWithdrawInfo.BankNumber = withdrawInfo.BankNumber
|
|
|
+ var currentTime time.Time
|
|
|
+ currentTime = time.Now()
|
|
|
+ supplierWithdrawInfo.SupplyTime = ¤tTime
|
|
|
+ supplierWithdrawInfo.WithdrawAmount = 0.0
|
|
|
+
|
|
|
+ // 1.2.2. 查找服务商信息填入
|
|
|
+ supplierWithdrawInfo.Name = supplierInfo.Name
|
|
|
+ supplierWithdrawInfo.Phone = withdrawInfo.Phone
|
|
|
+
|
|
|
+ // 1.2.3. 收入信息填入
|
|
|
+ currIncome, incomeInfoErr := db.GetIncomeInfoByIncomeId(ctx, withdrawInfo.IncomeId)
|
|
|
+ if incomeInfoErr != nil {
|
|
|
+ return incomeInfoErr
|
|
|
+ }
|
|
|
+ if currIncome != nil {
|
|
|
+ supplierWithdrawInfo.WithdrawAmount += currIncome.ServiceChargeSettle
|
|
|
+ }
|
|
|
+ supplierWithdrawInfo.AmountPayable = supplierWithdrawInfo.WithdrawAmount
|
|
|
+ supplierWithdrawInfoList = append(supplierWithdrawInfoList, supplierWithdrawInfo)
|
|
|
+ }
|
|
|
+ } else if supplierInfo.SupplierType == 2 {
|
|
|
+ // 1.2. 机构服务商
|
|
|
+ for _, withdrawInfo := range req.CreateCompanySupplierWithdraw {
|
|
|
+ var supplierWithdrawInfo *gorm_model.YounggeeSupplierWithdraw
|
|
|
+ supplierWithdrawInfo = &gorm_model.YounggeeSupplierWithdraw{}
|
|
|
+
|
|
|
+ // 1.2.1. 接口传入信息填入
|
|
|
+ supplierWithdrawInfo.SupplierId = req.SupplierId
|
|
|
+ supplierWithdrawInfo.WithdrawStatus = 2
|
|
|
+ supplierWithdrawInfo.BankName = withdrawInfo.BankName
|
|
|
+ supplierWithdrawInfo.BankNumber = withdrawInfo.BankNumber
|
|
|
+ var currentTime time.Time
|
|
|
+ currentTime = time.Now()
|
|
|
+ supplierWithdrawInfo.SupplyTime = ¤tTime
|
|
|
+ supplierWithdrawInfo.WithdrawAmount = 0.0
|
|
|
+
|
|
|
+ // 1.2.2. 查找服务商信息填入
|
|
|
+ supplierWithdrawInfo.Name = supplierInfo.Name
|
|
|
+ supplierWithdrawInfo.Phone = supplierInfo.PhoneNumber
|
|
|
+ supplierWithdrawInfo.Company = supplierInfo.CompanyName
|
|
|
+
|
|
|
+ // 1.2.3. 收入信息填入
|
|
|
+ incomeIds, incomeErr := db.GetIncomeIdsByInvoiceId(ctx, withdrawInfo.InvoiceId)
|
|
|
+ if incomeErr != nil {
|
|
|
+ return incomeErr
|
|
|
+ }
|
|
|
+ if incomeIds != "" {
|
|
|
+ strSlice := strings.Split(incomeIds, ",")
|
|
|
+ intSlice := make([]int, len(strSlice))
|
|
|
+ for i, s := range strSlice {
|
|
|
+ num, err := strconv.Atoi(s)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("转换错误:", err)
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ intSlice[i] = num
|
|
|
+ }
|
|
|
+ for _, incomeId := range intSlice {
|
|
|
+ currIncome, incomeInfoErr := db.GetIncomeInfoByIncomeId(ctx, incomeId)
|
|
|
+ if incomeInfoErr != nil {
|
|
|
+ return incomeInfoErr
|
|
|
+ }
|
|
|
+ if currIncome != nil {
|
|
|
+ supplierWithdrawInfo.WithdrawAmount += currIncome.ServiceChargeSettle
|
|
|
+ }
|
|
|
+ }
|
|
|
+ supplierWithdrawInfo.AmountPayable = supplierWithdrawInfo.WithdrawAmount
|
|
|
+ }
|
|
|
+ supplierWithdrawInfoList = append(supplierWithdrawInfoList, supplierWithdrawInfo)
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 2. 数据库插入
|
|
@@ -314,3 +522,8 @@ func (*supplier) CreateSupplierWithdraw(ctx context.Context, req *http_model.Cre
|
|
|
|
|
|
return nil
|
|
|
}
|
|
|
+
|
|
|
+// GetSupplierWithdrawList 服务商提现列表
|
|
|
+func (*supplier) GetSupplierWithdrawList(ctx context.Context, req *http_model.SupplierWithdrawListRequest) (*http_model.SupplierWithdrawListData, error) {
|
|
|
+
|
|
|
+}
|