Fecmall

第 2 位会员

会员
个人信息
  • 加入于 2017-05-31 17:38:45
  • 城市 Qingdao
  • GitHub https://github.com/fecshop
  • 最后登录时间 8天前
  • 签名 净化自己,潜心编码
个人简介
Terry,Fecmall开源产品作者,12年电商经验一线程序员开发者,擅长规划产品,架构设计。
个人成就
  • 发表文章次数 744
  • 发布回复次数 5760
  • 个人主页浏览次数 683
为什么facshop系统,安装的时候需要安装三个数据库?6年前

mongodb的并发高,易于横向扩展,高可用复制集也很容易搭建,而且支持多维数据存储,缺点是不支持多表事务

因此对于不需要多表事务的数据,存储到mongodb中,譬如:产品,分类,cms page等,mongodb的高并发数比mysql优异很多

但是对于需要多表事务的存储到mysql中,譬如cart order 产品库存表, coupon等,都在mysql

在实际操作中,有一些数据理论上要求100%,但是实际有点差异也不会影响很大,譬如cart表,在生成订单后需要清空购物车,这是一个事务多表操作,但是在实际情况中,即使没有清空购物车也不会带来致命的影响, 因此cart也可以存储到redis中,譬如fecshop的redis cart扩展:https://github.com/fecshop/yii2_fecshop_redis_cart

对于各个数据库对应的表,一楼已经回复你地址,参看即可

多种数据库,肯定对新手第一次的学习增强难度,但是fecshop的定位就是要做一个实战性比较强的电商框架, 而且fecshop的架构,不是依赖于某一种存储方式的,通过services层的引入,你可以方便的重构底层,同一个功能,可以提供多种实现,譬如:https://github.com/fecshop/yii2_fecshop/tree/master/services/cms/staticblock 就有mysql和mongodb两种实现,可以通过配置切换选择哪种存储方式,当然,底层存储不局限于model,也可以是远程的api。

易于扩展,易于重构,尤其是易于重构底层,是fecshop很具有特色的地方,因此发挥各个数据库的优势,让系统更强劲。

为什么facshop系统,安装的时候需要安装三个数据库?6年前

参看:http://www.fecshop.com/topic/400

里面有回复:

为什么要引入mongodb?对于产品模块,是树形结构,因此在mysql中需要很多的表存储,然后在查询的时候,通过join联合查询得出来数据,作为一个通用商城,用户需要有可以自己在不修改数据库表结构(譬如mysql的表结构)的前提下给产品添加属性,因此,需要通过EAV的引入满足(magento就是引入EAV模型来解决的),这样就会有大量的join,magento的一个分类查询,需要join十几张表,在产品数据几万+的情况下,mysql join操作非常吃内存,并发高的时候性能非常的地下,如果,我想通过单表存储,又能满足我的复杂的查询,又能方便的添加产品属性(不需要修改表结构),又能快速查询,产品数据几万也不会 影响网站性能等等,引入mongodb数据库可以很好的解决这个问题。

关于为什么要引入mongodb,更详细的回答,参看:http://www.fecshop.com/topic/97

1.2、为什么要引入redis? redis作为内存型数据库,对于存储session和cache,读写非常的快速,另外,如果拆成分布式,php多台主机,需要共享缓存和session,引入redis能更好的解决这些问题

商品的收藏与反收藏6年前

恩,也可以,点击一次,收藏,在点击一次取消收藏

fecshop google 登陆原理6年前

不需要参考google的思路做,按照微信的登陆方式做就好

仔细看去微信的文档步骤

fecshop google 登陆原理6年前

@xuhuaiqu #1楼 代码位置都告诉你了,自己研究

appserver 三方登录流程请教6年前

开发微信登陆,遵循他们的方式,和google登陆或许有差异,别那么死板

关于API调用中的token安全的建议6年前

devide token : https://www.jianshu.com/p/db9b04335d8b

你说的,应该是基于JWT的token吧?直接通过用户信息和密钥生成的token,如果不加上设备id和appid,那么用户在ios和安卓上面登陆,生成的token都是一样的,如果token泄露,那么任何人都可以使用

而JWT的token生成加入devide_id 和 app_id 后,服务端接收参数后,可以通过秘钥将token解密,然后可以查看token解密的devide_id 和 app_id 和 传递的devide_id 和 app_id,是否一致,不一致则拒绝访问

使用JWT的好处在于,不需要查询数据库,就可以验证用户的合法性,对于分布式系统非常友好

但是,fecshop的appserver端的token不是使用的JWT,而是生成的,因此,用户每次访问,都需要在redis查询token的合法性,和session类似的原理,因此,不存在你说的问题,不传递devide_id 和 app id,并没有安全问题。

appserver 三方登录流程请教6年前

找时间详细看一下那个部分的代码在回复你

请教下model里的error怎么翻译6年前

仔细看文档:http://www.fecshop.com/doc/fecshop-guide/instructions/cn-1.0/guide-fecshop_mutil_lang.html2.配置各个入口的i18n组件(yii2的i18n组件的配置)部分,解决如下:

打开@app/config/main.php(@app是各个入口的统称,可以以@appfront为例子)

找到下面的配置

	'i18n' => [
            'translations' => [
                'appfront' => [
                    'basePaths' => [
                        '@appfront/languages',
                    ],
                    // base language code
                    'sourceLanguage' => 'zh_CN',
                    /**
                     * @var bool whether to force message translation when the source and target languages are the same.
                     * Defaults to false, meaning translation is only performed when source and target languages are different.
                     * see: @yii/i18n/MessageSource.php  @property $forceTranslation
                     */
                    'forceTranslation' => true,
                ],
            ],
        ],

设置 'sourceLanguage' => 'zh_CN','forceTranslation' => true,

你这种方式通过上面的方式可以这样修改,基础语言和当前语言相同的时候,通过设置 'forceTranslation' => true,强制翻译。

关于API调用中的token安全的建议6年前

你说的是appserver入口吧? 最后的部分没有看明白

这样可以排除存token的表数据泄露,或者算法泄露,导致的安全隐患。

详细解释一下,加上肯定是安全性增强,为什么存在安全性问题?

token和session的原理类似,php的session并没有使用客户端的device_id作为参数。

如何设置管理后台列表中的字段值的长度6年前

可以试一下添加label,找时间我试一下。

请教下model里的error怎么翻译6年前

更多关于fecshop多语言翻译的文档:Fecshop 多语言翻译

请教下model里的error怎么翻译6年前

中文下,默认是有翻译的!!

在:https://github.com/fecshop/yii2_fecshop/blob/master/services/helper/Errors.php

可以看到 helper error services 的error的添加都会经过翻译函数

Yii::$service->page->translate->__($s);

因此,将这个错误信息在翻译文件中添加即可,打开 @fecshop/app/appfront/languages/zh_CN/appfront.php文件可以看到

 'this email is exist!'          => '该邮箱地址已经被注册',

这个翻译文件,如果你想要进行修改,但你不能在这里改,你可以在本地路径中覆盖配置

'this email is exist!'          => '该邮箱地址已经被注册3333',

注册账户的时候会发现被修改了

请问后台可以更改语言吗6年前

目前后台不支持多语言,下一步准备开发这个

支付宝和paypal 沙盒支付测试账户6年前

@wubuyun #28楼 很牛的一个支付平台,对接200左右种支付方式,微信支付宝都在内被整合,ebay开始启用paypal,使用adyen

百度搜一下就知道:adyen

我了解的一般

支付宝和paypal 沙盒支付测试账户6年前

@wubuyun #26楼 你们哪里用adyen的多不?

Your Site Analytics