• 计算机毕业设计 基于Vue的米家商城系统的设计与实现 Java实战项目 附源码+文档+视频讲解


    博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌
    🍅文末获取源码联系🍅
    👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
    ————————————————
    计算机毕业设计《1000套》

    目录

    1、项目介绍及开发技术

    1.1 项目介绍

    1.2 开发技术

    2、系统功能模块设计

    3、功能截图

    3.1 前台功能

    3.2 后台功能 

    4、数据库表结构设计

    5、关键代码

    5.1 商品信息管理Controller模块 

    5.2 商品信息管理Service模块 

    5.3 商品信息管理ServiceImpl模块

    5.4 商品信息管理Dao模块

    6、论文目录结构

    7、源码获取


    1、项目介绍及开发技术

    1.1 项目介绍

    随着互联网技术的不断发展,电子商务已经成为了人们生活中不可或缺的一部分。而商城系统作为电子商务的重要组成部分,其功能和性能直接影响到用户的购物体验和企业的经营效益。因此,开发一款高效、稳定、易用的商城系统具有重要的现实意义。

    Vue是一种轻量级的前端框架,具有简单易学、高效灵活等特点。基于Vue的米家商城系统可以充分利用Vue的优势,实现快速开发和迭代更新。同时,Vue还具有良好的兼容性和可扩展性,可以适应不同设备和浏览器的需求。

    在计算机专业毕设中,研究基于Vue的米家商城系统不仅可以提高学生的编程能力和实践能力,还可以培养学生的创新思维和团队协作精神。此外,通过对商城系统的研究和开发,可以为相关企业提供技术支持和服务,促进电子商务的发展。

    1.2 开发技术

    Java开发语言、SpringBoot、MyBatisPlus、MySQL数据库、Maven、IDEA开发工具、JDK1.8+、Vue、HTML、CSS、JS。

    2、系统功能模块设计

    用户:注册登录、首页、商品信息、公告信息、个人中心(我的订单、我的地址、我的收藏)、购物车、客服中心。

    管理员:登录、首页、个人中心(修改密码、个人信息)、用户管理、商品分类管理、商品信息管理、系统管理(公告信息、客服中心、轮播图管理)、订单管理。

    3、功能截图

    3.1 前台功能

    商品信息

    公告信息

    个人中心

    购物车

     

    客服中心

    注册

     登录

    3.2 后台功能 

     首页

     个人中心

     用户管理

    商品分类管理

     

    商品信息管理

     

    系统管理公告信息

     订单管理

    4、数据库表结构设计

    1. -- MySQL dump 10.13 Distrib 5.7.31, for Linux (x86_64)
    2. --
    3. -- Host: localhost Database: springbootho5g5
    4. -- ------------------------------------------------------
    5. -- Server version 5.7.31
    6. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    7. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    8. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    9. /*!40101 SET NAMES utf8 */;
    10. /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
    11. /*!40103 SET TIME_ZONE='+00:00' */;
    12. /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
    13. /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    14. /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    15. /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
    16. --
    17. -- Current Database: `springbootho5g5`
    18. --
    19. /*!40000 DROP DATABASE IF EXISTS `springbootho5g5`*/;
    20. CREATE DATABASE /*!32312 IF NOT EXISTS*/ `springbootho5g5` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
    21. USE `springbootho5g5`;
    22. LOCK TABLES `cart` WRITE;
    23. /*!40000 ALTER TABLE `cart` DISABLE KEYS */;
    24. /*!40000 ALTER TABLE `cart` ENABLE KEYS */;
    25. UNLOCK TABLES;
    26. --
    27. -- Table structure for table `config`
    28. --
    29. DROP TABLE IF EXISTS `config`;
    30. /*!40101 SET @saved_cs_client = @@character_set_client */;
    31. /*!40101 SET character_set_client = utf8 */;
    32. CREATE TABLE `config` (
    33. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    34. `name` varchar(100) NOT NULL COMMENT '配置参数名称',
    35. `value` varchar(100) DEFAULT NULL COMMENT '配置参数值',
    36. PRIMARY KEY (`id`)
    37. ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='配置文件';
    38. /*!40101 SET character_set_client = @saved_cs_client */;
    39. --
    40. -- Dumping data for table `config`
    41. --
    42. LOCK TABLES `config` WRITE;
    43. /*!40000 ALTER TABLE `config` DISABLE KEYS */;
    44. INSERT INTO `config` VALUES (1,'picture1','upload/picture1.jpg'),(2,'picture2','upload/picture2.jpg'),(3,'picture3','upload/picture3.jpg');
    45. /*!40000 ALTER TABLE `config` ENABLE KEYS */;
    46. UNLOCK TABLES;
    47. --
    48. -- Table structure for table `token`
    49. --
    50. DROP TABLE IF EXISTS `token`;
    51. /*!40101 SET @saved_cs_client = @@character_set_client */;
    52. /*!40101 SET character_set_client = utf8 */;
    53. CREATE TABLE `token` (
    54. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    55. `userid` bigint(20) NOT NULL COMMENT '用户id',
    56. `username` varchar(100) NOT NULL COMMENT '用户名',
    57. `tablename` varchar(100) DEFAULT NULL COMMENT '表名',
    58. `role` varchar(100) DEFAULT NULL COMMENT '角色',
    59. `token` varchar(200) NOT NULL COMMENT '密码',
    60. `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
    61. `expiratedtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '过期时间',
    62. PRIMARY KEY (`id`)
    63. ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='token表';
    64. /*!40101 SET character_set_client = @saved_cs_client */;
    65. --
    66. -- Dumping data for table `token`
    67. --
    68. LOCK TABLES `token` WRITE;
    69. /*!40000 ALTER TABLE `token` DISABLE KEYS */;
    70. INSERT INTO `token` VALUES (1,21,'工号1','yuangong','员工','outtj0ena1f8344sremckoiw8eq58o8m','2023-05-11 03:59:33','2023-05-11 04:59:34');
    71. /*!40000 ALTER TABLE `token` ENABLE KEYS */;
    72. UNLOCK TABLES;
    73. --
    74. -- Table structure for table `users`
    75. --
    76. DROP TABLE IF EXISTS `users`;
    77. /*!40101 SET @saved_cs_client = @@character_set_client */;
    78. /*!40101 SET character_set_client = utf8 */;
    79. CREATE TABLE `users` (
    80. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    81. `username` varchar(100) NOT NULL COMMENT '用户名',
    82. `password` varchar(100) NOT NULL COMMENT '密码',
    83. `role` varchar(100) DEFAULT '管理员' COMMENT '角色',
    84. `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
    85. PRIMARY KEY (`id`)
    86. ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='用户表';
    87. /*!40101 SET character_set_client = @saved_cs_client */;
    88. --
    89. -- Dumping data for table `users`
    90. --
    91. LOCK TABLES `users` WRITE;
    92. /*!40000 ALTER TABLE `users` DISABLE KEYS */;
    93. INSERT INTO `users` VALUES (1,'admin','admin','管理员','2023-05-11 03:58:19');
    94. /*!40000 ALTER TABLE `users` ENABLE KEYS */;
    95. UNLOCK TABLES;
    96. --
    97. -- Table structure for table `yonghu`
    98. --
    99. DROP TABLE IF EXISTS `yonghu`;
    100. /*!40101 SET @saved_cs_client = @@character_set_client */;
    101. /*!40101 SET character_set_client = utf8 */;
    102. CREATE TABLE `yonghu` (
    103. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    104. `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    105. `yonghuming` varchar(200) NOT NULL COMMENT '用户名',
    106. `xingming` varchar(200) NOT NULL COMMENT '姓名',
    107. `mima` varchar(200) NOT NULL COMMENT '密码',
    108. `xingbie` varchar(200) DEFAULT NULL COMMENT '性别',
    109. `lianxidianhua` varchar(200) DEFAULT NULL COMMENT '联系电话',
    110. PRIMARY KEY (`id`),
    111. UNIQUE KEY `yonghuming` (`yonghuming`)
    112. ) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COMMENT='用户';
    113. /*!40101 SET character_set_client = @saved_cs_client */;
    114. --
    115. -- Dumping data for table `yonghu`
    116. --
    117. LOCK TABLES `yonghu` WRITE;
    118. /*!40000 ALTER TABLE `yonghu` DISABLE KEYS */;
    119. INSERT INTO `yonghu` VALUES (11,'2023-05-11 03:58:18','用户名1','姓名1','123456','男','13823888881'),(12,'2023-05-11 03:58:18','用户名2','姓名2','123456','男','13823888882'),(13,'2023-05-11 03:58:18','用户名3','姓名3','123456','男','13823888883'),(14,'2023-05-11 03:58:18','用户名4','姓名4','123456','男','13823888884'),(15,'2023-05-11 03:58:18','用户名5','姓名5','123456','男','13823888885'),(16,'2023-05-11 03:58:18','用户名6','姓名6','123456','男','13823888886'),(17,'2023-05-11 03:58:18','用户名7','姓名7','123456','男','13823888887'),(18,'2023-05-11 03:58:18','用户名8','姓名8','123456','男','13823888888');
    120. /*!40000 ALTER TABLE `yonghu` ENABLE KEYS */;
    121. UNLOCK TABLES;
    122. --
    123. -- Table structure for table `yuangong`
    124. --
    125. DROP TABLE IF EXISTS `yuangong`;
    126. /*!40101 SET @saved_cs_client = @@character_set_client */;
    127. /*!40101 SET character_set_client = utf8 */;
    128. CREATE TABLE `yuangong` (
    129. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    130. `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    131. `gonghao` varchar(200) NOT NULL COMMENT '工号',
    132. `xingming` varchar(200) NOT NULL COMMENT '姓名',
    133. `mima` varchar(200) NOT NULL COMMENT '密码',
    134. `xingbie` varchar(200) DEFAULT NULL COMMENT '性别',
    135. `lianxidianhua` varchar(200) DEFAULT NULL COMMENT '联系电话',
    136. `touxiang` longtext COMMENT '头像',
    137. PRIMARY KEY (`id`),
    138. UNIQUE KEY `gonghao` (`gonghao`)
    139. ) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8 COMMENT='员工';
    140. /*!40101 SET character_set_client = @saved_cs_client */;
    141. --
    142. -- Dumping data for table `yuangong`
    143. --
    144. LOCK TABLES `yuangong` WRITE;
    145. /*!40000 ALTER TABLE `yuangong` DISABLE KEYS */;
    146. INSERT INTO `yuangong` VALUES (21,'2023-05-11 03:58:18','工号1','姓名1','123456','男','13823888881','upload/yuangong_touxiang1.jpg'),(22,'2023-05-11 03:58:18','工号2','姓名2','123456','男','13823888882','upload/yuangong_touxiang2.jpg'),(23,'2023-05-11 03:58:18','工号3','姓名3','123456','男','13823888883','upload/yuangong_touxiang3.jpg'),(24,'2023-05-11 03:58:18','工号4','姓名4','123456','男','13823888884','upload/yuangong_touxiang4.jpg'),(25,'2023-05-11 03:58:18','工号5','姓名5','123456','男','13823888885','upload/yuangong_touxiang5.jpg'),(26,'2023-05-11 03:58:18','工号6','姓名6','123456','男','13823888886','upload/yuangong_touxiang6.jpg'),(27,'2023-05-11 03:58:18','工号7','姓名7','123456','男','13823888887','upload/yuangong_touxiang7.jpg'),(28,'2023-05-11 03:58:18','工号8','姓名8','123456','男','13823888888','upload/yuangong_touxiang8.jpg');
    147. /*!40000 ALTER TABLE `yuangong` ENABLE KEYS */;
    148. UNLOCK TABLES;
    149. /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
    150. /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
    151. /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
    152. /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
    153. /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    154. /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    155. /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    156. /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
    157. -- Dump completed on

    5、关键代码

    5.1 商品信息管理Controller模块 

    1. package com.controller;
    2. import java.text.SimpleDateFormat;
    3. import java.util.ArrayList;
    4. import java.util.Arrays;
    5. import java.util.Calendar;
    6. import java.util.Map;
    7. import java.util.HashMap;
    8. import java.util.Iterator;
    9. import java.util.Date;
    10. import java.util.List;
    11. import javax.servlet.http.HttpServletRequest;
    12. import com.utils.ValidatorUtils;
    13. import org.apache.commons.lang3.StringUtils;
    14. import org.springframework.beans.factory.annotation.Autowired;
    15. import org.springframework.transaction.annotation.Transactional;
    16. import org.springframework.format.annotation.DateTimeFormat;
    17. import org.springframework.web.bind.annotation.PathVariable;
    18. import org.springframework.web.bind.annotation.RequestBody;
    19. import org.springframework.web.bind.annotation.RequestMapping;
    20. import org.springframework.web.bind.annotation.RequestParam;
    21. import org.springframework.web.bind.annotation.RestController;
    22. import com.baomidou.mybatisplus.mapper.EntityWrapper;
    23. import com.baomidou.mybatisplus.mapper.Wrapper;
    24. import com.annotation.IgnoreAuth;
    25. import com.entity.OrdersEntity;
    26. import com.service.OrdersService;
    27. import com.entity.ShangpinxinxiEntity;
    28. import com.entity.view.ShangpinxinxiView;
    29. import com.service.ShangpinxinxiService;
    30. import com.service.TokenService;
    31. import com.utils.PageUtils;
    32. import com.utils.R;
    33. import com.utils.MD5Util;
    34. import com.utils.MPUtil;
    35. import com.utils.CommonUtil;
    36. import java.io.IOException;
    37. import com.service.StoreupService;
    38. import com.entity.StoreupEntity;
    39. /**
    40. * 商品信息
    41. * 后端接口
    42. * @author
    43. * @email
    44. * @date
    45. */
    46. @RestController
    47. @RequestMapping("/shangpinxinxi")
    48. public class ShangpinxinxiController {
    49. @Autowired
    50. private ShangpinxinxiService shangpinxinxiService;
    51. @Autowired
    52. private StoreupService storeupService;
    53. @Autowired
    54. private OrdersService ordersService;
    55. /**
    56. * 后端列表
    57. */
    58. @RequestMapping("/page")
    59. public R page(@RequestParam Map params,ShangpinxinxiEntity shangpinxinxi,
    60. HttpServletRequest request){
    61. EntityWrapper ew = new EntityWrapper();
    62. PageUtils page = shangpinxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shangpinxinxi), params), params));
    63. return R.ok().put("data", page);
    64. }
    65. /**
    66. * 前端列表
    67. */
    68. @IgnoreAuth
    69. @RequestMapping("/list")
    70. public R list(@RequestParam Map params,ShangpinxinxiEntity shangpinxinxi,
    71. HttpServletRequest request){
    72. EntityWrapper ew = new EntityWrapper();
    73. PageUtils page = shangpinxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shangpinxinxi), params), params));
    74. return R.ok().put("data", page);
    75. }
    76. /**
    77. * 列表
    78. */
    79. @RequestMapping("/lists")
    80. public R list( ShangpinxinxiEntity shangpinxinxi){
    81. EntityWrapper ew = new EntityWrapper();
    82. ew.allEq(MPUtil.allEQMapPre( shangpinxinxi, "shangpinxinxi"));
    83. return R.ok().put("data", shangpinxinxiService.selectListView(ew));
    84. }
    85. /**
    86. * 查询
    87. */
    88. @RequestMapping("/query")
    89. public R query(ShangpinxinxiEntity shangpinxinxi){
    90. EntityWrapper< ShangpinxinxiEntity> ew = new EntityWrapper< ShangpinxinxiEntity>();
    91. ew.allEq(MPUtil.allEQMapPre( shangpinxinxi, "shangpinxinxi"));
    92. ShangpinxinxiView shangpinxinxiView = shangpinxinxiService.selectView(ew);
    93. return R.ok("查询商品信息成功").put("data", shangpinxinxiView);
    94. }
    95. /**
    96. * 后端详情
    97. */
    98. @RequestMapping("/info/{id}")
    99. public R info(@PathVariable("id") Long id){
    100. ShangpinxinxiEntity shangpinxinxi = shangpinxinxiService.selectById(id);
    101. shangpinxinxi.setClicktime(new Date());
    102. shangpinxinxiService.updateById(shangpinxinxi);
    103. return R.ok().put("data", shangpinxinxi);
    104. }
    105. /**
    106. * 前端详情
    107. */
    108. @IgnoreAuth
    109. @RequestMapping("/detail/{id}")
    110. public R detail(@PathVariable("id") Long id){
    111. ShangpinxinxiEntity shangpinxinxi = shangpinxinxiService.selectById(id);
    112. shangpinxinxi.setClicktime(new Date());
    113. shangpinxinxiService.updateById(shangpinxinxi);
    114. return R.ok().put("data", shangpinxinxi);
    115. }
    116. /**
    117. * 后端保存
    118. */
    119. @RequestMapping("/save")
    120. public R save(@RequestBody ShangpinxinxiEntity shangpinxinxi, HttpServletRequest request){
    121. shangpinxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    122. //ValidatorUtils.validateEntity(shangpinxinxi);
    123. shangpinxinxiService.insert(shangpinxinxi);
    124. return R.ok();
    125. }
    126. /**
    127. * 前端保存
    128. */
    129. @RequestMapping("/add")
    130. public R add(@RequestBody ShangpinxinxiEntity shangpinxinxi, HttpServletRequest request){
    131. shangpinxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    132. //ValidatorUtils.validateEntity(shangpinxinxi);
    133. shangpinxinxiService.insert(shangpinxinxi);
    134. return R.ok();
    135. }
    136. /**
    137. * 修改
    138. */
    139. @RequestMapping("/update")
    140. @Transactional
    141. public R update(@RequestBody ShangpinxinxiEntity shangpinxinxi, HttpServletRequest request){
    142. //ValidatorUtils.validateEntity(shangpinxinxi);
    143. shangpinxinxiService.updateById(shangpinxinxi);//全部更新
    144. return R.ok();
    145. }
    146. /**
    147. * 删除
    148. */
    149. @RequestMapping("/delete")
    150. public R delete(@RequestBody Long[] ids){
    151. shangpinxinxiService.deleteBatchIds(Arrays.asList(ids));
    152. return R.ok();
    153. }
    154. /**
    155. * 提醒接口
    156. */
    157. @RequestMapping("/remind/{columnName}/{type}")
    158. public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
    159. @PathVariable("type") String type,@RequestParam Map map) {
    160. map.put("column", columnName);
    161. map.put("type", type);
    162. if(type.equals("2")) {
    163. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    164. Calendar c = Calendar.getInstance();
    165. Date remindStartDate = null;
    166. Date remindEndDate = null;
    167. if(map.get("remindstart")!=null) {
    168. Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
    169. c.setTime(new Date());
    170. c.add(Calendar.DAY_OF_MONTH,remindStart);
    171. remindStartDate = c.getTime();
    172. map.put("remindstart", sdf.format(remindStartDate));
    173. }
    174. if(map.get("remindend")!=null) {
    175. Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
    176. c.setTime(new Date());
    177. c.add(Calendar.DAY_OF_MONTH,remindEnd);
    178. remindEndDate = c.getTime();
    179. map.put("remindend", sdf.format(remindEndDate));
    180. }
    181. }
    182. Wrapper wrapper = new EntityWrapper();
    183. if(map.get("remindstart")!=null) {
    184. wrapper.ge(columnName, map.get("remindstart"));
    185. }
    186. if(map.get("remindend")!=null) {
    187. wrapper.le(columnName, map.get("remindend"));
    188. }
    189. int count = shangpinxinxiService.selectCount(wrapper);
    190. return R.ok().put("count", count);
    191. }
    192. /**
    193. * 前端智能排序
    194. */
    195. @IgnoreAuth
    196. @RequestMapping("/autoSort")
    197. public R autoSort(@RequestParam Map params,ShangpinxinxiEntity shangpinxinxi, HttpServletRequest request,String pre){
    198. EntityWrapper ew = new EntityWrapper();
    199. Map newMap = new HashMap();
    200. Map param = new HashMap();
    201. Iterator> it = param.entrySet().iterator();
    202. while (it.hasNext()) {
    203. Map.Entry entry = it.next();
    204. String key = entry.getKey();
    205. String newKey = entry.getKey();
    206. if (pre.endsWith(".")) {
    207. newMap.put(pre + newKey, entry.getValue());
    208. } else if (StringUtils.isEmpty(pre)) {
    209. newMap.put(newKey, entry.getValue());
    210. } else {
    211. newMap.put(pre + "." + newKey, entry.getValue());
    212. }
    213. }
    214. params.put("sort", "clicktime");
    215. params.put("order", "desc");
    216. PageUtils page = shangpinxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shangpinxinxi), params), params));
    217. return R.ok().put("data", page);
    218. }
    219. /**
    220. * 协同算法(按用户购买推荐)
    221. */
    222. @RequestMapping("/autoSort2")
    223. public R autoSort2(@RequestParam Map params,ShangpinxinxiEntity shangpinxinxi, HttpServletRequest request){
    224. String userId = request.getSession().getAttribute("userId").toString();
    225. String goodtypeColumn = "shangpinfenlei";
    226. List orders = ordersService.selectList(new EntityWrapper().eq("userid", userId).eq("tablename", "shangpinxinxi").orderBy("addtime", false));
    227. List goodtypes = new ArrayList();
    228. Integer limit = params.get("limit")==null?10:Integer.parseInt(params.get("limit").toString());
    229. List shangpinxinxiList = new ArrayList();
    230. //去重
    231. List ordersDist = new ArrayList();
    232. for(OrdersEntity o1 : orders) {
    233. boolean addFlag = true;
    234. for(OrdersEntity o2 : ordersDist) {
    235. if(o1.getGoodid()==o2.getGoodid() || o1.getGoodtype().equals(o2.getGoodtype())) {
    236. addFlag = false;
    237. break;
    238. }
    239. }
    240. if(addFlag) ordersDist.add(o1);
    241. }
    242. if(ordersDist!=null && ordersDist.size()>0) {
    243. for(OrdersEntity o : ordersDist) {
    244. shangpinxinxiList.addAll(shangpinxinxiService.selectList(new EntityWrapper().eq(goodtypeColumn, o.getGoodtype())));
    245. }
    246. }
    247. EntityWrapper ew = new EntityWrapper();
    248. params.put("sort", "id");
    249. params.put("order", "desc");
    250. PageUtils page = shangpinxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shangpinxinxi), params), params));
    251. List pageList = (List)page.getList();
    252. if(shangpinxinxiList.size()
    253. int toAddNum = (limit-shangpinxinxiList.size())<=pageList.size()?(limit-shangpinxinxiList.size()):pageList.size();
    254. for(ShangpinxinxiEntity o1 : pageList) {
    255. boolean addFlag = true;
    256. for(ShangpinxinxiEntity o2 : shangpinxinxiList) {
    257. if(o1.getId().intValue()==o2.getId().intValue()) {
    258. addFlag = false;
    259. break;
    260. }
    261. }
    262. if(addFlag) {
    263. shangpinxinxiList.add(o1);
    264. if(--toAddNum==0) break;
    265. }
    266. }
    267. } else if(shangpinxinxiList.size()>limit) {
    268. shangpinxinxiList = shangpinxinxiList.subList(0, limit);
    269. }
    270. page.setList(shangpinxinxiList);
    271. return R.ok().put("data", page);
    272. }
    273. }

    5.2 商品信息管理Service模块 

    1. package com.service;
    2. import com.baomidou.mybatisplus.mapper.Wrapper;
    3. import com.baomidou.mybatisplus.service.IService;
    4. import com.utils.PageUtils;
    5. import com.entity.ShangpinxinxiEntity;
    6. import java.util.List;
    7. import java.util.Map;
    8. import com.entity.vo.ShangpinxinxiVO;
    9. import org.apache.ibatis.annotations.Param;
    10. import com.entity.view.ShangpinxinxiView;
    11. /**
    12. * 商品信息
    13. *
    14. * @author
    15. * @email
    16. * @date
    17. */
    18. public interface ShangpinxinxiService extends IService {
    19. PageUtils queryPage(Map params);
    20. List selectListVO(Wrapper wrapper);
    21. ShangpinxinxiVO selectVO(@Param("ew") Wrapper wrapper);
    22. List selectListView(Wrapper wrapper);
    23. ShangpinxinxiView selectView(@Param("ew") Wrapper wrapper);
    24. PageUtils queryPage(Map params,Wrapper wrapper);
    25. }

    5.3 商品信息管理ServiceImpl模块

    1. package com.service.impl;
    2. import org.springframework.stereotype.Service;
    3. import java.util.Map;
    4. import java.util.List;
    5. import com.baomidou.mybatisplus.mapper.Wrapper;
    6. import com.baomidou.mybatisplus.mapper.EntityWrapper;
    7. import com.baomidou.mybatisplus.plugins.Page;
    8. import com.baomidou.mybatisplus.service.impl.ServiceImpl;
    9. import com.utils.PageUtils;
    10. import com.utils.Query;
    11. import com.dao.ShangpinxinxiDao;
    12. import com.entity.ShangpinxinxiEntity;
    13. import com.service.ShangpinxinxiService;
    14. import com.entity.vo.ShangpinxinxiVO;
    15. import com.entity.view.ShangpinxinxiView;
    16. @Service("shangpinxinxiService")
    17. public class ShangpinxinxiServiceImpl extends ServiceImpl implements ShangpinxinxiService {
    18. @Override
    19. public PageUtils queryPage(Map params) {
    20. Page page = this.selectPage(
    21. new Query(params).getPage(),
    22. new EntityWrapper()
    23. );
    24. return new PageUtils(page);
    25. }
    26. @Override
    27. public PageUtils queryPage(Map params, Wrapper wrapper) {
    28. Page page =new Query(params).getPage();
    29. page.setRecords(baseMapper.selectListView(page,wrapper));
    30. PageUtils pageUtil = new PageUtils(page);
    31. return pageUtil;
    32. }
    33. @Override
    34. public List selectListVO(Wrapper wrapper) {
    35. return baseMapper.selectListVO(wrapper);
    36. }
    37. @Override
    38. public ShangpinxinxiVO selectVO(Wrapper wrapper) {
    39. return baseMapper.selectVO(wrapper);
    40. }
    41. @Override
    42. public List selectListView(Wrapper wrapper) {
    43. return baseMapper.selectListView(wrapper);
    44. }
    45. @Override
    46. public ShangpinxinxiView selectView(Wrapper wrapper) {
    47. return baseMapper.selectView(wrapper);
    48. }
    49. }

    5.4 商品信息管理Dao模块

    1. package com.dao;
    2. import com.entity.ShangpinxinxiEntity;
    3. import com.baomidou.mybatisplus.mapper.BaseMapper;
    4. import java.util.List;
    5. import java.util.Map;
    6. import com.baomidou.mybatisplus.mapper.Wrapper;
    7. import com.baomidou.mybatisplus.plugins.pagination.Pagination;
    8. import org.apache.ibatis.annotations.Param;
    9. import com.entity.vo.ShangpinxinxiVO;
    10. import com.entity.view.ShangpinxinxiView;
    11. /**
    12. * 商品信息
    13. *
    14. * @author
    15. * @email
    16. * @date
    17. */
    18. public interface ShangpinxinxiDao extends BaseMapper {
    19. List selectListVO(@Param("ew") Wrapper wrapper);
    20. ShangpinxinxiVO selectVO(@Param("ew") Wrapper wrapper);
    21. List selectListView(@Param("ew") Wrapper wrapper);
    22. List selectListView(Pagination page,@Param("ew") Wrapper wrapper);
    23. ShangpinxinxiView selectView(@Param("ew") Wrapper wrapper);
    24. }

    6、论文目录结构

    7、源码获取

    感谢大家的阅读,如有不懂的问题可以评论区交流或私聊!

    喜欢文章可以点赞、收藏、关注、评论

    获取源码请私信

  • 相关阅读:
    七、golang基础之interface与类型断言
    大三第三周学习笔记
    算法分享三个方面学习方法(做题经验,代码编写经验,比赛经验)
    Android面试整理之SQLite数据库——sql语句和常用函数(一)
    知乎回答推广怎么做?知乎回答如何做到置顶?
    ABPvNext 迁移Mysql(macOS)
    【Redis实现秒杀业务②】超卖问题的解决方案
    计网 | 【五 传输层、六 应用层】知识点及例题
    SQL Server Count()函数
    【实战详解】如何快速搭建接口自动化测试框架?Python + Requests
  • 原文地址:https://blog.csdn.net/m0_74181697/article/details/134428200