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
Spring-security.Xml
1.1 父子容器的关系
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
第三步:使用脚本把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的使用
图片上传:
1、 图片数据特别多
2、 图片数据放到磁盘上,表中存储是图片的路径
3.6.1 安装fastDFS注意
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>
需要一个配置文件:
步骤:
七步骤:
1、加载配置文件,配置文件中的内容就是 tracker 服务的地址。ClientGlobal加载
2、创建一个 TrackerClient 对象。直接 new 一个
3、使用 TrackerClient 对象获取连接,获得一个 TrackerServer 对象
4、创建一个 StorageServer 的引用,值为 null
5、创建一个 StorageClient 对象,需要两个参数 TrackerServer 对象、StorageServer 的引用
6、使用 StorageClient 对象上传图片
7、返回数组。包含组名和图片的路径