lyhzzz 10 часов назад
Родитель
Сommit
0eed0f239c

+ 14 - 0
src/main/java/com/fdkankan/agent/common/RequestBase.java

@@ -2,6 +2,7 @@ package com.fdkankan.agent.common;
 
 
 import com.fdkankan.agent.util.DateUtils;
 import com.fdkankan.agent.util.DateUtils;
 import lombok.Data;
 import lombok.Data;
+import org.apache.commons.lang3.StringUtils;
 
 
 import java.util.List;
 import java.util.List;
 
 
@@ -15,4 +16,17 @@ public class RequestBase {
     private String startTime;
     private String startTime;
     private String endTime;
     private String endTime;
 
 
+    public String getStartTime() {
+        if(StringUtils.isBlank(startTime) && timeList!=null && timeList.size() >1){
+            return timeList.get(0);
+        }
+        return startTime;
+    }
+
+    public String getEndTime() {
+        if(StringUtils.isBlank(endTime) && timeList!=null && timeList.size() >1){
+            return timeList.get(1);
+        }
+        return endTime;
+    }
 }
 }

+ 5 - 0
src/main/java/com/fdkankan/agent/controller/CameraController.java

@@ -90,6 +90,11 @@ public class CameraController extends BaseController {
         return ResultData.ok(count);
         return ResultData.ok(count);
     }
     }
 
 
+    @GetMapping("/giveCamLog")
+    public ResultData giveCamLog( @RequestParam(required = false) Integer cameraId){
+        return ResultData.ok(agentNewCameraService.giveCamLog(getAgent().getId(),cameraId));
+    }
+
     @GetMapping("/downTemplate")
     @GetMapping("/downTemplate")
     public void downInTemplate(@RequestParam(required = false,defaultValue = "0") Integer type,
     public void downInTemplate(@RequestParam(required = false,defaultValue = "0") Integer type,
                                HttpServletResponse res, HttpServletRequest req) throws IOException {
                                HttpServletResponse res, HttpServletRequest req) throws IOException {

+ 12 - 0
src/main/java/com/fdkankan/agent/controller/UserController.java

@@ -16,6 +16,8 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 
 
@@ -42,6 +44,16 @@ public class UserController extends BaseController {
 
 
 
 
     /**
     /**
+     * 导出用户数据
+     */
+    @PostMapping("/exportUserList")
+    public void exportUserList(@RequestBody UserParam param){
+        param.setAgentId(getAgent().getId());
+        param.setLang(getLang());
+        userService.exportUserList(param,request,response);
+    }
+
+    /**
      * 获取相机详情
      * 获取相机详情
      * userId          用户id
      * userId          用户id
      */
      */

+ 2 - 0
src/main/java/com/fdkankan/agent/entity/AgentNewCamera.java

@@ -47,5 +47,7 @@ public class AgentNewCamera implements Serializable {
     @TableField("update_time")
     @TableField("update_time")
     private Date updateTime;
     private Date updateTime;
 
 
+    @TableField(exist = false)
+    private String subAgentName;
 
 
 }
 }

+ 1 - 0
src/main/java/com/fdkankan/agent/request/ContactUsParam.java

@@ -10,6 +10,7 @@ import java.util.List;
 public class ContactUsParam extends RequestBase {
 public class ContactUsParam extends RequestBase {
     private String email;
     private String email;
     private String utmSource;
     private String utmSource;
+    private String country;
     private List<String> timeList;
     private List<String> timeList;
     private List<String> visitTimeList;
     private List<String> visitTimeList;
 
 

+ 2 - 0
src/main/java/com/fdkankan/agent/request/UserParam.java

@@ -16,4 +16,6 @@ public class UserParam extends RequestBase {
 
 
     private Integer agentId;
     private Integer agentId;
     private Integer parentId;
     private Integer parentId;
+
+    private String lang;
 }
 }

+ 31 - 3
src/main/java/com/fdkankan/agent/response/UserVo.java

@@ -1,22 +1,50 @@
 package com.fdkankan.agent.response;
 package com.fdkankan.agent.response;
 
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
 import lombok.Data;
 import lombok.Data;
 
 
 @Data
 @Data
 public class UserVo {
 public class UserVo {
+
+    @ExcelProperty("用户Id")
     private Long id;
     private Long id;
-    private String userName;
+
+    @ExcelProperty("昵称")
     private String nickName;
     private String nickName;
-    private String email;
+
+    @ExcelProperty("账号")
+    private String userName;
+
+    @ExcelProperty("账号注册时间")
     private String createTime;
     private String createTime;
+
+    @ExcelProperty("四维看看会员")
+    private String vipStr;            //是否 vip  0 否,1是  (根据权益数量判定)
+    @ExcelIgnore
     private Integer vip;            //是否 vip  0 否,1是  (根据权益数量判定)
     private Integer vip;            //是否 vip  0 否,1是  (根据权益数量判定)
 
 
+    @ExcelIgnore
+    private String email;
+    @ExcelIgnore
     private Long incrementCount;    //权益数量
     private Long incrementCount;    //权益数量
+    @ExcelIgnore
     private Integer surDownNum;     //剩余下载次数
     private Integer surDownNum;     //剩余下载次数
+    @ExcelIgnore
     private Integer surSSDownNum;     //剩余下载次数
     private Integer surSSDownNum;     //剩余下载次数
+    @ExcelIgnore
     private Long cameraCount;       //相机数量
     private Long cameraCount;       //相机数量
+    @ExcelIgnore
     private Long SceneNum;          //场景数量
     private Long SceneNum;          //场景数量
-
+    @ExcelIgnore
     private String sysUserName;
     private String sysUserName;
+    @ExcelIgnore
     private Long sysUserId;
     private Long sysUserId;
+
+    public String getVipStr() {
+        if(vip == null){
+            return "";
+        }
+        return vip == 0 ? "否":"是";
+    }
 }
 }

+ 50 - 0
src/main/java/com/fdkankan/agent/response/UserVoEn.java

@@ -0,0 +1,50 @@
+package com.fdkankan.agent.response;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class UserVoEn {
+
+    @ExcelProperty("User ID")
+    private Long id;
+
+    @ExcelProperty("Nickname")
+    private String nickName;
+
+    @ExcelProperty("Account")
+    private String userName;
+
+    @ExcelProperty("Registration time")
+    private String createTime;
+
+    @ExcelProperty("4DKanKan Member")
+    private String vipStr;            //是否 vip  0 否,1是  (根据权益数量判定)
+    @ExcelIgnore
+    private Integer vip;            //是否 vip  0 否,1是  (根据权益数量判定)
+
+    @ExcelIgnore
+    private String email;
+    @ExcelIgnore
+    private Long incrementCount;    //权益数量
+    @ExcelIgnore
+    private Integer surDownNum;     //剩余下载次数
+    @ExcelIgnore
+    private Integer surSSDownNum;     //剩余下载次数
+    @ExcelIgnore
+    private Long cameraCount;       //相机数量
+    @ExcelIgnore
+    private Long SceneNum;          //场景数量
+    @ExcelIgnore
+    private String sysUserName;
+    @ExcelIgnore
+    private Long sysUserId;
+
+    public String getVipStr() {
+        if(vip == null){
+            return "";
+        }
+        return vip == 0 ? "no":"yes";
+    }
+}

+ 2 - 0
src/main/java/com/fdkankan/agent/service/IAgentNewCameraService.java

@@ -29,4 +29,6 @@ public interface IAgentNewCameraService extends IService<AgentNewCamera> {
     void delByCameraIds(List<Long> cameraIds);
     void delByCameraIds(List<Long> cameraIds);
 
 
     void unBindCamera(CameraParam param);
     void unBindCamera(CameraParam param);
+
+    List<AgentNewCamera> giveCamLog(Integer agentId,Integer cameraId);
 }
 }

+ 3 - 0
src/main/java/com/fdkankan/agent/service/IExcelService.java

@@ -20,6 +20,9 @@ public interface IExcelService {
 
 
     void commonExport(HttpServletRequest request, HttpServletResponse response, String name, List<?> result, ExcelWriter excelWriter) throws Exception ;
     void commonExport(HttpServletRequest request, HttpServletResponse response, String name, List<?> result, ExcelWriter excelWriter) throws Exception ;
 
 
+    void commonExport(HttpServletRequest request, HttpServletResponse response,String name,List<?> result,Class<?> clazz) throws Exception;
+
+
     Integer uploadExcel(MultipartFile file,Integer agentId, Integer subAgentId);
     Integer uploadExcel(MultipartFile file,Integer agentId, Integer subAgentId);
 
 
     Integer uploadAuthModelExcel(MultipartFile file, Integer id);
     Integer uploadAuthModelExcel(MultipartFile file, Integer id);

+ 3 - 0
src/main/java/com/fdkankan/agent/service/IUserService.java

@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.agent.request.UserParam;
 import com.fdkankan.agent.request.UserParam;
 import com.fdkankan.agent.response.UserVo;
 import com.fdkankan.agent.response.UserVo;
 
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 
 
@@ -29,4 +31,5 @@ public interface IUserService extends IService<User> {
 
 
     PageInfo pageList(UserParam param);
     PageInfo pageList(UserParam param);
 
 
+    void exportUserList(UserParam param, HttpServletRequest request, HttpServletResponse response);
 }
 }

+ 19 - 0
src/main/java/com/fdkankan/agent/service/impl/AgentNewCameraServiceImpl.java

@@ -11,6 +11,7 @@ import com.fdkankan.agent.mapper.IAgentNewCameraMapper;
 import com.fdkankan.agent.request.CameraParam;
 import com.fdkankan.agent.request.CameraParam;
 import com.fdkankan.agent.service.IAgentNewCameraService;
 import com.fdkankan.agent.service.IAgentNewCameraService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.agent.service.IAgentNewService;
 import com.fdkankan.agent.service.ICameraDetailService;
 import com.fdkankan.agent.service.ICameraDetailService;
 import com.fdkankan.agent.service.ICameraService;
 import com.fdkankan.agent.service.ICameraService;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
@@ -41,6 +42,8 @@ public class AgentNewCameraServiceImpl extends ServiceImpl<IAgentNewCameraMapper
     ICameraDetailService cameraDetailService;
     ICameraDetailService cameraDetailService;
     @Autowired
     @Autowired
     IAgentNewCameraService agentNewCameraService;
     IAgentNewCameraService agentNewCameraService;
+    @Autowired
+    IAgentNewService agentNewService;
     @Override
     @Override
     public void giveCamera(CameraParam param) {
     public void giveCamera(CameraParam param) {
         Camera camera = cameraService.getById(param.getId());
         Camera camera = cameraService.getById(param.getId());
@@ -72,6 +75,22 @@ public class AgentNewCameraServiceImpl extends ServiceImpl<IAgentNewCameraMapper
         this.saveOrUpdate(agentNewCamera);
         this.saveOrUpdate(agentNewCamera);
     }
     }
 
 
+    @Override
+    public  List<AgentNewCamera> giveCamLog(Integer agentId,Integer cameraId) {
+        LambdaQueryWrapper<AgentNewCamera> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(AgentNewCamera::getAgentId,agentId);
+        wrapper.eq(AgentNewCamera::getCameraId,cameraId);
+        List<AgentNewCamera> list = this.list(wrapper);
+        List<Integer> subAgentIds = list.stream().map(AgentNewCamera::getSubAgentId).collect(Collectors.toList());
+        HashMap<Integer, AgentNew> mapByIds = agentNewService.getMapByIds(subAgentIds);
+        for (AgentNewCamera agentNewCamera : list) {
+            AgentNew agentNew = mapByIds.get(agentNewCamera.getSubAgentId());
+            if(agentNew !=null){
+                agentNewCamera.setSubAgentName(agentNew.getName());
+            }
+        }
+        return list;
+    }
 
 
     @Override
     @Override
     public void unBindCamera(CameraParam param) {
     public void unBindCamera(CameraParam param) {

+ 3 - 0
src/main/java/com/fdkankan/agent/service/impl/ContactUsServiceImpl.java

@@ -55,6 +55,9 @@ public class ContactUsServiceImpl extends ServiceImpl<IContactUsMapper, ContactU
         if(StringUtils.isNotBlank(param.getStartTime()) && StringUtils.isNotBlank(param.getEndTime())){
         if(StringUtils.isNotBlank(param.getStartTime()) && StringUtils.isNotBlank(param.getEndTime())){
             wrapper.between(ContactUs::getCreateTime,param.getStartTime(),param.getEndTime());
             wrapper.between(ContactUs::getCreateTime,param.getStartTime(),param.getEndTime());
         }
         }
+        if(StringUtils.isNotBlank(param.getCountry())){
+            wrapper.like(ContactUs::getCountry,param.getCountry());
+        }
         wrapper.orderByDesc(ContactUs::getId);
         wrapper.orderByDesc(ContactUs::getId);
         Page<ContactUs> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()),wrapper);
         Page<ContactUs> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()),wrapper);
         return page;
         return page;

+ 20 - 0
src/main/java/com/fdkankan/agent/service/impl/ExcelServiceImpl.java

@@ -61,6 +61,26 @@ public class ExcelServiceImpl implements IExcelService {
         excelWriter.write(result, writeSheet);
         excelWriter.write(result, writeSheet);
     }
     }
 
 
+    public void commonExport(HttpServletRequest request, HttpServletResponse response,String name,List<?> result,Class<?> clazz) throws Exception {
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("utf-8");
+        String fileName = name  + ".xlsx";
+        fileName = URLEncoder.encode(fileName, "UTF-8");
+        response.setHeader("Content-disposition", "attachment;filename=" + fileName);
+        ExcelWriter excelWriter = null;
+        try {
+            excelWriter = EasyExcel.write(response.getOutputStream(), clazz).build();
+            WriteSheet writeSheet = EasyExcel.writerSheet(name).build();
+            excelWriter.write(result, writeSheet);
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            if(excelWriter != null){
+                excelWriter.finish();
+            }
+        }
+    }
+
 
 
     @Override
     @Override
     public Integer uploadExcel(MultipartFile file, Integer agentId,Integer subAgentId) {
     public Integer uploadExcel(MultipartFile file, Integer agentId,Integer subAgentId) {

+ 41 - 1
src/main/java/com/fdkankan/agent/service/impl/UserServiceImpl.java

@@ -7,6 +7,7 @@ import com.fdkankan.agent.entity.User;
 import com.fdkankan.agent.mapper.IUserMapper;
 import com.fdkankan.agent.mapper.IUserMapper;
 import com.fdkankan.agent.request.UserParam;
 import com.fdkankan.agent.request.UserParam;
 import com.fdkankan.agent.response.UserVo;
 import com.fdkankan.agent.response.UserVo;
+import com.fdkankan.agent.response.UserVoEn;
 import com.fdkankan.agent.service.*;
 import com.fdkankan.agent.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -14,6 +15,8 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -38,6 +41,8 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
     private ISceneProService sceneProService;
     private ISceneProService sceneProService;
     @Autowired
     @Autowired
     private IScenePlusService scenePlusService;
     private IScenePlusService scenePlusService;
+    @Autowired
+    IExcelService excelService;
 
 
 
 
     @Override
     @Override
@@ -91,7 +96,42 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
         return PageInfo.PageInfo(pageVo);
         return PageInfo.PageInfo(pageVo);
     }
     }
 
 
-    private List<UserVo> getUserVo(List<User> userList,Integer agentId){
+    @Override
+    public void exportUserList(UserParam param, HttpServletRequest req, HttpServletResponse resp) {
+        Page<User> page =  this.getBaseMapper().pageList(new Page<>(1,100000), param);
+        List<User> records = page.getRecords();
+        List<Long> userIdList = records.parallelStream().map(User::getId).collect(Collectors.toList());
+        HashMap<Long,Long> incrementCountMap = userIncrementService.getValidCountGroupByUserId(userIdList);
+
+        List<UserVo> voList = new ArrayList<>();
+        List<UserVoEn> voListEn = new ArrayList<>();
+        for (User user : records) {
+            long incrementCount = incrementCountMap.get(user.getId()) == null ? 0 : incrementCountMap.get(user.getId());
+            if("en".equals(param.getLang())){
+                UserVoEn vo = new UserVoEn();
+                BeanUtils.copyProperties(user,vo);
+                vo.setVip(incrementCount  > 0 ? 1: 0);
+                voListEn.add(vo);
+            }else {
+                UserVo vo = new UserVo();
+                BeanUtils.copyProperties(user,vo);
+                vo.setVip(incrementCount  > 0 ? 1: 0);
+                voList.add(vo);
+            }
+        }
+
+        try {
+            if("en".equals(param.getLang())){
+                excelService.commonExport(req,resp,new Date().getTime() +"user",voListEn, UserVoEn.class);
+            }else {
+                excelService.commonExport(req,resp,new Date().getTime() +"用户管理",voList, UserVo.class);
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private List<UserVo> getUserVo(List<User> userList, Integer agentId){
         List<UserVo> voList = new ArrayList<>();
         List<UserVo> voList = new ArrayList<>();
         if(userList.size() >0){
         if(userList.size() >0){
             List<Long> userIdList = userList.parallelStream().map(User::getId).collect(Collectors.toList());
             List<Long> userIdList = userList.parallelStream().map(User::getId).collect(Collectors.toList());

+ 3 - 0
src/main/resources/mapper/agent/UserMapper.xml

@@ -18,6 +18,9 @@
         <if test="param.agentId == null ">
         <if test="param.agentId == null ">
             and (agent_key is not null or d.agent_id is not null )
             and (agent_key is not null or d.agent_id is not null )
         </if>
         </if>
+        <if test="param.startTime != null and param.startTime !='' and param.endTime !=null and param.endTime !='' ">
+            and s.create_time between #{param.startTime} and #{param.endTime}
+        </if>
         order by s.id desc
         order by s.id desc
 
 
     </select>
     </select>