1    商家登录权限控制
加密的方式有
1.SpringSecurity
2.MD5__一种自称为不可逆的运算,虽然不可逆运算,但是令人可笑的是,有一个CMD5网站能够破解密码,并且还原出来原密码。第一步:自定义认证类

package com.pyg.shop.service;

public class UserDetailsServiceImpl implements UserDetailsService {

@Reference
private SellerService sellerService;

@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
// 根据用户名查询用户Seller
TbSeller tbSeller = sellerService.findOne(username);
if(tbSeller==null){
return null;
}
if(!tbSeller.getStatus().equals("1")){
return null;
}
List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
authorities.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
// ROLE_ADMIN
return new User(username,tbSeller.getPassword(),authorities);
}
}

第二步:修改配置文件

Springmvc.xml

 

6.商品添加-富文本编辑/fastDFS_富文本编辑器

Spring-security.Xml

6.商品添加-富文本编辑/fastDFS_数据_02


 

1.1    父子容器的关系

6.商品添加-富文本编辑/fastDFS_二级_03

2    电商的两个概念SPU SKU
SPU=Standard Product Unit(标准产品单位)
SPU是商品信息聚合的最小单位,是一组可重复用,易检索的标准化信息技术的集合
Stock Keeping Unit(库存量单位)
3    商品添加
3.1    创建一个组合类 Goods

public class Goods implements Serializable {
private TbGoods tbGoods;
private TbGoodsDesc tbGoodsDesc;
private List<TbItem> itemList;

3.2    显示三级分类数据
第一步:显示一级分类数据
//查询所有的一级分类数据

$scope.findCategory1List=function () {
itemCatService.findByParentId(0).success(function (response) {
$scope.category1List=response;
})
}

第二步:动态显示二级分类数据
思路:如果有了一级分类数据才会有二级分类数据
// 监测一级分类数据的变化 相当于onChange事件
//查询某一个一级分类数据下的二级分类数据

$scope.$watch("entity.tbGoods.category1Id",function (newValue,oldValue) {
itemCatService.findByParentId(newValue).success(function (response) {
$scope.category2List=response;
})
})

第三步:同样的方式去加载三级分类数据
// 监测二级分类数据的变化 相当于onChange事件
//查询某一个二级分类数据下的三级分类数据

$scope.$watch("entity.tbGoods.category2Id",function (newValue,oldValue) {
itemCatService.findByParentId(newValue).success(function (response) {
$scope.category3List=response;
})
})

3.3    显示模板id
// 监测三级分类数据的变化 相当于onChange事件
//查询某一个三级分类数据 可以获取模板id

$scope.$watch("entity.tbGoods.category3Id",function (newValue,oldValue) {
itemCatService.findOne(newValue).success(function (response) {
// response:代表一个分类对象
$scope.entity.tbGoods.typeTemplateId = response.typeId;
})
})

3.4    显示品牌数据
// 监测模板id数据的变化 相当于onChange事件
//查询某一个模板数据 可以获取模板中的品牌、规格、扩展属性

$scope.$watch("entity.tbGoods.typeTemplateId",function (newValue,oldValue) {
typeTemplateService.findOne(newValue).success(function (response) {
// response:代表一个模板对象
$scope.brandList= JSON.parse( response.brandIds); //[{"id":32,"text":"希乐"},{"id":33,"text":"富光"}]
})
})

3.5    富文本编辑器的使用
富文本编辑器有很多种:
KindEditor http://kindeditor.net/
UEditor http://ueditor.baidu.com/website/
CKEditor http://ckeditor.com/

第一步:页面中添加相关的css和js
   <!-- 富文本编辑器 -->

<link rel="stylesheet" href="../plugins/kindeditor/themes/default/default.css" />
<script charset="utf-8" src="../plugins/kindeditor/kindeditor-min.js"></script>
<script charset="utf-8" src="../plugins/kindeditor/lang/zh_CN.js"></script>

第二步:添加一个name

 

6.商品添加-富文本编辑/fastDFS_数据_04


第三步:使用脚本把textArea渲染成一个富文本编辑器

var editor;
KindEditor.ready(function(K) {
editor = K.create('textarea[name="content"]', {
allowFileManager : true
});
});

第四步:获取富文本编辑器中的内容

富文本编辑器对象.html();

清空富文本编辑器中的内容:富文本编辑器对象.html(“”);

注意:组合类在js中需要初始化
 $scope.entity={tbGoods:{},tbGoodsDesc:{}};

3.6    fastDFS的使用

 

6.商品添加-富文本编辑/fastDFS_数据_05


图片上传:

1、    图片数据特别多

2、    图片数据放到磁盘上,表中存储是图片的路径

3.6.1    安装fastDFS注意

6.商品添加-富文本编辑/fastDFS_数据_06


1、    fastdfs服务器IP端使用192.168.25

2、    选择我已移动改虚拟机,以及我已复制该虚拟机  注意这两种的区别。

 

3.6.2    入门demo

添加的依赖:

<dependencies>
<dependency>
<groupId>org.csource.fastdfs</groupId>
<artifactId>fastdfs</artifactId>
<version>1.2</version>
</dependency>
</dependencies>

需要一个配置文件:

6.商品添加-富文本编辑/fastDFS_二级_07

步骤:
七步骤:
1、加载配置文件,配置文件中的内容就是 tracker 服务的地址。ClientGlobal加载
2、创建一个 TrackerClient 对象。直接 new 一个
3、使用 TrackerClient 对象获取连接,获得一个 TrackerServer 对象
4、创建一个 StorageServer 的引用,值为 null
5、创建一个 StorageClient 对象,需要两个参数 TrackerServer 对象、StorageServer 的引用
6、使用 StorageClient 对象上传图片
7、返回数组。包含组名和图片的路径