common.php 2.4 KB
<?php


function handleOrder($orderInfo) {
    try {
        if(!is_array($orderInfo)) {
            return false;
        }

        $orderInfo['other'] = json_decode($orderInfo['other'], true);
        if($orderInfo['type'] == 1) { // 打赏
            $user = new \app\api\model\User();
            $userInfo = $user->infoAndLockById($orderInfo['other']['user_id']);
            if(!$userInfo) {
                return false;
            }
            $insertData = [
                'user_id' => $orderInfo['other']['user_id'],
                'money' => $orderInfo['other']['money'],
                'memo' => '收到打赏',
                'createtime' => time(),
            ];
            $userMoneyLog = new \app\api\model\UserMoneyLog();
            $res = $userMoneyLog->addOne($insertData);
            if(!$res) {
                return false;
            }

            $updateData = [
                'money' => bcadd($userInfo['money'], $orderInfo['other']['money'], 2)
            ];
            $res = $user->updateOne($orderInfo['other']['user_id'], $updateData);
            if(!$res) {
                return false;
            }
            return true;
        } elseif ($orderInfo['type'] == 2) { // 购买vip
            $student = new \app\api\model\Student();
            $studentInfo = $student->infoByUserIdCanShow($orderInfo['other']['user_id']);
            if(!$student) {
                return false;
            }

            if($studentInfo['vip_endtime']) {
                if($studentInfo['vip_level'] == $orderInfo['other']['vip_level']) {
                    $vipEndTime = bcadd($studentInfo['vip_endtime'], bcmul($orderInfo['other']['keep'], bcmul(3600, 24, 0), 0), 0);
                } else {
                    $vipEndTime = bcmul($orderInfo['other']['keep'], bcmul(3600, 24, 0), 0);
                }
            } else {
                $vipEndTime = bcmul($orderInfo['other']['keep'], bcmul(3600, 24, 0), 0);
            }
            $updateData = [
                'vip_level' => $orderInfo['other']['vip_level'],
                'vip_endtime' => $vipEndTime,
            ];
            $res = $student->updateOne($studentInfo['id'], $updateData);
            if(!$res) {
                return false;
            }
            return true;
        } else {
            return false;
        }
    } catch (\Exception $e) {
        return false;
    }

}