Browse Source

商城、购物车

chunping 3 years ago
parent
commit
a9e039abc0
31 changed files with 780 additions and 23 deletions
  1. 94 0
      mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/ChannelCartController.java
  2. 20 16
      mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/ChannelTicketController.java
  3. 27 0
      mp-common/src/main/java/com/qs/mp/common/enums/TicketBoxStatusEnum.java
  4. 1 1
      mp-generator/src/main/java/com/qs/mp/generator/DbGenerator.java
  5. 22 2
      mp-service/src/main/java/com/qs/mp/admin/domain/TicketBox.java
  6. 59 0
      mp-service/src/main/java/com/qs/mp/admin/domain/TicketCategory.java
  7. 53 0
      mp-service/src/main/java/com/qs/mp/admin/domain/TicketTag.java
  8. 53 0
      mp-service/src/main/java/com/qs/mp/admin/domain/TicketTagRel.java
  9. 91 0
      mp-service/src/main/java/com/qs/mp/admin/domain/param/TicketBoxListVO.java
  10. 7 1
      mp-service/src/main/java/com/qs/mp/admin/domain/param/TicketBoxParam.java
  11. 13 0
      mp-service/src/main/java/com/qs/mp/admin/mapper/TicketCategoryMapper.java
  12. 13 0
      mp-service/src/main/java/com/qs/mp/admin/mapper/TicketTagMapper.java
  13. 13 0
      mp-service/src/main/java/com/qs/mp/admin/mapper/TicketTagRelMapper.java
  14. 16 0
      mp-service/src/main/java/com/qs/mp/admin/service/ITicketCategoryService.java
  15. 16 0
      mp-service/src/main/java/com/qs/mp/admin/service/ITicketTagRelService.java
  16. 16 0
      mp-service/src/main/java/com/qs/mp/admin/service/ITicketTagService.java
  17. 20 0
      mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketCategoryServiceImpl.java
  18. 20 0
      mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketTagRelServiceImpl.java
  19. 20 0
      mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketTagServiceImpl.java
  20. 3 1
      mp-service/src/main/java/com/qs/mp/channel/domain/ChannelCart.java
  21. 24 0
      mp-service/src/main/java/com/qs/mp/channel/domain/param/ChannelCartParam.java
  22. 21 0
      mp-service/src/main/java/com/qs/mp/channel/domain/vo/ChannelCartVO.java
  23. 6 1
      mp-service/src/main/java/com/qs/mp/channel/mapper/ChannelCartMapper.java
  24. 19 0
      mp-service/src/main/java/com/qs/mp/channel/service/IChannelCartService.java
  25. 50 0
      mp-service/src/main/java/com/qs/mp/channel/service/impl/ChannelCartServiceImpl.java
  26. 15 0
      mp-service/src/main/java/com/qs/mp/common/domain/param/BatchLongIdsParam.java
  27. 3 1
      mp-service/src/main/resources/mapper/admin/TicketBoxMapper.xml
  28. 20 0
      mp-service/src/main/resources/mapper/admin/TicketCategoryMapper.xml
  29. 19 0
      mp-service/src/main/resources/mapper/admin/TicketTagMapper.xml
  30. 19 0
      mp-service/src/main/resources/mapper/admin/TicketTagRelMapper.xml
  31. 7 0
      mp-service/src/main/resources/mapper/channel/ChannelCartMapper.xml

+ 94 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/ChannelCartController.java

@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
+ *
+ * https://www.mall4j.com/
+ *
+ * 未经允许,不可做商业用途!
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.qs.mp.web.controller.api.channel;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.qs.mp.admin.domain.TicketBox;
+import com.qs.mp.admin.domain.param.TicketBoxListVO;
+import com.qs.mp.admin.domain.param.TicketBoxParam;
+import com.qs.mp.admin.service.ITicketBoxService;
+import com.qs.mp.channel.domain.ChannelCart;
+import com.qs.mp.channel.domain.param.ChannelCartParam;
+import com.qs.mp.channel.domain.vo.ChannelCartVO;
+import com.qs.mp.channel.service.IChannelCartService;
+import com.qs.mp.common.core.domain.AjaxResult;
+import com.qs.mp.common.domain.param.BatchLongIdsParam;
+import com.qs.mp.common.enums.TicketBoxStatusEnum;
+import com.qs.mp.common.utils.StringUtils;
+import com.qs.mp.utils.SecurityUtils;
+import com.qs.mp.web.controller.common.BaseApiController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import java.util.List;
+import lombok.AllArgsConstructor;
+import ma.glasnost.orika.MapperFacade;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/api/v1/mp/channel/mall")
+@Api(tags = "渠道盲票商城接口")
+@AllArgsConstructor
+public class ChannelCartController extends BaseApiController {
+
+
+  @Autowired
+  private IChannelCartService channelCartService;
+
+  @Autowired
+  private MapperFacade mapperFacade;
+
+  /**
+   * 购物车列表
+   */
+  @PostMapping("/cart/list")
+  @ApiOperation(value = "购物车列表" , notes = "获取所有购物车盲票信息")
+  public AjaxResult list(@RequestBody ChannelCart param) {
+    Long channelId = SecurityUtils.getLoginUser().getChannelId();
+    startPage();
+    List<ChannelCartVO> channelCartVOS = channelCartService.listCartVO(
+        new LambdaQueryWrapper<ChannelCart>().eq(ChannelCart::getChannelId, channelId)
+            .orderByDesc(ChannelCart::getUpdatedTime));
+    return AjaxResult.success(channelCartVOS);
+  }
+
+
+  /**
+   * 添加/修改购物车数量
+   */
+  @PostMapping("/cart/add")
+  @ApiOperation(value = "加购物车" , notes = "渠道经销商加购物车")
+  public AjaxResult add(@RequestBody ChannelCartParam param) {
+    boolean rtn = channelCartService.addToCart(param);
+    if (!rtn) {
+      return AjaxResult.success("操作失败");
+    }
+    return AjaxResult.error("操作成功");
+  }
+
+  /**
+   * 删除购物清单项
+   */
+  @PostMapping("/cart/remove")
+  @ApiOperation(value = "删除购物清单" , notes = "购物车里点删除")
+  public AjaxResult remove(@RequestBody BatchLongIdsParam param) {
+    boolean rtn = channelCartService.removeByIds(param.getIds());
+    if (!rtn) {
+      return AjaxResult.success("操作失败");
+    }
+    return AjaxResult.error("操作成功");
+  }
+
+}

+ 20 - 16
mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/ChannelTicketController.java

@@ -12,15 +12,20 @@ package com.qs.mp.web.controller.api.channel;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.qs.mp.admin.domain.TicketBox;
+import com.qs.mp.admin.domain.param.TicketBoxListVO;
 import com.qs.mp.admin.domain.param.TicketBoxParam;
 import com.qs.mp.admin.service.ITicketBoxService;
 import com.qs.mp.channel.domain.ChannelAddr;
 import com.qs.mp.channel.domain.param.AddrParam;
 import com.qs.mp.channel.service.IChannelAddrService;
 import com.qs.mp.common.core.domain.AjaxResult;
+import com.qs.mp.common.enums.TicketBoxStatusEnum;
+import com.qs.mp.common.utils.StringUtils;
 import com.qs.mp.utils.SecurityUtils;
+import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import javax.validation.Valid;
@@ -37,7 +42,7 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/api/v1/mp/channel/mall")
 @Api(tags = "渠道盲票商城接口")
 @AllArgsConstructor
-public class ChannelTicketController {
+public class ChannelTicketController extends BaseApiController {
 
 
   @Autowired
@@ -52,29 +57,28 @@ public class ChannelTicketController {
   @PostMapping("/ticket/list")
   @ApiOperation(value = "盲票组列表" , notes = "获取所有盲票信息")
   public AjaxResult list(@RequestBody TicketBoxParam param) {
+    // TODO 根据标签过滤
+    startPage();
     List<TicketBox> ticketBoxes = ticketBoxService.list(
         new LambdaQueryWrapper<TicketBox>().eq(TicketBox::getType, param.getType())
-            .eq(null != param.getCategoryId() && 0 != param.getCategoryId(), TicketBox::getCategoryId, param.getCategoryId()));
-//            .eq()
-//            .orderByDesc(ChannelAddr::getCommonAddr).orderByDesc(ChannelAddr::getUpdateTime));
-
-    return AjaxResult.success(ticketBoxes);
+            .eq(null != param.getCategoryId() && 0 != param.getCategoryId(), TicketBox::getCategoryId, param.getCategoryId())
+            .eq(TicketBox::getStatus, TicketBoxStatusEnum.PUT_ON));
+    List<TicketBoxListVO> ticketBoxListVOList = mapperFacade.mapAsList(ticketBoxes, TicketBoxListVO.class);
+    return AjaxResult.success(ticketBoxListVOList);
   }
 
 
   /**
-   * 获取地址信息订单配送地址
+   * 查看盲票详情
    */
-  @PostMapping("/address/query")
-  @ApiOperation(value = "获取地址信息" , notes = "根据地址id,获取地址信息")
-  public AjaxResult getInfo(@RequestBody AddrParam addrParam) {
-    if (addrParam.getAddrId() == null || addrParam.getAddrId() == 0) {
-      return AjaxResult.error("参数异常,地址ID缺失");
+  @PostMapping("/ticket/detail")
+  @ApiOperation(value = "查看盲票详情" , notes = "根据盲票组ID,获取盲票信息")
+  public AjaxResult getInfo(@RequestBody TicketBoxParam param) {
+    if (StringUtils.isBlank(param.getBoxId())) {
+      return AjaxResult.error("参数异常,盲票组ID缺失");
     }
-    Long channelId = SecurityUtils.getLoginUser().getChannelId();
-//    ChannelAddr channelAddr = channelAddrService.getChannelAddrByUserId(addrParam.getAddrId(),
-//        channelId);
-    return AjaxResult.success();
+    TicketBox ticketBox = ticketBoxService.getById(param.getBoxId());
+    return AjaxResult.success(ticketBox);
   }
 
 }

+ 27 - 0
mp-common/src/main/java/com/qs/mp/common/enums/TicketBoxStatusEnum.java

@@ -0,0 +1,27 @@
+package com.qs.mp.common.enums;
+
+import com.baomidou.mybatisplus.annotation.IEnum;
+
+/**
+ *
+ * 盲票组上下架状态
+ *
+ */
+public enum TicketBoxStatusEnum implements IEnum<String> {
+
+  PUT_ON("on", "上架"),
+  PUT_OFF("off", "下架");
+
+  private final String value;
+  private final String desc;
+
+  TicketBoxStatusEnum(final String value, final String desc) {
+    this.value = value;
+    this.desc = desc;
+  }
+
+  @Override
+  public String getValue() {
+    return value;
+  }
+}

+ 1 - 1
mp-generator/src/main/java/com/qs/mp/generator/DbGenerator.java

@@ -49,7 +49,7 @@ public class DbGenerator {
      */
     private static final boolean REST_CONTROLLER_STYLE = true;
 
-    public static final String JDBC_MYSQL_URL = "jdbc:mysql://113.31.162.168:3306/mpdb_test?useUnicode=true&useSSL=false&characterEncoding=utf8";
+    public static final String JDBC_MYSQL_URL = "jdbc:mysql://110.40.236.236:3306/mpdb_test?useUnicode=true&useSSL=false&characterEncoding=utf8";
 
     public static final String JDBC_DRIVER_NAME = "com.mysql.cj.jdbc.Driver";
 

+ 22 - 2
mp-service/src/main/java/com/qs/mp/admin/domain/TicketBox.java

@@ -1,9 +1,14 @@
 package com.qs.mp.admin.domain;
 
+import com.alibaba.fastjson.annotation.JSONField;
+import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.Version;
+import com.qs.mp.common.enums.TicketBoxStatusEnum;
 import com.qs.mp.common.enums.TicketTypeEnum;
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -118,16 +123,30 @@ public class TicketBox implements Serializable {
   private BigDecimal saleCommRate;
 
   /**
-   * 分佣的销售额百分比
+   * 规格属性
    */
   @TableField("properties")
   private String properties;
 
+  /**
+   * 上架时间
+   */
+  @TableField("puton_time")
+  private Date putonTime;
+
   /**
    * 状态,上架/下架
    */
   @TableField("status")
-  private String status;
+  @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
+  private TicketBoxStatusEnum status;
+
+  /**
+   * 逻辑删除标识
+   */
+  @TableField("is_deleted")
+  @TableLogic
+  private Integer isDeleted;
 
   /**
    * 创建时间
@@ -139,6 +158,7 @@ public class TicketBox implements Serializable {
    * 更新时间
    */
   @TableField("updated_time")
+  @Version
   private Date updatedTime;
 
 

+ 59 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/TicketCategory.java

@@ -0,0 +1,59 @@
+package com.qs.mp.admin.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * @describe 盲票组分类表实体类
+ * @auther quanshu
+ * @create 2022-03-03 14:38:49
+ */
+@TableName("mp_ticket_category")
+@Data
+public class TicketCategory implements Serializable {
+
+  private static final long serialVersionUID = 1L;
+
+  /**
+   * 主键
+   */
+  @TableId(value = "category_id" , type = IdType.AUTO)
+  private Long categoryId;
+
+  /**
+   * 分类名称
+   */
+  @TableField("name")
+  private String name;
+
+  /**
+   * 图片地址
+   */
+  @TableField("pic_url")
+  private String picUrl;
+
+  /**
+   * 顺序
+   */
+  @TableField("sort")
+  private Integer sort;
+
+  /**
+   * 创建时间
+   */
+  @TableField("created_time")
+  private Date createdTime;
+
+  /**
+   * 更新时间
+   */
+  @TableField("updated_time")
+  private Date updatedTime;
+
+
+}

+ 53 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/TicketTag.java

@@ -0,0 +1,53 @@
+package com.qs.mp.admin.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * @describe 盲票组标签实体类
+ * @auther quanshu
+ * @create 2022-03-03 14:38:49
+ */
+@TableName("mp_ticket_tag")
+@Data
+public class TicketTag implements Serializable {
+
+  private static final long serialVersionUID = 1L;
+
+  /**
+   * 主键
+   */
+  @TableId(value = "tag_id" , type = IdType.AUTO)
+  private Long tagId;
+
+  /**
+   * 标签名
+   */
+  @TableField("name")
+  private String name;
+
+  /**
+   * 顺序
+   */
+  @TableField("sort")
+  private Integer sort;
+
+  /**
+   * 创建时间
+   */
+  @TableField("created_time")
+  private Date createdTime;
+
+  /**
+   * 更新时间
+   */
+  @TableField("updated_time")
+  private Date updatedTime;
+
+
+}

+ 53 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/TicketTagRel.java

@@ -0,0 +1,53 @@
+package com.qs.mp.admin.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * @describe 盲票组和标签的关系实体类
+ * @auther quanshu
+ * @create 2022-03-03 14:38:49
+ */
+@TableName("mp_ticket_tag_rel")
+@Data
+public class TicketTagRel implements Serializable {
+
+  private static final long serialVersionUID = 1L;
+
+  /**
+   * 主键
+   */
+  @TableId(value = "id" , type = IdType.AUTO)
+  private Long id;
+
+  /**
+   * 盲票组ID
+   */
+  @TableField("box_id")
+  private String boxId;
+
+  /**
+   * 标签ID
+   */
+  @TableField("tag_id")
+  private String tagId;
+
+  /**
+   * 创建时间
+   */
+  @TableField("created_time")
+  private Date createdTime;
+
+  /**
+   * 更新时间
+   */
+  @TableField("updated_time")
+  private Date updatedTime;
+
+
+}

+ 91 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/TicketBoxListVO.java

@@ -0,0 +1,91 @@
+package com.qs.mp.admin.domain.param;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.qs.mp.admin.domain.TicketBox;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * @author zhongcp
+ * @Date 2022/3/3
+ */
+@Data
+public class TicketBoxListVO {
+  /**
+   * 主键
+   */
+  private String boxId;
+
+  /**
+   * 盲票组标题
+   */
+  private String title;
+
+  /**
+   * 主图url
+   */
+  private String picUrl;
+
+  /**
+   * 盲票张数
+   */
+  private Integer quantity;
+
+  /**
+   * 已售盲票张数
+   */
+  private Integer saleQty;
+
+  /**
+   * 盲票包原价
+   */
+  private Integer boxPrice;
+
+  /**
+   * 盲票包售价
+   */
+  private Integer boxSalePrice;
+
+  /**
+   * 每包盲票张数
+   */
+  private Integer pkgUnit;
+
+  /**
+   * 盲票包数
+   */
+  private Integer pkgQty;
+
+  /**
+   * 已销售包数
+   */
+  private Integer salePkgQty;
+
+  /**
+   * 盲票票面价格
+   */
+  private Integer facePrice;
+
+  /**
+   * 盲票销售价格
+   */
+  private Integer salePrice;
+
+  /**
+   * 分佣的销售额百分比
+   */
+  private BigDecimal saleCommRate;
+
+  /**
+   * 规格属性
+   */
+  private String properties;
+
+  /**
+   * 上架时间
+   */
+  private Date putonTime;
+}

+ 7 - 1
mp-service/src/main/java/com/qs/mp/admin/domain/param/TicketBoxParam.java

@@ -11,9 +11,15 @@ import lombok.Data;
 @Data
 public class TicketBoxParam {
 
-	@ApiModelProperty(value = "分类ID",required=true)
+	@ApiModelProperty(value = "盲票组ID",required=false)
+	private String boxId;
+
+	@ApiModelProperty(value = "分类ID",required=false)
 	private Long categoryId;
 
+	@ApiModelProperty(value = "标签ID",required=false)
+	private Long tagId;
+
 	@NotNull(message = "盲票类型不能为空")
 	@ApiModelProperty(value = "盲票类型",required=true)
 	private TicketTypeEnum type;

+ 13 - 0
mp-service/src/main/java/com/qs/mp/admin/mapper/TicketCategoryMapper.java

@@ -0,0 +1,13 @@
+package com.qs.mp.admin.mapper;
+
+import com.qs.mp.admin.domain.TicketCategory;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @auther quanshu
+ * @create 2022-03-03 14:38:49
+ * @describe 盲票组分类表mapper类
+ */
+public interface TicketCategoryMapper extends BaseMapper<TicketCategory> {
+
+}

+ 13 - 0
mp-service/src/main/java/com/qs/mp/admin/mapper/TicketTagMapper.java

@@ -0,0 +1,13 @@
+package com.qs.mp.admin.mapper;
+
+import com.qs.mp.admin.domain.TicketTag;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @auther quanshu
+ * @create 2022-03-03 14:38:49
+ * @describe 盲票组标签mapper类
+ */
+public interface TicketTagMapper extends BaseMapper<TicketTag> {
+
+}

+ 13 - 0
mp-service/src/main/java/com/qs/mp/admin/mapper/TicketTagRelMapper.java

@@ -0,0 +1,13 @@
+package com.qs.mp.admin.mapper;
+
+import com.qs.mp.admin.domain.TicketTagRel;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @auther quanshu
+ * @create 2022-03-03 14:38:49
+ * @describe 盲票组和标签的关系mapper类
+ */
+public interface TicketTagRelMapper extends BaseMapper<TicketTagRel> {
+
+}

+ 16 - 0
mp-service/src/main/java/com/qs/mp/admin/service/ITicketCategoryService.java

@@ -0,0 +1,16 @@
+package com.qs.mp.admin.service;
+
+import com.qs.mp.admin.domain.TicketCategory;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 盲票组分类表 服务类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-03-03
+ */
+public interface ITicketCategoryService extends IService<TicketCategory> {
+
+}

+ 16 - 0
mp-service/src/main/java/com/qs/mp/admin/service/ITicketTagRelService.java

@@ -0,0 +1,16 @@
+package com.qs.mp.admin.service;
+
+import com.qs.mp.admin.domain.TicketTagRel;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 盲票组和标签的关系 服务类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-03-03
+ */
+public interface ITicketTagRelService extends IService<TicketTagRel> {
+
+}

+ 16 - 0
mp-service/src/main/java/com/qs/mp/admin/service/ITicketTagService.java

@@ -0,0 +1,16 @@
+package com.qs.mp.admin.service;
+
+import com.qs.mp.admin.domain.TicketTag;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 盲票组标签 服务类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-03-03
+ */
+public interface ITicketTagService extends IService<TicketTag> {
+
+}

+ 20 - 0
mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketCategoryServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qs.mp.admin.service.impl;
+
+import com.qs.mp.admin.domain.TicketCategory;
+import com.qs.mp.admin.mapper.TicketCategoryMapper;
+import com.qs.mp.admin.service.ITicketCategoryService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 盲票组分类表 服务实现类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-03-03
+ */
+@Service
+public class TicketCategoryServiceImpl extends ServiceImpl<TicketCategoryMapper, TicketCategory> implements ITicketCategoryService {
+
+}

+ 20 - 0
mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketTagRelServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qs.mp.admin.service.impl;
+
+import com.qs.mp.admin.domain.TicketTagRel;
+import com.qs.mp.admin.mapper.TicketTagRelMapper;
+import com.qs.mp.admin.service.ITicketTagRelService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 盲票组和标签的关系 服务实现类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-03-03
+ */
+@Service
+public class TicketTagRelServiceImpl extends ServiceImpl<TicketTagRelMapper, TicketTagRel> implements ITicketTagRelService {
+
+}

+ 20 - 0
mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketTagServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qs.mp.admin.service.impl;
+
+import com.qs.mp.admin.domain.TicketTag;
+import com.qs.mp.admin.mapper.TicketTagMapper;
+import com.qs.mp.admin.service.ITicketTagService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 盲票组标签 服务实现类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-03-03
+ */
+@Service
+public class TicketTagServiceImpl extends ServiceImpl<TicketTagMapper, TicketTag> implements ITicketTagService {
+
+}

+ 3 - 1
mp-service/src/main/java/com/qs/mp/channel/domain/ChannelCart.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.Version;
 import java.io.Serializable;
 import java.util.Date;
 import lombok.Data;
@@ -35,7 +36,7 @@ public class ChannelCart implements Serializable {
    * 盲票组ID
    */
   @TableField("box_id")
-  private Integer boxId;
+  private String boxId;
 
   /**
    * 订购包数
@@ -53,6 +54,7 @@ public class ChannelCart implements Serializable {
    * 更新时间
    */
   @TableField("updated_time")
+  @Version
   private Date updatedTime;
 
 

+ 24 - 0
mp-service/src/main/java/com/qs/mp/channel/domain/param/ChannelCartParam.java

@@ -0,0 +1,24 @@
+package com.qs.mp.channel.domain.param;
+
+import com.qs.mp.common.enums.TicketTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import javax.validation.constraints.NotNull;
+import lombok.Data;
+
+@ApiModel(value= "经销商购物车参数")
+@Data
+public class ChannelCartParam {
+
+	@NotNull(message = "盲票组ID不能为空")
+	@ApiModelProperty(value = "盲票组ID",required=true)
+	private String boxId;
+
+	@ApiModelProperty(value = "购物清单ID",required=false)
+	private Long cartId;
+
+	@NotNull(message = "订购数量不能为空")
+	@ApiModelProperty(value = "订购数量,负数代表减购",required=true)
+	private Integer orderNum;
+
+}

+ 21 - 0
mp-service/src/main/java/com/qs/mp/channel/domain/vo/ChannelCartVO.java

@@ -0,0 +1,21 @@
+package com.qs.mp.channel.domain.vo;
+
+import com.qs.mp.admin.domain.param.TicketBoxListVO;
+import lombok.Data;
+
+/**
+ * @author zhongcp
+ * @Date 2022/3/3
+ */
+@Data
+public class ChannelCartVO extends TicketBoxListVO {
+
+  /**
+   * 购物车清单ID
+   */
+  private Long cartId;
+  /**
+   * 订购数量
+   */
+  private Integer orderNum;
+}

+ 6 - 1
mp-service/src/main/java/com/qs/mp/channel/mapper/ChannelCartMapper.java

@@ -1,7 +1,12 @@
 package com.qs.mp.channel.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.qs.mp.channel.domain.ChannelCart;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qs.mp.channel.domain.vo.ChannelCartVO;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * @auther quanshu
@@ -9,5 +14,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @describe 经销商购物车mapper类
  */
 public interface ChannelCartMapper extends BaseMapper<ChannelCart> {
-
+  List<ChannelCartVO> listCartVO(@Param(Constants.WRAPPER) Wrapper<ChannelCart> queryWrapper);
 }

+ 19 - 0
mp-service/src/main/java/com/qs/mp/channel/service/IChannelCartService.java

@@ -1,7 +1,13 @@
 package com.qs.mp.channel.service;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.qs.mp.channel.domain.ChannelCart;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qs.mp.channel.domain.param.ChannelCartParam;
+import com.qs.mp.channel.domain.vo.ChannelCartVO;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -13,4 +19,17 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IChannelCartService extends IService<ChannelCart> {
 
+  /**
+   * 购物车列表
+   * @param queryWrapper
+   * @return
+   */
+  List<ChannelCartVO> listCartVO(Wrapper<ChannelCart> queryWrapper);
+
+  /**
+   * 加购,包含减购
+   * @param param
+   * @return
+   */
+  boolean addToCart(ChannelCartParam param);
 }

+ 50 - 0
mp-service/src/main/java/com/qs/mp/channel/service/impl/ChannelCartServiceImpl.java

@@ -1,9 +1,17 @@
 package com.qs.mp.channel.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.qs.mp.channel.domain.ChannelCart;
+import com.qs.mp.channel.domain.param.ChannelCartParam;
+import com.qs.mp.channel.domain.vo.ChannelCartVO;
 import com.qs.mp.channel.mapper.ChannelCartMapper;
 import com.qs.mp.channel.service.IChannelCartService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qs.mp.common.core.domain.AjaxResult;
+import com.qs.mp.common.exception.ServiceException;
+import com.qs.mp.utils.SecurityUtils;
+import java.util.List;
 import org.springframework.stereotype.Service;
 
 /**
@@ -17,4 +25,46 @@ import org.springframework.stereotype.Service;
 @Service
 public class ChannelCartServiceImpl extends ServiceImpl<ChannelCartMapper, ChannelCart> implements IChannelCartService {
 
+  @Override
+  public List<ChannelCartVO> listCartVO(Wrapper<ChannelCart> queryWrapper) {
+    return getBaseMapper().listCartVO(queryWrapper);
+  }
+
+  @Override
+  public boolean addToCart(ChannelCartParam param) {
+    Long channelId = SecurityUtils.getLoginUser().getChannelId();
+    if (null != param.getCartId() && 0 != param.getCartId()) {
+      // 在购物车里增减
+      ChannelCart channelCart = getById(param.getCartId());
+      if (null == channelCart) {
+        throw new ServiceException("购物清单不存在,请退出后再试");
+      }
+      return refreshCart(param, channelCart);
+    }
+
+    // 从盲票销售列表页面点加购
+    ChannelCart channelCart = getOne(new LambdaQueryWrapper<ChannelCart>()
+        .eq(ChannelCart::getBoxId, param.getBoxId()).eq(ChannelCart::getChannelId, channelId));
+    if (null != channelCart) {
+      // 购物车里已存在,只更新订购数量
+      return refreshCart(param, channelCart);
+    }
+
+    channelCart = new ChannelCart();
+    channelCart.setChannelId(channelId);
+    channelCart.setBoxId(param.getBoxId());
+    channelCart.setOrderNum(param.getOrderNum());
+    save(channelCart);
+    return false;
+  }
+
+  private boolean refreshCart(ChannelCartParam param, ChannelCart channelCart) {
+    int orderNum = channelCart.getOrderNum() + param.getOrderNum();
+    if (orderNum <= 0) {
+      throw new ServiceException("该宝贝不能再减少了");
+    }
+    channelCart.setOrderNum(orderNum);
+    boolean rtn = updateById(channelCart);
+    return rtn;
+  }
 }

+ 15 - 0
mp-service/src/main/java/com/qs/mp/common/domain/param/BatchLongIdsParam.java

@@ -0,0 +1,15 @@
+package com.qs.mp.common.domain.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import java.util.List;
+import lombok.Data;
+
+/**
+ * @author zhongcp
+ * @Date 2022/3/3
+ */
+@Data
+public class BatchLongIdsParam {
+  @ApiModelProperty(value = "ids")
+  private List<Long> ids;
+}

+ 3 - 1
mp-service/src/main/resources/mapper/admin/TicketBoxMapper.xml

@@ -21,14 +21,16 @@
         <result column="sale_price" property="salePrice" />
         <result column="sale_comm_rate" property="saleCommRate" />
         <result column="properties" property="properties" />
+        <result column="puton_time" property="putonTime" />
         <result column="status" property="status" />
+        <result column="is_deleted" property="isDeleted" />
         <result column="created_time" property="createdTime" />
         <result column="updated_time" property="updatedTime" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        box_id, title, pic_url, category_id, description, type, quantity, sale_qty, box_price, box_sale_price, pkg_unit, pkg_qty, sale_pkg_qty, face_price, sale_price, sale_comm_rate, properties, status, created_time, updated_time
+        box_id, title, pic_url, category_id, description, type, quantity, sale_qty, box_price, box_sale_price, pkg_unit, pkg_qty, sale_pkg_qty, face_price, sale_price, sale_comm_rate, properties, puton_time, status, is_deleted, created_time, updated_time
     </sql>
 
 </mapper>

+ 20 - 0
mp-service/src/main/resources/mapper/admin/TicketCategoryMapper.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qs.mp.admin.mapper.TicketCategoryMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qs.mp.admin.domain.TicketCategory">
+        <id column="category_id" property="categoryId" />
+        <result column="name" property="name" />
+        <result column="pic_url" property="picUrl" />
+        <result column="sort" property="sort" />
+        <result column="created_time" property="createdTime" />
+        <result column="updated_time" property="updatedTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        category_id, name, pic_url, sort, created_time, updated_time
+    </sql>
+
+</mapper>

+ 19 - 0
mp-service/src/main/resources/mapper/admin/TicketTagMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qs.mp.admin.mapper.TicketTagMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qs.mp.admin.domain.TicketTag">
+        <id column="tag_id" property="tagId" />
+        <result column="name" property="name" />
+        <result column="sort" property="sort" />
+        <result column="created_time" property="createdTime" />
+        <result column="updated_time" property="updatedTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        tag_id, name, sort, created_time, updated_time
+    </sql>
+
+</mapper>

+ 19 - 0
mp-service/src/main/resources/mapper/admin/TicketTagRelMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qs.mp.admin.mapper.TicketTagRelMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qs.mp.admin.domain.TicketTagRel">
+        <id column="id" property="id" />
+        <result column="box_id" property="boxId" />
+        <result column="tag_id" property="tagId" />
+        <result column="created_time" property="createdTime" />
+        <result column="updated_time" property="updatedTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, box_id, tag_id, created_time, updated_time
+    </sql>
+
+</mapper>

+ 7 - 0
mp-service/src/main/resources/mapper/channel/ChannelCartMapper.xml

@@ -17,4 +17,11 @@
         cart_id, channel_id, box_id, order_num, created_time, updated_time
     </sql>
 
+    <select id="listCartVO" resultType="com.qs.mp.channel.domain.vo.ChannelCartVO">
+        select t1.cart_id, t1.order_num, t2.*
+        from mp_channel_cart t1
+        left join mp_ticket_box t2 on t1.box_id = t2.box_id
+            ${ew.customSqlSegment}
+    </select>
+
 </mapper>