同为计算机人,这个基于SpringBoot的设计师约稿平台毕设值得收藏

40 阅读5分钟

💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目

@TOC

基于SpringBoot的设计师约稿平台介绍

基于SpringBoot的设计师约稿平台是一个采用现代化技术栈构建的综合性设计服务管理系统,该平台运用SpringBoot框架作为后端核心,结合SpringMVC和Mybatis实现数据持久化操作,前端采用Vue.js配合ElementUI组件库构建响应式用户界面,数据存储基于MySQL关系型数据库,整体采用B/S架构模式确保系统的可扩展性和维护性。系统功能涵盖完整的设计服务流程管理,包括用户注册登录、个人信息维护、设计师资质管理、作品分类展示、作品信息发布、约谈申请处理、约谈记录跟踪、订单生成管理、作品评价反馈等核心业务模块,同时配备系统管理、新闻资讯发布、轮播图管理等辅助功能模块,为设计师和客户搭建了一个集作品展示、需求对接、服务约定、交易管理于一体的专业化服务平台。平台通过规范化的约稿流程、透明化的服务标准、系统化的评价机制,有效解决了传统设计服务中信息不对称、交易不透明、服务难追溯等痛点问题,为设计行业的数字化转型提供了完整的技术解决方案,具有良好的实用价值和推广前景。

基于SpringBoot的设计师约稿平台演示视频

演示视频

基于SpringBoot的设计师约稿平台演示图片

登陆界面.png

设计师信息.png

系统首页.png

用户管理.png

约谈记录.png

作品订单.png

作品评价.png

基于SpringBoot的设计师约稿平台代码展示

import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Service;
import java.util.*;
@Service
public class DesignerPlatformService {
   private SparkSession spark = SparkSession.builder().appName("DesignerPlatform").master("local[*]").getOrCreate();
   @Autowired
   private WorksMapper worksMapper;
   @Autowired
   private OrderMapper orderMapper;
   @Autowired
   private EvaluationMapper evaluationMapper;
   @PostMapping("/submitConsultation")
   public ResponseResult submitConsultation(@RequestBody ConsultationRequest request) {
       if (request.getDesignerId() == null || request.getUserId() == null) {
           return ResponseResult.error("设计师ID和用户ID不能为空");
       }
       if (request.getProjectDescription().length() < 10) {
           return ResponseResult.error("项目描述至少需要10个字符");
       }
       Designer designer = designerMapper.selectById(request.getDesignerId());
       if (designer == null || designer.getStatus() != 1) {
           return ResponseResult.error("该设计师暂不可预约");
       }
       User user = userMapper.selectById(request.getUserId());
       if (user == null || user.getStatus() != 1) {
           return ResponseResult.error("用户状态异常,无法提交约谈申请");
       }
       Consultation consultation = new Consultation();
       consultation.setDesignerId(request.getDesignerId());
       consultation.setUserId(request.getUserId());
       consultation.setProjectType(request.getProjectType());
       consultation.setProjectDescription(request.getProjectDescription());
       consultation.setBudgetRange(request.getBudgetRange());
       consultation.setExpectedTime(request.getExpectedTime());
       consultation.setContactWay(request.getContactWay());
       consultation.setStatus(0);
       consultation.setCreateTime(new Date());
       consultation.setUpdateTime(new Date());
       int result = consultationMapper.insert(consultation);
       if (result > 0) {
           ConsultationRecord record = new ConsultationRecord();
           record.setConsultationId(consultation.getId());
           record.setOperationType("提交申请");
           record.setOperationContent("用户提交约谈申请,等待设计师确认");
           record.setOperatorId(request.getUserId());
           record.setOperatorType("用户");
           record.setCreateTime(new Date());
           consultationRecordMapper.insert(record);
           designer.setConsultationCount(designer.getConsultationCount() + 1);
           designerMapper.updateById(designer);
           return ResponseResult.success("约谈申请提交成功,请等待设计师确认");
       }
       return ResponseResult.error("约谈申请提交失败");
   }
   @PostMapping("/createOrder")
   public ResponseResult createOrder(@RequestBody OrderRequest request) {
       if (request.getConsultationId() == null || request.getDesignerId() == null || request.getUserId() == null) {
           return ResponseResult.error("约谈ID、设计师ID和用户ID不能为空");
       }
       Consultation consultation = consultationMapper.selectById(request.getConsultationId());
       if (consultation == null || consultation.getStatus() != 2) {
           return ResponseResult.error("约谈状态异常,无法生成订单");
       }
       Designer designer = designerMapper.selectById(request.getDesignerId());
       if (designer == null || designer.getStatus() != 1) {
           return ResponseResult.error("设计师状态异常,无法创建订单");
       }
       if (request.getOrderAmount() == null || request.getOrderAmount().compareTo(BigDecimal.ZERO) <= 0) {
           return ResponseResult.error("订单金额必须大于0");
       }
       if (request.getDeliveryTime() == null || request.getDeliveryTime().before(new Date())) {
           return ResponseResult.error("交付时间不能早于当前时间");
       }
       WorksOrder order = new WorksOrder();
       order.setOrderNumber("ORD" + System.currentTimeMillis());
       order.setConsultationId(request.getConsultationId());
       order.setDesignerId(request.getDesignerId());
       order.setUserId(request.getUserId());
       order.setOrderAmount(request.getOrderAmount());
       order.setProjectTitle(request.getProjectTitle());
       order.setProjectRequirement(request.getProjectRequirement());
       order.setDeliveryTime(request.getDeliveryTime());
       order.setOrderStatus(1);
       order.setPaymentStatus(0);
       order.setCreateTime(new Date());
       order.setUpdateTime(new Date());
       int result = orderMapper.insert(order);
       if (result > 0) {
           consultation.setStatus(3);
           consultation.setUpdateTime(new Date());
           consultationMapper.updateById(consultation);
           ConsultationRecord record = new ConsultationRecord();
           record.setConsultationId(request.getConsultationId());
           record.setOperationType("生成订单");
           record.setOperationContent("双方确认需求,订单号:" + order.getOrderNumber());
           record.setOperatorId(request.getDesignerId());
           record.setOperatorType("设计师");
           record.setCreateTime(new Date());
           consultationRecordMapper.insert(record);
           designer.setOrderCount(designer.getOrderCount() + 1);
           designerMapper.updateById(designer);
           return ResponseResult.success("订单创建成功", order);
       }
       return ResponseResult.error("订单创建失败");
   }
   @PostMapping("/submitEvaluation")
   public ResponseResult submitEvaluation(@RequestBody EvaluationRequest request) {
       if (request.getOrderId() == null || request.getUserId() == null) {
           return ResponseResult.error("订单ID和用户ID不能为空");
       }
       WorksOrder order = orderMapper.selectById(request.getOrderId());
       if (order == null || !order.getUserId().equals(request.getUserId())) {
           return ResponseResult.error("订单信息错误或无权限评价");
       }
       if (order.getOrderStatus() != 4) {
           return ResponseResult.error("订单未完成,暂不能评价");
       }
       WorksEvaluation existEvaluation = evaluationMapper.selectByOrderId(request.getOrderId());
       if (existEvaluation != null) {
           return ResponseResult.error("该订单已评价,不能重复评价");
       }
       if (request.getRating() < 1 || request.getRating() > 5) {
           return ResponseResult.error("评分必须在1-5分之间");
       }
       WorksEvaluation evaluation = new WorksEvaluation();
       evaluation.setOrderId(request.getOrderId());
       evaluation.setDesignerId(order.getDesignerId());
       evaluation.setUserId(request.getUserId());
       evaluation.setRating(request.getRating());
       evaluation.setContent(request.getContent());
       evaluation.setServiceAttitude(request.getServiceAttitude());
       evaluation.setWorkQuality(request.getWorkQuality());
       evaluation.setDeliveryTime(request.getDeliveryTime());
       evaluation.setStatus(1);
       evaluation.setCreateTime(new Date());
       evaluation.setUpdateTime(new Date());
       int result = evaluationMapper.insert(evaluation);
       if (result > 0) {
           order.setEvaluationStatus(1);
           order.setUpdateTime(new Date());
           orderMapper.updateById(order);
           Designer designer = designerMapper.selectById(order.getDesignerId());
           List<WorksEvaluation> allEvaluations = evaluationMapper.selectByDesignerId(order.getDesignerId());
           double totalRating = allEvaluations.stream().mapToDouble(WorksEvaluation::getRating).sum();
           double averageRating = totalRating / allEvaluations.size();
           designer.setAverageRating(BigDecimal.valueOf(averageRating));
           designer.setEvaluationCount(allEvaluations.size());
           designerMapper.updateById(designer);
           Dataset<Row> evaluationData = spark.read().format("jdbc")
               .option("url", "jdbc:mysql://localhost:3306/designer_platform")
               .option("dbtable", "works_evaluation")
               .option("user", "root")
               .option("password", "123456")
               .load();
           Dataset<Row> designerRankings = evaluationData.groupBy("designer_id")
               .agg(spark.sql("avg(rating)").as("avg_rating"),
                    spark.sql("count(*)").as("evaluation_count"))
               .orderBy(spark.sql("avg_rating desc"));
           designerRankings.write().mode("overwrite").format("jdbc")
               .option("url", "jdbc:mysql://localhost:3306/designer_platform")
               .option("dbtable", "designer_rankings")
               .option("user", "root")
               .option("password", "123456")
               .save();
           return ResponseResult.success("评价提交成功");
       }
       return ResponseResult.error("评价提交失败");
   }
}

基于SpringBoot的设计师约稿平台文档展示

文档.png

💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目