简单实现电商项目功能

电商项目

1.添加依赖

//glide依赖
implementation(“com.github.bumptech.glide:glide:4.10.0”) {
exclude group: “com.android.support”
}
//glide注解解析器
annotationProcessor ‘com.github.bumptech.glide:compiler:4.10.0’
//recyclerview依赖
implementation ‘androidx.recyclerview:recyclerview:1.0.0’
//volley依赖
implementation ‘com.android.volley:volley:1.1.1’
json依赖
implementation ‘com.google.code.gson:gson:2.8.5’

2.添加权限 注app

在这里插入图片描述

3.分包明确

在这里插入图片描述
1.适配器 2. app 3 .J=基类4.契约类 5.M层(entity解析)6.全局捕获异常7.P层
8.工具类 9.V层(activity层,fragment层)
10.流失布局

1.app

app配置全局捕获
具体如下
在这里插入图片描述

2.全局异常

在这里插入图片描述

3.基类

在这里插入图片描述
Model层(接口) 数据不一样 不用写
在这里插入图片描述
View层(接口) 数据写显示也隐藏
在这里插入图片描述
Presenter(抽象) 要持有M层和V层的引用
在这里插入图片描述
BaseActivity(抽象) 封装泛型和解决内存泄漏
在这里插入图片描述
在这里插入图片描述
BaseFragment(抽象) 封装泛型和解决内存泄漏
在这里插入图片描述
在这里插入图片描述

4.契约类

契约类(接口)
M层要继承基类M层 这样自定义Model就不用继承基类M层 这里请求的两个数据
一个是流式布局自定义显示手机
一个是请求商品
ModelCallBack 成功失败 都是超类
data名字自取
View层和ModelCallBack请求一样
Presenter请求的是路径
在这里插入图片描述

5.util工具类

Volley获取上下文
二次锁
在这里插入图片描述
自定义定义接口
在这里插入图片描述
get请求
在这里插入图片描述
post请求
在这里插入图片描述

6.M层(包含解析层entity)

数据根据接口请求 百度有json格式化
2个解析的数据不一样 需要解析两个
解析手机
这里是Get请求
在这里插入图片描述
解析商品
这里是Get请求
在这里插入图片描述

7.P层

需要继承P层的基类 引用普通的M层和契约类的V层 接口一个契约类的P层
getview是在P层的基类中获取View取的方法名
在这里插入图片描述
在这里插入图片描述

8.主页

这里是Viewpager和Tablayout
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.主页中的Fragment

分布局 动态传值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
主页在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10.流式布局

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10-1 设置气泡

在这里插入图片描述

11.适配器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12.点击首页跳到界面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

shop >前言:基于ssm分布式开发实现电商项目(聚合工程) 注:本项目为开源项目,不能用于商业应用,仅供学习。 ### 使用工具: maven(构建项目),svn(版本控制工具),myeclipse(集成开发环境),nginx(反向代理), FastDFS (图片服务器),tomcat(web服务器),zookeeper(集群管理),mysql(数据库) Junit(测试) ### 技术栈: spring,springmvc,mybatis(框架) solr(搜索服务),redis(缓存),easyUI(后台系统页面) ### 数据库设计 tb_user用户表(id,username,password,phone,email,created,updated) tb_item商品表(id,title,sell_point,price,num,barcode,image,cid,status,created,updated) tb_cat商品分类表(id,parent_id,name,status,sort_order,is_parent,created,updated) tb_item_desc商品描述表(item_id,item_desc,created,updated) tb_item_param商品规格参数表(id,item_cat_id,param_data,created,updated) tb_item_param商品规格参数模板表(id,item_id,param_data,created,updated) tb_order订单表(payment,payment_type,post_fee,status,create_time,update_time,payment_time,consign_time,end_time,close_time,shipping_name,shipping_code,user_id,buyer_message,buyer_nick,buyer_rate) tb_order订单商品表(id,item_id,order_id,num,title,price,total_fee,pic_path) tb_order_shipping订单物流表(order_id,receiver_name,receiver_phone,receiver_mobile,receiver_state,receiver_city,receiver_district,receiver_address,receiver_zip,created,updated) tb_content_category商品目录分类表(id,parent_id,name,status,sort_order,is_parent,created,updated) tb_content商品目录表(id,category_id,title,sub_title,title_desc,url,pic,pic2,content,created,updated) ## 分布式系统 ### 商品后台管理系统 ### shop-manager(管理后台) 商品的添加功能: 1.商品类目选择-easyui异步tree控件的使用 2.图片上传(fastdfs+nginx) 3.富文本编辑器使用KindEditor 4.分页使用PageHelper插件,插件是基于mybatis的拦截器接口实现的 商品的展示功能: 1.分页插件的使用PageHelper。 2.easyUIDataGrid的使用 ### 前台系统 ### shop-rest(发布服务) ### shop-search(搜索服务) * 使用solr实现搜索,内容列表使用redis缓存,使用zookeeper管理集群 ### shop-sso (单点登录系统) SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中, 用户只需要登录一次就可以访问所有相互信任的应用系统。它包括 可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。 它是目前比较流行的企业业务整合的解决方案之一。 用户登录: 1、接收用户名和密码 2、校验用户名密码 3、生成token,可以使用UUID 4、把用户信息写入redis,key就是token 5、把token写入cookie。 6、返回登录成功需要把token返回给客户端。 Session共享的问题: 1、tomcat做集群配置session复制。如果集群中节点很多,会形成网络风暴。推荐节点数量不要超过5个。 2、分布式架构。拆
好的,以下是一个简单的使用 Spring Boot 和 Kafka 实现订单延时功能的示例代码: 首先,我们需要在 Maven 或 Gradle 中添加 Kafka 客户端的依赖: ```xml <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>2.5.7.RELEASE</version> </dependency> ``` 接下来,我们需要在 Spring Boot 应用程序中配置 Kafka 生产者和消费者: ```java @Configuration @EnableKafka public class KafkaConfiguration { @Value("${spring.kafka.bootstrap-servers}") private String bootstrapServers; @Bean public ProducerFactory<String, String> producerFactory() { Map<String, Object> configProps = new HashMap<>(); configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class); configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class); return new DefaultKafkaProducerFactory<>(configProps); } @Bean public KafkaTemplate<String, String> kafkaTemplate() { return new KafkaTemplate<>(producerFactory()); } @Bean public ConsumerFactory<String, String> consumerFactory() { Map<String, Object> configProps = new HashMap<>(); configProps.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); configProps.put(ConsumerConfig.GROUP_ID_CONFIG, "order-group"); configProps.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); configProps.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); return new DefaultKafkaConsumerFactory<>(configProps); } @Bean public ConcurrentKafkaListenerContainerFactory<String, String> kafkaListenerContainerFactory() { ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<>(); factory.setConsumerFactory(consumerFactory()); return factory; } } ``` 在上面的代码中,我们配置了 Kafka 生产者和消费者的工厂和模板,并设置了 Kafka 服务器的地址和序列化器。 接下来,我们需要创建一个 Kafka 生产者来发送订单消息: ```java @Service public class OrderService { @Autowired private KafkaTemplate<String, String> kafkaTemplate; public void createOrder(Order order, int delay) { ObjectMapper mapper = new ObjectMapper(); try { String orderJson = mapper.writeValueAsString(order); kafkaTemplate.send("orders", order.getId(), orderJson) .get(delay, TimeUnit.SECONDS); } catch (JsonProcessingException | InterruptedException | ExecutionException | TimeoutException e) { e.printStackTrace(); } } } ``` 在上面的代码中,我们使用 ObjectMapper 将订单对象转换为 JSON 字符串,并使用 Kafka 模板将其发送到名为 "orders" 的主题上。我们还使用了 `get(delay, TimeUnit.SECONDS)` 方法来阻塞当前线程,在指定的延迟时间后才发送消息。 最后,我们需要创建一个 Kafka 消费者来接收订单消息并执行相应的操作: ```java @Component public class OrderConsumer { @KafkaListener(topics = "orders", groupId = "order-group") public void handleOrder(String orderJson) { ObjectMapper mapper = new ObjectMapper(); try { Order order = mapper.readValue(orderJson, Order.class); // 处理订单 } catch (JsonProcessingException e) { e.printStackTrace(); } } } ``` 在上面的代码中,我们使用 `@KafkaListener` 注解指定了要监听的主题和消费者组,并使用 ObjectMapper 将 JSON 字符串转换为订单对象。在实际应用中,我们可以根据订单的具体需求,执行相应的操作,例如保存订单到数据库、发送邮件通知等。 以上就是一个简单的使用 Spring Boot 和 Kafka 实现订单延时功能的示例代码。当我们需要延时执行某些操作时,可以将相关的消息发送到 Kafka 主题上,并在消费者中监听这些消息,按照相应的时间进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值