<?php

namespace addons\shopro\service\user;

use app\admin\model\shopro\user\User as UserModel;
use think\helper\Time;

class User
{
    /**
     * @name 追加消费金额
     * @param  int|object   $user       会员对象或会员ID
     * @param  float        $amount      变更金额
     * @return boolean
     */
    public static function consume($user, $amount)
    {
        // 判断金额
        if ($amount == 0) {
            return false;
        }

        // 判断用户
        if (is_numeric($user)) {
            $user = UserModel::getById($user);
        }
        if (!$user) {
            error_stop('未找到用户');
        }


        // 更新会员余额信息
        $user->setInc('total_consume', $amount);

        return true;
    }

    /**
     * @name 今日是否可以试戴
     * @param  int|object   $user       会员对象或会员ID
     * @return int
     */
    public function isTry($user_id)
   {
       // 查询我的试戴列表
       $res = userModel::where('id', $user_id)
           ->find();
        $ai_tryon_count = config('shopro.ai_tryon_count');
       if ($res->ai_count > $ai_tryon_count && $res->ai_time > Time::today()[0]) {
           return 0; // 不可以试戴
       } else {
           return 1; // 可以试戴
       }
    }

    /**
     * @name 试戴次数+1
     * @param  int|object   $user       会员对象或会员ID
     * @return int
     */
    public function addTryTimes($user_id)
    {
        // 查询我的试戴列表
        $res = userModel::where('id', $user_id)
            ->find();
        if($res->ai_time < Time::today()[0]) {
            $ai_count = 1;
        } else {
            $ai_count = intval($res->ai_count)+1;
        }
        // 试戴次数+1
        userModel::where('id', $user_id)->update(['ai_count' => $ai_count, 'ai_time' => time()]);
    }

    /**
     * @name 扣积分
     * @param  int   $user_id   用户ID
     * @param  int   $points    扣除积分数量
     * @return int   0=失败(积分不足), 1=成功
     */
    public function deductPoints($user_id, $points)
    {
        try {
            // 使用 Wallet::change() 扣减积分，负数表示扣除
            $result = \addons\shopro\service\Wallet::change($user_id, 'score', -$points, 'ai_tryon_video', [], '3D试戴扣积分');
            return $result ? 1 : 0;
        } catch (\Exception $e) {
            // 积分不足等异常情况
            return 0;
        }
    }

}
