<?php

namespace app\api\controller\activity;

use app\admin\model\store\StoreDescription;
use app\admin\model\store\StoreProductAttrValue;
use app\models\store\StoreExchange;
use app\models\store\StoreExchangeOrder;
use app\models\store\StoreIntegral;
use app\models\store\StoreProductAttr;
use app\models\store\StoreProductRelation;
use app\models\store\StoreProductReply;

//use app\models\store\StoreSeckill;
use app\models\store\StoreVisit;
use app\models\user\User;
use app\Request;
use crmeb\services\GroupDataService;
use crmeb\services\QrcodeService;
use crmeb\services\UtilService;

/**
 * 秒杀产品类
 * Class StoreSeckillController
 * @package app\api\controller\activity
 */
class StoreExchangeController
{
    /**
     * 积分产品列表
     * @param Request $request
     * @param $time
     * @return mixed
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function lst(Request $request)
    {
        list($page, $limit) = UtilService::getMore([
            ['page', 0],
            ['limit', 0],
        ], $request, true);
//        var_dump(111);
        $seckillInfo = StoreExchange::seckillList($page, $limit);
        if (count($seckillInfo)) {
            foreach ($seckillInfo as $key => &$item) {
                if ($item['quota'] > 0) {
                    $quota = StoreProductAttrValue::where('product_id', $item['id'])->where('type', 5)->value('SUM(quota)');
                    $percent = (int)bcmul(bcdiv(bcsub($item['quota'], $quota), $item['quota'], 2), 100, 0);
                    $item['percent'] = $percent;
                    $item['stock'] = $quota;
                } else {
                    $item['percent'] = 100;
                    $item['stock'] = 0;
                }

            }
        }
        return app('json')->successful($seckillInfo);
    }

    /**
     * 秒杀产品详情
     * @param Request $request
     * @param $id
     * @return mixed
     */
    public function detail(Request $request, $id, $time = 0)
    {
        if (!$id || !($storeInfo = StoreExchange::getValidProduct($id))) return app('json')->fail('商品不存在或已下架!');
        $storeInfo = $storeInfo->hidden(['cost', 'add_time', 'is_del'])->toArray();
        $siteUrl = sys_config('site_url');
        $storeInfo['image'] = set_file_url($storeInfo['image'], $siteUrl);
        $storeInfo['image_base'] = set_file_url($storeInfo['image'], $siteUrl);
        $storeInfo['code_base'] = QrcodeService::getWechatQrcodePath($id . '_exchange_detail_wap.jpg', '/activity/exchange_detail/' . $id . '/' . $time);
        $uid = $request->uid();
        $storeInfo['userLike'] = StoreProductRelation::isProductRelation($id, $uid, 'like', 'product_exchange');
        $storeInfo['like_num'] = StoreProductRelation::productRelationNum($id, 'like', 'product_exchange');
        $storeInfo['userCollect'] = StoreProductRelation::isProductRelation($storeInfo['product_id'], $uid, 'collect');
        $storeInfo['uid'] = $uid;
        $storeInfo['description'] = htmlspecialchars_decode(StoreDescription::getDescription($id, 5));
        $data['storeInfo'] = $storeInfo;
        StoreVisit::setView($uid, $id, $storeInfo['product_id'], 'viwe');
        $data['reply'] = StoreProductReply::getRecProductReply($storeInfo['product_id']);
        $data['replyCount'] = StoreProductReply::productValidWhere()->where('product_id', $storeInfo['product_id'])->count();
        if ($data['replyCount']) {
            $goodReply = StoreProductReply::productValidWhere()->where('product_id', $storeInfo['product_id'])->where('product_score', 5)->count();
            $data['replyChance'] = $goodReply;
            if ($goodReply) {
                $data['replyChance'] = bcdiv($goodReply, $data['replyCount'], 2);
                $data['replyChance'] = bcmul($data['replyChance'], 100, 3);
            }
        } else $data['replyChance'] = 0;
        list($productAttr, $productValue) = StoreProductAttr::getProductAttrDetail($id, $uid, 0, 5);
        foreach ($productValue as $k => $v) {
            $productValue[$k]['product_stock'] = StoreProductAttrValue::where('product_id', $storeInfo['product_id'])->where('suk', $v['suk'])->where('type', 0)->value('stock');
        }
        $data['productAttr'] = $productAttr;
        $data['productValue'] = $productValue;
        return app('json')->successful($data);
    }

    /**
     * 订单列表
     * @param Request $request
     * @return mixed
     */
    public function order_lst(Request $request)
    {
        list($type, $page, $limit, $search) = UtilService::getMore([
            ['type', ''],
            ['page', 0],
            ['limit', ''],
            ['search', ''],
        ], $request, true);
        return app('json')->successful(StoreExchangeOrder::getUserOrderSearchList($request->uid(), $type, $page, $limit, $search));
    }

    public function gift($id, Request $request)
    {
//        list($uid) = UtilService::postMore([['uid', 0]], $request, true);
//        if (!$uid) return app('json')->fail('请选择要赠送的用户');
//        if (!User::get($uid)) return app('json')->fail('用户不存在');
//        if ($uid == $request->uid()) return app('json')->fail('不能赠送给自己');
        $info = StoreExchangeOrder::where('id', $id)
//            ->where('uid', ,$request->uid())
            ->where('refund_status', 0)
            ->where('status', 0)
            ->where('gift_uid', 0)
            ->find();
        if (!$info) return app('json')->fail('兑换券已经被领取啦');
        if ($info['uid'] == $request->uid()) return app('json')->fail('不能接受自己的赠送');
        $res = StoreExchangeOrder::where('id', $id)->update(['gift_uid' => $request->uid(), 'gift_time' => time()]);
        if ($res) return app('json')->success('领取成功');
        else return app('json')->fail('领取失败');
    }

}