package cn.zqh.brand.service.impl;
import cn.zqh.bean.api.CommonResult;
import cn.zqh.bean.api.ResultCode;
import cn.zqh.bean.bo.*;
import cn.zqh.brand.client.CommodityClient;
import cn.zqh.brand.client.StoreClient;
import cn.zqh.brand.client.UserClient;
import cn.zqh.brand.config.BSException;
import cn.zqh.brand.holder.LoginUserHolder;
import cn.zqh.brand.mapper.BrandMapper;
import cn.zqh.brand.mapper.OrderMapper;
import cn.zqh.brand.mapper.ShopCarMapper;
import cn.zqh.brand.service.OrderService;
import cn.zqh.uuid.utils.SnowflakeId;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author zqh
* @since 2023-03-01
*/
@Service
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Dydj> implements OrderService {
@Resource
private OrderMapper orderMapper;
@Autowired
private CommodityClient commodityClient;
@Autowired
private UserClient userClient;
@Autowired
private LoginUserHolder loginUserHolder;
@Resource
private BrandMapper brandMapper;
@Resource
private ShopCarMapper shopCarMapper;
@Autowired
private StoreClient storeClient;
/**
* @Author: zqh
* @Date:
* @Description: 商品购买(添加订单)
*/
@Override
public CommonResult buyACommodity(String commodityId, Integer number) {
UserDTO currentUser = loginUserHolder.getCurrentUser();
if (currentUser == null) {
throw new BSException(ResultCode.UNAUTHORIZED.getCode(),ResultCode.UNAUTHORIZED.getMessage());
}
//查询购买商品信息
Commodity commodity = commodityClient.gCommodity(commodityId);
//查询购买者信息
User user = userClient.getUserById(currentUser.getId());
//看用户钱是否足够
if (user.getHavaMoney() < commodity.getPrice() * number){
return CommonResult.failed("余额不足");
}
//看购买量是否大于库存量
if (number > commodity.getNumber()){
return CommonResult.failed(" 库存不足");
}
//购买者钱减少
AdminChangeUserInfo adminChangeUserInfo = new AdminChangeUserInfo();
adminChangeUserInfo.setId(user.getUserId())
.setEmail(user.getQqEmail())
.setName(user.getNickName())
.setSex(user.getSex())
.setAvatar(user.getAvatar())
.setIntro(user.getIntro())
.setAddress(user.getAddress())
.setIsStore(user.getIsStore())
.setMoney(user.getHavaMoney() - (commodity.getPrice() * number))
.setIsDelete(user.getIsDelete());
String objectCommonResult = userClient.adminChangeInfo(adminChangeUserInfo);
if (!objectCommonResult.equals("SUCCESS")) {
return CommonResult.failed();
}
//商品库存量减少
Brand brand = brandMapper.selectOne(new QueryWrapper<Brand>().eq("Brand_id", commodity.getBrandId()));
AdminChangeCommodity adminChangeCommodity = new AdminChangeCommodity();
adminChangeCommodity.setCommodityId(commodity.getCommodityId())
.setCommodityName(commodity.getCommodityName())
.setAvatar(commodity.getAvatar())
.setIntro(commodity.getIntro())
.setStyle(commodity.getStyle())
.setPrice(commodity.getPrice())
.setNumber(commodity.getNumber() - number)
.setSalesVolume(commodity.getSalesVolume())
.setBrandId(brand.getBrandId());
String commonResult1 = commodityClient.ModifyTheProductInformationBasedOnTheAdministrator(adminChangeCommodity);
System.out.println("555555555555555555555555555");
if (!"SUCCESS".equals(commonResult1)) {
return CommonResult.failed();
}
//增加一个订单
Commodity commodity1 = commodityClient.gCommodity(commodityId);
Dydj order = new Dydj();
order.setOrderId("order"+ SnowflakeId.nextId())
.setUserId(user.getUserId())
.setStoreId(commodity1.getStoreId())
.setCommodityId(commodityId)
.setNumber(number)
.setPrice(number * commodity.getPrice())
.setAddress(user.getAddress())
.setIsDelete(0)
.setStyle(1);
int i = orderMapper.insert(order);
if (i != 1){
return CommonResult.failed();
}
System.out.println("666666666666666");
//店主钱增加
Store store = storeClient.getStoreInformationByStoreId(commodity1.getStoreId());
User user1 = userClient.getUserById(store.getUserId());
AdminChangeUserInfo adminChangeUserInfo1 = new AdminChangeUserInfo();
adminChangeUserInfo1.setId(user1.getUserId())
.setEmail(user1.getQqEmail())
.setName(user1.getNickName())
.setSex(user1.getSex())
.setAvatar(user1.getAvatar())
.setIntro(user1.getIntro())
.setAddress(user1.getAddress())
.setIsStore(user1.getIsStore())
.setMoney(user1.getHavaMoney() + (commodity.getPrice() * number))
.setIsDelete(user1.getIsDelete());
String commonResult2 = userClient.adminChangeInfo(adminChangeUserInfo1);
if (!"SUCCESS".equals(commonResult2)) {
return CommonResult.failed();
}
return CommonResult.success(ResultCode.SUCCESS);
}
/**
* @Author: zqh
* @Date:
* @Description: 把购物车里的商品提交订单
*/
@Override
public CommonResult submitTheorderForCart(String shopCarId) {
UserDTO currentUser = loginUserHolder.getCurrentUser();
User user = userClient.getUserById(currentUser.getId());
//删除购物车中信息
ShopCar shopCar = shopCarMapper.selectById(shopCarId);
EsCommodity commodity = commodityClient.getCommodityById(shopCar.getCommodityId());
Commodity commodity1 = commodityClient.gCommodity(shopCar.getCommodityId());
Dydj order = new Dydj();
order.setOrderId("order"+SnowflakeId.nextId())
.setUserId(user.getUserId())
.setStoreId(commodity1.getStoreId())
.setCommodityId(commodity.getCommodityId())
.setAddress(user.getAddress())
.setNumber(shopCar.getNumber())
.setPrice(shopCar.getMoney())
.setIsDelete(0)
.setStyle(1);
int i = orderMapper.insert(order);
if (i != 1){
return CommonResult.failed();
}
//店主钱增加
Store store = storeClient.getStoreInformationByStoreId(commodity1.getStoreId());
User user1 = userClient.getUserById(store.getUserId());
AdminChangeUserInfo adminChangeUserInfo1 = new AdminChangeUserInfo();
adminChangeUserInfo1.setId(user1.getUserId())
.setEmail(user1.getQqEmail())
.setName(user1.getNickName())
.setSex(user1.getSex())
.setAvatar(user1.getAvatar())
.setIntro(user1.getIntro())
.setAddress(user1.getAddress())
.setIsStore(user1.getIsStore())
.setMoney(user1.getHavaMoney() + shopCar.getMoney())
.setIsDelete(user1.getIsDelete());
String commonResult2 = userClient.ad
Java本科毕业设计(含全部源码,具有参考价值).zip
5星 · 超过95%的资源 需积分: 0 156 浏览量
更新于2023-03-11
1
收藏 1.25MB ZIP 举报
Java本科毕业设计是一个涵盖多个Java技术领域的项目,旨在帮助学生将所学理论知识与实际编程技能相结合,提高解决实际问题的能力。这个压缩包文件“Java本科毕业设计(含全部源码,具有参考价值).zip”包含了一个完整的毕业设计项目,名为"graduation-design-master",其中可能包含了以下关键知识点:
1. **Java基础**:毕业设计通常会覆盖Java的基础语法,如类、对象、封装、继承、多态等面向对象编程概念。此外,还会涉及异常处理、IO流、集合框架(ArrayList、LinkedList、HashMap等)以及多线程。
2. **MVC设计模式**:在Web应用开发中,Model-View-Controller模式是常见的架构设计,用于分离业务逻辑、数据模型和用户界面。在毕业设计中,学生可能需要实现一个基于MVC的系统,以提高代码的可维护性和可扩展性。
3. **Spring框架**:Spring是Java企业级应用开发的核心框架,用于管理对象的生命周期和依赖关系。它还提供了AOP(面向切面编程)和声明式事务管理等功能,使得应用程序更加简洁和灵活。
4. **Spring Boot**:为了简化Spring的配置,Spring Boot应运而生。它预设了许多默认配置,可以快速启动一个新的Java Web项目。Spring Boot还支持自动配置和健康检查等功能,提高了开发效率。
5. **MyBatis**:MyBatis是一个持久层框架,它允许开发者将SQL语句与Java代码分离,通过XML或注解进行映射,提供了一种灵活的数据访问方式。在毕业设计中,MyBatis常用于数据库操作,实现数据的增删改查。
6. **数据库设计**:项目可能涉及到MySQL、Oracle或其他关系型数据库的设计,包括ER模型、数据库表结构设计、索引优化以及SQL查询优化等内容。
7. **前端技术**:HTML、CSS和JavaScript是构建Web页面的基础,可能结合Bootstrap、jQuery或者更现代的前端框架如Vue.js或React来实现交互性更强的用户界面。
8. **RESTful API**:为了实现前后端分离,项目可能会设计一套RESTful风格的API接口,通过HTTP协议进行数据交换,便于客户端(如网页、移动应用)调用。
9. **版本控制**:项目中可能使用了Git进行版本控制,让学生理解版本管理和协同开发的重要性。
10. **测试技术**:JUnit和Mockito等工具可能被用来编写单元测试,确保代码质量并减少bug。
通过这个毕业设计项目,学生不仅可以巩固和提升Java编程能力,还能了解到软件工程的实践过程,包括需求分析、系统设计、编码、测试和文档编写等各个环节。对于有志于从事Java开发的本科生来说,这样的实践经历是非常宝贵的学习资源。
Matlab仿真实验室
- 粉丝: 4w+
- 资源: 2432
最新资源
- qaxbrowser-1.1.32574.52.exe (奇安信浏览器windows安装包)
- C#编写modbus tcp客户端读取modbus tcp服务器数据
- 某房地产瑞六补环境部分代码
- 基于Matlab实现无刷直流电机仿真(模型+说明文档).rar
- AllSort(直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序)
- 模拟qsort,改造冒泡排序使其能排序任意数据类型,即日常练习
- carsim+simulink联合仿真实现变道 包含路径规划算法+mpc轨迹跟踪算法 可选simulink版本和c++版本算法 可以适用于弯道道路,弯道车道保持,弯道变道 carsim内规划轨迹可视化
- 数组经典习题之顺序排序和二分查找和冒泡排序
- 永磁同步电机神经网络自抗扰控制,附带编程涉及到的公式文档,方便理解,模型顺利运行,效果好,位置电流双闭环采用二阶自抗扰控制,永磁同步电机三闭环控制,神经网络控制,自抗扰中状态扩张观测器与神经网络结合
- 基于 Oops Framework 提供的游戏项目开发模板,项目中提供了最新版本 Cocos Creator 3.x 插件与游戏资源初始化通用逻辑