1. 首页

golang平均区分算法

今天碰到一个需求,把全部的未分配的id,平均分配到不同的用户下面,比如商城后台有10笔订单需要审核,审核员有3名,怎么样把这几笔订单平均的分配下来

贴一下我实现的代码、

package main
import "fmt"
func main() {
	var all [][]int  //用来存储全部的数据
	a:=[]int{1,2,3}  //这个是审核员的id,
	for range a {   //先添加几个空的数组容器
		all=append(all, []int{})
	}
	b:=[]int{10,11,12,13,14,15,16,17,18,19,20}  //订单的id列表
	i:=0   //用来临时计数,看是否已经存储过一遍,如果已经分了一个轮回,那么重复添加
	for _, v := range b {
		 fmt.Println(v)
		all[i]=append(all[i], v)
		i++  //计数判断是否归零
		if i>=len(a) {
			i=0
		}
	}
   fmt.Printf("%+v",all)
}

得到的结果如下:

10
11
12
13
14
15
16
17
18
19
20
[[10 13 16 19] [11 14 17 20] [12 15 18]]

如果用gorm再把数据更新一下

//加事务保证统一性
for i := 0; i < len(a); i++ {
        up := map[string]interface{}{
            "verfiy_id":     a[i],
            "verify_status": 1,
        }
        if err = dao.MDB.Model(&model.Order{}).Where("id IN ?", all[i]).Updates(up).Error; err != nil {
            db.Rollback()
            return
        }
    }

完整的流程就这样了,主要的目的是减少数据的查询与更新次数

本文来自投稿,不代表本人立场,如若转载,请注明出处;如有问题您可以发邮件到:itlun@qq.com