一:前言
最近项目中要实现crm中按权重分配客户订单,在此记录一下实现过程,有更好的方法可以留言交流。
二:实现思路
要实现根据权重分配,首先要统计用户的总权重,订单数/总权重 = 单个权重对应的订单数。最后就可以根据对应的订单数乘以权重值就可以了。另外还需注意一种情况,订单数除总权重有余数,这时候需要根据余数轮询分配数据。
三:实现代码
public function dispense(){
//分配条数
$num = input('num');
//防止重复分配
$map['sale_id'] = 0;
$map['isdelete'] = 0;
$yu_num = 0;
//用户列表
$user['id'] = ['<>',1];
$sale_list = Db::name('user')->field('id,realname,weight')->where($user)->order('weight desc')->select();
//根据数量分配给用户
if($num != '' && $num != 0){
$count = (int)$num;
}else{
$count = Db::name('invin')->where($map)->count();