Browse Source

fixed 会员导入功能迭代:导入校验

fushengqian 1 month ago
parent
commit
6487b35131

+ 2 - 1
fuint-application/src/main/java/com/fuint/common/service/MemberService.java

@@ -14,6 +14,7 @@ import com.fuint.repository.model.MtUserGrade;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
+import java.text.ParseException;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -270,6 +271,6 @@ public interface MemberService extends IService<MtUser> {
      * @param accountInfo 操作者
      * @param filePath 文件地址
      * */
-    Boolean importMember(MultipartFile file, AccountInfo accountInfo, String filePath) throws BusinessCheckException;
+    Boolean importMember(MultipartFile file, AccountInfo accountInfo, String filePath) throws BusinessCheckException, ParseException;
 
 }

+ 9 - 0
fuint-application/src/main/java/com/fuint/common/service/UserGradeService.java

@@ -81,4 +81,13 @@ public interface UserGradeService extends IService<MtUserGrade> {
      * @return
      * */
     List<MtUserGrade> getPayUserGradeList(Integer merchantId, MtUser userInfo) throws BusinessCheckException;
+
+    /**
+     * 获取商户会员等级列表
+     *
+     * @param  merchantId
+     * @return
+     * */
+    List<MtUserGrade> getMerchantGradeList(Integer merchantId);
+
 }

+ 41 - 1
fuint-application/src/main/java/com/fuint/common/service/impl/MemberServiceImpl.java

@@ -38,6 +38,7 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
 import java.math.BigDecimal;
+import java.text.ParseException;
 import java.util.*;
 
 /**
@@ -1042,7 +1043,7 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
     @Override
     @Transactional(rollbackFor = Exception.class)
     @OperationServiceLog(description = "导入会员列表")
-    public Boolean importMember(MultipartFile file, AccountInfo accountInfo, String filePath) throws BusinessCheckException {
+    public Boolean importMember(MultipartFile file, AccountInfo accountInfo, String filePath) throws BusinessCheckException, ParseException {
         String originalFileName = file.getOriginalFilename();
         boolean isExcel2003 = XlsUtil.isExcel2003(originalFileName);
         boolean isExcel2007 = XlsUtil.isExcel2007(originalFileName);
@@ -1070,8 +1071,47 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
             if (memberList.size() > 5000) {
                 throw new BusinessCheckException("会员导入失败,单次导入会员数量不能大于5000");
             }
+            // 先校验,是否已存在,是否为空,是否重复
+            List<MtUser> userList = new ArrayList<>();
+            List<MtUserGrade> userGrades = userGradeService.getMerchantGradeList(accountInfo.getMerchantId());
             for (int i = 0; i < memberList.size(); i++) {
+                 List<String> userInfo = memberList.get(0);
+                 String username = userInfo.get(0);
+                 String userNo = userInfo.get(1);
+                 Integer sex = userInfo.get(3).equals("男") ? 1 : 0;
+                 MtUser mtUser = new MtUser();
+                 mtUser.setName(username);
+                 mtUser.setUserNo(userNo);
+                 mtUser.setIdcard(userInfo.get(2));
+                 mtUser.setSex(sex);
+                 mtUser.setMobile(userInfo.get(4));
+                 mtUser.setBirthday(userInfo.get(5));
+                 mtUser.setDescription(userInfo.get(6));
+                 mtUser.setCarNo(userInfo.get(7));
+                 String gradeName = userInfo.get(8);
+                 String gradeId = "0";
+                 if (StringUtil.isNotEmpty(gradeName)) {
+                     for (MtUserGrade userGrade : userGrades) {
+                          if (userGrade.getName().equals(gradeName)) {
+                              gradeId = userGrade.getId().toString();
+                          }
+                     }
+                 }
+                 mtUser.setGradeId(gradeId);
+                 mtUser.setStartTime(new Date());
+                 String gradeDate = userInfo.get(9);
+                 if (StringUtil.isNotEmpty(gradeDate)) {
+                    mtUser.setEndTime(DateUtil.parseDate(userInfo.get(9)));
+                 }
+                 mtUser.setPoint(Integer.parseInt(userInfo.get(10)));
+                 mtUser.setBalance(new BigDecimal(userInfo.get(11)));
+                 String status = userInfo.get(12).equals("正常") ? StatusEnum.ENABLED.getKey() : StatusEnum.FORBIDDEN.getKey();
+                 mtUser.setStatus(status);
+                 userList.add(mtUser);
+            }
 
+            for (MtUser mtUser : userList) {
+                 addMember(mtUser, null);
             }
         }
 

+ 12 - 0
fuint-application/src/main/java/com/fuint/common/service/impl/UserGradeServiceImpl.java

@@ -248,4 +248,16 @@ public class UserGradeServiceImpl extends ServiceImpl<MtUserGradeMapper, MtUserG
 
         return dataList;
     }
+
+    /**
+     * 获取商户会员等级列表
+     *
+     * @param  merchantId
+     * @throws BusinessCheckException
+     * @return
+     * */
+    @Override
+    public List<MtUserGrade> getMerchantGradeList(Integer merchantId) {
+        return mtUserGradeMapper.getMerchantGradeList(merchantId);
+    }
 }

BIN
fuint-application/src/main/resources/template/MemberTemplate.xlsx


+ 6 - 1
fuint-repository/src/main/java/com/fuint/repository/mapper/MtUserGradeMapper.java

@@ -2,6 +2,9 @@ package com.fuint.repository.mapper;
 
 import com.fuint.repository.model.MtUserGrade;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  *  Mapper 接口
@@ -10,5 +13,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * CopyRight https://www.fuint.cn
  */
 public interface MtUserGradeMapper extends BaseMapper<MtUserGrade> {
-   // empty
+
+    List<MtUserGrade> getMerchantGradeList(@Param("merchantId") Integer merchantId);
+
 }

+ 3 - 1
fuint-repository/src/main/resources/mapper/MtUserGradeMapper.xml

@@ -1,5 +1,7 @@
 <?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.fuint.repository.mapper.MtUserGradeMapper">
-
+    <select id="getMerchantGradeList" resultType="com.fuint.repository.model.MtUserGrade">
+        select * from mt_user_grade t where t.MERCHANT_ID = #{merchantId} and t.STATUS != 'D'
+    </select>
 </mapper>