yangyb 1 hónapja
szülő
commit
d2d27cc6d2
21 módosított fájl, 865 hozzáadás és 57 törlés
  1. 50 3
      mall-service/src/main/java/com/txz/mall/controller/CombinationController.java
  2. 2 2
      mall-service/src/main/java/com/txz/mall/controller/FlashActivityController.java
  3. 30 2
      mall-service/src/main/java/com/txz/mall/controller/OrderController.java
  4. 2 2
      mall-service/src/main/java/com/txz/mall/controller/PinkController.java
  5. 2 2
      mall-service/src/main/java/com/txz/mall/controller/ProductAttrResultController.java
  6. 56 9
      mall-service/src/main/java/com/txz/mall/controller/ProductController.java
  7. 2 2
      mall-service/src/main/java/com/txz/mall/controller/ProductRuleController.java
  8. 33 33
      mall-service/src/main/java/com/txz/mall/model/StoreOrder.java
  9. 20 0
      mall-service/src/main/java/com/txz/mall/service/StoreCombinationService.java
  10. 25 0
      mall-service/src/main/java/com/txz/mall/service/StoreOrderService.java
  11. 22 0
      mall-service/src/main/java/com/txz/mall/service/StorePinkService.java
  12. 6 0
      mall-service/src/main/java/com/txz/mall/service/StoreProductService.java
  13. 217 0
      mall-service/src/main/java/com/txz/mall/service/impl/StoreCombinationServiceImpl.java
  14. 86 1
      mall-service/src/main/java/com/txz/mall/service/impl/StoreOrderServiceImpl.java
  15. 143 0
      mall-service/src/main/java/com/txz/mall/service/impl/StorePinkServiceImpl.java
  16. 20 0
      mall-service/src/main/java/com/txz/mall/service/impl/StoreProductServiceImpl.java
  17. 52 0
      mall-service/src/main/java/vo/GoPinkVO.java
  18. 39 0
      mall-service/src/main/java/vo/OrderRefundApplyVO.java
  19. 27 0
      mall-service/src/main/java/vo/StorePinkVO.java
  20. 30 0
      mall-service/src/main/java/vo/StoreProductCountItemVO.java
  21. 1 1
      mall-service/src/main/resources/mapper/StoreProductMapper.xml

+ 50 - 3
mall-service/src/main/java/com/txz/mall/controller/StoreCombinationController.java → mall-service/src/main/java/com/txz/mall/controller/CombinationController.java

@@ -5,6 +5,7 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.txz.mall.core.Result;
 import com.txz.mall.core.ResultCode;
+import com.txz.mall.core.ServiceException;
 import com.txz.mall.model.StoreCombination;
 import com.txz.mall.service.StoreCombinationService;
 import com.txz.mall.service.StorePinkService;
@@ -12,10 +13,13 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import tk.mybatis.mapper.entity.Condition;
 import tk.mybatis.mapper.entity.Example;
+import vo.GoPinkVO;
 import vo.StorePinkDetailVO;
+import vo.StorePinkVO;
 
 import javax.annotation.Resource;
 import java.util.Date;
@@ -27,9 +31,9 @@ import java.util.List;
 @Api(tags = "[后台]拼团商品表管理")
 @RestController
 @RequestMapping("/combination")
-public class StoreCombinationController {
+public class CombinationController {
 
-    private static Logger log = LoggerFactory.getLogger(StoreCombinationController.class);
+    private static Logger log = LoggerFactory.getLogger(CombinationController.class);
 
     @Resource
     private StoreCombinationService storeCombinationService;
@@ -59,6 +63,14 @@ public class StoreCombinationController {
         if (id == null) {
             return Result.fail(ResultCode.ID_IS_NULL);
         }
+        StoreCombination combination = storeCombinationService.findById(id);
+        if (combination == null) {
+            return Result.fail(ResultCode.OBJECT_IS_NULL);
+        }
+        Date date = new Date();
+        if (combination.getIsShow().equals(1) && combination.getStartTime().before(date) && combination.getStopTime().after(date)) {
+            throw new ServiceException("活动开启中,商品不支持删除");
+        }
         try {
             StoreCombination storeCombination = new StoreCombination();
             storeCombination.setId(id);
@@ -150,8 +162,43 @@ public class StoreCombinationController {
      * 拼团订单列表
      */
     @ApiOperation(value = "拼团订单列表")
-    @GetMapping(value = "/order_pink/{id}")
+    @GetMapping(value = "/orderPink/{id}")
     public Result<List<StorePinkDetailVO>> getPinkList(@PathVariable(value = "id") Integer id) {
         return Result.success(storePinkService.getAdminList(id));
     }
+
+    /**
+     * 去拼团
+     *
+     * @param pinkId 拼团团长单id
+     */
+    @ApiOperation(value = "去拼团")
+    @GetMapping(value = "/pink/{pinkId}")
+    public Result<GoPinkVO> goPink(@PathVariable(value = "pinkId") Integer pinkId) {
+        GoPinkVO goPinkResponse = storeCombinationService.goPink(pinkId);
+        return Result.success(goPinkResponse);
+    }
+
+    /**
+     * 更多拼团
+     */
+    @ApiOperation(value = "更多拼团")
+    @GetMapping(value = "/more")
+    public Result<PageInfo<StoreCombination>> getMore(@RequestParam Integer comId, @RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer size) {
+        PageInfo<StoreCombination> more = storeCombinationService.getMore(page, size, comId);
+        return Result.success(more);
+    }
+
+    /**
+     * 取消拼团
+     */
+    @ApiOperation(value = "取消拼团")
+    @PostMapping(value = "/remove")
+    public Result<Object> remove(@RequestBody @Validated StorePinkVO storePinkRequest) {
+        if (storeCombinationService.removePink(storePinkRequest)) {
+            return Result.success("取消成功");
+        } else {
+            return Result.fail("取消失败");
+        }
+    }
 }

+ 2 - 2
mall-service/src/main/java/com/txz/mall/controller/StoreFlashActivityController.java → mall-service/src/main/java/com/txz/mall/controller/FlashActivityController.java

@@ -24,9 +24,9 @@ import java.util.List;
 @Api(tags = "[后台]限时活动管理")
 @RestController
 @RequestMapping("/flash/activity")
-public class StoreFlashActivityController {
+public class FlashActivityController {
 
-    private static Logger log = LoggerFactory.getLogger(StoreFlashActivityController.class);
+    private static Logger log = LoggerFactory.getLogger(FlashActivityController.class);
 
     @Resource
     private StoreFlashActivityService storeFlashActivityService;

+ 30 - 2
mall-service/src/main/java/com/txz/mall/controller/StoreOrderController.java → mall-service/src/main/java/com/txz/mall/controller/OrderController.java

@@ -17,6 +17,7 @@ import tk.mybatis.mapper.entity.Example;
 import vo.StoreOrderCountItemVO;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import java.util.Date;
 import java.util.List;
 
@@ -26,9 +27,9 @@ import java.util.List;
 @Api(tags = "[后台]订单管理")
 @RestController
 @RequestMapping("/order")
-public class StoreOrderController {
+public class OrderController {
 
-    private static Logger log = LoggerFactory.getLogger(StoreOrderController.class);
+    private static Logger log = LoggerFactory.getLogger(OrderController.class);
 
     @Resource
     private StoreOrderService storeOrderService;
@@ -113,6 +114,19 @@ public class StoreOrderController {
         Example.Criteria criteria = condition.createCriteria();
         criteria.andEqualTo("isDelete", 0);
         condition.setOrderByClause("create_time DESC");
+        if (storeOrder.getOrderId() != null) {
+            criteria.andEqualTo("order_id", storeOrder.getOrderId());
+        }
+        if (storeOrder.getUid() != null) {
+            criteria.andEqualTo("uid", storeOrder.getUid());
+        }
+        if (storeOrder.getUserPhone() != null) {
+            criteria.andEqualTo("user_phone", storeOrder.getUserPhone());
+        }
+        if (storeOrder.getDeliveryId() != null) {
+            criteria.andEqualTo("delivery_id", storeOrder.getDeliveryId());
+        }
+
         PageInfo pageInfo = null;
         try {
             List<StoreOrder> list = storeOrderService.findByCondition(condition);
@@ -131,4 +145,18 @@ public class StoreOrderController {
             @RequestParam(value = "type", defaultValue = "2") @Range(min = 0, max = 2, message = "未知的订单类型") Integer type) {
         return Result.success(storeOrderService.getOrderStatusNum(dateLimit, type));
     }
+
+    @ApiOperation("导出订单")
+    @PostMapping("/export")
+    public Result exportFile(HttpServletResponse response) {
+        storeOrderService.exportFile(response);
+        return Result.success();
+    }
+
+    @ApiOperation("批量发货")
+    @PostMapping("/batchDelivery")
+    public Result batchDelivery(@RequestParam("ids") List<Long> ids) {
+        storeOrderService.batchDelivery(ids);
+        return Result.success();
+    }
 }

+ 2 - 2
mall-service/src/main/java/com/txz/mall/controller/StorePinkController.java → mall-service/src/main/java/com/txz/mall/controller/PinkController.java

@@ -24,9 +24,9 @@ import java.util.List;
 @Api(tags = "[后台]拼团管理")
 @RestController
 @RequestMapping("/pink")
-public class StorePinkController {
+public class PinkController {
 
-    private static Logger log = LoggerFactory.getLogger(StorePinkController.class);
+    private static Logger log = LoggerFactory.getLogger(PinkController.class);
 
     @Resource
     private StorePinkService storePinkService;

+ 2 - 2
mall-service/src/main/java/com/txz/mall/controller/StoreProductAttrResultController.java → mall-service/src/main/java/com/txz/mall/controller/ProductAttrResultController.java

@@ -24,9 +24,9 @@ import java.util.List;
 @Api(tags = "[后台]商品属性详情管理")
 @RestController
 @RequestMapping("/product/attr/result")
-public class StoreProductAttrResultController {
+public class ProductAttrResultController {
 
-    private static Logger log = LoggerFactory.getLogger(StoreProductAttrResultController.class);
+    private static Logger log = LoggerFactory.getLogger(ProductAttrResultController.class);
 
     @Resource
     private StoreProductAttrResultService storeProductAttrResultService;

+ 56 - 9
mall-service/src/main/java/com/txz/mall/controller/StoreProductController.java → mall-service/src/main/java/com/txz/mall/controller/ProductController.java

@@ -1,6 +1,7 @@
 package com.txz.mall.controller;
 
 import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.txz.mall.core.Result;
@@ -9,12 +10,14 @@ import com.txz.mall.model.StoreProduct;
 import com.txz.mall.service.StoreProductService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import tk.mybatis.mapper.entity.Condition;
 import tk.mybatis.mapper.entity.Example.Criteria;
+import vo.StoreProductCountItemVO;
 import vo.StoreProductInfoVO;
 
 import javax.annotation.Resource;
@@ -28,9 +31,9 @@ import java.util.List;
 @Api(tags = "[后台]商品管理")
 @RestController
 @RequestMapping("/product")
-public class StoreProductController {
+public class ProductController {
 
-    private static Logger log = LoggerFactory.getLogger(StoreProductController.class);
+    private static Logger log = LoggerFactory.getLogger(ProductController.class);
 
     @Resource
     private StoreProductService storeProductService;
@@ -82,16 +85,18 @@ public class StoreProductController {
 
     @PostMapping("/delete")
     @ApiOperation(value = "商品删除")
-    public Result delete(@RequestParam Long id) {
-        if (id == null) {
+    public Result delete(@RequestParam("ids") List<Long> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
             return Result.fail(ResultCode.ID_IS_NULL);
         }
-
         try {
-            StoreProduct storeProduct = new StoreProduct();
-            storeProduct.setId(id);
-            storeProduct.setIsDelete(1);
-            storeProductService.update(storeProduct);
+            ids.forEach(id -> {
+                StoreProduct storeProduct = new StoreProduct();
+                storeProduct.setId(id);
+                storeProduct.setIsDelete(1);
+                storeProduct.setUpdateTime(new Date());
+                storeProductService.update(storeProduct);
+            });
         } catch (Exception e) {
             log.error("删除对象操作异常e:{}", e);
             return Result.fail(ResultCode.INTERNAL_SERVER_ERROR);
@@ -134,6 +139,7 @@ public class StoreProductController {
             StoreProduct storeProduct = new StoreProduct();
             storeProduct.setUpdateTime(new Date());
 //            storeProduct.setUpdateUserId(userId);
+            storeProduct.setId(id);
             storeProduct.setIsShow(ShowStatus);
             storeProductService.update(storeProduct);
         } catch (Exception e) {
@@ -170,6 +176,15 @@ public class StoreProductController {
         Criteria criteria = condition.createCriteria();
         criteria.andEqualTo("isDelete", 0);
         condition.setOrderByClause("create_time DESC");
+        if (StringUtils.isNotBlank(storeProduct.getStoreName())) {
+            criteria.andLike("storeName", "%" + storeProduct.getStoreName() + "%");
+        }
+        if (StringUtils.isNotBlank(storeProduct.getItemNumber())) {
+            criteria.andLike("itemNumber", "%" + storeProduct.getItemNumber() + "%");
+        }
+        if (storeProduct.getCateId() != null) {
+            criteria.andEqualTo("cateId", storeProduct.getCateId());
+        }
         PageInfo pageInfo = null;
         try {
             List<StoreProduct> list = storeProductService.findByCondition(condition);
@@ -202,4 +217,36 @@ public class StoreProductController {
         return Result.success(storeProductService.getInfo(id));
     }
 
+    @PostMapping("/batchShowStatus")
+    @ApiOperation(value = "批量商品上下架")
+    public Result batchShowStatus(@RequestParam("ids") List<Long> ids, @RequestParam Integer ShowStatus) {
+        if (ShowStatus == null) {
+            return Result.fail(ResultCode.OBJECT_IS_NULL);
+        }
+        if (CollectionUtils.isEmpty(ids)) {
+            return Result.fail(ResultCode.ID_IS_NULL);
+        }
+
+        try {
+            ids.forEach(id -> {
+                StoreProduct storeProduct = new StoreProduct();
+                storeProduct.setUpdateTime(new Date());
+//                storeProduct.setUpdateUserId(userId);
+                storeProduct.setId(id);
+                storeProduct.setIsShow(ShowStatus);
+                storeProductService.update(storeProduct);
+            });
+        } catch (Exception e) {
+            log.error("更新对象操作异常e:{}", e);
+            return Result.fail(ResultCode.INTERNAL_SERVER_ERROR);
+        }
+        return Result.success();
+    }
+
+    @ApiOperation(value = "获取订单各状态数量")
+    @GetMapping(value = "/status/num")
+    public Result<StoreProductCountItemVO> getOrderStatusNum() {
+        return Result.success(storeProductService.getOrderStatusNum());
+    }
+
 }

+ 2 - 2
mall-service/src/main/java/com/txz/mall/controller/StoreProductRuleController.java → mall-service/src/main/java/com/txz/mall/controller/ProductRuleController.java

@@ -24,9 +24,9 @@ import java.util.List;
 @Api(tags = "[后台]商品规则管理")
 @RestController
 @RequestMapping("/product/rule")
-public class StoreProductRuleController {
+public class ProductRuleController {
 
-    private static Logger log = LoggerFactory.getLogger(StoreProductRuleController.class);
+    private static Logger log = LoggerFactory.getLogger(ProductRuleController.class);
 
     @Resource
     private StoreProductRuleService storeProductRuleService;

+ 33 - 33
mall-service/src/main/java/com/txz/mall/model/StoreOrder.java

@@ -256,26 +256,26 @@ public class StoreOrder {
     @ApiModelProperty(value = "管理员备注")
     private String remark;
 
-    /**
-     * 商户ID
-     */
-    @ApiModelProperty(value = "商户ID")
-    @Column(name = "mer_id")
-    private Long merId;
-
-    /**
-     * 是否是商户商品
-     */
-    @ApiModelProperty(value = "是否是商户商品")
-    @Column(name = "is_mer_check")
-    private Integer isMerCheck;
-
-    /**
-     * 拼团商品id0一般商品
-     */
-    @ApiModelProperty(value = "拼团商品id0一般商品")
-    @Column(name = "combination_id")
-    private Integer combinationId;
+//    /**
+//     * 商户ID
+//     */
+//    @ApiModelProperty(value = "商户ID")
+//    @Column(name = "mer_id")
+//    private Long merId;
+//
+//    /**
+//     * 是否是商户商品
+//     */
+//    @ApiModelProperty(value = "是否是商户商品")
+//    @Column(name = "is_mer_check")
+//    private Integer isMerCheck;
+//
+//    /**
+//     * 拼团商品id0一般商品
+//     */
+//    @ApiModelProperty(value = "拼团商品id0一般商品")
+//    @Column(name = "combination_id")
+//    private Integer combinationId;
 
     /**
      * 拼团id 0没有拼团
@@ -290,19 +290,19 @@ public class StoreOrder {
     @ApiModelProperty(value = "成本价")
     private BigDecimal cost;
 
-    /**
-     * 秒杀商品ID
-     */
-    @ApiModelProperty(value = "秒杀商品ID")
-    @Column(name = "seckill_id")
-    private Long seckillId;
-
-    /**
-     * 砍价id
-     */
-    @ApiModelProperty(value = "砍价id")
-    @Column(name = "bargain_id")
-    private Long bargainId;
+//    /**
+//     * 秒杀商品ID
+//     */
+//    @ApiModelProperty(value = "秒杀商品ID")
+//    @Column(name = "seckill_id")
+//    private Long seckillId;
+//
+//    /**
+//     * 砍价id
+//     */
+//    @ApiModelProperty(value = "砍价id")
+//    @Column(name = "bargain_id")
+//    private Long bargainId;
 
     /**
      * 核销码

+ 20 - 0
mall-service/src/main/java/com/txz/mall/service/StoreCombinationService.java

@@ -1,7 +1,10 @@
 package com.txz.mall.service;
 
+import com.github.pagehelper.PageInfo;
 import com.txz.mall.core.Service;
 import com.txz.mall.model.StoreCombination;
+import vo.GoPinkVO;
+import vo.StorePinkVO;
 
 import java.util.List;
 
@@ -18,4 +21,21 @@ public interface StoreCombinationService extends Service<StoreCombination> {
      * @param activityId
      */
     void addActivityProduct(List<StoreCombination> list, Long activityId);
+
+    /**
+     * 去拼团
+     *
+     * @param pinkId 拼团团长单ID
+     */
+    GoPinkVO goPink(Integer pinkId);
+
+    /**
+     * 更多拼团信息
+     */
+    PageInfo<StoreCombination> getMore(Integer page, Integer size, Integer comId);
+
+    /**
+     * 取消拼团
+     */
+    Boolean removePink(StorePinkVO storePinkRequest);
 }

+ 25 - 0
mall-service/src/main/java/com/txz/mall/service/StoreOrderService.java

@@ -2,8 +2,12 @@ package com.txz.mall.service;
 
 import com.txz.mall.core.Service;
 import com.txz.mall.model.StoreOrder;
+import vo.OrderRefundApplyVO;
 import vo.StoreOrderCountItemVO;
 
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
 
 /**
  * Created by CodeGenerator on 2025/07/15.
@@ -18,4 +22,25 @@ public interface StoreOrderService extends Service<StoreOrder> {
      * @return StoreOrderCountItemResponse
      */
     StoreOrderCountItemVO getOrderStatusNum(String dateLimit, Integer type);
+
+
+    /**
+     * 导出订单
+     *
+     * @param response 响应
+     */
+    void exportFile(HttpServletResponse response);
+
+    /**
+     * 批量发货
+     */
+    void batchDelivery(List<Long> ids);
+
+    /**
+     * 订单退款申请Task使用
+     *
+     * @param applyList 退款List
+     * @return Boolean
+     */
+    Boolean refundApplyTask(List<OrderRefundApplyVO> applyList);
 }

+ 22 - 0
mall-service/src/main/java/com/txz/mall/service/StorePinkService.java

@@ -19,4 +19,26 @@ public interface StorePinkService extends Service<StorePink> {
      * @return
      */
     List<StorePinkDetailVO> getAdminList(Integer pinkId);
+
+    /**
+     * 检查状态,更新数据
+     */
+    void detectionStatus();
+
+    /**
+     * 拼团成功
+     *
+     * @param kid
+     * @return
+     */
+    boolean pinkSuccess(Long kid);
+
+    /**
+     * 查询拼团列表
+     *
+     * @param cid 商品id
+     * @param kid 团长id 0为团长
+     */
+    List<StorePink> getListByCidAndKid(Long cid, Long kid);
+
 }

+ 6 - 0
mall-service/src/main/java/com/txz/mall/service/StoreProductService.java

@@ -3,6 +3,7 @@ package com.txz.mall.service;
 import com.txz.mall.core.Service;
 import com.txz.mall.model.StoreProduct;
 import org.springframework.web.multipart.MultipartFile;
+import vo.StoreProductCountItemVO;
 import vo.StoreProductInfoVO;
 
 import javax.servlet.http.HttpServletResponse;
@@ -34,4 +35,9 @@ public interface StoreProductService extends Service<StoreProduct> {
      * @return StoreProductInfoResponse
      */
     StoreProductInfoVO getInfo(Integer id);
+
+    /**
+     * 获取订单状态数量
+     */
+    StoreProductCountItemVO getOrderStatusNum();
 }

+ 217 - 0
mall-service/src/main/java/com/txz/mall/service/impl/StoreCombinationServiceImpl.java

@@ -1,5 +1,6 @@
 package com.txz.mall.service.impl;
 
+import com.github.pagehelper.PageInfo;
 import com.txz.mall.core.AbstractService;
 import com.txz.mall.core.ServiceException;
 import com.txz.mall.dao.StoreCombinationMapper;
@@ -9,6 +10,8 @@ import com.txz.mall.service.StoreCombinationService;
 import com.txz.mall.service.StoreFlashActivityService;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import vo.GoPinkVO;
+import vo.StorePinkVO;
 
 import javax.annotation.Resource;
 import java.util.List;
@@ -34,4 +37,218 @@ public class StoreCombinationServiceImpl extends AbstractService<StoreCombinatio
         }
         save(list);
     }
+
+
+    @Override
+    public GoPinkVO goPink(Integer pinkId) {
+        int isOk = 0;//判断拼团是否完成
+        int userBool = 0;//判断当前用户是否在团内  0未在 1在
+        int pinkBool = 0;//判断拼团是否成功  0未成功 1成功
+//
+//        StorePink teamPink = storePinkService.getById(pinkId);
+//        if (ObjectUtil.isNull(teamPink) || teamPink.getIsRefund()) throw new CrmebException("对应的拼团不存在");
+//        StoreCombination storeCombination = getById(teamPink.getCid());
+//        if (ObjectUtil.isNull(storeCombination) || storeCombination.getIsDel()) throw new CrmebException("对应拼团商品不存在");
+//
+//        // 判断拼团活动时效
+//        if (!storeCombination.getIsShow()) {
+//            throw new ServiceException("拼团活动已结束");
+//        }
+//        if (System.currentTimeMillis() > storeCombination.getStopTime()) {
+//            throw new ServiceException("拼团活动已结束");
+//        }
+//
+//        User user = userService.getInfo();
+//
+//        GoPinkResponse goPinkResponse = new GoPinkResponse();
+//        List<StorePink> pinkList;
+//        if (teamPink.getKId().equals(0)) {
+//            pinkList = storePinkService.getListByCidAndKid(teamPink.getCid(), teamPink.getId());
+//            pinkList.add(teamPink);
+//        } else {
+//            pinkList = storePinkService.getListByCidAndKid(teamPink.getCid(), teamPink.getKId());
+//            pinkList.add(storePinkService.getById(teamPink.getKId()));
+//        }
+//        //拼团剩余人数
+//        int count = teamPink.getPeople() - ( CollUtil.isEmpty(pinkList) ? 0 : pinkList.size() );
+//
+//        if (teamPink.getStatus() == 2) {//已完成
+//            isOk = 1;
+//            pinkBool = 1;
+//        }
+//        if (teamPink.getStatus() == 1) {//进行中
+//            if (count < 1) {// 拼团已完成
+//                isOk = 1;
+//                pinkBool = 1;
+//                // 拼团完成处理
+//                storePinkService.pinkSuccess(teamPink.getId());
+//            }
+//        }
+//
+//        List<Integer> uidList = pinkList.stream().map(StorePink::getUid).collect(Collectors.toList());
+//        uidList.add(teamPink.getUid());
+//        if (uidList.contains(user.getUid())) {
+//            userBool = 1;
+//        }
+//
+//        // 处理用户头像昵称
+//        List<StorePinkResponse> pinkResponseList = CollUtil.newArrayList();
+//        // 团长
+//        StorePinkResponse storePinkTResponse = new StorePinkResponse();
+//        for (StorePink pink : pinkList) {
+//            if (pink.getKId().equals(0)) {
+//                BeanUtils.copyProperties(pink, storePinkTResponse);
+//                if (pink.getUid().equals(user.getUid())) {
+//                    storePinkTResponse.setNickname(user.getNickname());
+//                    storePinkTResponse.setAvatar(user.getAvatar());
+//                } else {
+//                    User teamUser = userService.getById(pink.getUid());
+//                    storePinkTResponse.setNickname(teamUser.getNickname());
+//                    storePinkTResponse.setAvatar(teamUser.getAvatar());
+//                }
+//                continue;
+//            }
+//            StorePinkResponse storePinkResponse = new StorePinkResponse();
+//            BeanUtils.copyProperties(pink, storePinkResponse);
+//            User userOne = userService.getById(pink.getUid());
+//            storePinkResponse.setNickname(userOne.getNickname());
+//            storePinkResponse.setAvatar(userOne.getAvatar());
+//            pinkResponseList.add(storePinkResponse);
+//        }
+//
+//        goPinkResponse.setCount(count);
+//        goPinkResponse.setIsOk(isOk);
+//        goPinkResponse.setPinkBool(pinkBool);
+//        goPinkResponse.setUserBool(userBool);
+//        if (userBool == 1) {
+//            pinkList.forEach(e -> {
+//                if (e.getUid().equals(user.getUid())) {
+//                    goPinkResponse.setCurrentPinkOrder(e.getOrderId());
+//                }
+//            });
+//        }
+//        goPinkResponse.setPinkAll(pinkResponseList);
+//        goPinkResponse.setPinkT(storePinkTResponse);
+//        goPinkResponse.setUserInfo(user);
+//
+//        // storeCombination部分
+//        StoreCombinationResponse detailResponse = new StoreCombinationResponse();
+//        BeanUtils.copyProperties(storeCombination, detailResponse);
+//        detailResponse.setSpecType(false);
+//        // sku部分
+//        StoreProductAttr spavAttr = new StoreProductAttr();
+//        spavAttr.setProductId(storeCombination.getId());
+//        spavAttr.setType(Constants.PRODUCT_TYPE_PINGTUAN);
+//        List<StoreProductAttr> attrList = storeProductAttrService.getByEntity(spavAttr);
+//        List<HashMap<String, Object>> skuAttrList = getSkuAttrList(attrList);
+//        detailResponse.setProductAttr(skuAttrList);
+//        if (CollUtil.isNotEmpty(attrList) && attrList.size() > 1) {
+//            detailResponse.setSpecType(true);
+//        }
+//        // 单属性时讲attrValueId 赋值给外层方便前端使用
+//        if (!detailResponse.getSpecType()) {
+//            detailResponse.setAloneAttrValueId(attrList.get(0).getId());
+//        }
+//
+//
+//        StoreProductAttrValue spavValue = new StoreProductAttrValue();
+//        spavValue.setProductId(storeCombination.getId());
+//        spavValue.setType(Constants.PRODUCT_TYPE_PINGTUAN);
+//        List<StoreProductAttrValue> valueList = storeProductAttrValueService.getByEntity(spavValue);
+//        // H5 端用于生成skuList
+//        List<StoreProductAttrValueResponse> sPAVResponses = new ArrayList<>();
+//        for (StoreProductAttrValue storeProductAttrValue : valueList) {
+//            StoreProductAttrValueResponse atr = new StoreProductAttrValueResponse();
+//            BeanUtils.copyProperties(storeProductAttrValue, atr);
+//            sPAVResponses.add(atr);
+//        }
+//        HashMap<String, Object> skuMap = new HashMap<>();
+//        for (StoreProductAttrValueResponse attrValue : sPAVResponses) {
+//            skuMap.put(attrValue.getSuk(), attrValue);
+//        }
+//
+//        detailResponse.setProductValue(skuMap);
+//        goPinkResponse.setStoreCombination(detailResponse);
+//        return goPinkResponse;
+        return null;
+    }
+
+    @Override
+    public PageInfo<StoreCombination> getMore(Integer page, Integer size, Integer comId) {
+//        Page<StoreCombination> combinationPage = PageHelper.startPage(page, size);
+//        LambdaQueryWrapper<StoreCombination> lqw = new LambdaQueryWrapper<>();
+//        if (ObjectUtil.isNotNull(comId)) {
+//            lqw.ne(StoreCombination::getId, comId);
+//        }
+//        lqw.eq(StoreCombination::getIsDel, false);
+//        lqw.eq(StoreCombination::getIsShow, true);
+//        long millis = System.currentTimeMillis();
+//        lqw.le(StoreCombination::getStartTime, millis);
+//        lqw.ge(StoreCombination::getStopTime, millis);
+//        lqw.orderByDesc(StoreCombination::getSort, StoreCombination::getId);
+//        List<StoreCombination> storeCombinations = dao.selectList(lqw);
+//        return CommonPage.copyPageInfo(combinationPage, storeCombinations);
+        return null;
+    }
+
+    /**
+     * 取消拼团
+     *
+     * @return 此处只是转为申请退款订单
+     * 自己是团长,取消后,顺位第一人变为团长
+     * 自己不是团长,直接取消
+     */
+    @Override
+    public Boolean removePink(StorePinkVO storePinkRequest) {
+//        StorePink userPink = storePinkService.getById(storePinkRequest.getId());
+//        if (ObjectUtil.isNull(userPink)) throw new CrmebException("未查到拼团信息,无法取消");
+//        if (userPink.getIsRefund()) throw new CrmebException("拼团订单已退款");
+//        // 获取是否拼团成功
+//        if (userPink.getStatus() == 2) {
+//            throw new CrmebException("拼团已完成,无法取消");
+//        }
+//        Integer kid = userPink.getKId() > 0 ? userPink.getKId() : userPink.getId();
+//        Integer count = storePinkService.getCountByKid(kid);
+//        if (count.equals(userPink.getPeople())) {
+//            // 拼团完成操作
+//            storePinkService.pinkSuccess(kid);
+//            throw new CrmebException("拼团已完成,无法取消");
+//        }
+//        if (userPink.getStatus() == 3) {
+//            throw new CrmebException("拼团已申请取消");
+//        }
+//
+//        StoreOrder order = storeOrderService.getByOderId(userPink.getOrderId());
+//        if (ObjectUtil.isNull(order) || order.getIsDel()) throw new CrmebException("拼团订单不存在");
+//        if (order.getStatus() == -1 && order.getRefundStatus() != 0) {
+//            throw new CrmebException("拼团订单已进入退款流程");
+//        }
+//
+//        // 订单申请退款
+//        OrderRefundApplyRequest refundRequest = new OrderRefundApplyRequest();
+//        refundRequest.setId(order.getId());
+//        refundRequest.setUni(order.getOrderId());
+//        refundRequest.setText("拼团订单取消,申请退款");
+//        refundRequest.setExplain("用户取消拼团订单,申请退款");
+//        boolean apply = orderService.refundApply(refundRequest);
+//        if (!apply) throw new CrmebException("订单申请退款失败");
+//
+//        // 拼团改为未完成
+//        userPink.setStatus(3).setStopTime(System.currentTimeMillis());
+//        storePinkService.updateById(userPink);
+//        if (userPink.getKId() == 0) {// 是团长
+//            List<StorePink> pinkList = storePinkService.getListByCidAndKid(userPink.getCid(), userPink.getId());
+//            if (CollUtil.isNotEmpty(pinkList)) {
+//                // 团员更换团长
+//                StorePink newHeadPink = pinkList.get(pinkList.size() - 1);
+//                newHeadPink.setKId(0);
+//                pinkList.remove(pinkList.size() - 1);
+//                pinkList.forEach(i -> i.setKId(newHeadPink.getId()));
+//                pinkList.add(newHeadPink);
+//                storePinkService.updateBatchById(pinkList);
+//            }
+//        }
+
+        return true;
+    }
 }

+ 86 - 1
mall-service/src/main/java/com/txz/mall/service/impl/StoreOrderServiceImpl.java

@@ -2,19 +2,29 @@ package com.txz.mall.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.EasyExcel;
 import com.txz.mall.constants.Constants;
 import com.txz.mall.core.AbstractService;
+import com.txz.mall.core.ServiceException;
 import com.txz.mall.dao.StoreOrderMapper;
 import com.txz.mall.model.StoreOrder;
+import com.txz.mall.model.StoreProduct;
 import com.txz.mall.service.StoreOrderService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import tk.mybatis.mapper.entity.Condition;
 import tk.mybatis.mapper.entity.Example;
+import vo.OrderRefundApplyVO;
 import vo.StoreOrderCountItemVO;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.List;
 
 
 /**
@@ -22,6 +32,7 @@ import java.util.Arrays;
  */
 @Service
 @Transactional
+@Slf4j
 public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implements StoreOrderService {
     @Resource
     private StoreOrderMapper storeOrderMapper;
@@ -55,6 +66,80 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
         return response;
     }
 
+    @Override
+    public void exportFile(HttpServletResponse response) {
+        OutputStream outputStream = null;
+        try {
+            outputStream = response.getOutputStream();
+            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+            response.setCharacterEncoding("utf-8");
+            String fileName = URLEncoder.encode("导出订单", "UTF-8").replaceAll("\\+", "%20");
+            response.setHeader(
+                    "Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
+            List<StoreProduct> list = new ArrayList<>();
+            EasyExcel.write(outputStream, StoreOrder.class).sheet("导出订单").doWrite(list);
+        } catch (Exception e) {
+            throw new ServiceException("模板下载失败, 请联系管理员");
+        }
+    }
+
+    @Override
+    public void batchDelivery(List<Long> ids) {
+
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean refundApplyTask(List<OrderRefundApplyVO> applyList) {
+//        if (CollUtil.isEmpty(applyList)) {
+//            return false;
+//        }
+//        SystemNotification notification = systemNotificationService.getByMark(NotifyConstants.APPLY_ORDER_REFUND_ADMIN_MARK);
+//        List<SystemAdmin> systemAdminList = systemAdminService.findIsSmsList();
+//        SmsTemplate smsTemplate = smsTemplateService.getDetail(notification.getSmsId());
+//        Integer tempId = Integer.valueOf(smsTemplate.getTempId());
+//        List<StoreOrder> orderList = CollUtil.newArrayList();
+//        for (OrderRefundApplyVO request : applyList) {
+//            StoreOrder storeOrder = findById(request.getId());
+//            if (ObjectUtil.isNull(storeOrder)) {
+//                //订单号错误
+//                log.error("拼团自动处理订单申请退款:没有找到相关订单信息!");
+//                continue;
+//            }
+//            if (storeOrder.getRefundStatus() == 1) {
+//                log.error("拼团自动处理订单申请退款:正在申请退款中!");
+//                continue;
+//            }
+//
+//            if (storeOrder.getRefundStatus() == 2) {
+//                log.error("拼团自动处理订单申请退款:订单已退款!");
+//                continue;
+//            }
+//
+//            if (storeOrder.getRefundStatus() == 3) {
+//                log.error("拼团自动处理订单申请退款:订单退款中!");
+//                continue;
+//            }
+//
+//            storeOrder.setRefundReasonWapImg(systemAttachmentService.clearPrefix(request.getReasonImage()));
+//            storeOrder.setRefundStatus(1);
+//            storeOrder.setRefundReasonWapExplain(request.getExplain());
+//            storeOrder.setRefundReason(request.getText());
+//            storeOrder.setRefundPrice(BigDecimal.ZERO);
+//            storeOrder.setRefundReasonTime(DateUtil.nowDateTime());
+//            orderList.add(storeOrder);
+//
+//            // 发送用户退款管理员提醒短信
+//            if (notification.getIsSms().equals(1) && CollUtil.isNotEmpty(systemAdminList)) {
+//                // 发送短信
+//                systemAdminList.forEach(admin -> smsService.sendOrderRefundApplyNotice(admin.getPhone(), storeOrder.getOrderId(), admin.getRealName(), tempId));
+//            }
+//        }
+//
+//        return storeOrderService.updateBatchById(orderList, 100);
+        return true;
+    }
+
     private Integer getCount(String dateLimit, String status, Integer type) {
         //总数只计算时间
         Condition condition = new Condition(StoreOrder.class);
@@ -65,7 +150,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
             criteria.andEqualTo("type", type);
         }
         condition.setCountProperty("id");
-        return 0;
+        return this.findByCondition(condition).size();
     }
 
     /**

+ 143 - 0
mall-service/src/main/java/com/txz/mall/service/impl/StorePinkServiceImpl.java

@@ -1,10 +1,14 @@
 package com.txz.mall.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.txz.mall.core.AbstractService;
+import com.txz.mall.core.ServiceException;
 import com.txz.mall.dao.StorePinkMapper;
+import com.txz.mall.model.StoreCombination;
 import com.txz.mall.model.StoreOrder;
 import com.txz.mall.model.StorePink;
+import com.txz.mall.service.StoreCombinationService;
 import com.txz.mall.service.StoreOrderService;
 import com.txz.mall.service.StorePinkService;
 import org.springframework.beans.BeanUtils;
@@ -12,10 +16,12 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import tk.mybatis.mapper.entity.Condition;
 import tk.mybatis.mapper.entity.Example;
+import vo.OrderRefundApplyVO;
 import vo.StorePinkDetailVO;
 
 import javax.annotation.Resource;
 import java.util.Comparator;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -30,6 +36,8 @@ public class StorePinkServiceImpl extends AbstractService<StorePink> implements
     private StorePinkMapper storePinkMapper;
     @Resource
     private StoreOrderService storeOrderService;
+    @Resource
+    private StoreCombinationService storeCombinationService;
 
     @Override
     public List<StorePinkDetailVO> getAdminList(Integer pinkId) {
@@ -55,4 +63,139 @@ public class StorePinkServiceImpl extends AbstractService<StorePink> implements
         }).collect(Collectors.toList());
         return responseList;
     }
+
+    /**
+     * 检查状态,更新数据
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void detectionStatus() {
+        // 查找所有结束时间小等于当前的进行中拼团团长
+        Condition condition = new Condition(StorePink.class);
+        Example.Criteria criteria = condition.createCriteria();
+        criteria.andEqualTo("isDelete", 0);
+        criteria.andEqualTo("kId", 0);
+        criteria.andEqualTo("status", 1);
+        criteria.andLessThanOrEqualTo("stopTime", new Date());
+        List<StorePink> headList = findByCondition(condition);
+        if (CollUtil.isEmpty(headList)) {
+            return;
+        }
+        /**
+         * 1.判断是否拼团成功
+         * 2.成功的修改状态
+         * 3.失败的拼团改为失败,订单申请退款
+         */
+        List<StorePink> pinkSuccessList = CollUtil.newArrayList();
+        List<StorePink> pinkFailList = CollUtil.newArrayList();
+        List<OrderRefundApplyVO> applyList = CollUtil.newArrayList();
+        for (StorePink headPink : headList) {
+            // 查询团员
+            List<StorePink> memberList = getListByCidAndKid(headPink.getCid(), headPink.getId());
+            memberList.add(headPink);
+            if (headPink.getPeople().equals(memberList.size())) {
+                memberList.forEach(i -> i.setStatus(2));
+                pinkSuccessList.addAll(memberList);
+                continue;
+            }
+            // 计算虚拟比例,判断是否拼团成功
+            StoreCombination storeCombination = storeCombinationService.findById(headPink.getCid());
+            // 虚拟成团比例
+            Integer virtual = storeCombination.getVirtualRation();
+            if (headPink.getPeople() <= memberList.size() + virtual) {
+                // 可以虚拟成团
+                memberList.forEach(i -> {
+                    i.setStatus(2);
+                    i.setIsVirtual(1);
+                });
+                pinkSuccessList.addAll(memberList);
+                continue;
+            }
+            // 失败
+            headPink.setStatus(3);
+            // 订单申请退款
+            OrderRefundApplyVO refundRequest = new OrderRefundApplyVO();
+            refundRequest.setId(headPink.getOrderIdKey());
+            refundRequest.setText("拼团订单取消,申请退款");
+            refundRequest.setExplain("用户取消拼团订单,申请退款");
+            pinkFailList.add(headPink);
+            applyList.add(refundRequest);
+
+            // 团员处理
+            if (CollUtil.isNotEmpty(memberList)) {
+                memberList.forEach(i -> i.setStatus(3));
+                List<OrderRefundApplyVO> tempApplyList = memberList.stream().map(i -> {
+                    OrderRefundApplyVO tempRefundRequest = new OrderRefundApplyVO();
+                    tempRefundRequest.setId(headPink.getOrderIdKey());
+                    tempRefundRequest.setText("拼团订单取消,申请退款");
+                    tempRefundRequest.setExplain("用户取消拼团订单,申请退款");
+                    return tempRefundRequest;
+                }).collect(Collectors.toList());
+                pinkFailList.addAll(memberList);
+                applyList.addAll(tempApplyList);
+            }
+        }
+        if (CollUtil.isNotEmpty(pinkFailList) && pinkFailList.size() > 0) {
+//            boolean failUpdate = updateBatchById(pinkFailList, 100);
+//            if (!failUpdate) {
+//                throw new ServiceException("批量更新拼团状态,拼团未成功部分,失败");
+//            }
+        }
+        if (applyList.size() > 0) {
+            boolean task = storeOrderService.refundApplyTask(applyList);
+            if (!task) {
+                throw new ServiceException("拼团未成功,订单申请退款失败");
+            }
+        }
+        if (CollUtil.isNotEmpty(pinkSuccessList) && pinkSuccessList.size() > 0) {
+//            boolean successUpdate = updateBatchById(pinkSuccessList, 100);
+//            if (!successUpdate) {
+//                throw new ServiceException("批量更新拼团状态,拼团成功部分,失败");
+//            }
+//            SystemNotification notification = systemNotificationService.getByMark(NotifyConstants.GROUP_SUCCESS_MARK);
+//            if (notification.getIsRoutine().equals(1) || notification.getIsWechat().equals(1)) {
+//                pinkSuccessList.forEach(i -> {
+//                    StoreOrder storeOrder = storeOrderService.getByOderId(i.getOrderId());
+//                    StoreCombination storeCombination = storeCombinationService.getById(i.getCid());
+//                    User tempUser = userService.getById(i.getUid());
+//                    // 发送微信模板消息
+//                });
+//            }
+        }
+    }
+
+
+    /**
+     * 拼团成功
+     *
+     * @param kid
+     * @return
+     */
+    @Override
+    public boolean pinkSuccess(Long kid) {
+        if (ObjectUtil.isNull(kid)) {
+            return false;
+        }
+        StorePink teamPink = findById(kid);
+        List<StorePink> memberList = getListByCidAndKid(teamPink.getCid(), kid);
+        memberList.add(teamPink);
+        memberList.forEach(i -> {
+            i.setStatus(2);
+            i.setStopTime(new Date());
+            update(i);
+        });
+        return true;
+    }
+
+    @Override
+    public List<StorePink> getListByCidAndKid(Long cid, Long kid) {
+        Condition condition = new Condition(StorePink.class);
+        Example.Criteria criteria = condition.createCriteria();
+        criteria.andEqualTo("isDelete", 0);
+        criteria.andEqualTo("kId", kid);
+        criteria.andEqualTo("cid", cid);
+        condition.setOrderByClause("id DESC");
+        return findByCondition(condition);
+    }
+
 }

+ 20 - 0
mall-service/src/main/java/com/txz/mall/service/impl/StoreProductServiceImpl.java

@@ -11,6 +11,7 @@ import com.txz.mall.core.ServiceException;
 import com.txz.mall.dao.StoreProductMapper;
 import com.txz.mall.model.ProductAttr;
 import com.txz.mall.model.ProductAttrValue;
+import com.txz.mall.model.StoreOrder;
 import com.txz.mall.model.StoreProduct;
 import com.txz.mall.service.ProductAttrService;
 import com.txz.mall.service.ProductAttrValueService;
@@ -22,7 +23,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
+import tk.mybatis.mapper.entity.Condition;
+import tk.mybatis.mapper.entity.Example;
 import vo.AttrValueVO;
+import vo.StoreProductCountItemVO;
 import vo.StoreProductInfoVO;
 
 import javax.annotation.Resource;
@@ -157,4 +161,20 @@ public class StoreProductServiceImpl extends AbstractService<StoreProduct> imple
         }
         return activityList;
     }
+
+    @Override
+    public StoreProductCountItemVO getOrderStatusNum() {
+        StoreProductCountItemVO response = new StoreProductCountItemVO();
+
+        Condition condition = new Condition(StoreOrder.class);
+        Example.Criteria criteria = condition.createCriteria();
+        criteria.andEqualTo("isDelete", 0);
+        List<StoreProduct> productList = this.findByCondition(condition);
+
+        response.setAll(productList.size());
+        response.setAlreadyListed((int) productList.stream().filter(e -> e.getIsShow().equals(1)).count());
+        response.setRemoved((int) productList.stream().filter(e -> e.getIsShow().equals(0)).count());
+        response.setRecycle((int) productList.stream().filter(e -> e.getIsRecycle().equals(1)).count());
+        return response;
+    }
 }

+ 52 - 0
mall-service/src/main/java/vo/GoPinkVO.java

@@ -0,0 +1,52 @@
+package vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+@Data
+public class GoPinkVO implements Serializable {
+
+    private static final long serialVersionUID = 1962453930812558918L;
+
+    /**
+     * 拼团剩余人数
+     **/
+    private Integer count;
+
+    /**
+     * 当前拼团订单号
+     **/
+    private String currentPinkOrder;
+
+    /**
+     * 判断拼团是否完成
+     **/
+    private Integer isOk;
+
+    /**
+     * 团员列表
+     **/
+    private List<StorePinkVO> pinkAll;
+
+    /**
+     * 拼团是否成功  0未成功 1成功
+     **/
+    private Integer pinkBool;
+
+    /**
+     * 当前用户是否在团内  0未在 1在
+     **/
+    private Integer userBool;
+
+    /** 团长信息 **/
+//    private StorePinkResponse pinkT;
+//
+//    /** 当前拼团信息 **/
+//    private StoreCombinationVO storeCombination;
+//
+//    /** 当前用户信息 **/
+//    private User userInfo;
+}

+ 39 - 0
mall-service/src/main/java/vo/OrderRefundApplyVO.java

@@ -0,0 +1,39 @@
+package vo;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "OrderRefundApplyRequest对象", description = "订单申请退款")
+public class OrderRefundApplyVO {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "退款原因", required = true)
+    @NotNull(message = "退款原因必须填写")
+    @Length(max = 255, message = "退款原因不能超过255个字符")
+    private String text;
+
+    @ApiModelProperty(value = "订单id", required = true)
+    private Long id;
+
+    @ApiModelProperty(value = "退款凭证图片(多个图片请用,(英文逗号)隔开)")
+    @JsonProperty("refund_reason_wap_img")
+    private String reasonImage;
+
+    @ApiModelProperty(value = "备注说明")
+    @JsonProperty("refund_reason_wap_explain")
+    private String explain;
+
+    @ApiModelProperty(value = "待退款订单")
+    @NotNull(message = "待退款订单 不能为空")
+    private String uni;
+}

+ 27 - 0
mall-service/src/main/java/vo/StorePinkVO.java

@@ -0,0 +1,27 @@
+package vo;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("eb_store_pink")
+@ApiModel(value = "StorePink对象", description = "拼团表")
+public class StorePinkVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "拼团ID")
+    private Integer id;
+
+    @ApiModelProperty(value = "拼团商品id")
+    private Integer cid;
+}

+ 30 - 0
mall-service/src/main/java/vo/StoreProductCountItemVO.java

@@ -0,0 +1,30 @@
+package vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "StoreOrderCountItemResponse对象", description = "订单状态数量")
+public class StoreProductCountItemVO implements Serializable {
+
+    private static final long serialVersionUID = -8605913636959651047L;
+
+    @ApiModelProperty(value = "总数")
+    private Integer all;
+
+    @ApiModelProperty(value = "已上架")
+    private Integer alreadyListed;
+
+    @ApiModelProperty(value = "已下架")
+    private Integer removed;
+
+    @ApiModelProperty(value = "已删除(回收站)")
+    private Integer recycle;
+}

+ 1 - 1
mall-service/src/main/resources/mapper/StoreProductMapper.xml

@@ -17,7 +17,7 @@
     <result column="ot_price" jdbcType="DECIMAL" property="otPrice"/>
     <result column="postage" jdbcType="DECIMAL" property="postage"/>
     <result column="unit_name" jdbcType="VARCHAR" property="unitName"/>
-    <result column="sort" jdbcType="SMALLINT" property="sort"/>
+    <result column="sort" jdbcType="INTEGER" property="sort"/>
     <result column="sales" jdbcType="INTEGER" property="sales"/>
     <result column="stock" jdbcType="INTEGER" property="stock"/>
     <result column="is_show" jdbcType="INTEGER" property="isShow"/>