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();
- }
- }
|