...
|
...
|
@@ -77,6 +77,133 @@ func (dao *CashPoolDao) CalculateActivityExchangedSuMoney(activityId int64) (map |
|
|
}, nil
|
|
|
}
|
|
|
|
|
|
// TODO 返回兑换清单榜单
|
|
|
func (dao *CashPoolDao) ExchangeCashListRanking(queryOptions map[string]interface{}) (map[string]interface{}, error) {
|
|
|
var retPeople []struct {
|
|
|
Uid int
|
|
|
EmployeeName string
|
|
|
SuMoney float64
|
|
|
Cash float64
|
|
|
Ranking int
|
|
|
}
|
|
|
|
|
|
var retEmployee []struct {
|
|
|
Uid int
|
|
|
EmployeeName string
|
|
|
SuMoney float64
|
|
|
Cash float64
|
|
|
Ranking int
|
|
|
}
|
|
|
|
|
|
tx := dao.transactionContext.PgTx
|
|
|
|
|
|
// 清单人员排名
|
|
|
exchangeCashPersonListModels := new(models.ExchangeCashPersonList)
|
|
|
queryPeople := tx.Model(exchangeCashPersonListModels)
|
|
|
queryPeople = queryPeople.Join("JOIN employees AS e ON e.uid = exchange_cash_person_list.uid")
|
|
|
queryPeople = queryPeople.ColumnExpr("exchange_cash_person_list.uid AS uid")
|
|
|
queryPeople = queryPeople.ColumnExpr("exchange_cash_person_list.employee_name AS employee_name")
|
|
|
queryPeople = queryPeople.ColumnExpr("sum(exchange_cash_person_list.exchanged_cash) AS cash")
|
|
|
queryPeople = queryPeople.ColumnExpr("sum(exchange_cash_person_list.exchanged_su_money) AS su_money")
|
|
|
queryPeople = queryPeople.ColumnExpr("RANK() OVER (ORDER BY sum(exchange_cash_person_list.exchanged_su_money) DESC) AS ranking")
|
|
|
if companyId, ok := queryOptions["companyId"]; ok && (companyId.(int64) != 0) {
|
|
|
queryPeople = queryPeople.Where("e.company_id = ?", companyId)
|
|
|
}
|
|
|
if activityId, ok := queryOptions["activityId"]; ok && (activityId.(int64) != 0){
|
|
|
queryPeople = queryPeople.Where("exchange_cash_person_list.activity_id = ?", activityId)
|
|
|
}
|
|
|
queryPeople = queryPeople.Group("exchange_cash_person_list.uid")
|
|
|
queryPeople = queryPeople.Group("exchange_cash_person_list.employee_name")
|
|
|
if offset, ok := queryOptions["offset"]; ok {
|
|
|
offset := offset.(int)
|
|
|
if offset > -1 {
|
|
|
queryPeople = queryPeople.Offset(offset)
|
|
|
}
|
|
|
} else {
|
|
|
queryPeople = queryPeople.Offset(0)
|
|
|
}
|
|
|
if limit, ok := queryOptions["limit"]; ok {
|
|
|
limit := limit.(int)
|
|
|
if limit > -1 {
|
|
|
queryPeople = queryPeople.Limit(limit)
|
|
|
}
|
|
|
} else {
|
|
|
queryPeople = queryPeople.Limit(20)
|
|
|
}
|
|
|
|
|
|
if err := queryPeople.Order("su_money DESC").Select(&retPeople); err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
|
// 当前员工排名
|
|
|
queryEmployee := tx.Model(exchangeCashPersonListModels)
|
|
|
queryEmployee = queryEmployee.Join("JOIN employees AS e ON e.uid = exchange_cash_person_list.uid")
|
|
|
queryEmployee = queryEmployee.ColumnExpr("exchange_cash_person_list.uid AS uid")
|
|
|
queryEmployee = queryEmployee.ColumnExpr("exchange_cash_person_list.employee_name AS employee_name")
|
|
|
queryEmployee = queryEmployee.ColumnExpr("sum(exchange_cash_person_list.exchanged_cash) AS cash")
|
|
|
queryEmployee = queryEmployee.ColumnExpr("sum(exchange_cash_person_list.exchanged_su_money) AS su_money")
|
|
|
queryEmployee = queryEmployee.ColumnExpr("RANK() OVER (ORDER BY sum(exchange_cash_person_list.exchanged_su_money) DESC) AS ranking")
|
|
|
if companyId, ok := queryOptions["companyId"]; ok && (companyId.(int64) != 0) {
|
|
|
queryEmployee = queryEmployee.Where("e.company_id = ?", companyId)
|
|
|
}
|
|
|
if activityId, ok := queryOptions["activityId"]; ok && (activityId.(int64) != 0) {
|
|
|
queryEmployee = queryEmployee.Where("exchange_cash_person_list.activity_id = ?", activityId)
|
|
|
}
|
|
|
if uid, ok := queryOptions["uid"]; ok {
|
|
|
queryEmployee = queryEmployee.Where("exchange_cash_person_list.uid = ?", uid)
|
|
|
}
|
|
|
queryEmployee = queryEmployee.Group("exchange_cash_person_list.uid")
|
|
|
queryEmployee = queryEmployee.Group("exchange_cash_person_list.employee_name")
|
|
|
if err := queryEmployee.Order("su_money DESC").Select(&retEmployee); err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
|
// 清单已兑换素币
|
|
|
var activityExchangedSuMoney float64
|
|
|
queryListSuMoney := tx.Model(exchangeCashPersonListModels)
|
|
|
queryListSuMoney = queryListSuMoney.Join("JOIN employees AS e ON e.uid = exchange_cash_person_list.uid")
|
|
|
queryListSuMoney = queryListSuMoney.ColumnExpr("sum(exchange_cash_person_list.exchanged_su_money) AS activity_exchanged_su_money")
|
|
|
if companyId, ok := queryOptions["companyId"]; ok && (companyId.(int64) != 0) {
|
|
|
queryListSuMoney = queryListSuMoney.Where("e.company_id = ?", companyId)
|
|
|
}
|
|
|
if activityId, ok := queryOptions["activityId"]; ok && (activityId.(int64) != 0) {
|
|
|
queryListSuMoney = queryListSuMoney.Where("exchange_cash_person_list.activity_id = ?", activityId)
|
|
|
}
|
|
|
if err := queryListSuMoney.Select(&activityExchangedSuMoney); err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
|
// 清单已兑换现金
|
|
|
var activityExchangedCash float64
|
|
|
queryListCash := tx.Model(exchangeCashPersonListModels)
|
|
|
queryListCash = queryListCash.Join("JOIN employees AS e ON e.uid = exchange_cash_person_list.uid")
|
|
|
queryListCash = queryListCash.ColumnExpr("sum(exchange_cash_person_list.exchanged_cash) AS activity_exchanged_cash")
|
|
|
if companyId, ok := queryOptions["companyId"]; ok && (companyId.(int64) != 0) {
|
|
|
queryListCash = queryListCash.Where("e.company_id = ?", companyId)
|
|
|
}
|
|
|
if activityId, ok := queryOptions["activityId"]; ok && (activityId.(int64) != 0) {
|
|
|
queryListCash = queryListCash.Where("exchange_cash_person_list.activity_id = ?", activityId)
|
|
|
}
|
|
|
if err := queryListCash.Select(&activityExchangedCash); err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
|
// 清单计数
|
|
|
queryCount := tx.Model(exchangeCashPersonListModels)
|
|
|
count, err := queryCount.Count()
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
|
return map[string]interface{} {
|
|
|
"people": retPeople, // 员工排行榜
|
|
|
"count": count, // 计数
|
|
|
"currentEmployee": retEmployee[0], // 当前员工排名
|
|
|
"exchangedSuMoney": activityExchangedSuMoney, // 清单已兑换素币
|
|
|
"exchangedCash": activityExchangedCash, // 清单已兑换现金
|
|
|
}, nil
|
|
|
}
|
|
|
|
|
|
func NewCashPoolDao(transactionContext *pgTransaction.TransactionContext) (*CashPoolDao, error) {
|
|
|
if transactionContext == nil {
|
|
|
return nil, fmt.Errorf("transactionContext参数不能为nil")
|
...
|
...
|
|