排他校验 两个活动串下活动是否出现 同活动ID 版本不同冲突

2020-06-18  本文已影响0人  dongdog
    /**
     * 排他校验两个活动串下 同活动ID的版本是否冲突
     *
     * @param $sid1
     * @param $sid2
     *
     * @return bool|string
     */
    private function checkActivityIdVersion($sid1, $sid2)
    {
        $map = [
            'sid' => [
                'IN',
                [$sid1, $sid2]
            ]
        ];
        $field        = [
            'activity_id',
            'activity_version'
        ];
        //获取两个活动串下绑定的活动
        $activityList = M('string_config')
            ->field($field)
            ->where($map)
            ->select();
        //分组
        $data = array_group_by($activityList, 'activity_id');
        $msg = '';
        foreach ($data as $value) {
            //取列
            $version = array_column($value, 'activity_version');
            //去重数组元素超过1 则存在多版本问题
            $count = count(array_unique($version));
            if ($count > 1) {
                $msg .= "两个活动串冲突 : 活动ID:{$value[0]['activity_id']} 出现版本不一致 <br />";
                foreach ($value as $v) {
                    $msg .= "版本{$v['activity_version']} <br />";
                }
            }
        }
        //没有消息 则返回 false 正常
        if (empty($msg)) {
            return FALSE;
        }
        return $msg;
    }
上一篇下一篇

猜你喜欢

热点阅读