leon пре 4 година
родитељ
комит
7faeeb810d

+ 43 - 2
src/main/java/com/mokamrp/privates/controller/pangu/FosterwxMobileController.java

@@ -1,7 +1,9 @@
 package com.mokamrp.privates.controller.pangu;
 
+import com.aliyun.oss.model.PutObjectRequest;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.mokamrp.privates.config.OSSConfiguration;
 import com.mokamrp.privates.constant.Constants;
 import com.mokamrp.privates.constant.HttpMsg;
 import com.mokamrp.privates.constant.HttpStatus;
@@ -17,6 +19,7 @@ import com.mokamrp.privates.mapper.pojo.Corp;
 import com.mokamrp.privates.mapper.pojo.User;
 import com.mokamrp.privates.service.CorpService;
 import com.mokamrp.privates.service.pangu.*;
+import com.mokamrp.privates.utils.OssFile;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
@@ -25,6 +28,8 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.Valid;
+import java.io.ByteArrayInputStream;
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.*;
@@ -699,7 +704,6 @@ public class FosterwxMobileController extends BaseController<FosterwxMobile> {
             return AjaxResult.error(voltaRes.getErr());
         }
         row = voltaRes.getData();
-
         StringBuffer sb = new StringBuffer();
         row.forEach(map -> {
             LambdaQueryWrapper<FosterwxMobile> fosterwxMobileLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -708,7 +712,6 @@ public class FosterwxMobileController extends BaseController<FosterwxMobile> {
             if (fosterwxMobileService.count(fosterwxMobileLambdaQueryWrapper) == 0)
                 sb.append("手机唯一编码:" + map.get("mobileUnioCode") + "不存在<br>");
         });
-
         if (sb.length() > 0) return AjaxResult.error(sb.toString().substring(0, sb.length() - 4));
 
         row.forEach(map -> {
@@ -1018,5 +1021,43 @@ public class FosterwxMobileController extends BaseController<FosterwxMobile> {
 
         return AjaxResult.success(baseVO);
     }
+//    @PostMapping("/export")
+//    public Object export(@Valid @RequestBody GetForsterwxMobileHandle getForsterwxMobileHandle, BindingResult bindingResult){
+//        if (bindingResult.hasErrors()) {
+//            return AjaxResult.error(HttpStatus.ERROR, bindingResult.getFieldError().getDefaultMessage());
+//        }
+//
+//        List<Object> tempObj;
+//        List<List<Object>> resList = new ArrayList<List<Object>>();
+//        Object[] head = {"","",""};
+//        List<Object> headList = Arrays.asList(head);
+//        Date currentTime = new Date();
+//        String fileName = "活码数据.csv";
+//        resList.add(headList);
+//        for (){
+//            tempObj = new ArrayList<Object>() {
+//                {
+//                    this.add(promoteDataGroup.getDs());
+//                    this.add(promoteDataGroup.getPromoteId());
+//                    this.add(promoteDataGroup.getPromoteName());
+//                    this.add(promoteDataGroup.getCustserviceId());
+//                    this.add(promoteDataGroup.getCustserviceName());
+//                    this.add(promoteDataGroup.getTakeQrcodePv());
+//                    this.add(promoteDataGroup.getTakeQrcodeUv());
+//                    this.add(promoteDataGroup.getLongTouchPv());
+//                    this.add(promoteDataGroup.getLongTouchUv());
+//                }
+//            };
+//            resList.add(tempObj);
+//        }
+//        StringBuffer content = OssFile.createCSV(resList);
+//        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+//        String dateString = formatter.format(currentTime);
+//        String randNum = Integer.toString((int)(10000+Math.random()*(99999-10000+1)));
+//        String filePath = OSSConfiguration.PAN_DIR + dateString + "/" + randNum + "_" + fileName;
+//        PutObjectRequest putObjectRequest = new PutObjectRequest(ossConfiguration.getBucketName(), filePath,
+//                new ByteArrayInputStream(content.toString().getBytes()));
+//        ossClient.putObject(putObjectRequest);
+//    }
 }
 

+ 82 - 4
src/main/java/com/mokamrp/privates/controller/pangu/FosterwxMobileWxfriendController.java

@@ -1,6 +1,9 @@
 package com.mokamrp.privates.controller.pangu;
 
+import com.aliyun.oss.OSS;
+import com.aliyun.oss.model.PutObjectRequest;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.mokamrp.privates.config.OSSConfiguration;
 import com.mokamrp.privates.constant.HttpMsg;
 import com.mokamrp.privates.constant.HttpStatus;
 import com.mokamrp.privates.entity.PostBasePageHandle;
@@ -8,10 +11,14 @@ import com.mokamrp.privates.entity.ResHandle;
 import com.mokamrp.privates.entity.VoltaHandle;
 import com.mokamrp.privates.entity.pangu.AddFosterwxMobileHandle;
 import com.mokamrp.privates.help.AjaxResult;
+import com.mokamrp.privates.help.Analysis;
+import com.mokamrp.privates.interceptor.AuthUser;
 import com.mokamrp.privates.mapper.pangu.pojo.FosterwxMobile;
 import com.mokamrp.privates.mapper.pangu.pojo.FosterwxStation;
+import com.mokamrp.privates.mapper.pojo.User;
 import com.mokamrp.privates.service.pangu.FosterwxMobileService;
 import com.mokamrp.privates.service.pangu.FosterwxStationService;
+import com.mokamrp.privates.utils.OssFile;
 import org.aspectj.weaver.loadtime.Aj;
 import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,12 +28,13 @@ import com.mokamrp.privates.service.pangu.FosterwxMobileWxfriendService;
 import com.mokamrp.privates.mapper.pangu.pojo.FosterwxMobileWxfriend;
 import org.springframework.web.bind.annotation.RequestMapping;
 import com.mokamrp.privates.controller.BaseController;
+import org.springframework.web.multipart.MultipartFile;
+
 import javax.validation.Valid;
+import java.io.ByteArrayInputStream;
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -50,6 +58,11 @@ public class FosterwxMobileWxfriendController extends BaseController<FosterwxMob
 
     @Autowired
     public FosterwxMobileService fosterwxMobileService;
+    @Autowired
+    private OSSConfiguration ossConfiguration;
+
+    @Autowired
+    private OSS ossClient;
     /*
      * @fast
      * 默认生成的控制器所继承的父类中有index/add/edit/del四个基础方法,均为post json请求
@@ -65,6 +78,16 @@ public class FosterwxMobileWxfriendController extends BaseController<FosterwxMob
         return AjaxResult.success(res);
     }
 
+    @PostMapping("/listPro")
+    public Object listPro(@Valid @RequestBody PostBasePageHandle postBasePageHandle, BindingResult bindingResult){
+        if (bindingResult.hasErrors()) {
+            return AjaxResult.error(HttpStatus.ERROR, bindingResult.getFieldError().getDefaultMessage());
+        }
+        ResHandle<List<FosterwxMobileWxfriend>> res = fosterwxMobileWxfriendService.getListPro(postBasePageHandle);
+        return AjaxResult.success(res);
+    }
+
+
     /**
      * 新增好友,会加入seq
      * @param addFosterwxMobileHandle
@@ -120,5 +143,60 @@ public class FosterwxMobileWxfriendController extends BaseController<FosterwxMob
         fosterwxMobileWxfriendService.removeAndAdd(addFosterwxMobileHandle);
         return AjaxResult.success();
     }
+
+    @PostMapping("/import")
+    public Object uploadFile(@RequestBody MultipartFile file, @AuthUser User authUser) {
+        Map<String, Object> map = new HashMap<>(16);
+        Map<Integer, String> feild = new HashMap<>(5);
+        feild.put(0, "stationName");
+        feild.put(1, "mobileCode");
+        feild.put(2, "friendId");
+        List<Map<String, String>> row = new ArrayList<>();
+        VoltaHandle<ArrayList<Map<String, String>>> voltaRes = Analysis.analysis(file, feild);
+        if (voltaRes.getErr() != null) {
+            return AjaxResult.error(voltaRes.getErr());
+        }
+        row = voltaRes.getData();
+        try {
+            VoltaHandle<Boolean> res = fosterwxMobileWxfriendService.importData(row, authUser);
+        } catch (Exception e) {
+            return AjaxResult.error(e.getMessage());
+        }
+        return AjaxResult.success(HttpMsg.importSuccess);
+    }
+
+    @PostMapping("/export")
+    public Object export(@Valid @RequestBody PostBasePageHandle postBasePageHandle, BindingResult bindingResult){
+        if (bindingResult.hasErrors()) {
+            return AjaxResult.error(HttpStatus.ERROR, bindingResult.getFieldError().getDefaultMessage());
+        }
+        ResHandle<List<FosterwxMobileWxfriend>> res = fosterwxMobileWxfriendService.export(postBasePageHandle);
+        List<Object> tempObj;
+        List<List<Object>> resList = new ArrayList<List<Object>>();
+        Object[] head = {"站点编号","账号编号","好友ID"};
+        List<Object> headList = Arrays.asList(head);
+        Date currentTime = new Date();
+        String fileName = "账号绑定好友数据.csv";
+        resList.add(headList);
+        for (FosterwxMobileWxfriend fosterwxMobileWxfriend : res.getList()){
+            tempObj = new ArrayList<Object>() {
+                {
+                    this.add(fosterwxMobileWxfriend.getStationName());
+                    this.add(fosterwxMobileWxfriend.getMobileCode());
+                    this.add(fosterwxMobileWxfriend.getFriendId());
+                }
+            };
+            resList.add(tempObj);
+        }
+        StringBuffer content = OssFile.createCSV(resList);
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+        String dateString = formatter.format(currentTime);
+        String randNum = Integer.toString((int)(10000+Math.random()*(99999-10000+1)));
+        String filePath = OSSConfiguration.PAN_DIR + dateString + "/" + randNum + "_" + fileName;
+        PutObjectRequest putObjectRequest = new PutObjectRequest(ossConfiguration.getBucketName(), filePath,
+                new ByteArrayInputStream(content.toString().getBytes()));
+        ossClient.putObject(putObjectRequest);
+        return AjaxResult.success(ossConfiguration.getHost() + filePath);
+    }
 }
 

+ 48 - 2
src/main/java/com/mokamrp/privates/controller/pangu/FosterwxWxfriendController.java

@@ -1,9 +1,14 @@
 package com.mokamrp.privates.controller.pangu;
 
+import com.aliyun.oss.OSS;
+import com.aliyun.oss.model.PutObjectRequest;
+import com.mokamrp.privates.config.OSSConfiguration;
 import com.mokamrp.privates.constant.HttpStatus;
 import com.mokamrp.privates.entity.PostBasePageHandle;
 import com.mokamrp.privates.help.AjaxResult;
 import com.mokamrp.privates.entity.ResHandle;
+import com.mokamrp.privates.mapper.pangu.pojo.FosterwxMobileWxfriend;
+import com.mokamrp.privates.utils.OssFile;
 import io.swagger.annotations.Api;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
@@ -15,8 +20,9 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import com.mokamrp.privates.controller.BaseController;
 import javax.validation.Valid;
-import java.util.Map;
-import java.util.List;
+import java.io.ByteArrayInputStream;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 import org.springframework.web.bind.annotation.RestController;
 
@@ -36,7 +42,11 @@ public class FosterwxWxfriendController extends BaseController<FosterwxWxfriend>
 
     @Autowired
     public FosterwxWxfriendService fosterwxWxfriendService;
+    @Autowired
+    private OSSConfiguration ossConfiguration;
 
+    @Autowired
+    private OSS ossClient;
     /*
      * @fast
      * 默认生成的控制器所继承的父类中有index/add/edit/del四个基础方法,均为post json请求
@@ -51,5 +61,41 @@ public class FosterwxWxfriendController extends BaseController<FosterwxWxfriend>
         ResHandle<List<FosterwxWxfriend>> res = fosterwxWxfriendService.getList(postBasePageHandle);
         return AjaxResult.success(res);
     }
+
+    @PostMapping("/export")
+    public Object export(@Valid @RequestBody PostBasePageHandle postBasePageHandle, BindingResult bindingResult){
+        if (bindingResult.hasErrors()) {
+            return AjaxResult.error(HttpStatus.ERROR, bindingResult.getFieldError().getDefaultMessage());
+        }
+        ResHandle<List<FosterwxWxfriend>> res = fosterwxWxfriendService.getList(postBasePageHandle);
+        List<Object> tempObj;
+        List<List<Object>> resList = new ArrayList<List<Object>>();
+        Object[] head = {"ID","好友昵称","微信号","站点编号","状态"};
+        List<Object> headList = Arrays.asList(head);
+        Date currentTime = new Date();
+        String fileName = "站点微信好友数据.csv";
+        resList.add(headList);
+        for (FosterwxWxfriend fosterwxWxfriend : res.getList()){
+            tempObj = new ArrayList<Object>() {
+                {
+                    this.add(fosterwxWxfriend.getId());
+                    this.add(fosterwxWxfriend.getWxName());
+                    this.add(fosterwxWxfriend.getWxUsername());
+                    this.add(fosterwxWxfriend.getStationName());
+                    this.add(fosterwxWxfriend.getStatus());
+                }
+            };
+            resList.add(tempObj);
+        }
+        StringBuffer content = OssFile.createCSV(resList);
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+        String dateString = formatter.format(currentTime);
+        String randNum = Integer.toString((int)(10000+Math.random()*(99999-10000+1)));
+        String filePath = OSSConfiguration.PAN_DIR + dateString + "/" + randNum + "_" + fileName;
+        PutObjectRequest putObjectRequest = new PutObjectRequest(ossConfiguration.getBucketName(), filePath,
+                new ByteArrayInputStream(content.toString().getBytes()));
+        ossClient.putObject(putObjectRequest);
+        return AjaxResult.success(ossConfiguration.getHost() + filePath);
+    }
 }
 

+ 1 - 0
src/main/java/com/mokamrp/privates/entity/PostBasePageHandle.java

@@ -10,6 +10,7 @@ public class PostBasePageHandle {
     private Integer groupId;
     private Integer stationId;
     private Integer mobileId;
+    private String mobileCode;
     private Integer createUid;
     private String title;
     private String name;

+ 3 - 0
src/main/java/com/mokamrp/privates/mapper/pangu/FosterwxMobileWxfriendMapper.java

@@ -1,5 +1,6 @@
 package com.mokamrp.privates.mapper.pangu;
 
+import com.mokamrp.privates.entity.PostBasePageHandle;
 import com.mokamrp.privates.mapper.pangu.pojo.FosterwxMobileWxfriend;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -19,6 +20,8 @@ import java.util.List;
 @Component
 public interface FosterwxMobileWxfriendMapper extends BaseMapper<FosterwxMobileWxfriend> {
     public List<FosterwxMobileWxfriend> getList(Page<FosterwxMobileWxfriend> pageObj);
+    public List<FosterwxMobileWxfriend> getListPro(Page<FosterwxMobileWxfriend> pageObj, @Param("params")PostBasePageHandle handle);
+    public List<FosterwxMobileWxfriend> export(Page<FosterwxMobileWxfriend> pageObj, @Param("params")PostBasePageHandle handle);
     public List<FosterwxWxfriend> getCanSwtichFriendList();
     public List<FosterwxWxfriend> getCanBindFriendList();
 }

+ 36 - 0
src/main/java/com/mokamrp/privates/mapper/pangu/FosterwxMobileWxfriendMapper.xml

@@ -41,4 +41,40 @@
         Where B.bind_mobile_cnt &lt; 3
         And A.status = 1
     </select>
+    <select id="getListPro" resultType="com.mokamrp.privates.mapper.pangu.pojo.FosterwxMobileWxfriend">
+        SELECT GROUP_CONCAT(B.wx_name,'#',B.wx_username,'#',B.id) as wx_str,
+               A.mobile_id,
+               C.mobile_code,
+               D.id as station_id,
+               D.station_name
+        FROM pan_fosterwx_mobile_wxfriend as A
+                 left join pan_fosterwx_wxfriend as B on A.friend_id = B.id
+                 left join pan_fosterwx_mobile as C on A.mobile_id = C.id
+                 left join pan_fosterwx_station as D on C.station_id = D.id
+        <where>
+            <if test="params.stationId">and D.id = #{params.stationId}</if>
+            <if test="params.mobileCode">and C.mobile_code = #{params.mobileCode}</if>
+            <if test="params.name">and B.wx_name like CONCAT('%',#{params.name},'%') or B.wx_username like CONCAT('%',#{params.name},'%')</if>
+        </where>
+        GROUP BY A.mobile_id,C.mobile_code,D.id,D.station_name
+    </select>
+
+    <select id="export" resultType="com.mokamrp.privates.mapper.pangu.pojo.FosterwxMobileWxfriend">
+        SELECT
+        A.friend_id,
+        A.mobile_id,
+        C.mobile_code,
+        D.id as station_id,
+        D.station_name
+        FROM pan_fosterwx_mobile_wxfriend as A
+        left join pan_fosterwx_wxfriend as B on A.friend_id = B.id
+        left join pan_fosterwx_mobile as C on A.mobile_id = C.id
+        left join pan_fosterwx_station as D on C.station_id = D.id
+        <where>
+            <if test="params.stationId">and D.id = #{params.stationId}</if>
+            <if test="params.mobileCode">and C.mobile_code = #{params.mobileCode}</if>
+            <if test="params.name">and B.wx_name like CONCAT('%',#{params.name},'%') or B.wx_username like CONCAT('%',#{params.name},'%')</if>
+        </where>
+        GROUP BY A.mobile_id,C.mobile_code,D.id,D.station_name,A.friend_id
+    </select>
 </mapper>

+ 5 - 1
src/main/java/com/mokamrp/privates/mapper/pangu/FosterwxWxfriendMapper.xml

@@ -20,8 +20,12 @@
         id, station_id, status, wx_name, wx_username, switch_friend_id, next_start_at, create_at, update_at
     </sql>
     <select id="getList" resultType="com.mokamrp.privates.mapper.pangu.pojo.FosterwxWxfriend">
-        SELECT A.*,B.wx_name as switch_friend_wx_name FROM pan_fosterwx_wxfriend as A
+        SELECT A.*,
+               B.wx_name as switch_friend_wx_name,
+               C.station_name
+        FROM pan_fosterwx_wxfriend as A
         left join pan_fosterwx_wxfriend as B on A.switch_friend_id = B.id
+        left join pan_fosterwx_station as C on A.station_id = C.id
         <where>
             <if test="params.name != null">and A.wx_name like CONCAT('%',#{params.name},'%')</if>
             <if test="params.status != null">and A.status = #{params.status}</if>

+ 9 - 0
src/main/java/com/mokamrp/privates/mapper/pangu/pojo/FosterwxMobileWxfriend.java

@@ -55,6 +55,15 @@ public class FosterwxMobileWxfriend extends Model<FosterwxMobileWxfriend> {
     private Integer switchFriendId;
     @TableField(exist = false)
     private LocalDateTime nextStartAt;
+    @TableField(exist = false)
+    private String wxStr;
+    @TableField(exist = false)
+    private String mobileCode;
+    @TableField(exist = false)
+    private String stationName;
+    @TableField(exist = false)
+    private Integer stationId;
+
     /**
      * 创建时间
      */

+ 2 - 0
src/main/java/com/mokamrp/privates/mapper/pangu/pojo/FosterwxWxfriend.java

@@ -57,6 +57,8 @@ public class FosterwxWxfriend extends Model<FosterwxWxfriend> {
      * 替换解封好友
      */
     private Integer switchFriendId;
+    @TableField(exist = false)
+    private String stationName;
 
     /**
      * 已经绑定的账号

+ 7 - 0
src/main/java/com/mokamrp/privates/service/pangu/FosterwxMobileWxfriendService.java

@@ -7,6 +7,7 @@ import com.mokamrp.privates.mapper.pangu.pojo.FosterwxMobileWxfriend;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.mokamrp.privates.entity.PostBasePageHandle;
 import com.mokamrp.privates.mapper.pangu.pojo.FosterwxWxfriend;
+import com.mokamrp.privates.mapper.pojo.User;
 
 import java.util.List;
 import java.util.Map;
@@ -21,6 +22,12 @@ import java.util.Map;
 public interface FosterwxMobileWxfriendService extends IService<FosterwxMobileWxfriend> {
     //.@leon 获取数据列表
     public ResHandle<List<FosterwxMobileWxfriend>> getList(PostBasePageHandle handle);
+    //.@leon 导入数据
+    public VoltaHandle<Boolean> importData(List<Map<String,String>> row, User authUser) throws Exception;
+    //.@leon 获取数据列表 加强版
+    public ResHandle<List<FosterwxMobileWxfriend>> getListPro(PostBasePageHandle handle);
+
+    public ResHandle<List<FosterwxMobileWxfriend>> export(PostBasePageHandle handle);
     //.@volta 获取可被替换的解封好友
     public List<FosterwxWxfriend> getCanSwtichFriendList();
     //.@volta 获取可被绑定的解封好友

+ 93 - 0
src/main/java/com/mokamrp/privates/service/pangu/impl/FosterwxMobileWxfriendServiceImpl.java

@@ -1,5 +1,6 @@
 package com.mokamrp.privates.service.pangu.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.mokamrp.privates.constant.HttpMsg;
 import com.mokamrp.privates.entity.ResHandle;
@@ -9,10 +10,14 @@ import com.mokamrp.privates.help.AjaxResult;
 import com.mokamrp.privates.mapper.pangu.pojo.FosterwxMobile;
 import com.mokamrp.privates.mapper.pangu.pojo.FosterwxMobileWxfriend;
 import com.mokamrp.privates.mapper.pangu.FosterwxMobileWxfriendMapper;
+import com.mokamrp.privates.mapper.pangu.pojo.FosterwxStation;
 import com.mokamrp.privates.mapper.pangu.pojo.FosterwxWxfriend;
+import com.mokamrp.privates.mapper.pojo.Corp;
+import com.mokamrp.privates.mapper.pojo.User;
 import com.mokamrp.privates.service.pangu.FosterwxMobileService;
 import com.mokamrp.privates.service.pangu.FosterwxMobileWxfriendService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mokamrp.privates.service.pangu.FosterwxStationService;
 import org.springframework.stereotype.Service;
 import com.mokamrp.privates.entity.PostBasePageHandle;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -20,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -39,6 +45,9 @@ public class FosterwxMobileWxfriendServiceImpl extends ServiceImpl<FosterwxMobil
 
     @Autowired
     public FosterwxMobileService fosterwxMobileService;
+
+    @Autowired
+    public FosterwxStationService fosterwxStationService;
     /**
      * 获取数据列表 支持分页
      * @param handle
@@ -56,6 +65,33 @@ public class FosterwxMobileWxfriendServiceImpl extends ServiceImpl<FosterwxMobil
     }
 
     /**
+     * 获取数据列表 支持分页 加强版
+     * @param handle
+     * @return
+     */
+    public ResHandle<List<FosterwxMobileWxfriend>> getListPro(PostBasePageHandle handle) {
+        Integer pagesize = handle.getPagesize();
+        Integer page = handle.getPage();
+        Page<FosterwxMobileWxfriend> pageObj = new Page<FosterwxMobileWxfriend>(page, pagesize);
+        List<FosterwxMobileWxfriend> list = fosterwxMobileWxfriendMapper.getListPro(pageObj,handle);
+        ResHandle<List<FosterwxMobileWxfriend>> res = new ResHandle<>();
+        res.setList(list);
+        res.setTotal(pageObj.getTotal());
+        return res;
+    }
+
+    public ResHandle<List<FosterwxMobileWxfriend>> export(PostBasePageHandle handle) {
+        Integer pagesize = handle.getPagesize();
+        Integer page = handle.getPage();
+        Page<FosterwxMobileWxfriend> pageObj = new Page<FosterwxMobileWxfriend>(page, pagesize);
+        List<FosterwxMobileWxfriend> list = fosterwxMobileWxfriendMapper.export(pageObj,handle);
+        ResHandle<List<FosterwxMobileWxfriend>> res = new ResHandle<>();
+        res.setList(list);
+        res.setTotal(pageObj.getTotal());
+        return res;
+    }
+
+    /**
      * 获取可被替换的解封好友
      * @return
      */
@@ -140,4 +176,61 @@ public class FosterwxMobileWxfriendServiceImpl extends ServiceImpl<FosterwxMobil
         }
         return true;
     }
+
+
+    public VoltaHandle<Boolean> importData(List<Map<String,String>> row, User authUser) throws Exception{
+        VoltaHandle<Boolean> res = new VoltaHandle<>();
+        if (row.size() <= 0) {
+            throw new Exception("表格读取完成后,没有获取到任何数据");
+        }
+        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        for (int i = 0; i < row.size(); i++) {
+            FosterwxStation stationInfo = fosterwxStationService.getOne(new QueryWrapper<FosterwxStation>()
+                    .eq("station_name", row.get(i).get("stationName")));
+            if (stationInfo == null) {
+                throw new Exception("站点编号不存在");
+            }
+            String mobileCode = String.format("%03d", Integer.parseInt(row.get(i).get("mobileCode")));
+            FosterwxMobile mobileInfo = fosterwxMobileService.getOne(new QueryWrapper<FosterwxMobile>()
+                    .eq("station_id", stationInfo.getId())
+                    .eq("mobile_code", mobileCode)
+            );
+            if (mobileInfo == null) {
+                throw new Exception("第" + (i + 1) + "行,手机编号:" + mobileCode + ",不存在");
+            }
+            Integer hasRecord = this.count(new QueryWrapper<FosterwxMobileWxfriend>()
+                    .eq("mobile_id",mobileInfo.getId())
+                    .eq("friend_id",row.get(i).get("friendId")));
+            if(hasRecord > 0){
+                throw new Exception("第" + (i + 1) + "行,好友编号:"+row.get(i).get("friendId") + "已经和账号绑定不可重复绑定");
+            }
+            VoltaHandle<String> checkRes = this.checkOneFriend(stationInfo.getId(),Integer.parseInt(row.get(i).get("friendId")));
+            if (checkRes.getErr() != null){
+                throw new Exception("第" + (i + 1) + "行,好友编号:"+row.get(i).get("friendId") + "已经绑定3次,无法再次绑定了");
+            }
+            FosterwxMobileWxfriend add = new FosterwxMobileWxfriend();
+            add.setMobileId(mobileInfo.getId());
+            add.setFriendId(Integer.parseInt(row.get(i).get("friendId")));
+            add.setCreateAt(LocalDateTime.now());
+            add.setUpdateAt(LocalDateTime.now());
+            this.save(add);
+        }
+        return res;
+    }
+
+    public VoltaHandle<String> checkOneFriend(Integer stationId,Integer friendId){
+        VoltaHandle<String> res = new VoltaHandle<>();
+        List<FosterwxMobile> mobileList = fosterwxMobileService.list(new QueryWrapper<FosterwxMobile>()
+                .eq("station_id", stationId)
+        );
+        List<Integer> mobileIds = mobileList.stream().map(FosterwxMobile::getId).collect(Collectors.toList());
+        List<FosterwxMobileWxfriend> friends = this.list(new QueryWrapper<FosterwxMobileWxfriend>()
+                .in("mobile_id",mobileIds)
+                .eq("friend_id",friendId)
+        );
+        if (friends.size() >=3){
+            res.setErr("好友Id:"+friendId + "已经被绑定3个无法再绑定");
+        }
+        return res;
+    }
 }

BIN
src/main/resources/static/导入账号绑定解封好友.xls