基于java 开发在线商城小程序
|java | 包部署 |springboot |uniapp|vue|小程序+网页双端
技术介绍:
开发环境:IDEA、Hbuild、uniapp、微信开发者工具、JDK1.8、Maven、Mysql
技术栈:Java、uniapp、SpringBoot、vue、Mysql
功能介绍:
用户:商城首页、注册登录、商品详情、购物车、订单、我的
管理员:后台登录、会员管理、商品分类管理、商品管理、订单管理、首页配置、系统管理
文章目录
以下文字及示例代码仅供参考

Java 在线商城小程序开发指南
在Java中开发在线商城小程序通常会使用Spring Boot框架,因为它可以快速构建微服务架构的应用程序。不过,由于微信小程序本身是一个前端应用,我们需要开发一个后端API服务来支持它。
以下是一个基于Spring Boot的在线商城后端API示例,并提供了一个简单的REST API接口供微信小程序调用。
1. 创建Spring Boot项目
首先创建一个Spring Boot项目,可以使用Spring Initializr生成基础结构,选择以下依赖:
- Spring Web
- Spring Data JPA
- H2 Database (或其他您喜欢的数据库)
2. 实体类
Product.java - 商品实体
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String description;
private Double price;
private Integer stock;
private String imageUrl;
// Constructors, Getters and Setters
public Product() {}
public Product(String name, String description, Double price, Integer stock, String imageUrl) {
this.name = name;
this.description = description;
this.price = price;
this.stock = stock;
this.imageUrl = imageUrl;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public Integer getStock() {
return stock;
}
public void setStock(Integer stock) {
this.stock = stock;
}
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
}
User.java - 用户实体
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
private String email;
private String address;
private String phoneNumber;
// Constructors, Getters and Setters
public User() {}
public User(String username, String password, String email, String address, String phoneNumber) {
this.username = username;
this.password = password;
this.email = email;
this.address = address;
this.phoneNumber = phoneNumber;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
}
3. Repository 接口
ProductRepository.java
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ProductRepository extends JpaRepository<Product, Long> {
}
UserRepository.java
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);
}
4. DTO对象(数据传输对象)
ProductDTO.java
public class ProductDTO {
private Long id;
private String name;
private String description;
private Double price;
private Integer stock;
private String imageUrl;
// Constructors, Getters and Setters
public ProductDTO(Product product) {
this.id = product.getId();
this.name = product.getName();
this.description = product.getDescription();
this.price = product.getPrice();
this.stock = product.getStock();
this.imageUrl = product.getImageUrl();
}
public static List<ProductDTO> convertToDTOList(List<Product> products) {
List<ProductDTO> dtos = new ArrayList<>();
for (Product product : products) {
dtos.add(new ProductDTO(product));
}
return dtos;
}
// Getters and Setters
}
5. REST 控制器
ProductController.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/products")
@CrossOrigin(origins = "*") // 允许跨域请求
public class ProductController {
@Autowired
private ProductRepository productRepository;
@GetMapping
public List<ProductDTO> getAllProducts() {
return ProductDTO.convertToDTOList(productRepository.findAll());
}
@GetMapping("/{id}")
public ProductDTO getProductById(@PathVariable Long id) {
return new ProductDTO(productRepository.findById(id).orElse(null));
}
@PostMapping
public Product createProduct(@RequestBody Product product) {
return productRepository.save(product);
}
@PutMapping("/{id}")
public Product updateProduct(@PathVariable Long id, @RequestBody Product productDetails) {
Product product = productRepository.findById(id).orElse(null);
if (product != null) {
product.setName(productDetails.getName());
product.setDescription(productDetails.getDescription());
product.setPrice(productDetails.getPrice());
product.setStock(productDetails.getStock());
product.setImageUrl(productDetails.getImageUrl());
return productRepository.save(product);
}
return null;
}
@DeleteMapping("/{id}")
public void deleteProduct(@PathVariable Long id) {
productRepository.deleteById(id);
}
}
UserController.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/users")
@CrossOrigin(origins = "*") // 允许跨域请求
public class UserController {
@Autowired
private UserRepository userRepository;
@PostMapping("/register")
public User registerUser(@RequestBody User user) {
return userRepository.save(user);
}
@PostMapping("/login")
public User loginUser(@RequestBody Map<String, String> loginData) {
String username = loginData.get("username");
String password = loginData.get("password");
User user = userRepository.findByUsername(username);
if (user != null && user.getPassword().equals(password)) {
return user; // 登录成功
}
return null; // 登录失败
}
@GetMapping("/{id}")
public User getUserById(@PathVariable Long id) {
return userRepository.findById(id).orElse(null);
}
}
6. 配置文件 application.properties
spring.datasource.url=jdbc:h2:mem:online-store
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
7. 小程序端API调用示例(JavaScript)
// 获取所有商品
function getProducts() {
wx.request({
url: 'http://localhost:8080/api/products',
method: 'GET',
success(res) {
console.log('获取商品列表成功:', res.data);
},
fail(err) {
console.error('获取商品列表失败:', err);
}
});
}
// 根据ID获取商品
function getProductById(productId) {
wx.request({
url: `http://localhost:8080/api/products/${productId}`,
method: 'GET',
success(res) {
console.log('获取商品详情成功:', res.data);
},
fail(err) {
console.error('获取商品详情失败:', err);
}
});
}
// 注册用户
function registerUser(userData) {
wx.request({
url: 'http://localhost:8080/api/users/register',
method: 'POST',
data: userData,
success(res) {
console.log('注册成功:', res.data);
},
fail(err) {
console.error('注册失败:', err);
}
});
}
// 用户登录
function loginUser(username, password) {
wx.request({
url: 'http://localhost:8080/api/users/login',
method: 'POST',
data: {
username: username,
password: password
},
success(res) {
console.log('登录成功:', res.data);
},
fail(err) {
console.error('登录失败:', err);
}
});
}
8. 扩展功能建议
您可以根据需要扩展更多功能:
购物车模块
@Entity
public class CartItem {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
private Product product;
private Integer quantity;
@ManyToOne
private User user;
// Getters and Setters
}
// CartController.java
@RestController
@RequestMapping("/api/cart")
@CrossOrigin(origins = "*")
public class CartController {
// 添加购物车操作
@PostMapping("/add")
public ResponseEntity<?> addToCart(@RequestBody Map<String, Object> payload) {
// 实现添加到购物车逻辑
}
// 获取用户的购物车
@GetMapping("/{userId}")
public List<CartItem> getCartItems(@PathVariable Long userId) {
// 实现获取购物车逻辑
}
}
订单模块
@Entity
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(cascade = CascadeType.ALL)
private List<Product> items;
private Double totalAmount;
private String status; // pending, completed, cancelled
@OneToOne(cascade = CascadeType.ALL)
private User user;
// Getters and Setters
}
// OrderController.java
@RestController
@RequestMapping("/api/orders")
@CrossOrigin(origins = "*")
public class OrderController {
// 创建订单
@PostMapping
public ResponseEntity<?> createOrder(@RequestBody Order order) {
// 实现创建订单逻辑
}
// 获取用户订单
@GetMapping("/{userId}")
public List<Order> getUserOrders(@PathVariable Long userId) {
// 实现获取用户订单逻辑
}
}
总结
以上是一个基于Java和Spring Boot的在线商城后端API实现。这个系统提供了基本的商品管理、用户管理和RESTful API接口,可供微信小程序或其他前端应用调用。
要完整运行这个项目,请按照以下步骤操作:
- 使用Spring Initializr创建一个新的Spring Boot项目,包含Web、JPA和H2依赖
- 创建实体类(Product、User等)
- 创建Repository接口
- 创建DTO类用于数据转换
- 创建REST控制器处理HTTP请求
- 配置application.properties文件
- 运行应用程序并测试API接口
- 在微信开发者工具中编写小程序代码调用这些API
这是一个基础框架,您可以在此基础上继续扩展更多功能,如支付系统、评论系统、搜索功能等。