<?php


namespace wstmart\app\controller;


use think\Db;
use think\Exception;
use think\exception\PDOException;

class Note extends Base
{
    public function index()
    {
        $userId = (int)session('WST_USER.userId');
        $model = Db::name('note')->field(true)
            ->where(["user_id" => $userId])->order("update_time", "desc")
            ->select();
        return WSTReturn("OK", 1, $model);
    }

    public function detail()
    {
        $userId = (int)session('WST_USER.userId');
        if (($id = (int)input('id', 0)) > 0) {
            $detail = Db::name('note')
                ->where(["user_id" => $userId, "id" => $id])->find();
            if (!$detail) return WSTReturn("该条内容已被删除", 0);
            $detail['content'] = htmlspecialchars_decode($detail['content']);
            return WSTReturn("OK", 1, $detail);
        }
        return WSTReturn("异常请求", 0);
    }

    public function save()
    {
        $userId = (int)session('WST_USER.userId');
        $id = (int)input('post.id', 0);
        $title = input("post.title");
        $content = request()->post("content");
        $content = htmlspecialchars_decode($content);
        if (empty($title)) return WSTReturn("请填写标题", 0);
        if (empty($content)) return WSTReturn("请填写内容", 0);
        if ($id > 0) {
            $detail = Db::name('note')->field(true)
                ->where(["user_id" => $userId, "id" => $id])->select();
            if (!$detail) return WSTReturn("该条内容已被删除", 0);
            Db::name('note')->where(["user_id" => $userId, "id" => $id])
                ->update([
                    "title" => $title,
                    "content" => $content,
                    "update_time" => date("Y-m-d H:i:s"),
                ]);
            return WSTReturn("成功", 1);
        } elseif ($id == 0) {
            Db::name('note')->insert([
                "title" => $title,
                "content" => $content,
                "user_id" => $userId,
                "create_time" => date("Y-m-d H:i:s"),
                "update_time" => date("Y-m-d H:i:s"),
            ]);
            return WSTReturn("成功", 1);
        }
        return WSTReturn("异常请求", 0);
    }

    public function creditIndex()
    {
        $userId = (int)session('WST_USER.userId');
        $model = Db::name('note_credit')->field(true)
            ->where(["user_id" => $userId])->order("update_time", "desc")
            ->select();
        return WSTReturn("OK", 1, $model);
    }

    public function creditDetail()
    {
        $userId = (int)session('WST_USER.userId');
        if (($id = (int)input('id', 0)) > 0) {
            $detail = Db::name('note_credit')
                ->where(["user_id" => $userId, "id" => $id])->find();
            if (!$detail) return WSTReturn("该条内容已被删除", 0);
            $detail['content'] = htmlspecialchars_decode($detail['content']);
            return WSTReturn("OK", 1, $detail);
        }
        return WSTReturn("异常请求", 0);
    }

    public function creditDetailInfo()
    {
        $userId = (int)session('WST_USER.userId');
        if (($id = (int)input('id', 0)) > 0) {
            $detail = Db::name('note_credit_detail')
                ->order('create_time', 'desc')
                ->where(["user_id" => $userId, "credit_id" => $id])->select();
            foreach ($detail as &$item) {
                $item['create_date'] = date('Y-m-d', strtotime($item['create_time']));
            }
            return WSTReturn("OK", 1, $detail);
        }
        return WSTReturn("异常请求", 0);
    }

    public function creditCreate()
    {
        $userId = (int)session('WST_USER.userId');
        $title = input("post.title");
        $content = input("post.content");
        $cash = (float)input("post.cash");
        Db::startTrans();
        try {
            $id = Db::name('note_credit')->save([
                "title" => $title,
                "content" => $content,
                "user_id" => $userId,
                "cur_cash" => $cash,
            ]);
            Db::name("note_credit_detail")->save([
                "credit_id" => $id,
                "type" => 0,
                "cash" => $cash,
                "content" => "新建时填写的值",
                "create_time" => date("Y-m-d H:i:s"),
            ]);
            Db::commit();
            return WSTReturn("OK", 1);
        } catch (\Exception $e) {
            Db::rollback();
            errLog($e);
            return WSTReturn('操作失败', -1);
        }
    }

    public function creditSave()
    {
        $userId = (int)session('WST_USER.userId');
        $id = (int)input('post.id', 0);
        $name = input("post.name");
        $cur_cash = input('post.cur_cash');
        $credit_cash = input('post.credit_cash');
        $detail = Db::name('note_credit')
            ->where(["user_id" => $userId, "id" => $id])->find();
        if (!$detail) return WSTReturn("该条内容已被删除", 0);
        Db::startTrans();
        try {
            if ($detail['cur_cash'] != $cur_cash) {
                Db::name('note_credit')
                    ->where(["user_id" => $userId, "id" => $id])
                    ->update(compact('cur_cash'));
                Db::name("note_credit_detail")->insert([
                    "credit_id" => $id,
                    "user_id"=>$userId,
                    "type" => 9,
                    "amount" => $cur_cash,
                    "create_time" => date("Y-m-d H:i:s"),
                ]);
            }
            Db::name('note_credit')
                ->where(["user_id" => $userId, "id" => $id])
                ->update(compact('name', 'credit_cash'));
            Db::commit();
            return WSTReturn("OK", 1);
        } catch (Exception $e) {
            Db::rollback();
            errLog($e);
            return WSTReturn('操作失败', -1);
        }
    }

    public function creditAdd()
    {
        $userId = (int)session('WST_USER.userId');
        $id = (int)input('post.id', 0);
        $type = (int)input("post.type", 1);
        $amount = (float)input("post.amount");
        $credit = Db::name('note_credit')->where([
            "user_id" => $userId,
            "id" => $id,
        ])->field(true)->find();
        if (empty($credit)) {
            return WSTReturn("数据不存在", 0);
        }
        switch ($type) {
            case 1:
                //+
                $credit["amount"] += $amount;
                break;
            case 2:
                //-
                $credit["amount"] -= $amount;
                break;
        }
        Db::startTrans();
        try {
            Db::name('note_credit')->where([
                "user_id" => $userId,
                "id" => $id,
            ])->save($credit);
            Db::name("note_credit_detail")->insert([
                "credit_id" => $id,
                "user_id"=>$userId,
                "type" => $type,
                "amount" => $amount,
                "create_time" => date("Y-m-d H:i:s"),
            ]);
            Db::commit();
            return WSTReturn("OK", 1);
        } catch (\Exception $e) {
            Db::rollback();
            errLog($e);
            return WSTReturn('操作失败', -1);
        }
    }
}