💖💖作者:计算机编程小咖 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目
@TOC
基于SSM二手物品交易网站系统介绍
基于SSM二手物品交易网站系统是一个面向现代大学生和社会群体的综合性在线交易平台,采用当前主流的Java开发技术栈进行构建,后端基于SpringBoot框架(整合Spring+SpringMVC+MyBatis)实现业务逻辑处理和数据持久化,前端采用Vue.js结合ElementUI组件库打造现代化用户界面,数据存储采用MySQL关系型数据库确保数据安全性和一致性,整体采用B/S架构模式便于用户通过浏览器随时随地访问使用。系统功能涵盖完整的电商交易流程,包括系统首页展示、用户注册登录管理、二手商品信息发布与浏览、商品分类筛选、新旧程度标识、在线充值功能、系统后台管理、用户投诉反馈处理、公告信息分类发布、轮播图广告管理、订单全流程管理以及个人中心信息维护和密码修改等核心模块。该系统不仅为用户提供了便捷的二手物品买卖服务,实现了资源的有效循环利用,同时通过规范的商品分类管理、完善的订单处理机制和友好的用户交互界面,为用户创造了安全可靠的交易环境,是一个集实用性、技术性和商业价值于一体的完整Web应用系统。
基于SSM二手物品交易网站系统演示视频
基于SSM二手物品交易网站系统演示图片
基于SSM二手物品交易网站系统代码展示
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
private SparkSession spark = SparkSession.builder().appName("SecondHandTradingSystem").master("local[*]").getOrCreate();
public ResponseEntity<Map<String, Object>> userLogin(String username, String password) {
Map<String, Object> result = new HashMap<>();
User user = userMapper.selectByUsername(username);
if (user == null) {
result.put("success", false);
result.put("message", "用户不存在");
return ResponseEntity.ok(result);
}
String encodedPassword = MD5Utils.encode(password);
if (!user.getPassword().equals(encodedPassword)) {
result.put("success", false);
result.put("message", "密码错误");
return ResponseEntity.ok(result);
}
if (user.getStatus() == 0) {
result.put("success", false);
result.put("message", "账户已被禁用");
return ResponseEntity.ok(result);
}
user.setLastLoginTime(new Date());
userMapper.updateById(user);
String token = JwtUtils.generateToken(user.getId(), user.getUsername());
result.put("success", true);
result.put("message", "登录成功");
result.put("token", token);
result.put("userInfo", user);
return ResponseEntity.ok(result);
}
public ResponseEntity<Map<String, Object>> getUserAnalytics() {
Map<String, Object> result = new HashMap<>();
List<User> allUsers = userMapper.selectList(null);
Dataset<Row> userDataset = spark.createDataFrame(allUsers, User.class);
userDataset.createOrReplaceTempView("users");
Dataset<Row> activeUsers = spark.sql("SELECT COUNT(*) as active_count FROM users WHERE status = 1 AND last_login_time >= date_sub(current_date(), 30)");
Dataset<Row> newUsers = spark.sql("SELECT COUNT(*) as new_count FROM users WHERE create_time >= date_sub(current_date(), 7)");
long activeCount = activeUsers.first().getLong(0);
long newCount = newUsers.first().getLong(0);
result.put("activeUserCount", activeCount);
result.put("newUserCount", newCount);
result.put("totalUserCount", allUsers.size());
return ResponseEntity.ok(result);
}
}
@Service
public class GoodsService {
@Autowired
private GoodsMapper goodsMapper;
@Autowired
private CategoryMapper categoryMapper;
private SparkSession spark = SparkSession.builder().appName("SecondHandTradingSystem").master("local[*]").getOrCreate();
public ResponseEntity<Map<String, Object>> publishGoods(Goods goods) {
Map<String, Object> result = new HashMap<>();
if (StringUtils.isEmpty(goods.getTitle()) || StringUtils.isEmpty(goods.getDescription())) {
result.put("success", false);
result.put("message", "商品标题和描述不能为空");
return ResponseEntity.ok(result);
}
if (goods.getPrice() == null || goods.getPrice().compareTo(BigDecimal.ZERO) <= 0) {
result.put("success", false);
result.put("message", "商品价格必须大于0");
return ResponseEntity.ok(result);
}
Category category = categoryMapper.selectById(goods.getCategoryId());
if (category == null || category.getStatus() == 0) {
result.put("success", false);
result.put("message", "商品分类不存在或已禁用");
return ResponseEntity.ok(result);
}
goods.setCreateTime(new Date());
goods.setStatus(1);
goods.setViewCount(0);
goodsMapper.insert(goods);
result.put("success", true);
result.put("message", "商品发布成功");
result.put("goodsId", goods.getId());
return ResponseEntity.ok(result);
}
public ResponseEntity<Map<String, Object>> getGoodsRecommendations(Long userId) {
Map<String, Object> result = new HashMap<>();
List<Goods> allGoods = goodsMapper.selectList(new QueryWrapper<Goods>().eq("status", 1));
Dataset<Row> goodsDataset = spark.createDataFrame(allGoods, Goods.class);
goodsDataset.createOrReplaceTempView("goods");
Dataset<Row> hotGoods = spark.sql("SELECT * FROM goods WHERE view_count > 50 ORDER BY view_count DESC, create_time DESC LIMIT 10");
Dataset<Row> newGoods = spark.sql("SELECT * FROM goods WHERE create_time >= date_sub(current_date(), 3) ORDER BY create_time DESC LIMIT 10");
Dataset<Row> priceRange = spark.sql("SELECT * FROM goods WHERE price BETWEEN 10 AND 500 ORDER BY price ASC LIMIT 10");
List<Row> hotGoodsList = hotGoods.collectAsList();
List<Row> newGoodsList = newGoods.collectAsList();
List<Row> priceRangeList = priceRange.collectAsList();
result.put("hotGoods", hotGoodsList);
result.put("newGoods", newGoodsList);
result.put("priceRangeGoods", priceRangeList);
result.put("success", true);
return ResponseEntity.ok(result);
}
}
@Service
public class OrderService {
@Autowired
private OrderMapper orderMapper;
@Autowired
private GoodsMapper goodsMapper;
@Autowired
private UserMapper userMapper;
private SparkSession spark = SparkSession.builder().appName("SecondHandTradingSystem").master("local[*]").getOrCreate();
@Transactional
public ResponseEntity<Map<String, Object>> createOrder(Order order) {
Map<String, Object> result = new HashMap<>();
Goods goods = goodsMapper.selectById(order.getGoodsId());
if (goods == null || goods.getStatus() != 1) {
result.put("success", false);
result.put("message", "商品不存在或已下架");
return ResponseEntity.ok(result);
}
if (goods.getUserId().equals(order.getBuyerId())) {
result.put("success", false);
result.put("message", "不能购买自己发布的商品");
return ResponseEntity.ok(result);
}
User buyer = userMapper.selectById(order.getBuyerId());
if (buyer == null || buyer.getStatus() == 0) {
result.put("success", false);
result.put("message", "买家账户异常");
return ResponseEntity.ok(result);
}
if (buyer.getBalance().compareTo(goods.getPrice()) < 0) {
result.put("success", false);
result.put("message", "账户余额不足");
return ResponseEntity.ok(result);
}
String orderNumber = "ORD" + System.currentTimeMillis() + RandomUtils.nextInt(1000, 9999);
order.setOrderNumber(orderNumber);
order.setSellerId(goods.getUserId());
order.setTotalAmount(goods.getPrice());
order.setStatus(1);
order.setCreateTime(new Date());
orderMapper.insert(order);
buyer.setBalance(buyer.getBalance().subtract(goods.getPrice()));
userMapper.updateById(buyer);
goods.setStatus(2);
goodsMapper.updateById(goods);
result.put("success", true);
result.put("message", "订单创建成功");
result.put("orderNumber", orderNumber);
return ResponseEntity.ok(result);
}
public ResponseEntity<Map<String, Object>> getOrderStatistics(Long userId) {
Map<String, Object> result = new HashMap<>();
List<Order> allOrders = orderMapper.selectList(new QueryWrapper<Order>().eq("buyer_id", userId).or().eq("seller_id", userId));
Dataset<Row> orderDataset = spark.createDataFrame(allOrders, Order.class);
orderDataset.createOrReplaceTempView("orders");
Dataset<Row> buyOrderStats = spark.sql("SELECT COUNT(*) as buy_count, SUM(total_amount) as buy_total FROM orders WHERE buyer_id = " + userId);
Dataset<Row> sellOrderStats = spark.sql("SELECT COUNT(*) as sell_count, SUM(total_amount) as sell_total FROM orders WHERE seller_id = " + userId);
Dataset<Row> monthlyOrders = spark.sql("SELECT COUNT(*) as monthly_count FROM orders WHERE (buyer_id = " + userId + " OR seller_id = " + userId + ") AND create_time >= date_sub(current_date(), 30)");
Dataset<Row> pendingOrders = spark.sql("SELECT COUNT(*) as pending_count FROM orders WHERE (buyer_id = " + userId + " OR seller_id = " + userId + ") AND status = 1");
Row buyStats = buyOrderStats.first();
Row sellStats = sellOrderStats.first();
long monthlyCount = monthlyOrders.first().getLong(0);
long pendingCount = pendingOrders.first().getLong(0);
result.put("buyOrderCount", buyStats.getLong(0));
result.put("buyOrderTotal", buyStats.get(1));
result.put("sellOrderCount", sellStats.getLong(0));
result.put("sellOrderTotal", sellStats.get(1));
result.put("monthlyOrderCount", monthlyCount);
result.put("pendingOrderCount", pendingCount);
result.put("success", true);
return ResponseEntity.ok(result);
}
}
基于SSM二手物品交易网站系统文档展示
💖💖作者:计算机编程小咖 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目