249 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			249 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						|||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								// | likeshop开源商城系统
							 | 
						|||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
							 | 
						|||
| 
								 | 
							
								// | gitee下载:https://gitee.com/likeshop_gitee
							 | 
						|||
| 
								 | 
							
								// | github下载:https://github.com/likeshop-github
							 | 
						|||
| 
								 | 
							
								// | 访问官网:https://www.likeshop.cn
							 | 
						|||
| 
								 | 
							
								// | 访问社区:https://home.likeshop.cn
							 | 
						|||
| 
								 | 
							
								// | 访问手册:http://doc.likeshop.cn
							 | 
						|||
| 
								 | 
							
								// | 微信公众号:likeshop技术社区
							 | 
						|||
| 
								 | 
							
								// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识
							 | 
						|||
| 
								 | 
							
								// |  likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识
							 | 
						|||
| 
								 | 
							
								// | 禁止对系统程序代码以任何目的,任何形式的再发布
							 | 
						|||
| 
								 | 
							
								// | likeshop团队版权所有并拥有最终解释权
							 | 
						|||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								// | author: likeshop.cn.team
							 | 
						|||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								namespace app\common\logic;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								use app\common\model\Freight;
							 | 
						|||
| 
								 | 
							
								use app\common\model\FreightConfig;
							 | 
						|||
| 
								 | 
							
								use think\facade\Db;
							 | 
						|||
| 
								 | 
							
								use think\Exception;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								class FreightLogic
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public static function lists($get)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $freight = new Freight();
							 | 
						|||
| 
								 | 
							
								        $where = [];
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        if (isset($get['name']) && $get['name'] != '') {
							 | 
						|||
| 
								 | 
							
								            $where[] = ['name', 'like', '%' . $get['name'] . '%'];
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        if (isset($get['charge_way']) && $get['charge_way'] != '') {
							 | 
						|||
| 
								 | 
							
								            $where[] = ['charge_way', '=', $get['charge_way']];
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        if (isset($get['shop_id'])){
							 | 
						|||
| 
								 | 
							
								            $where[] = ['shop_id','=',$get['shop_id']];
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $count = $freight->where($where)->count();
							 | 
						|||
| 
								 | 
							
								        $list = $freight
							 | 
						|||
| 
								 | 
							
								            ->where($where)
							 | 
						|||
| 
								 | 
							
								            ->page($get['page'], $get['limit'])
							 | 
						|||
| 
								 | 
							
								            ->append(['charge_way_text'])
							 | 
						|||
| 
								 | 
							
								            ->order('id desc')
							 | 
						|||
| 
								 | 
							
								            ->select();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        if (!$list) {
							 | 
						|||
| 
								 | 
							
								            return ['count' => '', 'lists' => []];
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        return ['count' => $count, 'lists' => $list];
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public static function add($post)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $freight = new Freight();
							 | 
						|||
| 
								 | 
							
								        $freight->name = $post['name'];
							 | 
						|||
| 
								 | 
							
								        $freight->charge_way = $post['charge_way'];
							 | 
						|||
| 
								 | 
							
								        $freight->remark = $post['remark'];
							 | 
						|||
| 
								 | 
							
								        $freight->shop_id = $post['shop_id'];
							 | 
						|||
| 
								 | 
							
								        $freight->allowField(['name','charge_way','remark','shop_id'])->save();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $freight_config = new FreightConfig();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $config_data = [];
							 | 
						|||
| 
								 | 
							
								        foreach ($post as &$item) {
							 | 
						|||
| 
								 | 
							
								            if (is_array($item)) {
							 | 
						|||
| 
								 | 
							
								                $item = array_values($item);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $post = form_to_linear($post);
							 | 
						|||
| 
								 | 
							
								        foreach ($post as $v) {
							 | 
						|||
| 
								 | 
							
								            $v['freight_id'] = $freight->id;
							 | 
						|||
| 
								 | 
							
								            $v['create_time'] = time();
							 | 
						|||
| 
								 | 
							
								            $config_data[] = $v;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $freight_config->allowField(['region','first_unit','first_money','continue_unit','continue_money','freight_id','create_time'])->insertAll($config_data);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public static function edit($post)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        Db::startTrans();
							 | 
						|||
| 
								 | 
							
								        try {
							 | 
						|||
| 
								 | 
							
								            $freight = Freight::where(['id' => $post['id']])
							 | 
						|||
| 
								 | 
							
								                ->with('configs')
							 | 
						|||
| 
								 | 
							
								                ->find();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            //删除之前保存的配置,再增加
							 | 
						|||
| 
								 | 
							
								            FreightConfig::where(['freight_id' => $freight['id']])->delete();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            $freight->where('id',$freight['id'])->save([
							 | 
						|||
| 
								 | 
							
								                'name' => $post['name'],
							 | 
						|||
| 
								 | 
							
								                'charge_way' => $post['charge_way'],
							 | 
						|||
| 
								 | 
							
								                'remark' => $post['remark'],
							 | 
						|||
| 
								 | 
							
								            ]);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            $config_data = [];
							 | 
						|||
| 
								 | 
							
								            foreach ($post as &$item) {
							 | 
						|||
| 
								 | 
							
								                if (is_array($item)) {
							 | 
						|||
| 
								 | 
							
								                    $item = array_values($item);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            $post = form_to_linear($post);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            foreach ($post as $v) {
							 | 
						|||
| 
								 | 
							
								                $v['freight_id'] = $freight->id;
							 | 
						|||
| 
								 | 
							
								                $config_data[] = $v;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            $freight_config = new FreightConfig();
							 | 
						|||
| 
								 | 
							
								            $freight_config->allowField(['region','first_unit','first_money','continue_unit','continue_money','freight_id','create_time'])->insertAll($config_data);
							 | 
						|||
| 
								 | 
							
								            Db::commit();
							 | 
						|||
| 
								 | 
							
								        } catch (Exception $e) {
							 | 
						|||
| 
								 | 
							
								            Db::rollback();
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public static function del($post)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        Db::startTrans();
							 | 
						|||
| 
								 | 
							
								        try {
							 | 
						|||
| 
								 | 
							
								            Freight::where(['id' => $post['id']])->delete();
							 | 
						|||
| 
								 | 
							
								            FreightConfig::where(['freight_id' => $post['id']])->delete();
							 | 
						|||
| 
								 | 
							
								            Db::commit();
							 | 
						|||
| 
								 | 
							
								        } catch (Exception $e) {
							 | 
						|||
| 
								 | 
							
								            Db::rollback();
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public static function detail($id)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $freight = Freight::where(['id' => $id])
							 | 
						|||
| 
								 | 
							
								            ->with('configs')
							 | 
						|||
| 
								 | 
							
								            ->append(['charge_way_text'])
							 | 
						|||
| 
								 | 
							
								            ->find()->toArray();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $regions = Db::name('dev_region')->column('name', 'id');
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        foreach ($freight['configs'] as &$item) {
							 | 
						|||
| 
								 | 
							
								            $item['region_name'] = '';
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            if ($item['region'] == 'all'){
							 | 
						|||
| 
								 | 
							
								                $item['region_name'] = '全国';
							 | 
						|||
| 
								 | 
							
								                continue;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            $region = explode(',', $item['region']);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            foreach ($region as $v) {
							 | 
						|||
| 
								 | 
							
								                if (isset($regions[$v])) {
							 | 
						|||
| 
								 | 
							
								                    $item['region_name'] .= $regions[$v] . ',';
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            $item['region_name'] = rtrim($item['region_name'], ',');
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        return $freight;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public static function areaTree()
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $lists = Db::name('dev_region')
							 | 
						|||
| 
								 | 
							
								            ->field('id,parent_id,level,name as title')
							 | 
						|||
| 
								 | 
							
								            ->order('parent_id', 'desc')
							 | 
						|||
| 
								 | 
							
								            ->select();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $result = self::areaSort($lists);
							 | 
						|||
| 
								 | 
							
								        return $result;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public static function areaSort(&$lists)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $tree = [];
							 | 
						|||
| 
								 | 
							
								        foreach ($lists as $k1 => $province) {
							 | 
						|||
| 
								 | 
							
								            if ($province['level'] == 1) {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                //树形结构参数
							 | 
						|||
| 
								 | 
							
								                $province['checkArr']['type'] = 0;
							 | 
						|||
| 
								 | 
							
								                $province['checkArr']['checked'] = 0;
							 | 
						|||
| 
								 | 
							
								                $province['last'] = false;
							 | 
						|||
| 
								 | 
							
								                $province['parentId'] = -1;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                //钓鱼岛这个没有下级
							 | 
						|||
| 
								 | 
							
								                if ($province['id'] == 900000) {
							 | 
						|||
| 
								 | 
							
								                    $province['children'] = [];
							 | 
						|||
| 
								 | 
							
								                    $province['last'] = true;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                $tree[$k1] = $province;
							 | 
						|||
| 
								 | 
							
								                unset($lists[$k1]);
							 | 
						|||
| 
								 | 
							
								                foreach ($lists as $k2 => $city) {
							 | 
						|||
| 
								 | 
							
								                    $city['parentId'] = $city['parent_id'];
							 | 
						|||
| 
								 | 
							
								                    if ($city['parentId'] == $province['id']) {
							 | 
						|||
| 
								 | 
							
								                        foreach ($lists as $k3 => $district) {
							 | 
						|||
| 
								 | 
							
								                            $district['parentId'] = $district['parent_id'];
							 | 
						|||
| 
								 | 
							
								                            if ($district['parentId'] == $city['id']) {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                                //树形结构参数
							 | 
						|||
| 
								 | 
							
								                                $district['checkArr']['type'] = 0;
							 | 
						|||
| 
								 | 
							
								                                $district['checkArr']['checked'] = 0;
							 | 
						|||
| 
								 | 
							
								                                $district['last'] = true;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                                $city['children'][] = $district;
							 | 
						|||
| 
								 | 
							
								                                unset($lists[$k3]);
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                        //树形结构参数
							 | 
						|||
| 
								 | 
							
								                        $city['checkArr']['type'] = 0;
							 | 
						|||
| 
								 | 
							
								                        $city['checkArr']['checked'] = 0;
							 | 
						|||
| 
								 | 
							
								                        $city['last'] = false;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                        $tree[$k1]['children'][] = $city;
							 | 
						|||
| 
								 | 
							
								                        unset($lists[$k2]);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        return array_values($tree);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * note 获取全部运费模板
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public static function getFreightList()
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        return  Db::name('freight')->field('id,name')->select();
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 |