<?php

namespace app\admin\logic\user_ship;


use app\common\model\user_ship\UserShip;
use app\common\logic\BaseLogic;
use app\common\model\user\User;
use app\common\model\user\UserAddress;
use think\facade\Db;


/**
 * 会员类型逻辑
 * Class UserShipLogic
 * @package app\admin\logic\user_ship
 */
class UserShipLogic extends BaseLogic
{


    /**
     * @notes 添加会员类型
     * @param array $params
     * @return bool
     * @author admin
     * @date 2024/06/29 14:18
     */
    public static function add(array $params): bool
    {
        Db::startTrans();
        try {
            UserShip::create([
                'title' => $params['title'],
                'limit' => $params['limit'],
                'sort' => $params['sort']
            ]);

            Db::commit();
            return true;
        } catch (\Exception $e) {
            Db::rollback();
            self::setError($e->getMessage());
            return false;
        }
    }


    /**
     * @notes 编辑会员类型
     * @param array $params
     * @return bool
     * @author admin
     * @date 2024/06/29 14:18
     */
    public static function edit(array $params): bool
    {
        Db::startTrans();
        try {
            UserShip::where('id', $params['id'])->update([
                'title' => $params['title'],
                'limit' => $params['limit'],
                'sort' => $params['sort']
            ]);

            Db::commit();
            return true;
        } catch (\Exception $e) {
            Db::rollback();
            self::setError($e->getMessage());
            return false;
        }
    }


    /**
     * @notes 删除会员类型
     * @param array $params
     * @return bool
     * @author admin
     * @date 2024/06/29 14:18
     */
    public static function delete(array $params): bool
    {
        return UserShip::destroy($params['id']);
    }


    /**
     * @notes 获取会员类型详情
     * @param $params
     * @return array
     * @author admin
     * @date 2024/06/29 14:18
     */
    public static function detail($params): array
    {
        return UserShip::findOrEmpty($params['id'])->toArray();
    }

    /**
     * 判断是否有村长或者对长
     * @param $params array 参数数组
     */
    public static function user_ship($params){
        $user_ship=$params['user_ship']??0;
        if($user_ship==2){
            if(!isset($params['village'])){
                self::setError('请设置村参数');
                return false;
            }
            $arr=User::where('user_ship',$user_ship)->column('id');
            if($arr){
                $find=UserAddress::where('uid','in',$arr)->where('village',$params['village'])->find();
                if($find){
                    if($params['uid']==$find['uid']){
                        return true;
                    }
                    self::setError('该区域已有村长请重新选择');
                    return false;
                }
            }
        }elseif($user_ship==3){
            if(!isset($params['brigade'])){
                self::setError('请设置队参数');
                return false;
            }
            $arr=User::where('user_ship',$user_ship)->column('id');
            if($arr){
                $find=UserAddress::where('uid','in',$arr)->where('village',$params['village'])->where('brigade',$params['brigade'])->find();
                if($find){
                    if($params['uid']==$find['uid']){
                        return true;
                    }
                    self::setError('该区域已有队长请重新选择');
                    return false;
                }
            }
        }
        return true;
    }

}