OneSmile

第 1480 位会员

会员
个人信息
  • 加入于 2019-08-14 09:39:53
  • 最后登录时间 1年前
  • 签名 One Smile One Fate
个人成就
  • 发表文章次数 34
  • 发布回复次数 117
  • 个人主页浏览次数 54
分类页侧边过滤功能4年前

@Fecmall #5楼 如楼上,另外,这边要新开模版,我新开一个贴咨询下模版相关的问题

分类页侧边过滤功能4年前
 /**
     * @param $filter_attr | String 需要进行统计的字段名称
     * @propertuy $where | Array  搜索条件。这个需要些mongodb的搜索条件。
     * 得到的是个属性,以及对应的个数。
     * 这个功能是用于前端分类侧栏进行属性过滤。
     * @return
         [
            ['_id' => 'white', 'count' => 3],
            ['_id' => 'multicolor', 'count' => 6],
            ['_id' => 'black', 'count' => 13],
        ]
     */
    public function getFrontCategoryFilter($filter_attr, $where)
    {
        if (empty($where)) {
            return [];
        }
        if (!isset($where['status'])) {
            $where['status'] = $this->getEnableStatus();
        }

        if($filter_attr != 'color'){
            if (!$this->_productModel->hasAttribute($filter_attr)) {
            return [];
            }
        }

        // where条件处理
        if ($categoryId = $where['category']) {
            $productIds = $this->getProductIdsByCategoryId($categoryId);
            unset($where['category']);
            $arr = [];
            $whereArr = [
                'and',
                ['in', 'id', $productIds]
            ];
            foreach ($where as $k=>$v) {
                if($k == 'color'){
                    $whereArr[] = ['like','attr_group_info',$v];
                }else{
                    $whereArr[] = [$k =>$v];
                }

            }
            $where = $whereArr;
        }

        $product_attrs = $this->_productModel->find()
                    ->select('attr_group_info')
                    ->where($where)->asArray()
                    ->all();

        $filter_attr_array = [];

        foreach ($product_attrs as $key => $value) {
            $product_attr = unserialize($value['attr_group_info']);
            if(isset($product_attr['color'])){
                if(isset($filter_attr_array[$product_attr['color']])){
                    $filter_attr_array[$product_attr['color']] += 1;
                }else{
                    $filter_attr_array[$product_attr['color']] = 1;
                }   
            }
        }

        $filter_data = [];
        $filter_data_one = [];
        foreach ($filter_attr_array as $key => $value) {
            $filter_data_one['_id'] = $key;
            $filter_data_one['count'] = $value;
            $filter_data[] = $filter_data_one;
        }

        //echo "<pre>";
        //print_r($filter_attr_array);exit;

        // 总数    
        //$filter_data = $this->_productModel->find()
        //            ->select($filter_attr.' as _id ,   COUNT(*) as count')
        //            ->where($where)
        //            ->groupBy($filter_attr)
        //            ->all();
        
        return $filter_data;
    }

我改了核心services/product/ProductMysqldb.php里面这一块(1095行),在牺牲性能的情况下处理了这样的查询 ,保持了不加数据表不加字段,当然,目前只针对于COLOR 这一个字段做的,根据需求或者会增加其他字段,暂时先这样处理了,大佬看如何?

分类页侧边过滤功能4年前

@Fecmall #2楼 非常感谢大佬能看到这个问题。 现在手上有实际运营的商城,过程中遇到一些需求和痛点,一些可以直接解决,但是一些涉及到更改低层的一些东西(数据表等),直接是可以搞定的,但是感觉不是那么流畅,和您原本的开发思路对不上,需要个方向

分类页侧边过滤功能4年前

@Fecmall #2楼 是我描述错误了 问题是这样的 分类左侧筛选条件这里

默认mysql 下只有 price 但是实际商城运营过程中,可能需要color size 等自定义的属性分类 如果用mongodb ,运营维护成本就上去了,并不适合中小型企业

分类页侧边过滤功能4年前

我查了源代码,发现这块在mysql 的情况下并不好处理 如果用mongodb,就又丢弃了小而快并且简单的实际使用需求 考虑目前这样的处理方式可能说更适合大数据高并发的情况下 但是就目前情况而言,并没有这样的硬性要求, 正在考虑是彻底改掉目前这个,还是做一些简单修改满足当前所用

需要一个这样的功能,我应该从哪部分下手开发比较合适?4年前

@z1847961679 #2楼 并没有做成插件包 只是在源代码基础上做了修改 完全脱离了升级

需要一个这样的功能,我应该从哪部分下手开发比较合适?4年前

基于2.3.7版本做了二次开发 实现了目标需求

发现一个新BUG Unable to determine default database name from dsn.4年前

@Fecmall #6楼 好吧, 错误原因: 自己做了模板,但是模板做错了; 修复方法:改用官方模板就行了

发现一个新BUG Unable to determine default database name from dsn.4年前

@Fecmall #4楼 这个强调了啊,我自己改了模板造成访问数据库还是mongdb模式。现在不再用mongdb了,就出错了,删掉这个,用官方给的模板就行了

发现一个新BUG Unable to determine default database name from dsn.4年前

@Fecmall #2楼 嗯嗯,查到原因了,我自己改了部分模板,有个地方直接访问数据库,忘了数据库是Mysql了,还依旧用的mongdb方法,导致拿不到mongdb 数据库的表名

发现一个新BUG Unable to determine default database name from dsn.4年前

http://appfront.fc.com/checkout/onepage/index

Invalid Configuration – yii\base\InvalidConfigException Unable to determine default database name from dsn.

  1. in E:\wamp64\www\fc.com\vendor\yiisoft\yii2-mongodb\src\Connection.phpat line 206
  2. in E:\wamp64\www\fc.com\vendor\yiisoft\yii2-mongodb\src\Connection.php at line 268– yii\mongodb\Connection::getDefaultDatabaseName() 262263264265266267268269270271272273274 * @param bool $refresh whether to reestablish the database connection even, if it is found in the cache.

    • @return Database database instance. */ public function getDatabase($name = null, $refresh = false) { if ($name === null) {

       $name = $this->getDefaultDatabaseName();
      

      } if ($refresh || !array_key_exists($name, $this->_databases)) {

       $this->_databases[$name] = $this->selectDatabase($name);
      

      }

      return $this->_databases[$name];

  3. in E:\wamp64\www\fc.com\vendor\yiisoft\yii2-mongodb\src\Connection.php at line 305– yii\mongodb\Connection::getDatabase()
mysql cpu 占用率一直100%4年前

@Fecmall #5楼 行,下次遇到问题,我把解决步骤贴出来

mysql cpu 占用率一直100%4年前

这不是说了是后台有个搜索引擎问题, 直接执行 ./vendor/fancyecommerce/fecshop/shell/search/fullSearchSync.sh 这个脚本就行了

mysql cpu 占用率一直100%4年前

@Fecmall #1楼 好的,谢谢,这个我查到是因为搜索引擎的问题,更新数据完成后CPU使用率就下来了,可以跑脚本更新,更快

后台遇到BUG,左侧选择无法点开4年前

@Fecmall #6楼 然后就会出现最上面那个截图的问题,实际是没有权限

后台遇到BUG,左侧选择无法点开4年前

@Fecmall #6楼 这个解决权限问题,但是第一个问题没解决, 就是超级管理员登陆后拥有所有权限,但是一旦任意一个人登陆了非超级管理员账户,那么无论再登陆什么账户,都只有非超级管理员权限了

后台遇到BUG,左侧选择无法点开4年前

@Fecmall #3楼

同是权限问题,除了admin 账号之外,所有新添加的账户 没有批量添加权限

后台遇到BUG,左侧选择无法点开4年前

@Fecmall #3楼 我复现了这个问题,是个BUG,当我超级管理员账号登陆时间,是没问题的,但是当我用普通账号登陆,不分配给管理员权限的,只有部分权限的,那么剩下那一部分权限无法点击,这个正常,但是当我重新用管理员账户登陆,拿到的权限依旧是普通账号权限的,左侧部分按钮还是无法用。我这么说不知道你理解没有。我更新缓存,并没有解决

Your Site Analytics