package dao import ( "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-print/dao" "sort" "time" ) // GetBadCommentOrderId 根据差评商品列表获取订单号 func GetBadCommentOrderId(jxStoreId int, startTime, endTime time.Time, foodNameList []string) (string, error) { sqlParams := []interface{}{} sql := ` SELECT count(vendor_order_id) count,vendor_order_id FROM order_sku_financial WHERE jx_store_id = ? AND created_at >= ? AND created_at <= ? AND name IN (` + dao.GenQuestionMarks(len(foodNameList)) + `) AND is_afs_order = 0 AND vendor_id = 1 GROUP BY vendor_order_id LIMIT 0, 1000` sqlParams = append(sqlParams, []interface{}{ jxStoreId, startTime, endTime, foodNameList, }) commentOrder := make([]*badCommentOrder, 0, 0) if err := GetRows(GetDB(), &commentOrder, sql, sqlParams...); err != nil { return "", err } // 全等于的话就是目标订单 vendorOrderIdList := make([]string, 0, 0) for _, v := range commentOrder { if v.Count == len(foodNameList) { return v.VendorOrderId, nil } else if v.Count-1 == len(foodNameList) || v.Count-2 == len(foodNameList) { vendorOrderIdList = append(vendorOrderIdList, v.VendorOrderId) } else if v.Count+1 == len(foodNameList) || v.Count+2 == len(foodNameList) { vendorOrderIdList = append(vendorOrderIdList, v.VendorOrderId) } } sql2 := `SELECT * FROM order_sku_financial WHERE vendor_order_id = ? AND is_afs_order = 0 AND vendor_id = 1 ` mathProbability := make(map[string]float64, 0) for _, v := range vendorOrderIdList { skuFinancial := make([]*model.OrderSkuFinancial, 0, 0) if err := GetRows(GetDB(), &skuFinancial, sql2, []interface{}{v}...); err != nil { continue } var skuMatchingCount int = 0 for _, sf := range skuFinancial { for _, fnl := range foodNameList { if sf.Name == fnl { skuMatchingCount += 1 } } } mathProbability[v] = float64(skuMatchingCount) / float64(len(skuFinancial)) } var values []float64 for _, v := range mathProbability { values = append(values, v) } sort.Slice(values, func(i, j int) bool { if values[i] > values[j] { return true } return false }) for k, v := range mathProbability { if v == values[0] { return k, nil } } return "", nil } type badCommentOrder struct { Count int `json:"count"` VendorOrderId string `json:"vendor_order_id"` }