浏览代码

fixed 后台商品导入功能迭代

fushengqian 1 周之前
父节点
当前提交
fe97db5850

+ 0 - 8
fuint-application/src/main/java/com/fuint/common/service/CouponGroupService.java

@@ -1,7 +1,6 @@
 package com.fuint.common.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.fuint.common.dto.GroupDataDto;
 import com.fuint.common.dto.ReqCouponGroupDto;
 import com.fuint.framework.exception.BusinessCheckException;
 import com.fuint.framework.pagination.PaginationRequest;
@@ -9,7 +8,6 @@ import com.fuint.framework.pagination.PaginationResponse;
 import com.fuint.repository.model.MtCouponGroup;
 import org.springframework.web.multipart.MultipartFile;
 import javax.servlet.http.HttpServletRequest;
-import org.springframework.ui.Model;
 import java.math.BigDecimal;
 
 /**
@@ -101,10 +99,4 @@ public interface CouponGroupService extends IService<MtCouponGroup> {
      * */
      String saveExcelFile(MultipartFile file, HttpServletRequest request) throws Exception;
 
-    /**
-     * 获取分组统计数据
-     *
-     * @param groupId 分组ID
-     * */
-    GroupDataDto getGroupData(Integer groupId, HttpServletRequest request, Model model) throws BusinessCheckException;
 }

+ 20 - 0
fuint-application/src/main/java/com/fuint/common/service/GoodsService.java

@@ -9,6 +9,9 @@ import com.fuint.framework.pagination.PaginationResponse;
 import com.fuint.repository.model.MtGoods;
 import com.fuint.repository.model.MtGoodsSku;
 import com.fuint.repository.model.MtGoodsSpec;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
 import java.lang.reflect.InvocationTargetException;
 import java.util.*;
 
@@ -149,4 +152,21 @@ public interface GoodsService {
      * */
     String getStoreIds(Integer goodsId);
 
+    /**
+     * 保存文件
+     *
+     * @param request
+     * @param file excel文件
+     * */
+    String saveGoodsFile(HttpServletRequest request, MultipartFile file) throws Exception;
+
+    /**
+     * 导入商品
+     *
+     * @param file excel文件
+     * @param operator 操作者
+     * @param filePath 文件地址
+     * */
+    String importGoods(MultipartFile file, String operator, String filePath) throws BusinessCheckException;
+
 }

+ 0 - 69
fuint-application/src/main/java/com/fuint/common/service/impl/CouponGroupServiceImpl.java

@@ -4,11 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fuint.common.dto.CouponCellDto;
-import com.fuint.common.dto.GroupDataDto;
 import com.fuint.common.dto.ReqCouponGroupDto;
 import com.fuint.common.dto.ReqSendLogDto;
 import com.fuint.common.enums.StatusEnum;
-import com.fuint.common.enums.UserCouponStatusEnum;
 import com.fuint.common.service.*;
 import com.fuint.common.util.CommonUtil;
 import com.fuint.common.util.DateUtil;
@@ -33,7 +31,6 @@ import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.ui.Model;
 import org.springframework.util.ResourceUtils;
 import org.springframework.web.multipart.MultipartFile;
 import javax.servlet.http.HttpServletRequest;
@@ -67,11 +64,6 @@ public class CouponGroupServiceImpl extends ServiceImpl<MtCouponGroupMapper, MtC
      * */
     private CouponService couponService;
 
-    /**
-     * 会员卡券服务接口
-     * */
-    private UserCouponService userCouponService;
-
     /**
      * 会员服务接口
      * */
@@ -534,65 +526,4 @@ public class CouponGroupServiceImpl extends ServiceImpl<MtCouponGroupMapper, MtC
 
         return path;
     }
-
-    /**
-     * 获取分组统计数据
-     *
-     * @param groupId 分组ID
-     * */
-    public GroupDataDto getGroupData(Integer groupId, HttpServletRequest request, Model model) throws BusinessCheckException {
-        MtCouponGroup groupInfo = queryCouponGroupById(groupId);
-
-        // 已发放套数
-        Integer sendNum = 0;
-
-        // 未发放套数
-        Integer unSendNum = groupInfo.getTotal() - sendNum;
-
-        // 已使用张数
-        PaginationRequest requestUserCouponUse = new PaginationRequest();
-        requestUserCouponUse.getSearchParams().put("groupId", groupId.toString());
-        requestUserCouponUse.getSearchParams().put("status", UserCouponStatusEnum.USED.getKey());
-        PaginationResponse<MtUserCoupon> dataUserCoupon = userCouponService.queryUserCouponListByPagination(requestUserCouponUse);
-        Long useNum = dataUserCoupon.getTotalElements();
-
-        // 已过期张数
-        Date nowDate = new Date();
-        Integer expireNum = 0;
-        List<MtCoupon> couponList = couponService.queryCouponListByGroupId(groupId);
-        List<MtUserCoupon> userCouponList = mtUserCouponMapper.queryExpireNumByGroupId(groupId);
-        if (null != userCouponList) {
-            for (MtUserCoupon userCoupon: userCouponList) {
-                MtCoupon couponInfo = null;
-                for (MtCoupon coupon: couponList) {
-                    if (userCoupon.getCouponId().toString().equals(coupon.getId().toString())) {
-                        couponInfo = coupon;
-                        break;
-                    }
-                }
-                if (null == couponInfo) {
-                    continue;
-                }
-                if (nowDate.after(couponInfo.getEndTime())) {
-                    expireNum++;
-                }
-            }
-        }
-
-        // 已作废张数
-        PaginationRequest requestUserCouponCancel = new PaginationRequest();
-        requestUserCouponCancel.getSearchParams().put("groupId", groupId.toString());
-        requestUserCouponCancel.getSearchParams().put("status", UserCouponStatusEnum.DISABLE.getKey());
-        PaginationResponse<MtUserCoupon> dataUserCouponCancel = userCouponService.queryUserCouponListByPagination(requestUserCouponCancel);
-        Long cancelNum = dataUserCouponCancel.getTotalElements();
-
-        GroupDataDto data = new GroupDataDto();
-        data.setSendNum(sendNum);
-        data.setUnSendNum(unSendNum);
-        data.setUseNum(useNum.intValue());
-        data.setExpireNum(expireNum.intValue());
-        data.setCancelNum(cancelNum.intValue());
-
-        return data;
-    }
 }

+ 89 - 0
fuint-application/src/main/java/com/fuint/common/service/impl/GoodsServiceImpl.java

@@ -11,6 +11,9 @@ import com.fuint.common.enums.GoodsTypeEnum;
 import com.fuint.common.enums.StatusEnum;
 import com.fuint.common.enums.YesOrNoEnum;
 import com.fuint.common.service.*;
+import com.fuint.common.util.CommonUtil;
+import com.fuint.common.util.DateUtil;
+import com.fuint.common.util.XlsUtil;
 import com.fuint.framework.annoation.OperationServiceLog;
 import com.fuint.framework.exception.BusinessCheckException;
 import com.fuint.framework.pagination.PaginationRequest;
@@ -27,11 +30,20 @@ import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
+import org.springframework.core.env.Environment;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ResourceUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.File;
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -46,6 +58,8 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 public class GoodsServiceImpl extends ServiceImpl<MtGoodsMapper, MtGoods> implements GoodsService {
 
+    private static final Logger logger = LoggerFactory.getLogger(GoodsServiceImpl.class);
+
     private MtGoodsMapper mtGoodsMapper;
 
     private MtGoodsSpecMapper mtGoodsSpecMapper;
@@ -74,6 +88,11 @@ public class GoodsServiceImpl extends ServiceImpl<MtGoodsMapper, MtGoods> implem
      * */
     private CouponService couponService;
 
+    /**
+     * 系统环境变量
+     * */
+    private Environment env;
+
     /**
      * 分页查询商品列表
      *
@@ -779,4 +798,74 @@ public class GoodsServiceImpl extends ServiceImpl<MtGoodsMapper, MtGoods> implem
         return storeIds.stream().collect(Collectors.joining(","));
     }
 
+    /**
+     * 保存文件
+     *
+     * @param file excel文件
+     * @param request
+     * */
+    public String saveGoodsFile(HttpServletRequest request, MultipartFile file) throws Exception {
+        if (file == null) {
+            throw new BusinessCheckException("上传文件出错!");
+        }
+        String fileName = file.getOriginalFilename();
+        String uploadPath = fileName.substring(fileName.lastIndexOf("."));
+        String pathRoot = env.getProperty("images.root");
+        if (pathRoot == null || StringUtil.isEmpty(pathRoot)) {
+            pathRoot = ResourceUtils.getURL("classpath:").getPath();
+        }
+        String uuid = UUID.randomUUID().toString().replaceAll("-", "");
+
+        String filePath = "/static/uploadFiles/"+ DateUtil.formatDate(new Date(), "yyyyMMdd")+"/";
+        String path = filePath + uuid + uploadPath;
+
+        try {
+            File tempFile = new File(pathRoot + path);
+            if (!tempFile.getParentFile().exists()) {
+                tempFile.getParentFile().mkdirs();
+            }
+            CommonUtil.saveMultipartFile(file, pathRoot + path);
+        } catch (Exception e) {
+            logger.error("上传商品保存文件出错:", e.getMessage());
+        }
+
+        return path;
+    }
+
+    /**
+     * 导入商品
+     *
+     * @param file excel文件
+     * @param operator 操作者
+     * */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    @OperationServiceLog(description = "导入发券列表")
+    public String importGoods(MultipartFile file, String operator, String filePath) throws BusinessCheckException {
+        String originalFileName = file.getOriginalFilename();
+        boolean isExcel2003 = XlsUtil.isExcel2003(originalFileName);
+        boolean isExcel2007 = XlsUtil.isExcel2007(originalFileName);
+
+        if (!isExcel2003 && !isExcel2007) {
+            logger.error("importGoods->uploadFile:{}", "文件类型不正确");
+            throw new BusinessCheckException("文件类型不正确");
+        }
+
+        List<List<String>> content = new ArrayList<>();
+        try {
+            content = XlsUtil.readExcelContent(file.getInputStream(), isExcel2003, 1, null, null, null);
+        } catch (IOException e) {
+            logger.error("GoodsServiceImpl->parseExcelContent{}", e);
+            throw new BusinessCheckException("导入失败" + e.getMessage());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        if (content != null && content.size() > 0) {
+            // empty
+        }
+
+        return "";
+    }
+
 }

+ 25 - 0
fuint-application/src/main/java/com/fuint/module/backendApi/controller/BackendGoodsController.java

@@ -25,6 +25,9 @@ import lombok.AllArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+
 import javax.servlet.http.HttpServletRequest;
 import java.lang.reflect.InvocationTargetException;
 import java.math.BigDecimal;
@@ -765,4 +768,26 @@ public class BackendGoodsController extends BaseController {
 
         return getSuccessResult(result);
     }
+
+    /**
+     * 上传商品导入文件
+     *
+     * @param request
+     * @throws
+     */
+    @ApiOperation(value = "上传文件")
+    @RequestMapping(value = "/uploadGoodsFile", method = RequestMethod.POST)
+    @CrossOrigin
+    public ResponseObject uploadGoodsFile(HttpServletRequest request) throws Exception {
+        String token = request.getHeader("Access-Token");
+        AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
+
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        MultipartFile file = multipartRequest.getFile("file");
+
+        String filePath = goodsService.saveGoodsFile(request, file);
+        String uuid = goodsService.importGoods(file, accountInfo.getAccountName(), filePath);
+
+        return getSuccessResult(uuid);
+    }
 }

+ 3 - 0
fuint-repository/src/main/resources/mapper/MtOrderMapper.xml

@@ -51,6 +51,9 @@
 
     <select id="getPayUserCount" resultType="java.lang.Integer">
         SELECT COUNT(DISTINCT t.USER_ID) as num FROM mt_order t where t.PAY_STATUS='B' and t.STATUS not in('C', 'G', 'H')
+        <if test="merchantId != null and merchantId > 0">
+            and t.MERCHANT_ID = #{merchantId}
+        </if>
     </select>
 
     <select id="getStorePayUserCount" resultType="java.lang.Integer">