| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | <?php/** * Created by PhpStorm. * User: zhengmingwei * Date: 2019-07-14 * Time: 22:45 */namespace addons\unishop\model;use addons\unishop\model\Delivery as DeliveryModel;use think\Model;class DeliveryRule extends Model{    // 表名    protected $name = 'unishop_delivery_rule';    // 自动写入时间戳字段    protected $autoWriteTimestamp = 'int';    // 定义时间戳字段名    protected $createTime = 'createtime';    protected $updateTime = 'updatetime';    /**     * 获取地区的运费配送列表     * @param $cityId     * @return array [list:运费模板, status:1=有,0=没]     * @throws \think\db\exception\DataNotFoundException     * @throws \think\db\exception\ModelNotFoundException     * @throws \think\exception\DbException     */    public function getDelivetyByArea($cityId)    {        $prefix = \think\Config::get('database.prefix');        $data = $this->alias('DR')            ->join($prefix.DeliveryModel::TABLE_NAME . ' D', 'DR.delivery_id = D.id')            //->where("D.switch = " . DeliveryModel::SWITCH_YES . " AND find_in_set($cityId,DR.area)")            ->where("D.switch = " . DeliveryModel::SWITCH_YES)            ->field('D.id,D.name,D.type,D.min,DR.first,DR.first_fee,DR.additional,DR.additional_fee,DR.area')            ->order(['min' => SORT_ASC])            ->cache(10)            ->select();        if ($data) {            $data = collection($data)->toArray();            foreach ($data as &$delivery) {                if (!in_array($cityId, explode(',', $delivery['area']))) {                    $delivery['name'] = $delivery['name']. '(收货地址不在配送范围)';                }                unset($delivery['area']);            }        }        $status = $data ? 1 : 0;        $data = $data ? $data : [['name'=>'收货地址不在配送范围']];        return [            'list' => $data,            'status' => $status        ];    }    /**     * 是否在配送范围内     * @param int $cityId 城市id     * @param int $deliveryId 配送方式id     * @return int|string     * @throws \think\Exception     */    public function cityInScopeOfDelivery($cityId, $deliveryId) {        $prefix = \think\Config::get('database.prefix');        return $this->alias('DR')            ->join($prefix.DeliveryModel::TABLE_NAME . ' D', 'DR.delivery_id = D.id')            ->where("D.id = $deliveryId AND find_in_set($cityId,DR.area) AND D.switch = " . DeliveryModel::SWITCH_YES)            ->field('D.id,D.name,D.type,D.min,DR.first,DR.first_fee,DR.additional,DR.additional_fee')            ->find();    }}
 |