新增【进度分配模式】涉及修改文件

本期新增进度分配模式,举例如下:
比如客服1我设置了 10条,客服2我设置了20条,客服3我设置了30条,第一轮大家的进度都是0,分完了之后第一轮后,第二轮就寻找进度最少的开始分,比如客服1虽然分了一条,但是他的进度达到10%,客服2也分了一条,但是他的进度才5%,客服3也分了一条,但是他的进度才3.3%,那第二轮就从客服3开始,如果客服3分完了,那就是客服2最少,才5%,这样去分,直到每个人都达到100%。
涉及文件system/system.html

 <div class="layui-form-item">
                        <label class="layui-form-label">分配模式</label>
                        <div class="layui-input-block">
                            <input type="radio" name="fpmoshi" value="nums" title="数量">
                            <input type="radio" name="fpmoshi" value="turns" title="轮换">
                            <input type="radio" name="fpmoshi" value="pace" title="进度">
                        </div>
                        <div class="layui-form-mid layui-word-aux">
                        数量分配模式:每次分配多少条。轮换分配模式:每多少轮分配一次。进度分配模式按照最大限制完成进度分配,
                        </div>
                    </div>

涉及文件index/main.html

{volist name='kefulist' id='vo'}
                                                
<tr>
    <td>
        <h2 class="table-avatar">
            <div class="avatar avatar-sm mr-2 avatar-img rounded-circle" data-username="{$vo['username']}"></div>
                {$vo['username']}
                                                        
        </h2>
    </td>
    <td>{$vo['pace_rate']}</td>
    <td>
        <span class="badge {$vo['zhuangtai'] == 1 ? 'bg-success-light' : 'bg-danger-light'}">{$vo['zhuangtai'] == 1 ? '可分配' : '无值班'}</span>
    </td>
    <td>{$vo['is_open'] == 1 ? '正常' : '禁止登录'}</td>
    <td>{$vo['ckzhanghu'] == 1 ? '可查看' : '仅编码'}</td>
    <td>{$vo['is_ckly'] == 1 ? '可查看' : '仅编码'}</td>
    <td class="text-right">
        <div class="dropdown dropdown-action">
            <span class="badge {$vo['ending'] > 0 ? 'bg-info-light' : 'bg-warning-light'}">
                                                                {if condition="$vo['ending'] > 0"}
                                                                    剩余:{$vo['ending']}
                                                                {else /}
                                                                   已上限
                                                                {/if}
                                                                </span>
        </div>
    </td>
</tr>
{/volist}    

涉及controller/Index.php文件约153行

    $kefulist = cache('kefulist');
    if (!$kefulist) {
        $kefulist = Db::name('admin')
            ->where('group_id', 'IN', [8, 11])
            ->where('is_open', 1)
            ->order('zhuangtai desc')
            ->select();

        $adminUsernames = array_column($kefulist, 'username');
        $fpStats = [];
        if (!empty($adminUsernames)) {
            $fpStats = Db::name('crm_leads')
                ->where('pr_user', 'IN', $adminUsernames)
                ->whereTime('fp_time', 'today')
                ->field('pr_user, COUNT(pr_user) as pr_user_count')
                ->group('pr_user')
                ->select();
        }
        $fpStatsMap = array_column($fpStats, 'pr_user_count', 'pr_user');

        
        foreach ($kefulist as &$keFu) {
            $prUserCount = $fpStatsMap[$keFu['username']] ?? 0;
            $keFu['ending'] = $keFu['num_max'] - $prUserCount;
        }
        cache('kefulist', $kefulist, 600); // 缓存10分钟
    }

替换为以下内容

    $kefulist = Db::name('admin')
        ->where('group_id', 'IN', [8, 11])
        ->where('is_open', 1)
        ->order('zhuangtai desc')
        ->select();

    $adminUsernames = array_column($kefulist, 'username');
    $fpStats = [];
    if (!empty($adminUsernames)) {
        $fpStats = Db::name('crm_leads')
            ->where('pr_user', 'IN', $adminUsernames)
            ->whereTime('fp_time', 'today')
            ->field('pr_user, COUNT(pr_user) as pr_user_count')
            ->group('pr_user')
            ->select();
    }
    $fpStatsMap = array_column($fpStats, 'pr_user_count', 'pr_user');


    foreach ($kefulist as &$keFu) {
        $prUserCount = $fpStatsMap[$keFu['username']] ?? 0;
        $keFu['ending'] = $keFu['num_max'] - $prUserCount;

        if ($keFu['num_max'] <= 0) {
            $keFu['pace_rate'] = '100%';
        } else {
            $rate = round($prUserCount / $keFu['num_max'] * 100, 1);
            $keFu['pace_rate'] = $rate . '%';
        }
    }
    unset($keFu);

涉及修改文件controller/Auth.php约118行,查找$thisfpms=$cxfpms整个行数代码修改为:

$cxfpms = Db::table('system')->where(['id'=> 1])->find();
        $thisfpms=$cxfpms['fpmoshi'];
        if($thisfpms=="nums"){
            $thisfpname="数量";
        }elseif($thisfpms=="pace"){
            $thisfpname="进度";
        }else{
            $thisfpname="轮换";
        }

注:本次修改并打开进度分配模式后轮换与数量设置的数值将不生效!!!只看总上限量。!!