微信小程序商城+SSM+Dubbo+Redis开发实现

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 运行环境jdk8+tomcat8+mysql5.7以上+eclipse+maven项目技术(必填)spring+spring mvc+mybatis+dubbo+zookeeper+redis项目说明:本项目实现了一个微信小程序商城系统,后台主要基于SSM框架开发,前端使用微信小程序开发实现,实现了一个商城系统的基本功能。后台功能实现主要包含:商品管理订单管理图片管理评论管理用户管理地址管理系统管理前端小程序主要实现了:

 作者主页:编程指南针

简介:Java领域优质创作者、CSDN博客专家  Java项目、简历模板、学习资料、面试题库、技术互助

文末获取源码

项目编号:BS-XCX-002

运行环境

jdk8+tomcat8+mysql5.7以上+eclipse+maven

项目技术(必填)

spring+spring mvc+mybatis+dubbo+zookeeper+redis

项目说明:

本项目实现了一个微信小程序商城系统,后台主要基于SSM框架开发,前端使用微信小程序开发实现,实现了一个商城系统的基本功能。

后台功能实现主要包含:

    1. 商品管理
    2. 订单管理
    3. 图片管理
    4. 评论管理
    5. 用户管理
    6. 地址管理
    7. 系统管理

    前端小程序主要实现了:

      1. 商品浏览
      2. 信息查询
      3. 添加购物车
      4. 在线下单购买
      5. 收货地址管理
      6. 订单信息查询

      下面展示一个前后台系统:

      后台管理系统:

      登陆系统

      image.gif编辑

      商品管理

      image.gif编辑

      订单管理

      image.gif编辑

      image.gif编辑

      图片管理

      image.gif编辑

      评论管理

      image.gif编辑

      用户管理

      image.gif编辑

      地址管理

      image.gif编辑

      系统管理

      image.gif编辑

      image.gif编辑

      image.gif编辑

      前端小程序展示:

      首页

      image.gif编辑

      详情展示

      image.gif编辑

      添加购物车

      image.gif编辑

      确认订单

      image.gif编辑

      分类查看

      image.gif编辑

      我的订单

      image.gif编辑

      系统部分核心代码:

      package com.yun.smart.controller;
      import java.util.Arrays;
      import java.util.List;
      import java.util.Map;
      import javax.annotation.Resource;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.bind.annotation.RequestMethod;
      import org.springframework.web.bind.annotation.RestController;
      import com.baomidou.mybatisplus.plugins.Page;
      import com.yun.smart.builder.JsonResultBuilder;
      import com.yun.smart.consts.SessionConsts;
      import com.yun.smart.enums.BussinessType;
      import com.yun.smart.log.BussinessLogger;
      import com.yun.smart.log.BussinessLoggerPool;
      import com.yun.smart.model.OrderComment;
      import com.yun.smart.param.OrderCommentAddParams;
      import com.yun.smart.param.OrderCommentDeleteParams;
      import com.yun.smart.param.OrderCommentResponseParams;
      import com.yun.smart.param.OrderCommentSearchParams;
      import com.yun.smart.param.OrderCommentUpdateParams;
      import com.yun.smart.result.JsonResult;
      import com.yun.smart.service.OrderCommentService;
      import com.yun.smart.utils.AssertUtil;
      import io.swagger.annotations.Api;
      import io.swagger.annotations.ApiImplicitParam;
      import io.swagger.annotations.ApiImplicitParams;
      import io.swagger.annotations.ApiOperation;
      /**
       * Controller - 评论
       * @author znz
       * @version 0.0.1
       *
       */
      @RestController
      @RequestMapping("/smart/orderComment")
      @Api(value = "评论接口")
      public class OrderCommentController extends BaseController {
        private BussinessLogger logger = BussinessLoggerPool.getLogger(this.getClass(), BussinessType.ORDERCOMMENT);
        @Resource
        private OrderCommentService orderCommentService;
        @RequestMapping(value="/pc/v1/searchPage",method=RequestMethod.POST)
        @ApiOperation(value = "分页查询订单评论", notes = "分页查询订单评论")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult searchPage(OrderCommentSearchParams params){
          logger.info("OrderCommentController-分页查询订单评论入参:{}",params);
          AssertUtil.notNull(params, "参数为空");
          Page<Map<String,Object>> result = orderCommentService.searchPage(params);
          return JsonResultBuilder.ok(result);
        }
        @RequestMapping(value="/pc/v1/searchList",method=RequestMethod.POST)
        @ApiOperation(value = "查询评论列表", notes = "查询评论列表")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult searchList(OrderCommentSearchParams params){
          logger.info("OrderCommentController-查询列表入参:{}",params);
          List<OrderComment> result = orderCommentService.searchList(params);
          return JsonResultBuilder.ok(result);
        }
        @RequestMapping(value={"/pc/v1/searchDetail","/app/v1/searchDetail"},method=RequestMethod.POST)
        @ApiOperation(value = "查询评论详情", notes = "查询评论详情")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult searchDetail(OrderCommentSearchParams params){
          logger.info("OrderCommentController-查询详情入参:{}",params);
          AssertUtil.notNull(params, "参数为空");
          AssertUtil.notNull(params.getOrderNo(), "订单编号为空");
          OrderComment result = orderCommentService.searchDetail(params);
          return JsonResultBuilder.ok(result);
        }
        @RequestMapping(value={"/pc/v1/add","/app/v1/add"},method=RequestMethod.POST)
        @ApiOperation(value = "新建评论", notes = "新建评论")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult add(OrderCommentAddParams params){
          logger.info("OrderCommentController-新建入参:{}",params);
          AssertUtil.notNull(params, "参数为空");
          AssertUtil.notNull(params.getOrderNo(), "订单编号为空");
          AssertUtil.notNull(params.getGoodsStar(), "评分等级为空");
          AssertUtil.notNull(params.getContent(), "内容为空");
          orderCommentService.add(params);
          return JsonResultBuilder.ok();
        }
        @RequestMapping(value="/pc/v1/update",method=RequestMethod.POST)
        @ApiOperation(value = "更新评论", notes = "更新评论")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult update(OrderCommentUpdateParams params){
          logger.info("OrderCommentController-更新入参:{}",params);
          AssertUtil.notNull(params, "参数为空");
          AssertUtil.notNull(params.getId(), "评论ID为空");
          orderCommentService.update(params);
          return JsonResultBuilder.ok();
        }
        @RequestMapping(value="/pc/v1/delete",method=RequestMethod.POST)
        @ApiOperation(value = "删除评论", notes = "删除评论")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult delete(OrderCommentDeleteParams params){
          logger.info("OrderCommentController-删除入参:{}",params);
          orderCommentService.delete(params);
          return JsonResultBuilder.ok();
        }
        @RequestMapping(value="/pc/v1/deleteByIds",method=RequestMethod.POST)
        @ApiOperation(value = "批量删除评论", notes = "批量删除评论")
        @ApiImplicitParams({
          @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult deleteByIds(OrderCommentDeleteParams params){
          logger.info("OrderCommentController-批量删除入参:{}",Arrays.toString(params.getIds()));
          orderCommentService.deleteByIds(params);
          return JsonResultBuilder.ok();
        }
        @RequestMapping(value="/pc/v1/searchInfo",method=RequestMethod.POST)
        @ApiOperation(value = "查询评论详情", notes = "查询评论详情")
        @ApiImplicitParams({
          @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult searchInfo(OrderCommentSearchParams params){
          logger.info("OrderCommentController-查询详情入参:{}",params);
          AssertUtil.notNull(params, "参数为空");
          AssertUtil.notNull(params.getId(), "评论ID为空");
          Map<String,Object> result = orderCommentService.searchInfo(params);
          return JsonResultBuilder.ok(result);
        }
        @RequestMapping(value="/pc/v1/batchResponse",method=RequestMethod.POST)
        @ApiOperation(value = "批量回复评论", notes = "批量回复评论")
        @ApiImplicitParams({
          @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult batchResponse(OrderCommentResponseParams params){
          logger.info("OrderCommentController-批量回复评论入参:{}",params);
          AssertUtil.notNull(params, "参数为空");
          AssertUtil.notNull(params.getIds(), "评论ID为空");
          AssertUtil.notNull(params.getResponseContent(), "回复内容为空");
          orderCommentService.batchResponse(params);
          return JsonResultBuilder.ok();
        }
      }

      image.gif

      package com.yun.smart.controller;
      import java.util.Arrays;
      import java.util.List;
      import java.util.Map;
      import javax.annotation.Resource;
      import org.springframework.web.bind.annotation.RequestBody;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.bind.annotation.RequestMethod;
      import org.springframework.web.bind.annotation.RestController;
      import com.baomidou.mybatisplus.plugins.Page;
      import com.yun.smart.builder.JsonResultBuilder;
      import com.yun.smart.consts.SessionConsts;
      import com.yun.smart.result.JsonResult;
      import com.yun.smart.controller.BaseController;
      import com.yun.smart.enums.BussinessType;
      import com.yun.smart.log.BussinessLogger;
      import com.yun.smart.log.BussinessLoggerPool;
      import com.yun.smart.model.OrderInfo;
      import com.yun.smart.param.OrderInfoAddParams;
      import com.yun.smart.param.OrderInfoDeleteParams;
      import com.yun.smart.param.OrderInfoSearchParams;
      import com.yun.smart.param.OrderInfoSubmitParams;
      import com.yun.smart.param.OrderInfoUpdateParams;
      import com.yun.smart.service.OrderInfoService;
      import com.yun.smart.utils.AssertUtil;
      import io.swagger.annotations.Api;
      import io.swagger.annotations.ApiImplicitParam;
      import io.swagger.annotations.ApiImplicitParams;
      import io.swagger.annotations.ApiOperation;
      /**
       * Controller - 订单
       * @author znz
       * @version 0.0.1
       *
       */
      @RestController
      @RequestMapping("/smart/orderInfo")
      @Api(value = "订单接口")
      public class OrderInfoController extends BaseController {
        private BussinessLogger logger = BussinessLoggerPool.getLogger(this.getClass(), BussinessType.ORDERINFO);
        @Resource
        private OrderInfoService orderInfoService;
        @RequestMapping(value="/pc/v1/searchPage",method=RequestMethod.POST)
        @ApiOperation(value = "分页查询订单", notes = "分页查询所有订单")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult searchPage(OrderInfoSearchParams params){
          logger.info("OrderInfoController-分页查询入参:{}",params);
          Page<Map<String,Object>> result = orderInfoService.searchPage(params);
          return JsonResultBuilder.ok(result);
        }
        @RequestMapping(value="/pc/v1/searchList",method=RequestMethod.POST)
        @ApiOperation(value = "查询订单列表", notes = "查询订单列表")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult searchList(OrderInfoSearchParams params){
          logger.info("OrderInfoController-查询列表入参:{}",params);
          List<OrderInfo> result = orderInfoService.searchList(params);
          return JsonResultBuilder.ok(result);
        }
        @RequestMapping(value="/pc/v1/searchDetail",method=RequestMethod.POST)
        @ApiOperation(value = "查询订单详情", notes = "查询订单详情")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult searchDetail(OrderInfoSearchParams params){
          logger.info("OrderInfoController-查询详情入参:{}",params);
          OrderInfo result = orderInfoService.searchDetail(params);
          return JsonResultBuilder.ok(result);
        }
        @RequestMapping(value={"/pc/v1/update","/app/v1/update"},method=RequestMethod.POST)
        @ApiOperation(value = "更新订单", notes = "更新订单")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult update(OrderInfoUpdateParams params){
          logger.info("OrderInfoController-更新入参:{}",params);
          AssertUtil.notNull(params, "参数为空");
          AssertUtil.notNull(params.getId(), "订单ID为空");
          AssertUtil.notNull(params.getOrderStatus(), "订单状态为空");
          orderInfoService.update(params);
          return JsonResultBuilder.ok();
        }
        @RequestMapping(value={"/pc/v1/delete","/app/v1/delete"},method=RequestMethod.POST)
        @ApiOperation(value = "删除订单", notes = "删除订单")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult delete(OrderInfoDeleteParams params){
          logger.info("OrderInfoController-删除入参:{}",params);
          AssertUtil.notNull(params, "参数为空");
          AssertUtil.notNull(params.getId(), "订单ID为空");
          orderInfoService.delete(params);
          return JsonResultBuilder.ok();
        }
        @RequestMapping(value={"/pc/v1/deleteByIds","/app/v1/deleteByIds"},method=RequestMethod.POST)
        @ApiOperation(value = "批量删除订单", notes = "批量删除订单")
        @ApiImplicitParams({
          @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult deleteByIds(OrderInfoDeleteParams params){
          logger.info("OrderInfoController-批量删除入参:{}",Arrays.toString(params.getIds()));
          orderInfoService.deleteByIds(params);
          return JsonResultBuilder.ok();
        }
        @RequestMapping(value="/app/v1/addOne",method=RequestMethod.POST)
        @ApiOperation(value = "添加产品到购物车", notes = "添加产品到购物车")
        @ApiImplicitParams({
            @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult addOne(OrderInfoAddParams params){
          logger.info("OrderInfoController-添加产品到购物车入参:{}",params);
          AssertUtil.notNull(params, "参数为空");
          AssertUtil.notNull(params.getGoodsNo(), "商品编号为空");
          AssertUtil.notNull(params.getGoodsNum(), "商品数量为空");
          orderInfoService.addOne(params);
          return JsonResultBuilder.ok();
        }
        @RequestMapping(value="/app/v1/removeOne",method=RequestMethod.POST)
        @ApiOperation(value = "从购物车移除产品", notes = "从购物车移除产品")
        @ApiImplicitParams({
          @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult removeOne(OrderInfoAddParams params){
          logger.info("OrderInfoController-从购物车移除产品入参:{}",params);
          AssertUtil.notNull(params, "参数为空");
          AssertUtil.notNull(params.getOrderNo(), "订单编号为空");
          orderInfoService.removeOne(params);
          return JsonResultBuilder.ok();
        }
        @RequestMapping(value="/app/v1/submit",method=RequestMethod.POST)
        @ApiOperation(value = "批量提交购物车订单", notes = "批量提交购物车订单")
        @ApiImplicitParams({
          @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult submit(@RequestBody OrderInfoSubmitParams params){
          logger.info("OrderInfoController-批量提交购物车订单入参:{}",params);
          AssertUtil.notNull(params, "参数为空");
          AssertUtil.notNull(params.getAddrId(), "收货地址为空");
          AssertUtil.notNull(params.getOrderInfos(), "订单数据为空");
          orderInfoService.submit(params);
          return JsonResultBuilder.ok();
        }
        @RequestMapping(value="/app/v1/buyNow",method=RequestMethod.POST)
        @ApiOperation(value = "立即购买", notes = "立即购买")
        @ApiImplicitParams({
          @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult buyNow(OrderInfoAddParams params){
          logger.info("OrderInfoController-立即购买入参:{}",params);
          AssertUtil.notNull(params, "参数为空");
          AssertUtil.notNull(params.getGoodsNo(), "产品编号为空");
          AssertUtil.notNull(params.getGoodsNum(), "产品数量为空");
          OrderInfo orderInfo = orderInfoService.buyNow(params);
          return JsonResultBuilder.ok(orderInfo);
        }
        @RequestMapping(value={"/pc/v1/searchInfo","/app/v1/searchInfo"},method=RequestMethod.POST)
        @ApiOperation(value = "查询订单详情", notes = "查询订单详情")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult searchInfo(OrderInfoSearchParams params){
          logger.info("OrderInfoController-查询详情入参:{}",params);
          AssertUtil.notNull(params, "参数为空");
          AssertUtil.notNull(params.getOrderNo(), "订单编号为空");
          Map<String,Object> result = orderInfoService.searchInfo(params);
          return JsonResultBuilder.ok(result);
        }
        @RequestMapping(value="/app/v1/searchList",method=RequestMethod.POST)
        @ApiOperation(value = "查询个人订单列表", notes = "查询个人订单列表")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult searchListApp(OrderInfoSearchParams params){
          logger.info("OrderInfoController-查询列表入参:{}",params);
          AssertUtil.notNull(params, "参数为空");
          List<Map<String,Object>> result = orderInfoService.searchListApp(params);
          return JsonResultBuilder.ok(result);
        }
        @RequestMapping(value="/app/v1/searchSubmit",method=RequestMethod.POST)
        @ApiOperation(value = "查询已提交待付款的订单列表", notes = "查询已提交待付款的订单列表")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult searchSubmit(OrderInfoSearchParams params){
          logger.info("OrderInfoController-查询已提交待付款的订单列表入参:{}",params);
          AssertUtil.notNull(params, "参数为空");
          AssertUtil.notNull(params.getOrderNos(), "订单编号为空");
          List<Map<String,Object>> result = orderInfoService.searchSubmit(params);
          return JsonResultBuilder.ok(result);
        }
        @RequestMapping(value="/app/v1/searchTotal",method=RequestMethod.POST)
        @ApiOperation(value = "查询个人订单状态统计数量", notes = "查询个人订单状态统计数量")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult searchTotal(OrderInfoSearchParams params){
          logger.info("OrderInfoController-查询个人订单状态统计数量入参:{}",params);
          Map<String,Object> result = orderInfoService.searchTotal(params);
          return JsonResultBuilder.ok(result);
        }
      }

      image.gif

      package com.yun.smart.controller;
      import java.util.Arrays;
      import java.util.List;
      import java.util.Map;
      import javax.annotation.Resource;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.bind.annotation.RequestMethod;
      import org.springframework.web.bind.annotation.RestController;
      import com.baomidou.mybatisplus.plugins.Page;
      import com.yun.smart.builder.JsonResultBuilder;
      import com.yun.smart.consts.SessionConsts;
      import com.yun.smart.result.JsonResult;
      import com.yun.smart.controller.BaseController;
      import com.yun.smart.enums.BussinessType;
      import com.yun.smart.log.BussinessLogger;
      import com.yun.smart.log.BussinessLoggerPool;
      import com.yun.smart.model.OrderNotice;
      import com.yun.smart.param.OrderNoticeAddParams;
      import com.yun.smart.param.OrderNoticeDeleteParams;
      import com.yun.smart.param.OrderNoticeSearchParams;
      import com.yun.smart.param.OrderNoticeUpdateParams;
      import com.yun.smart.service.OrderNoticeService;
      import com.yun.smart.utils.AssertUtil;
      import io.swagger.annotations.Api;
      import io.swagger.annotations.ApiImplicitParam;
      import io.swagger.annotations.ApiImplicitParams;
      import io.swagger.annotations.ApiOperation;
      /**
       * Controller - 消息
       * @author znz
       * @version 0.0.1
       *
       */
      @RestController
      @RequestMapping("/smart/orderNotice")
      @Api(value = "消息接口")
      public class OrderNoticeController extends BaseController {
        private BussinessLogger logger = BussinessLoggerPool.getLogger(this.getClass(), BussinessType.ORDERNOTICE);
        @Resource
        private OrderNoticeService orderNoticeService;
        @RequestMapping(value="/pc/v1/searchPage",method=RequestMethod.POST)
        @ApiOperation(value = "分页查询消息", notes = "分页查询消息")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult searchPage(OrderNoticeSearchParams params){
          logger.info("OrderNoticeController-分页查询入参:{}",params);
          Page<Map<String,Object>> result = orderNoticeService.searchPage(params);
          return JsonResultBuilder.ok(result);
        }
        @RequestMapping(value="/pc/v1/searchList",method=RequestMethod.POST)
        @ApiOperation(value = "查询消息列表", notes = "查询消息列表")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult searchList(OrderNoticeSearchParams params){
          logger.info("OrderNoticeController-查询列表入参:{}",params);
          List<OrderNotice> result = orderNoticeService.searchList(params);
          return JsonResultBuilder.ok(result);
        }
        @RequestMapping(value="/pc/v1/searchDetail",method=RequestMethod.POST)
        @ApiOperation(value = "查询消息详情", notes = "查询消息详情")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult searchDetail(OrderNoticeSearchParams params){
          logger.info("OrderNoticeController-查询详情入参:{}",params);
          OrderNotice result = orderNoticeService.searchDetail(params);
          return JsonResultBuilder.ok(result);
        }
        @RequestMapping(value="/pc/v1/add",method=RequestMethod.POST)
        @ApiOperation(value = "新建消息", notes = "新建消息")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult add(OrderNoticeAddParams params){
          logger.info("OrderNoticeController-新建入参:{}",params);
          orderNoticeService.add(params);
          return JsonResultBuilder.ok();
        }
        @RequestMapping(value="/pc/v1/update",method=RequestMethod.POST)
        @ApiOperation(value = "更新消息", notes = "更新消息")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult update(OrderNoticeUpdateParams params){
          logger.info("OrderNoticeController-更新入参:{}",params);
          orderNoticeService.update(params);
          return JsonResultBuilder.ok();
        }
        @RequestMapping(value="/pc/v1/delete",method=RequestMethod.POST)
        @ApiOperation(value = "删除消息", notes = "删除消息")
        @ApiImplicitParams({
              @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult delete(OrderNoticeDeleteParams params){
          logger.info("OrderNoticeController-删除入参:{}",params);
          orderNoticeService.delete(params);
          return JsonResultBuilder.ok();
        }
        @RequestMapping(value="/pc/v1/deleteByIds",method=RequestMethod.POST)
        @ApiOperation(value = "批量删除消息", notes = "批量删除消息")
        @ApiImplicitParams({
          @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult deleteByIds(OrderNoticeDeleteParams params){
          logger.info("OrderNoticeController-批量删除入参:{}",Arrays.toString(params.getIds()));
          orderNoticeService.deleteByIds(params);
          return JsonResultBuilder.ok();
        }
        @RequestMapping(value="/pc/v1/changeNoticeStatus",method=RequestMethod.POST)
        @ApiOperation(value = "设置消息已读", notes = "设置消息已读")
        @ApiImplicitParams({
          @ApiImplicitParam(name = SessionConsts.AUTH_TOKEN_NAME, value = "token", paramType = "header", dataType = "string")
        })
        public JsonResult changeNoticeStatus(OrderNoticeUpdateParams params){
          logger.info("OrderNoticeController-设置消息已读入参:{}",params);
          AssertUtil.notNull(params, "参数为空");
          AssertUtil.notNull(params.getId(), "消息ID为空");
          orderNoticeService.changeNoticeStatus(params);
          return JsonResultBuilder.ok();
        }
      }

      image.gif


      相关实践学习
      基于Redis实现在线游戏积分排行榜
      本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
      云数据库 Redis 版使用教程
      云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
      相关文章
      |
      2月前
      |
      小程序 前端开发 Android开发
      小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
      小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
      530 29
      小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
      |
      3月前
      |
      监控 前端开发 小程序
      陪练,代练,护航,代打小程序源码/前端UNIAPP-VUE2.0开发 后端Thinkphp6管理/具备家政服务的综合型平台
      这款APP通过技术创新,将代练、家政、娱乐社交等场景融合,打造“全能型生活服务生态圈”。以代练为切入点,提供模块化代码支持快速搭建平台,结合智能匹配与技能审核机制,拓展家政服务和商业管理功能。技术架构具备高安全性和扩展性,支持多业务复用,如押金冻结、录屏监控等功能跨领域应用。商业模式多元,包括交易抽成、增值服务及广告联名,同时设计跨领域积分体系提升用户粘性,实现生态共生与B端赋能。
      245 12
      |
      3月前
      |
      小程序 Java 关系型数据库
      weixin163基于微信小程序的校园二手交易平台系统设计与开发ssm(文档+源码)_kaic
      本文介绍了一款基于微信小程序的校园二手物品交易平台的开发与实现。该平台采用Java语言开发服务端,使用MySQL数据库进行数据存储,前端以微信小程序为载体,支持管理员和学生两种角色操作。管理员可管理用户、商品分类及信息、交易记录等,而学生则能注册登录、发布购买商品、参与交流论坛等。系统设计注重交互性和安全性,通过SSM框架优化开发流程,确保高效稳定运行,满足用户便捷交易的需求,推动校园资源共享与循环利用。
      |
      3月前
      |
      人工智能 开发框架 小程序
      工会成立100周年纪念,开发职工健身AI运动小程序、APP方案推荐
      为庆祝中华全国总工会成立100周年,特推出基于AI技术的智能健身系统,以小程序和APP形式呈现,助力职工健康生活。方案包括:1) 小程序插件,支持多种运动识别,开箱即用;2) APP插件,提供更高精度的运动检测;3) 成熟的「AI乐运动」系统,支持赛事活动管理。这些方案满足不同需求,推动全民健身体验升级,彰显工会对职工健康的关怀。
      |
      3月前
      |
      人工智能 小程序 NoSQL
      【一步步开发AI运动小程序】二十一、如何将AI运动项目配置持久化到后端?
      本文介绍基于云智「Ai运动识别引擎」的运动配置持久化方案,旨在优化小程序或Uni APP中AI运动识别能力。通过将运动检测参数(如`Key`、`Name`、`TickMode`、`rules`或`samples`)持久化到后端,可避免因频繁调整运动参数而重新发布应用,提升用户体验。持久化数据结构支持规则和姿态样本存储,适用于关系数据库、文件或文档数据库(如MongoDB)。此外,云智还提供运动自动适配工具及「AI乐运动」产品,助力快速实现AI体育、全民健身等场景。
      |
      3月前
      |
      小程序 关系型数据库 Java
      weixin168“返家乡”高校暑期社会实践微信小程序设计与开发ssm(文档+源码)_kaic
      本文探讨高校暑期社会实践微信小程序的开发与应用,旨在通过信息化手段提升活动管理效率。借助微信小程序技术、SSM框架及MySQL数据库,实现信息共享、流程规范和操作便捷。系统涵盖需求分析、可行性研究、设计实现等环节,确保技术可行、操作简便且经济合理。最终,该小程序可优化活动发布、学生信息管理和心得交流等功能,降低管理成本并提高工作效率。
      |
      4月前
      |
      人工智能 小程序 前端开发
      【一步步开发AI运动小程序】十八、如何识别用户上传图片中的人体、运动、动作、姿态?
      【云智AI运动识别小程序插件】为小程序提供人体、运动及姿态检测的AI能力,本地引擎支持10余种运动,无需后台服务,具备快速、低成本等优势。本文介绍如何通过Canvas方案读取用户上传图片的像素数据,实现人体检测与姿态分析功能,代码简单高效,适合快速集成。更多内容欢迎交流!
      |
      4月前
      |
      人工智能 小程序 前端开发
      【一步步开发AI运动小程序】十九、运动识别中如何解析RGBA帧图片?
      本文介绍了如何将相机抽取的RGBA帧图像解析为`.jpg`或`.png`格式,适用于体测、赛事等场景。首先讲解了RGBA图像结构,其为一维数组,每四个元素表示一个像素的颜色与透明度值。接着通过`uni.createOffscreenCanvas()`创建离屏画布以减少绘制干扰,并提供代码实现,将RGBA数据逐像素绘制到画布上生成图片。最后说明了为何不直接使用拍照API及图像转换的调用频率建议,强调应先暂存帧数据,运动结束后再进行转换和上传,以优化性能。
      |
      4月前
      |
      人工智能 编解码 小程序
      【一步步开发AI运动小程序】二十、AI运动小程序如何适配相机全屏模式?
      本文探讨了小程序`camera`组件在全屏模式下的适配问题及其解决方案。由于`camera`组件存在预览图像裁切特性,可能导致入镜检测与预览不一致、骨骼图与人体不重合等问题。通过分析其裁剪逻辑(长边按比缩放,短边居中裁切),我们提供了计算裁剪比例和留白的适配方法,并优化了插件特性以支持全屏应用。同时,文章还讨论了全屏模式可能带来的副作用,如人体可视区域变小、检测范围变化及抽帧帧率下降等,并给出了改进建议。该方案适用于云上赛事、健身锻炼、AI体测、AR互动等场景,助力提升用户体验和UI布局合理性。
      |
      2月前
      |
      缓存 NoSQL 关系型数据库
      美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
      美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
      美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?

      热门文章

      最新文章