品优购项⽬学习总结
品优购项⽬总结
之前在学习java的时候⾃⼰做过⼀个商城项⽬,采⽤的是SSH框架做的,当时也是为了学习SSH框架,属于那种OA系统,很单⼀。后来看资料发现了传智播客的品优购项⽬,到了资料学习。从开始到结束,差不多⽤了⼀个⽉的时间,期间没有⽤提供的虚拟机,⾃⼰在阿⾥云上部署了⼀个服务器,也算把所有内容⾃⼰尝试了⼀下,包括安装FastDFS这些。
做的过程中遇到了很多的问题。开这个帖⼦的⽬的呢,⼀个是做⼀下学习笔记,⼀个是我在做的过程问题的⼀些汇总。
⽂章⽬录
⼀、⼯程搭建问题
⼯程搭建的时候我使⽤的⼯具的IDEA来操作的,在建⽴的过程当中,也会区分jar包与war包的区别,这个需要在建⽴的时候⾃⼰选择⼀下。
使⽤IDEA搭建好⼯程以后需要⼿动去建⽴⼀些⽂件,在main⽬录下⾯创建resources与java,⼀定注意要写对,我当时建⽴的时候写成了resource,就少了⼀个S,spring的配置⽂件⼀个也读取不到,访问Controller⼀直是404,错误了好久。然后打开Project Structure,给这个⽬录作为Resources也Sources。
这⾥注意⼀个问题,可能你在建⽴web⼯程的时候速度特别慢,这⾥可以修改⼀下本地仓库,引⽤⼀下阿⾥巴巴的⼀个仓库,在l⽂件中加⼊⼀句话。
<mirror>
js获取json的key和value<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>maven.aliyun/nexus/content/groups/public/</url>
</mirror>
<mirror>
<!--This is used to direct the public snapshots repo in the
profile below over to a different nexus group -->
<id>nexus-public-snapshots</id>
<mirrorOf>public-snapshots</mirrorOf>
<url>maven.aliyun/nexus/content/repositories/snapshots/</url>
</mirror>
</mirrors>
这样的话在新建web⼯程的时候速度就很快了。
⼆、商户修改密码阶段问题
这个阶段视频当中没有说过,我是后⾯再完善的时候看到了这个模块,主要这⾥涉及⼀个问题,就是在使⽤Security框架的时候,当时注册时候,密码被加密了,在修改密码的时候,会和原来的密码进⾏⽐较,因为和MD5加密不⼀样,每次的值都不同。查了资料才发现,提供了⼀个加密⽐较⽅法。
BCryptPasswordEncoder passwordEncoder =new BCryptPasswordEncoder();
boolean matches = passwordEncoder.matches(oldpass, Password());
这样就能可以⽐较两次的密码值。
三、AngularJS跨域提交的过程中⽂乱码问题
在做跨域访问的时候,传对象、数字都是正常的,就是传输中⽂的时候会导致乱码的问题。⼀直也没到问题。编译器编码也改了,但还是有问题,传输之前打印⼀个alert,正常。到了控制层打印就出现了乱码。
在传输的过程中,涉及到传输中⽂的话,我都会以对象的形式传,有问题的朋友可以尝试⼀下。
$scope.maps={};
$scope.findOne=function(ids){
$scope.maps.sellerId=ids;
sellerService.findOne($scope.maps).success(
function(response){
$ity= response;
}
);
}
四、Solr搜索服务问题
1. 在第⼗天、第⼗⼀天的内容⾥⾯都是在做Solr的搜索,当时在做的过程中,测试的时候发现了⼀个⼩bug,就是我点击最后⼀页,⽐
如是19页,当我在搜索⼀个内容的时候,没有19页就会出现什么内容也没有。(后⾯的时候⽼师有讲这个过程)可以在搜索的时候每次将页⾯拉回去。
$scope.searchMap.pageNo=1;
这句话只要是涉及到更改搜索内容的时候都需要放上,不然都会出现没有数据的情况。
2. 第⼆个⼩问题就是在更新solr库的时候,感觉需求分析稍微有点问题,个⼈感觉,商品上传以后运营商会进⾏审核,但是在审核的过
程当中由于 没有修改后端代码,运⽤商更新的只是tb_goods表当中的audit_status字段,但是在导⼊solr库的时候,导⼊的
是tb_item这个表⾥⾯的信息,⽽且看的也是这个表中status字段,所以在存储的过程中,永远不会添加到solr库。
然后我⾃⼰修改了⼀下需求,也就是在商户点击商家商品的时候,导⼊solr库,将内容放⼊消息中间件当中,获取。需要修改Shop-web下⾯的GoodsController。
@RequestMapping("/updateStatue")
public void updateStatue(final Long id, String status){
goodsService.UpdateMarkStatus(id,status);
//更新Solr
if(status.equals("1")){
List<TbItem> item = goodsService.findItemListByGoodsIdListAndStatus(id, status);
//  //导⼊solr
//  itemSearchService.importList(item);
final String jsonString = JSONString(item);
//发消息传输对象必须是实现了序列化接⼝
jmsTemplate.send(queueSolrDestination,new MessageCreator(){
@Override
public Message createMessage(Session session)throws JMSException {
ateTextMessage(jsonString);
}
});
System.out.println("消息发送完毕------");
//创建页⾯
//  ItemHtml(id);
jmsTemplate.send(topicGoodsDestination,new MessageCreator(){
@Override
public Message createMessage(Session session)throws JMSException {
ateTextMessage(id+"");
}
});
}else{
//下架以后再创建
//  ItemHtml(id);
jmsTemplate.send(topicGoodsDestination,new MessageCreator(){
@Override
public Message createMessage(Session session)throws JMSException {
ateTextMessage(id+"");
}
});
}
代码写的不是很好…凑活看看
五、Redis缓存问题
在做缓存的时候,当时需要把品牌列表与规格列表全部放⼊Redis当中,当时⽼师在写的时候,直接改成了⼀个死的,也就是每次项⽬运⾏的时候,在点击的过程中,都会有⼀个很长时间的导⼊过程,造成超时,就算把时间改成很长,但是也得过很久才会显⽰,这样的体验很差。
个⼈的解决办法:导⼊⼀次以后记得将之前的代码注释⼀下,之后在增加修改删除的时候,只执⾏⼀次。在
TypeTemplateServiceImpl⽂件中,重新写了⼀个⽅法,每次增删改查的时候执⾏这个⽅法即可。
private void saveToRedisOne(TbTypeTemplate typeTemplate){
List brandList = JSON.BrandIds(), Map.class);
List<Map> specList =Id());
redisTemplate.boundHashOps("brandList").Id(), brandList);
redisTemplate.boundHashOps("specList").Id(), specList);
System.out.println("品牌..规格...列表放⼊缓存");
}
⽔平有限…各位如果有好的⽅法可以⼀起交流⼀下。
六、⽀付
视频⾥⾯使⽤的是扫码付款⽅式,但是没有签名所以很多时候做到这⼀步基本就放弃了,由于没
有营业执照什么的,⽀付⾃⼰⼜没办法申请,这⾥别着急,可以使⽤⽀付宝的,⽀付宝的可以个⼈免费申请⼀个,然后使⽤沙盒测试就ok。
1. ⾸先去 开发者中⼼注册这些⾃⼰就可以完成。之后进⼊开发中⼼ ----> ⽹页移动应⽤ 。
2. 然后选择⼀下⽀付接⼊,⾃⼰接⼊⼀下。这个地⽅其实可以随便写⼀下,因为app上线的话这个就很重要,我们的⽬的是学习,所以
这个地⽅⾃⼰有兴趣看看,加密那块的设置。然后就是打开沙箱测试。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。