Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

dengsixing 3 лет назад
Родитель
Сommit
1ff1bab977
78 измененных файлов с 2321 добавлено и 208 удалено
  1. 2 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/entity/Agent.java
  2. 2 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/entity/AgentAudit.java
  3. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/entity/AgentFramework.java
  4. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/entity/AgentNotice.java
  5. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/entity/VaildCameras.java
  6. 2 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/service/impl/AgentAuditServiceImpl.java
  7. 1 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/service/impl/AgentFrameworkServiceImpl.java
  8. 2 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/service/impl/AgentNoticeServiceImpl.java
  9. 8 9
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/service/impl/AgentServiceImpl.java
  10. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/service/impl/VaildCamerasServiceImpl.java
  11. 0 91
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/util/ExcelUtil.java
  12. 97 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/common/ConstantExcel.java
  13. 272 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/common/ExcelUtil.java
  14. 195 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/common/ImportExeclUtil.java
  15. 6 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/common/CameraCache.java
  16. 301 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/controller/manager/ManagerCameraController.java
  17. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/Camera.java
  18. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/CameraDetail.java
  19. 2 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/CameraOut.java
  20. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/CameraSpace.java
  21. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/CameraVersion.java
  22. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/Cart.java
  23. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/Company.java
  24. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/Goods.java
  25. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/GoodsSku.java
  26. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/GoodsSpec.java
  27. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/GoodsSpecValue.java
  28. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/GoodsSpuSpec.java
  29. 2 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/SnCode.java
  30. 21 4
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/mapper/ICameraDetailMapper.java
  31. 8 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ICameraDetailService.java
  32. 8 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ICameraService.java
  33. 739 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ManagerCameraService.java
  34. 65 10
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraDetailServiceImpl.java
  35. 141 3
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraServiceImpl.java
  36. 8 3
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraSpaceServiceImpl.java
  37. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraVersionServiceImpl.java
  38. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CartServiceImpl.java
  39. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/GoodsSkuServiceImpl.java
  40. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/CommerceOrder.java
  41. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/DownloadOrder.java
  42. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/ExpansionOrder.java
  43. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/IncrementOrder.java
  44. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/Invoice.java
  45. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/Order.java
  46. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/OrderItem.java
  47. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/PreSale.java
  48. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/SpaceSdk.java
  49. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/TradeLog.java
  50. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/VirtualOrder.java
  51. 8 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/mapper/IVirtualOrderMapper.java
  52. 12 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/IVirtualOrderService.java
  53. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/CommerceOrderServiceImpl.java
  54. 3 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/DownloadOrderServiceImpl.java
  55. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/ExpansionOrderServiceImpl.java
  56. 4 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/IncrementOrderServiceImpl.java
  57. 7 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/InvoiceServiceImpl.java
  58. 4 6
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/OrderServiceImpl.java
  59. 1 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/SpaceSdkServiceImpl.java
  60. 1 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/TradeLogServiceImpl.java
  61. 99 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/VirtualOrderServiceImpl.java
  62. 9 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/test/TestSendController.java
  63. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/entity/IncrementType.java
  64. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/entity/IntercomMessage.java
  65. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/entity/Manager.java
  66. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/entity/Province.java
  67. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/entity/ReceiverInfo.java
  68. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/entity/User.java
  69. 3 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/entity/UserIncrement.java
  70. 2 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/IntercomMessageServiceImpl.java
  71. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/ManagerServiceImpl.java
  72. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/ReceiverInfoServiceImpl.java
  73. 7 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/UserIncrementServiceImpl.java
  74. 6 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/UserServiceImpl.java
  75. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/vo/ResponseCamera.java
  76. 129 0
      4dkankan-center-platform/src/main/resources/mapper/goods/CameraDetailMapper.xml
  77. 5 2
      4dkankan-center-platform/src/main/resources/mapper/order/ExpansionOrderMapper.xml
  78. 28 2
      4dkankan-center-platform/src/main/resources/mapper/order/VirtualOrderMapper.xml

+ 2 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/entity/Agent.java

@@ -95,13 +95,13 @@ public class Agent implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
      * 0正常 ,1删除
      */
-    @TableField("tb_status")
+       @TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 2 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/entity/AgentAudit.java

@@ -119,7 +119,7 @@ public class AgentAudit implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -137,7 +137,7 @@ public class AgentAudit implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+       @TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/entity/AgentFramework.java

@@ -38,7 +38,7 @@ public class AgentFramework implements Serializable {
     private String agentName;
 
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     @TableField("create_time")
@@ -50,7 +50,8 @@ public class AgentFramework implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/entity/AgentNotice.java

@@ -53,13 +53,14 @@ public class AgentNotice implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/entity/VaildCameras.java

@@ -50,7 +50,7 @@ public class VaildCameras implements Serializable {
     private String devicemac;
 
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     @TableField("create_time")
@@ -62,7 +62,8 @@ public class VaildCameras implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 2 - 1
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/service/impl/AgentAuditServiceImpl.java

@@ -59,8 +59,8 @@ public class AgentAuditServiceImpl extends ServiceImpl<IAgentAuditMapper, AgentA
 
     @Override
     public Page<AgentAudit> getPageList(Integer pageNum, Integer pageSize) {
-        log.info("123123123123123123");
         QueryWrapper<AgentAudit> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(AgentAudit::getRecStatus,"A");
         queryWrapper.lambda().orderByDesc(AgentAudit::getCreateTime);
         Page<AgentAudit> page = new Page<>();
         page.setCurrent(pageNum);
@@ -103,6 +103,7 @@ public class AgentAuditServiceImpl extends ServiceImpl<IAgentAuditMapper, AgentA
     @Override
     public Page<AgentAuditVo> searchLike(RequestSearch param) {
         QueryWrapper<AgentAudit> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(AgentAudit::getRecStatus,"A");
         if(StringUtils.isNotBlank(param.getStartDate())){
             queryWrapper.lambda().ge(AgentAudit::getCreateTime,param.getStartDate());
         }

+ 1 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/service/impl/AgentFrameworkServiceImpl.java

@@ -38,6 +38,7 @@ public class AgentFrameworkServiceImpl extends ServiceImpl<IAgentFrameworkMapper
         }
         QueryWrapper<AgentFramework> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(AgentFramework::getAgentName,param.getName());
+        queryWrapper.lambda().eq(AgentFramework::getRecStatus,"A");
         List<AgentFramework> list = this.list(queryWrapper);
         if(list != null && list.size() > 0){
             throw new BusinessException(ErrorCode.AGENT_EXIST);

+ 2 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/service/impl/AgentNoticeServiceImpl.java

@@ -31,8 +31,8 @@ public class AgentNoticeServiceImpl extends ServiceImpl<IAgentNoticeMapper, Agen
     @Override
     public AgentNoticeVo getAgentNotice() {
         QueryWrapper<AgentNotice> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("rec_status","A");
-        queryWrapper.orderByDesc("create_time");
+        queryWrapper.lambda().eq(AgentNotice::getRecStatus,"A");
+        queryWrapper.lambda().orderByDesc(AgentNotice::getCreateTime);
 
         Page<AgentNotice> agentNoticePage = new Page<>();
         agentNoticePage.setCurrent(1);

+ 8 - 9
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/service/impl/AgentServiceImpl.java

@@ -17,7 +17,7 @@ import com.fdkankan.platform.agent.entity.Agent;
 import com.fdkankan.platform.agent.mapper.IAgentMapper;
 import com.fdkankan.platform.agent.request.RequestAgent;
 import com.fdkankan.platform.agent.service.IAgentService;
-import com.fdkankan.platform.agent.util.ExcelUtil;
+import com.fdkankan.platform.common.ExcelUtil;
 import com.fdkankan.platform.agent.vo.AgentDetailTotalAmount;
 import com.fdkankan.platform.agent.vo.AgentTotalAmountVo;
 import com.fdkankan.platform.agent.vo.AgentVo;
@@ -62,8 +62,8 @@ public class AgentServiceImpl extends ServiceImpl<IAgentMapper, Agent> implement
     @Override
     public Agent getAgentById(String agentId) {
         QueryWrapper<Agent> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("agent_id",agentId);
-        queryWrapper.eq("rec_status","A");
+        queryWrapper.lambda().eq(Agent::getAgentId,agentId);
+        queryWrapper.lambda().eq(Agent::getRecStatus,"A");
         List<Agent> list = this.list(queryWrapper);
         if(list == null || list.size()<=0){
             throw new BusinessException(ErrorCode.USER_NOT_EXIST);
@@ -242,17 +242,17 @@ public class AgentServiceImpl extends ServiceImpl<IAgentMapper, Agent> implement
 
     private QueryWrapper<Agent> getQueryWrapper(RequestAgent param){
         QueryWrapper<Agent> queryWrapper = new QueryWrapper<>();
-        //queryWrapper.eq("rec_status","A");
+        queryWrapper.lambda().eq(Agent::getRecStatus,"A");
         if(StringUtils.isNotBlank(param.getAgentName())){
-            queryWrapper.like("agent_name",param.getAgentName());
+            queryWrapper.lambda().like(Agent::getAgentName,param.getAgentName());
         }
         if(StringUtils.isNotBlank(param.getAgentId())){
-            queryWrapper.like("agent_id",param.getAgentId());
+            queryWrapper.lambda().like(Agent::getAgentId,param.getAgentId());
         }
         if(StringUtils.isNotBlank(param.getStartDate())){
-            queryWrapper.between("create_time",param.getStartDate()+" 00:00:00",param.getEndDate()+" 23:59:59");
+            queryWrapper.lambda().between(Agent::getCreateTime,param.getStartDate()+" 00:00:00",param.getEndDate()+" 23:59:59");
         }
-        queryWrapper.orderByDesc("create_time");
+        queryWrapper.lambda().orderByDesc(Agent::getCreateTime);
         return queryWrapper;
     }
 
@@ -268,7 +268,6 @@ public class AgentServiceImpl extends ServiceImpl<IAgentMapper, Agent> implement
         agent.setAgentPhone(param.getAgentPhone());
         agent.setAgentCountry(param.getAgentCountry());
         agent.setAgentNum(param.getAgentNum());
-        agent.setRecStatus("A");
         if(!this.saveOrUpdate(agent)){
             throw new BusinessException(ErrorCode.ERROR_MSG);
         }

+ 2 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/service/impl/VaildCamerasServiceImpl.java

@@ -128,11 +128,13 @@ public class VaildCamerasServiceImpl extends ServiceImpl<IVaildCamerasMapper, Va
 
     public List<VaildCameras> getListByCompanyName(String companyName){
         QueryWrapper<VaildCameras> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(VaildCameras::getRecStatus,"A");
         queryWrapper.lambda().eq(VaildCameras::getCompanyName,companyName);
         return this.list(queryWrapper);
     }
     public VaildCameras getByCompanyNameAndDevicemac(String companyName,String devicemac){
         QueryWrapper<VaildCameras> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(VaildCameras::getRecStatus,"A");
         queryWrapper.lambda().eq(VaildCameras::getCompanyName,companyName);
         queryWrapper.lambda().eq(VaildCameras::getDevicemac,devicemac);
         List<VaildCameras> list = this.list(queryWrapper);

+ 0 - 91
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/util/ExcelUtil.java

@@ -1,91 +0,0 @@
-package com.fdkankan.platform.agent.util;
-
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.Row;
-import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.*;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class ExcelUtil {
-
-    private static Logger log = LoggerFactory.getLogger("programLog");
-
-    private static final String EXCEL_XLS = "xls";
-    private static final String EXCEL_XLSX = "xlsx";
-
-    public static  List<Map<String, String>> readExcelForManageAgent(String finalXlsxPath) {
-        OutputStream out = null;
-        try {
-            List<Map<String, String>> dataList = new ArrayList<Map<String, String>>();
-            // 读取Excel文档
-            File finalXlsxFile = new File(finalXlsxPath);
-            if (!finalXlsxFile.exists()) {
-                return null;
-            }
-            Workbook workBook = getWorkbok(finalXlsxFile);
-            // sheet 对应一个工作页
-            Sheet sheet = workBook.getSheetAt(0);
-
-            int rowNumber = sheet.getLastRowNum();
-            log.info("原始数据总行数,除属性列:" + rowNumber);
-            for (int i = 1; i <= rowNumber; i++) {
-                Row row = sheet.getRow(i);
-                Map<String, String> dataMap = new HashMap<String, String>();
-                for (int j = 0; j < 5; ++j) {
-                    Cell cell = row.getCell(j);
-                    if (cell == null) {
-                        break;
-                    }
-                    cell.setCellType(Cell.CELL_TYPE_STRING);
-                    String str = cell.getStringCellValue();
-                    dataMap.put(String.valueOf(j), str);
-                }
-                dataList.add(dataMap);
-            }
-            return dataList;
-        } catch (Exception e) {
-            StringWriter trace = new StringWriter();
-            e.printStackTrace(new PrintWriter(trace));
-            log.error(trace.toString());
-            return null;
-        }
-    }
-
-
-    /**
-     * 判断Excel的版本,获取Workbook
-     */
-    public static Workbook getWorkbok(File file) throws IOException {
-        try {
-            Workbook wb = null;
-            InputStream in = new FileInputStream(file);
-
-            if (!in.markSupported()) {
-                in = new PushbackInputStream(in, 8);
-            }
-
-            if (file.getName().endsWith(EXCEL_XLS)) {
-                wb = new HSSFWorkbook(in);
-            } else if (file.getName().endsWith(EXCEL_XLSX)) {
-                wb = new XSSFWorkbook(in);
-            } else {
-                log.error("你的excel版本目前poi解析不了");
-            }
-            return wb;
-        } catch (Exception e) {
-            StringWriter trace = new StringWriter();
-            e.printStackTrace(new PrintWriter(trace));
-            log.error(trace.toString());
-            return null;
-        }
-    }
-}

+ 97 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/common/ConstantExcel.java

@@ -0,0 +1,97 @@
+package com.fdkankan.platform.common;
+
+public class ConstantExcel {
+    public static final String[] ORDEREXCELCOLENNAME = {"序号","支付时间","发货订单编号","手机号/用户号","订单金额","支付方式","收货地址","收件人电话","收件人姓名", "订单状态","付款状态","配送状态","交易号","发票类型(三种类型)","发票抬头","纳税人识别号","注册地址","注册电话","开户银行","银行账户"};
+    public static final String[] SUMMARYEXCELCOLENNAME = {"手机号/用户号","设备ID","期初点数","新增点数","消费点数","其他点数变动","期末点数","期初开票额度","新增开票额度","已开票额度","其他金额变动","期末开票额度"};
+    public static final String[] RECHARGEEXCELCOLENNAME = {"时间","订单号","手机号/用户名","设备ID","充值点数","订单金额(元)","支付方式","类型","交易号"};
+    public static final String[] CONSUMEEXCELCOLENNAME = {"时间","订单号","手机号/用户名","设备ID","商品名称","消费点数"};
+    public static final String[] INVOICEEXCELCOLENNAME = {"序号","订单编号","发票类型","开票金额","发票抬头","18位税号","注册地址","注册电话","开户银行","银行账户","收件地址","电子邮箱","手机号码","商品1","数量","价格","金额","商品2","数量","价格","金额","商品3","数量","价格","金额","更多商品"};
+    public static final String[] INVOICEEXCELCOLENNAME2 ={"序号","订单编号","用户名","支付时间","快递单号","订单金额","支付方式","发票类型(两种类型)","发票抬头","纳税人识别号","注册地址",
+            "注册电话","开户银行","银行账户","收件人姓名","收件人电话","收货地址","电子邮箱","订单状态","配送状态","付款状态"};
+
+
+    public static final String[] CAMEREXCELCOLENAME = {"设备ID","SN号","入库时间","出库时间","订单编号","经销商","出库时间","地区","手机号码/用户名","激活时间"};
+    //public static final String[] AGENT_CAMERACOLENNAME = {"设备ID","期初点数","赠送点数","已用点数","剩余点数","充值金额","兑换为点数","消耗点数","提成金额"};
+    public static final String[] AGENT_CAMERACOLENNAME = {"设备ID","赠送点数","已用点数","剩余点数","充值金额","兑换为点数","消耗点数","提成金额"};
+    public static final String[] AGENT_DETAILCHARGECOLENNAME = {"时间","充值金额","兑换成点数","状态","订单编号"};
+    public static final String[] AGENT_DETAILCONSUMECOLENNAME = {"时间","消费点数","订单编号"};
+
+    public static final String[] MANAGEAGENT = {"代理ID","公司名称","电话","区域","邮箱","使用状态","创建时间"};
+    public static final String[] MANAGEAGENTQUERY = {"代理ID","公司名称","区域","电话","代理数量","库存","累计充值金额","累计消耗点数","提成金额"};
+    public static final String[] MANAGEAGENTDETAILQUERY = {"设备ID","初始点数","已用点数","剩余点数","充值金额","兑换为点数","消耗点数","提成金额"};
+
+    public static final String[] ORDERSTATUS = {"未支付","待发货","已发货","已完成"};
+    public static final String[] PAYFORM = {"微信","支付宝","Paypal","其他","货到付款"};
+    public static final String[] INVOICE = {"不需要发票","增值税普通发票","增值税专用发票"};
+    public static final String[] INVOICETYPE1 = {"发票抬头","纳税人识别号"};
+    public static final String[] INVOICETYPE2 = {"发票抬头","纳税人识别号","注册地址","注册电话","开户银行","银行账户"};
+
+    public static final String getOrderStatus(String orderStatus){
+        String status = "";
+        switch (orderStatus){
+            case "unprocessed":
+                status = "未处理";
+                break;
+            case "processed":
+                status = "已确认";
+                break;
+            case "completed":
+                status = "已完成";
+                break;
+            case "invalid":
+                status = "已取消";
+                break;
+        }
+        return status;
+    }
+
+    public static final String getPaymentStatus(String paymentStatus){
+        String status = "";
+        switch (paymentStatus){
+            case "unpaid":
+                status = "未付款";
+                break;
+            case "paid":
+                status = "已付款";
+                break;
+            case "cancel":
+                status = "已取消";
+                break;
+            case "partPayment":
+                status = "部分支付";
+                break;
+            case "partRefund":
+                status = "部分退款";
+                break;
+            case "refunded":
+                status = "全额退款";
+                break;
+        }
+        return status;
+    }
+
+    public static final String getShippingStatus(String shippingStatus){
+        String status = "";
+        switch (shippingStatus){
+            case "unshipped":
+                status = "未发货";
+                break;
+            case "partShipped":
+                status = "部分发货";
+                break;
+            case "shipped":
+                status = "已发货";
+                break;
+            case "partReshiped":
+                status = "部分退货";
+                break;
+            case "reshiped":
+                status = "已退货";
+                break;
+            case "received":
+                status = "已收货";
+                break;
+        }
+        return status;
+    }
+}

+ 272 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/common/ExcelUtil.java

@@ -0,0 +1,272 @@
+package com.fdkankan.platform.common;
+
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class ExcelUtil {
+
+    private static Logger log = LoggerFactory.getLogger("programLog");
+
+    private static final String EXCEL_XLS = "xls";
+    private static final String EXCEL_XLSX = "xlsx";
+
+    public static  List<Map<String, String>> readExcelForManageAgent(String finalXlsxPath) {
+        OutputStream out = null;
+        try {
+            List<Map<String, String>> dataList = new ArrayList<Map<String, String>>();
+            // 读取Excel文档
+            File finalXlsxFile = new File(finalXlsxPath);
+            if (!finalXlsxFile.exists()) {
+                return null;
+            }
+            Workbook workBook = getWorkbok(finalXlsxFile);
+            // sheet 对应一个工作页
+            Sheet sheet = workBook.getSheetAt(0);
+
+            int rowNumber = sheet.getLastRowNum();
+            log.info("原始数据总行数,除属性列:" + rowNumber);
+            for (int i = 1; i <= rowNumber; i++) {
+                Row row = sheet.getRow(i);
+                Map<String, String> dataMap = new HashMap<String, String>();
+                for (int j = 0; j < 5; ++j) {
+                    Cell cell = row.getCell(j);
+                    if (cell == null) {
+                        break;
+                    }
+                    cell.setCellType(Cell.CELL_TYPE_STRING);
+                    String str = cell.getStringCellValue();
+                    dataMap.put(String.valueOf(j), str);
+                }
+                dataList.add(dataMap);
+            }
+            return dataList;
+        } catch (Exception e) {
+            StringWriter trace = new StringWriter();
+            e.printStackTrace(new PrintWriter(trace));
+            log.error(trace.toString());
+            return null;
+        }
+    }
+
+
+    /**
+     * 判断Excel的版本,获取Workbook
+     */
+    public static Workbook getWorkbok(File file) throws IOException {
+        try {
+            Workbook wb = null;
+            InputStream in = new FileInputStream(file);
+
+            if (!in.markSupported()) {
+                in = new PushbackInputStream(in, 8);
+            }
+
+            if (file.getName().endsWith(EXCEL_XLS)) {
+                wb = new HSSFWorkbook(in);
+            } else if (file.getName().endsWith(EXCEL_XLSX)) {
+                wb = new XSSFWorkbook(in);
+            } else {
+                log.error("你的excel版本目前poi解析不了");
+            }
+            return wb;
+        } catch (Exception e) {
+            StringWriter trace = new StringWriter();
+            e.printStackTrace(new PrintWriter(trace));
+            log.error(trace.toString());
+            return null;
+        }
+    }
+
+    public static Workbook writeExcel(List<Map> dataList, int columnCount, String xlsxPath, int type) {
+        OutputStream out = null;
+        try {
+            // 获取总列数
+            int columnNumCount = columnCount;
+            // 读取Excel文档
+            File xlsxFile = new File(xlsxPath);
+            HSSFWorkbook workBook = new HSSFWorkbook();
+            // sheet 对应一个工作页
+            HSSFSheet sheet = workBook.createSheet();
+            HSSFCellStyle cellstyle = workBook.createCellStyle();
+            HSSFRow hssfRow = sheet.createRow((short) 0);
+            sheet.createFreezePane(0, 1);
+            if (type == 1) {
+                for (int i = 0; i < ConstantExcel.ORDEREXCELCOLENNAME.length; ++i) {
+                    HSSFCell cell = hssfRow.createCell((short)i);
+                    cell.setCellValue(ConstantExcel.ORDEREXCELCOLENNAME[i]);
+                    cell.setCellStyle(cellstyle);
+                }
+            } else if (type == 2) {
+                for (int i = 0; i < ConstantExcel.SUMMARYEXCELCOLENNAME.length; ++i) {
+                    HSSFCell cell = hssfRow.createCell((short)i);
+                    cell.setCellValue(ConstantExcel.SUMMARYEXCELCOLENNAME[i]);
+                    cell.setCellStyle(cellstyle);
+                }
+            } else if (type == 3) {
+                for (int i = 0; i < ConstantExcel.RECHARGEEXCELCOLENNAME.length; ++i) {
+                    HSSFCell cell = hssfRow.createCell((short)i);
+                    cell.setCellValue(ConstantExcel.RECHARGEEXCELCOLENNAME[i]);
+                    cell.setCellStyle(cellstyle);
+                }
+            } else if (type == 4) {
+                for (int i = 0; i < ConstantExcel.CONSUMEEXCELCOLENNAME.length; ++i) {
+                    HSSFCell cell = hssfRow.createCell((short)i);
+                    cell.setCellValue(ConstantExcel.CONSUMEEXCELCOLENNAME[i]);
+                    cell.setCellStyle(cellstyle);
+                }
+            } else if (type == 5) {
+                for (int i = 0; i < ConstantExcel.INVOICEEXCELCOLENNAME.length; ++i) {
+                    HSSFCell cell = hssfRow.createCell((short)i);
+                    cell.setCellValue(ConstantExcel.INVOICEEXCELCOLENNAME[i]);
+                    cell.setCellStyle(cellstyle);
+                }
+            }else if (type == 6) {
+                for (int i = 0; i < ConstantExcel.INVOICEEXCELCOLENNAME2.length; ++i) {
+                    HSSFCell cell = hssfRow.createCell((short)i);
+                    cell.setCellValue(ConstantExcel.INVOICEEXCELCOLENNAME2[i]);
+                    cell.setCellStyle(cellstyle);
+                }
+            }
+            // 创建文件输出流,输出电子表格:这个必须有,否则你在sheet上做的任何操作都不会有效
+            out = new FileOutputStream(xlsxPath);
+            workBook.write(out);
+            /**
+             * 往Excel中写新数据
+             */
+            if (type == 1) {
+                for (int j = 0; j < dataList.size(); j++) {
+                    // 创建一行:从第二行开始,跳过属性列
+                    Row row = sheet.createRow(j + 1);
+                    // 得到要插入的每一条记录
+                    Map<String, String> dataMap = dataList.get(j);
+
+                    for (int i = 0; i < ConstantExcel.ORDEREXCELCOLENNAME.length; ++i) {
+                        String value = dataMap.get(ConstantExcel.ORDEREXCELCOLENNAME[i]);
+                        Cell cell = row.createCell(i);
+                        cell.setCellValue(value);
+                    }
+                }
+            } else if (type == 2) {
+                for (int j = 0; j < dataList.size(); j++) {
+                    // 创建一行:从第二行开始,跳过属性列
+                    Row row = sheet.createRow(j + 1);
+                    // 得到要插入的每一条记录
+                    Map<String, String> dataMap = dataList.get(j);
+
+                    for (int i = 0; i < ConstantExcel.SUMMARYEXCELCOLENNAME.length; ++i) {
+                        String value = dataMap.get(ConstantExcel.SUMMARYEXCELCOLENNAME[i]);
+                        Cell cell = row.createCell(i);
+                        cell.setCellValue(value);
+                    }
+                }
+            } else if (type == 3) {
+                for (int j = 0; j < dataList.size(); j++) {
+                    // 创建一行:从第二行开始,跳过属性列
+                    Row row = sheet.createRow(j + 1);
+                    // 得到要插入的每一条记录
+                    Map<String, String> dataMap = dataList.get(j);
+
+                    for (int i = 0; i < ConstantExcel.RECHARGEEXCELCOLENNAME.length; ++i) {
+                        String value = dataMap.get(ConstantExcel.RECHARGEEXCELCOLENNAME[i]);
+                        Cell cell = row.createCell(i);
+                        cell.setCellValue(value);
+                    }
+                }
+            } else if (type == 4) {
+                for (int j = 0; j < dataList.size(); j++) {
+                    // 创建一行:从第二行开始,跳过属性列
+                    Row row = sheet.createRow(j + 1);
+                    // 得到要插入的每一条记录
+                    Map<String, String> dataMap = dataList.get(j);
+
+                    for (int i = 0; i < ConstantExcel.CONSUMEEXCELCOLENNAME.length; ++i) {
+                        String value = dataMap.get(ConstantExcel.CONSUMEEXCELCOLENNAME[i]);
+                        Cell cell = row.createCell(i);
+                        cell.setCellValue(value);
+                    }
+                }
+            } else if (type == 5) {
+                for (int j = 0; j < dataList.size(); j++) {
+                    // 创建一行:从第二行开始,跳过属性列
+                    Row row = sheet.createRow(j + 1);
+                    // 得到要插入的每一条记录
+                    Map<String, String> dataMap = dataList.get(j);
+
+                    for (int i = 0; i < ConstantExcel.INVOICEEXCELCOLENNAME.length; ++i) {
+                        String value = dataMap.get(ConstantExcel.INVOICEEXCELCOLENNAME[i]);
+                        Cell cell = row.createCell(i);
+                        cell.setCellValue(value);
+                    }
+                }
+            }else if (type == 6) {
+                for (int j = 0; j < dataList.size(); j++) {
+                    // 创建一行:从第二行开始,跳过属性列
+                    Row row = sheet.createRow(j + 1);
+                    // 得到要插入的每一条记录
+                    Map<String, String> dataMap = dataList.get(j);
+
+                    for (int i = 0; i < ConstantExcel.INVOICEEXCELCOLENNAME2.length; ++i) {
+                        String value = dataMap.get(ConstantExcel.INVOICEEXCELCOLENNAME2[i]);
+                        Cell cell = row.createCell(i);
+                        cell.setCellValue(value);
+                    }
+                }
+            } else {
+                log.error("writeExcel出错:" + type);
+            }
+            // 创建文件输出流,准备输出电子表格:这个必须有,否则你在sheet上做的任何操作都不会有效
+            out = new FileOutputStream(xlsxPath);
+            workBook.write(out);
+            log.info("数据导出成功");
+            return workBook;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        } finally {
+            try {
+                if (out != null) {
+                    out.flush();
+                    out.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    public static void output(HttpServletResponse resp, File file) {
+        OutputStream os = null;
+        BufferedInputStream bis = null;
+        byte[] buff = new byte[1024];
+        try {
+            os = resp.getOutputStream();
+            bis = new BufferedInputStream(new FileInputStream(file));
+            int i = 0;
+            while ((i = bis.read(buff)) != -1) {
+                os.write(buff, 0, i);
+                os.flush();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                bis.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+}

+ 195 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/common/ImportExeclUtil.java

@@ -0,0 +1,195 @@
+package com.fdkankan.platform.common;
+
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ImportExeclUtil {
+
+    /** 总行数 */
+    private int totalRows = 0;
+    /** 总列数 */
+    private int totalCells = 0;
+    /** 错误信息 */
+    private String errorInfo;
+    /** 构造方法 */
+    public ImportExeclUtil() {
+    }
+
+
+    public int getTotalRows() {
+        return totalRows;
+    }
+    public int getTotalCells() {
+        return totalCells;
+    }
+    public String getErrorInfo() {
+        return errorInfo;
+    }
+
+    public boolean validateExcel(String filePath) {
+        /** 检查文件名是否为空或者是否是Excel格式的文件 */
+        if (filePath == null
+                || !(WDWUtil.isExcel2003(filePath) || WDWUtil
+                .isExcel2007(filePath))) {
+            errorInfo = "文件名不是excel格式";
+            return false;
+        }
+        /** 检查文件是否存在 */
+        File file = new File(filePath);
+        if (file == null || !file.exists()) {
+            errorInfo = "文件不存在";
+            return false;
+        }
+        return true;
+    }
+
+    public List<List<String>> read(String filePath) {
+        List<List<String>> dataLst = new ArrayList<List<String>>();
+        InputStream is = null;
+        try {
+            /** 验证文件是否合法 */
+            if (!validateExcel(filePath)) {
+                System.out.println(errorInfo);
+                return null;
+            }
+            /** 判断文件的类型,是2003还是2007 */
+            boolean isExcel2003 = true;
+            if (WDWUtil.isExcel2007(filePath)) {
+                isExcel2003 = false;
+            }
+            /** 调用本类提供的根据流读取的方法 */
+            File file = new File(filePath);
+            is = new FileInputStream(file);
+            dataLst = read(is, isExcel2003);
+            is.close();
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        } finally {
+            if (is != null) {
+                try {
+                    is.close();
+                } catch (IOException e) {
+                    is = null;
+                    e.printStackTrace();
+                }
+            }
+        }
+        /** 返回最后读取的结果 */
+        return dataLst;
+    }
+
+
+    public List<List<String>> read(InputStream inputStream, boolean isExcel2003) {
+        List<List<String>> dataLst = null;
+        try {
+            /** 根据版本选择创建Workbook的方式 */
+            Workbook wb = null;
+            if (isExcel2003) {
+                wb = new HSSFWorkbook(inputStream);
+            } else {
+                wb = new XSSFWorkbook(inputStream);
+            }
+            dataLst = read(wb);
+        } catch (IOException e) {
+
+            e.printStackTrace();
+        }
+        return dataLst;
+    }
+
+
+    private List<List<String>> read(Workbook wb) {
+        List<List<String>> dataLst = new ArrayList<List<String>>();
+        /** 得到第一个shell */
+        Sheet sheet = wb.getSheetAt(0);
+        /** 得到Excel的行数 */
+        this.totalRows = sheet.getPhysicalNumberOfRows();
+        /** 得到Excel的列数 */
+        if (this.totalRows >= 1 && sheet.getRow(0) != null) {
+            this.totalCells = sheet.getRow(0).getPhysicalNumberOfCells();
+        }
+        /** 循环Excel的行 */
+        for (int r = 0; r < this.totalRows; r++) {
+            Row row = sheet.getRow(r);
+            if (row == null) {
+                continue;
+            }
+            List<String> rowLst = new ArrayList<String>();
+            /** 循环Excel的列 */
+            for (int c = 0; c < this.getTotalCells(); c++) {
+                Cell cell = row.getCell(c);
+                String cellValue = "";
+                if (null != cell) {
+                    // 以下是判断数据的类型
+                    switch (cell.getCellType()) {
+                        case HSSFCell.CELL_TYPE_NUMERIC: // 数字
+                            cellValue = cell.getNumericCellValue() + "";
+                            break;
+                        case HSSFCell.CELL_TYPE_STRING: // 字符串
+                            cellValue = cell.getStringCellValue();
+                            break;
+                        case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean
+                            cellValue = cell.getBooleanCellValue() + "";
+                            break;
+                        case HSSFCell.CELL_TYPE_FORMULA: // 公式
+                            cellValue = cell.getCellFormula() + "";
+                            break;
+                        case HSSFCell.CELL_TYPE_BLANK: // 空值
+                            cellValue = "";
+                            break;
+                        case HSSFCell.CELL_TYPE_ERROR: // 故障
+                            cellValue = "非法字符";
+                            break;
+                        default:
+                            cellValue = "未知类型";
+                            break;
+                    }
+                }
+                rowLst.add(cellValue);
+            }
+            /** 保存第r行的第c列 */
+            dataLst.add(rowLst);
+        }
+        return dataLst;
+    }
+    public static void main(String[] args) throws Exception {
+        ImportExeclUtil poi = new ImportExeclUtil();
+        // List<List<String>> list = poi.read("d:/aaa.xls");
+        List<List<String>> list = poi.read("G:\\javaProject\\四维看看需求原型\\四维看看后台表格与流程\\订单管理-SN号.xlsx");
+        if (list != null) {
+            for (int i = 0; i < list.size(); i++) {
+                System.out.print("第" + (i) + "行");
+                List<String> cellList = list.get(i);
+                for (int j = 0; j < cellList.size(); j++) {
+
+                    System.out.print("    " + cellList.get(j).toString().trim());
+
+                }
+                System.out.println();
+            }
+
+        }
+
+    }
+
+}
+class WDWUtil {
+    public static boolean isExcel2003(String filePath) {
+        return filePath.matches("^.+\\.(?i)(xls)$");
+    }
+    public static boolean isExcel2007(String filePath) {
+        return filePath.matches("^.+\\.(?i)(xlsx)$");
+    }
+}

+ 6 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/common/CameraCache.java

@@ -0,0 +1,6 @@
+package com.fdkankan.platform.goods.common;
+
+public class CameraCache {
+    public static final String IMPORT_ERROR_NUM = "第{n}行存在错误,";
+
+}

+ 301 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/controller/manager/ManagerCameraController.java

@@ -0,0 +1,301 @@
+package com.fdkankan.platform.goods.controller.manager;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.common.controller.BaseController;
+import com.fdkankan.common.util.JwtUtil;
+import com.fdkankan.platform.agent.vo.ResponseAgentCamera;
+import com.fdkankan.platform.goods.entity.Camera;
+import com.fdkankan.platform.goods.service.ICameraService;
+import com.fdkankan.platform.goods.service.ManagerCameraService;
+import com.fdkankan.platform.order.service.IVirtualOrderService;
+import com.fdkankan.platform.user.request.RequestCamera;
+import com.fdkankan.platform.user.vo.ResponseCamera;
+import com.fdkankan.platform.user.vo.ResponseVirtualOrder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * 后台管理-设备查询/设备管理接口
+ */
+@RestController
+@RequestMapping("/api/manager/camera")
+public class ManagerCameraController extends BaseController {
+
+    @Autowired
+    private ManagerCameraService managerCameraService;
+    @Autowired
+    private ICameraService cameraService;
+    @Autowired
+    private IVirtualOrderService virtualOrderService;
+
+    /**
+     * 设备查询列表
+     * startDate      开始时间
+     * endDate        结束时间
+     * childName     相机的Mac地址
+     * @return
+     */
+    @RequestMapping(value = {"/search"}, method = RequestMethod.POST)
+    public Page<ResponseAgentCamera> searchAgentListDetail(@RequestBody RequestCamera param) throws Exception{
+        return managerCameraService.searchAgentListDetail(param);
+    }
+    /**
+     * 设备查询列表统计
+     * startDate      开始时间
+     * endDate        结束时间
+     * childName     相机的Mac地址
+     * @return
+     */
+    @RequestMapping(value = {"/searchStatistics"}, method = RequestMethod.POST)
+    public JSONObject searchStatistics(@RequestBody RequestCamera param) throws Exception{
+        return managerCameraService.searchStatistics(param);
+    }
+    /**
+     * 设备详情充值/消费记录
+     * type      0-充值记录,1-消费记录
+     * cameraId        设备id
+     * startDate     开始时间
+     * endDate     结束时间
+     * @return
+     */
+    @RequestMapping(value = {"/detailLog"}, method = RequestMethod.POST)
+    public Page<ResponseVirtualOrder> detailLog(@RequestBody RequestCamera param) throws Exception{
+        return  virtualOrderService.getPageVoByParam(param);
+    }
+    /**
+     * 设备查询列表统计
+     * type      0-充值记录,1-消费记录
+     * cameraId        设备id
+     * startDate     开始时间
+     * endDate     结束时间
+     * childName     相机的Mac地址
+     * @return
+     */
+    @RequestMapping(value = {"/searchCameraDetailStatistics"}, method = RequestMethod.POST)
+    public JSONObject searchCameraDetailStatistics(@RequestBody RequestCamera param) throws Exception{
+        return managerCameraService.searchCameraDetailStatistics(param);
+    }
+    /**
+     * 设备管理列表
+     * type      类型,1:入库,2:出库,3:激活
+     * cameraId        设备id
+     * startDate     开始时间
+     * endDate     结束时间
+     * searchKey     关键词
+     * @return
+     */
+    @RequestMapping(value = {"/list"}, method = RequestMethod.POST)
+    public Page<ResponseCamera> list(@RequestBody RequestCamera param) throws Exception{
+        return managerCameraService.queryCameraListByParams(param);
+    }
+    /**
+     * 添加相机
+     * childName      物理地址
+     * orderSn        订单号
+     * wifiName     wifi名称
+     * own     出库类型
+     * balance     初始点数
+     * companyId     企业id
+     * type     相机类型,0表示双目,1表示八目  9转台  10激光
+     * @return
+     */
+    @RequestMapping(value = {"/add"}, method = RequestMethod.POST)
+    public String addCamera(@RequestBody RequestCamera param) throws Exception{
+        return managerCameraService.addCamera(param);
+    }
+    /**
+     * 更新相机
+     * childName      物理地址
+     * orderSn        订单号
+     * wifiName     wifi名称
+     * own     出库类型
+     * balance     初始点数
+     * companyId     企业id
+     * type     相机类型,0表示双目,1表示八目  9转台  10激光
+     * @return
+     */
+    @RequestMapping(value = {"/update"}, method = RequestMethod.POST)
+    public Camera updateCamera(@RequestBody RequestCamera param) throws Exception{
+        return cameraService.updateCameraByManager(param);
+    }
+    /**
+     * 导出库存数据
+     * searchKey      关键词
+     * startDate        开始时间
+     * endDate     结束时间
+     * type     类型,1:入库,2:出库,3:激活
+     */
+    @RequestMapping(value = {"/exportCamera"}, method = RequestMethod.POST)
+    public void exportCamera(@RequestBody RequestCamera param, HttpServletRequest request, HttpServletResponse response) throws Exception {
+        managerCameraService.exportCamera(param, request, response);
+    }
+
+    /**
+     * 批量删除相机
+     * ids      id集合,多个用逗号分割
+     * @return
+     */
+    @RequestMapping(value = {"/deleteCamera"}, method = RequestMethod.POST)
+    public String deleteCamera(@RequestBody RequestCamera param) throws Exception {
+        return cameraService.deleteCamera(param);
+    }
+
+    /**
+     * 修改相机点数
+     * cameraId     相机id
+     * body         0表示系统赠送,-2表示退充值款
+     * points       要修改的点数
+     * @return
+     */
+    @RequestMapping(value = {"/modifyPoints"}, method = RequestMethod.POST)
+    public String modifyPoints(@RequestBody RequestCamera param) throws Exception {
+        return managerCameraService.modifyPoints(param);
+    }
+
+    /**
+     * 解绑相机
+     * cameraId     相机id
+     * @return
+     */
+    @RequestMapping(value = {"/unbind"}, method = RequestMethod.POST)
+    public String unbind(@RequestBody RequestCamera param) throws Exception {
+        return managerCameraService.unbindCamera(param.getCameraId());
+    }
+    /**
+     * 绑定相机
+     * cameraId     相机id
+     * userName     用户名(手机号)
+     * @return
+     */
+    @RequestMapping(value = {"/bind"}, method = RequestMethod.POST)
+    public String bind(@RequestBody RequestCamera param) throws Exception {
+        return managerCameraService.bindCamera(param.getCameraId(), param.getUserName());
+    }
+    /**
+     * 管理容量(增加)
+     * cameraId     相机id
+     * month        多少个月
+     * space        扩容大小(单位G,1T为1024)
+     * @return
+     */
+    @RequestMapping(value = {"/manageSpace"}, method = RequestMethod.POST)
+    public String manageSpace(@RequestBody RequestCamera param) throws Exception{
+        return managerCameraService.manageSpace(param);
+    }
+
+    /**
+     * 恢复基本容量
+     * cameraId 相机id
+     * @return
+     */
+    @RequestMapping(value = {"/recoverSpace"}, method = RequestMethod.POST)
+    public String recoverSpace(@RequestBody RequestCamera param) throws Exception{
+        return managerCameraService.recoverSpace(param);
+    }
+
+    /**
+     * 追溯管理后台的设备列表
+     * searchKey    关键词
+     * @return
+     */
+    @RequestMapping(value = {"/companyList"}, method = RequestMethod.POST)
+    public Page<ResponseCamera> companyList(@RequestBody RequestCamera param) throws Exception {
+        return managerCameraService.companyList(param,getToken());
+    }
+
+    /**
+     * 追溯管理后台的设备编辑
+     * cameraId     相机id
+     * recStatus    A激活,I不激活
+     * address      设备地址
+     * @return
+     */
+    @RequestMapping(value = {"/companyUpdate"}, method = RequestMethod.POST)
+    public String companyUpdate(@RequestBody RequestCamera param) throws Exception {
+        return managerCameraService.companyUpdate(param,getToken());
+    }
+
+    //以下接口为新管理后台接口
+    /**
+     * 相机入库(新)
+     * snCode       sn编码
+     * type         1:八目,2双目
+     * @return
+     */
+    @RequestMapping(value = {"/addCamera"}, method = RequestMethod.POST)
+    public Camera addCameraNew(@RequestBody RequestCamera param) throws Exception {
+        return managerCameraService.addCameraNew(param);
+    }
+
+    /**
+     * 相机出库(新)
+     * cameraId             相机id
+     * agentFrameworkId     经销商id
+     * own                  0表示客户,1表示员工,2表示赠送,3表示其他,4经销商销售
+     * @return
+     */
+    @RequestMapping(value = {"/cameraOwn"}, method = RequestMethod.POST)
+    public String cameraOwn(@RequestBody RequestCamera param) throws Exception {
+        return managerCameraService.cameraOwn(param);
+    }
+
+
+    /**
+     * 管理后台相机列表(新)
+     * snCode               sn码
+     * own                  0表示客户,1表示员工,2表示赠送,3表示其他,4经销商销售
+     * agentFrameworkId     经销商id
+     * companyId            客户企业id
+     * @return
+     */
+    @RequestMapping(value = {"/cameraList"}, method = RequestMethod.POST)
+    public Page<ResponseCamera> cameraList(@RequestBody RequestCamera param) throws Exception {
+        String userName = JwtUtil.getUsername(getToken());
+        return managerCameraService.cameraList(param, userName);
+    }
+
+    /**
+     * 删除相机(新)
+     * ids      id集合,多个用逗号分割
+     * @return
+     */
+    @RequestMapping(value = {"/deleteCameraNew"}, method = RequestMethod.POST)
+    public String deleteCameraNew(@RequestBody RequestCamera param) throws Exception {
+        return cameraService.deleteCameraNew(param);
+    }
+
+    /**
+     * 导入相机
+     * file         excel文件
+     * @return
+     */
+    @RequestMapping(value = {"/importCamera"}, method = RequestMethod.POST)
+    public Integer importCamera(@RequestParam("file") MultipartFile file) throws Exception {
+        return managerCameraService.importCamera(file);
+    }
+
+    /**
+     * 导入出库相机
+     * file         excel文件
+     * @return
+     */
+    @RequestMapping(value = {"/importOutCamera"}, method = RequestMethod.POST)
+    public Integer importOutCamera(@RequestParam("file") MultipartFile file) throws Exception {
+        return managerCameraService.importOutCamera(file);
+    }
+
+    /**
+     * 导入客户关联相机
+     * file         excel文件
+     * @return
+     */
+    @RequestMapping(value = {"/importCompanyCamera"}, method = RequestMethod.POST)
+    public Integer importCompanyCamera(@RequestParam("file") MultipartFile file) throws Exception {
+        return managerCameraService.importCompanyCamera(file);
+    }
+}

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/Camera.java

@@ -79,13 +79,14 @@ public class Camera implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/CameraDetail.java

@@ -133,13 +133,14 @@ public class CameraDetail implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 2 - 1
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/CameraOut.java

@@ -56,13 +56,14 @@ public class CameraOut implements Serializable {
     private Date updateTime;
 
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
      * 0正常,1删除
      */
     @TableField("tb_status")
+    @TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/CameraSpace.java

@@ -71,7 +71,7 @@ public class CameraSpace implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -89,7 +89,8 @@ public class CameraSpace implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/CameraVersion.java

@@ -71,7 +71,7 @@ public class CameraVersion implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -95,7 +95,8 @@ public class CameraVersion implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/Cart.java

@@ -78,7 +78,7 @@ public class Cart implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -90,7 +90,8 @@ public class Cart implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/Company.java

@@ -91,13 +91,14 @@ public class Company implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/Goods.java

@@ -96,7 +96,7 @@ public class Goods implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -108,7 +108,8 @@ public class Goods implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/GoodsSku.java

@@ -90,7 +90,7 @@ public class GoodsSku implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -102,7 +102,8 @@ public class GoodsSku implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/GoodsSpec.java

@@ -41,7 +41,7 @@ public class GoodsSpec implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -53,7 +53,8 @@ public class GoodsSpec implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/GoodsSpecValue.java

@@ -47,7 +47,7 @@ public class GoodsSpecValue implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -59,7 +59,8 @@ public class GoodsSpecValue implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/GoodsSpuSpec.java

@@ -47,7 +47,7 @@ public class GoodsSpuSpec implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -59,7 +59,8 @@ public class GoodsSpuSpec implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 2 - 1
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/SnCode.java

@@ -45,7 +45,8 @@ public class SnCode implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 21 - 4
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/mapper/ICameraDetailMapper.java

@@ -3,6 +3,8 @@ package com.fdkankan.platform.goods.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fdkankan.platform.goods.entity.CameraDetail;
 import com.fdkankan.platform.goods.entity.CameraDetailNumEntity;
+import com.fdkankan.platform.user.request.RequestCamera;
+import com.fdkankan.platform.user.vo.ResponseCamera;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -21,14 +23,29 @@ import java.util.List;
 public interface ICameraDetailMapper extends BaseMapper<CameraDetail> {
 
 
-    @Select("SELECT type as cameraType,count(1) as cameraTypenum FROM t_camera_detail " +
-            "WHERE user_id = #{userId} and type = #{type} GROUP BY type ")
+    @Select("SELECT camera_type as cameraType,count(1) as cameraTypenum FROM t_camera_detail " +
+            "WHERE user_id = #{userId} and camera_type = #{type} GROUP BY camera_type ")
     List<CameraDetailNumEntity> selectTypeNum(@Param("userId") Long userId, @Param("type") Integer type);
 
-    @Select("SELECT type as cameraType,count(1) as cameraTypenum FROM t_camera_detail " +
-            "WHERE user_id = #{userId}  GROUP BY type ")
+    @Select("SELECT camera_type as cameraType,count(1) as cameraTypenum FROM t_camera_detail " +
+            "WHERE user_id = #{userId}  GROUP BY camera_type ")
     List<CameraDetailNumEntity> selectTypeNumAll(@Param("userId") Long userId);
 
     @Select(" SELECT sum(balance) FROM t_camera_detail WHERE user_id = #{userId} AND REC_STATUS = 'A' ")
     long getSumBalanceByUserId(@Param("userId") Long userId);
+
+    List<ResponseCamera> queryListByParams(@Param("searchKey") String searchKey, @Param("type") Integer type,
+                                           @Param("startDate") String startDate, @Param("endDate") String endDate,
+                                           @Param("start") int start, @Param("pageSize") int pageSize, @Param("orderBy") String orderBy);
+
+    Integer queryCountByParams(@Param("searchKey") String searchKey, @Param("type") Integer type,
+                               @Param("startDate") String startDate, @Param("endDate") String endDate);
+
+    List<ResponseCamera> queryCompanyCameraListByParams(@Param("searchKey") String searchKey, @Param("userName") String userName,
+                                                        @Param("start")int start, @Param("pageSize")int pageSize, @Param("orderBy")String orderBy);
+    Integer queryCompanyCameraCountByParams(@Param("searchKey")String searchKey, @Param("userName")String userName);
+
+    Integer cameraCount(@Param("param")RequestCamera param);
+
+    List<ResponseCamera> cameraList(@Param("param")RequestCamera param, @Param("start")Integer start, @Param("pageSize")int pageSize, @Param("orderBy")String orderBy);
 }

+ 8 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ICameraDetailService.java

@@ -41,11 +41,11 @@ public interface ICameraDetailService extends IService<CameraDetail> {
 
     Integer getDeadLineNumber(Long userId);
 
-    void unbind(Long cameraId);
+    boolean unbind(Long cameraId);
 
     CameraDetail getByCameraId(Long valueOf);
 
-    void bind(Long userId, Long cameraId);
+    boolean bind(Long userId, Long cameraId);
 
     CameraDetail updateCameraDetailByCameraIdAndSpace(Long cameraId, Long space);
 
@@ -54,4 +54,10 @@ public interface ICameraDetailService extends IService<CameraDetail> {
     boolean updateCameraBalance(Long cameraId, int body, Integer points);
 
     List<CameraDetail> getListByUserId(Long id, Long cameraType);
+
+    Page<ResponseCamera> queryListByParams(RequestCamera param);
+
+    Page<ResponseCamera>  queryCompanyCameraListByParams(RequestCamera param);
+
+    Page<ResponseCamera> cameraList(RequestCamera param);
 }

+ 8 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ICameraService.java

@@ -44,4 +44,12 @@ public interface ICameraService extends IService<Camera> {
     Camera getByChildNameAndChildPassword(String appUserName, String appPassword);
 
     Camera getAvailableById(Long id);
+
+    Camera addCameraByManager(RequestCamera param);
+
+    Camera updateCameraByManager(RequestCamera param);
+
+    String deleteCamera(RequestCamera param);
+
+    String deleteCameraNew(RequestCamera param);
 }

+ 739 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ManagerCameraService.java

@@ -0,0 +1,739 @@
+package com.fdkankan.platform.goods.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.common.constant.*;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.util.*;
+import com.fdkankan.platform.agent.constant.AgentConstant;
+import com.fdkankan.platform.agent.entity.AgentFramework;
+import com.fdkankan.platform.agent.service.IAgentFrameworkService;
+import com.fdkankan.platform.agent.vo.ResponseAgentCamera;
+import com.fdkankan.platform.common.ConstantExcel;
+import com.fdkankan.platform.common.ExcelUtil;
+import com.fdkankan.platform.common.ImportExeclUtil;
+import com.fdkankan.platform.goods.common.CameraCache;
+import com.fdkankan.platform.goods.entity.Camera;
+import com.fdkankan.platform.goods.entity.CameraDetail;
+import com.fdkankan.platform.goods.entity.CameraSpace;
+import com.fdkankan.platform.goods.entity.Company;
+import com.fdkankan.platform.order.entity.VirtualOrder;
+import com.fdkankan.platform.order.service.IVirtualOrderService;
+import com.fdkankan.platform.user.entity.Manager;
+import com.fdkankan.platform.user.entity.User;
+import com.fdkankan.platform.user.entity.UserIncrement;
+import com.fdkankan.platform.user.request.RequestCamera;
+import com.fdkankan.platform.user.request.RequestVirtualOrder;
+import com.fdkankan.platform.user.service.IManagerService;
+import com.fdkankan.platform.user.service.IUserIncrementService;
+import com.fdkankan.platform.user.service.IUserService;
+import com.fdkankan.platform.user.vo.ResponseCamera;
+import com.fdkankan.platform.user.vo.ResponseCameraSpace;
+import com.fdkankan.redis.util.RedisUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.joda.time.DateTime;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.math.BigDecimal;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+@Service
+public class ManagerCameraService {
+
+    @Autowired
+    private IVirtualOrderService virtualOrderService;
+    @Autowired
+    private ICameraDetailService cameraDetailService;
+    @Autowired
+    private ICameraService cameraService;
+    @Autowired
+    private  ICameraSpaceService cameraSpaceService;
+    @Autowired
+    private ICompanyService companyService;
+    @Autowired
+    private IUserIncrementService userIncrementService;
+    @Autowired
+    private IUserService userService;
+    @Autowired
+    private IManagerService managerService;
+    @Autowired
+    private IAgentFrameworkService agentFrameworkService;
+    @Resource
+    private RedisUtil redisUtil;
+    @Value("${oss.type}")
+    private String type;
+
+
+    public Page<ResponseAgentCamera> searchAgentListDetail(RequestCamera param) throws Exception {
+        Page<ResponseCamera> pageCameraVo = cameraDetailService.getPageByUserAndType(param, param.getUserId());
+        List<ResponseAgentCamera> agentCameraResponseVos = this.getAgentCameraResponseVos(pageCameraVo.getRecords(), param.getStartDate(), param.getEndDate());
+
+        Page<ResponseAgentCamera> pageVo = new Page<>(param.getPageNum(), param.getPageSize());
+        pageVo.setTotal(pageCameraVo.getTotal());
+        pageVo.setRecords(agentCameraResponseVos);
+        return pageVo;
+    }
+
+    private List<ResponseAgentCamera> getAgentCameraResponseVos(List<ResponseCamera> cameraDetailEntities, String startDate, String endDate) throws Exception {
+        List<ResponseAgentCamera> result = new ArrayList<>();
+        for (ResponseCamera entity : cameraDetailEntities) {
+            Camera cameraEntity = cameraService.getById(entity.getCameraId());
+            if (cameraEntity == null) continue;
+            ResponseAgentCamera vo = virtualOrderService.getPointsByCameraId(entity.getCameraId(), startDate, endDate);
+            vo.setId(cameraEntity.getId());
+            vo.setBalance(Integer.parseInt(entity.getBalance()));
+            vo.setChildName(cameraEntity.getChildName());
+            result.add(vo);
+        }
+        return result;
+    }
+
+    public JSONObject searchStatistics(RequestCamera param) {
+        if(redisUtil.hasKey("CameraListTotalAmount")){
+            String result = redisUtil.get("CameraListTotalAmount");
+            return JSONObject.parseObject(result);
+        }
+        //累计充值金额/点数
+        int subSubMoney = 0;
+        //累计消耗点数
+        int subSubStract = 0;
+
+        int subMoney = 0;
+        int subStract = 0;
+        int subGift = 0;
+        List<VirtualOrder> virtualOrderEntities = virtualOrderService.getAllByParam(param);
+        for (VirtualOrder entity : virtualOrderEntities){
+            if (entity.getStatus() == 1) {
+                subMoney += entity.getPoints();
+            } else if (entity.getStatus() == -1) {
+                subStract += entity.getPoints();
+            } else if (entity.getStatus() == 0) {
+                subGift += entity.getPoints();
+            } else if (entity.getStatus() == -2) {
+                subMoney -= entity.getPoints();
+            }
+        }
+        if (subStract > subGift) {
+            subStract -= subGift;
+        } else {
+            subStract = 0;
+        }
+        subSubMoney += subMoney;
+        subSubStract += subStract;
+        JSONObject jo = new JSONObject();
+        jo.put("subPoint", subSubMoney);
+        jo.put("subCharge", subSubMoney);
+        jo.put("subSubStract", subSubStract * AgentConstant.EXTRACT);
+        jo.put("subSubStractPoint", subSubStract);
+        redisUtil.set("CameraListTotalAmount", JSONObject.toJSONString(jo));
+        return jo;
+    }
+
+    public JSONObject searchCameraDetailStatistics(RequestCamera param) {
+        if (StringUtils.isNotEmpty(param.getStartDate()) && StringUtils.isEmpty(param.getEndDate())){
+            param.setEndDate(new DateTime().toString("yyyy-MM-dd"));
+        }
+        if (StringUtils.isNotEmpty(param.getEndDate()) && StringUtils.isEmpty(param.getStartDate())){
+            param.setStartDate(new DateTime().toString("yyyy-MM-dd"));
+        }
+        int subPoint = 0;
+        List<VirtualOrder> virtual1 = virtualOrderService.getAllByParam(param);
+        for (VirtualOrder virtualTrade : virtual1){
+            subPoint += virtualTrade.getPoints();
+        }
+        if (param.getType() == 1){
+            param.setType(-2);
+            List<VirtualOrder> virtual2 = virtualOrderService.getAllByParam(param);
+            for (VirtualOrder virtual : virtual2) {
+                subPoint -= virtual.getAmount().intValue();
+            }
+        }
+        CameraDetail cameraDetailEntity = cameraDetailService.getByCameraId(param.getCameraId());
+        JSONObject jo = new JSONObject();
+        jo.put("result", subPoint);
+        jo.put("balance", cameraDetailEntity.getBalance());
+        return jo;
+    }
+
+    public Page<ResponseCamera> queryCameraListByParams(RequestCamera param) {
+        Page<ResponseCamera> pageInfo = cameraDetailService.queryListByParams(param);
+        for (ResponseCamera responseCamera : pageInfo.getRecords()){
+            if(responseCamera.getGoodsId() == 4){
+                List<ResponseCameraSpace> cameraList = cameraSpaceService.getVoListByCameraId(responseCamera.getId());
+                if(cameraList != null && cameraList.size() > 0){
+                    responseCamera.setSpace((long) FileSizeUtil.formetFileSize(cameraList.get(0).getSpace().longValue(), FileSizeUtil.SIZETYPE_GB));
+                    responseCamera.setSpaceStr(FileSizeUtil.formatFileSize(cameraList.get(0).getSpace().longValue()));
+                    responseCamera.setSpaceEndStr(DateUtil. date2String(cameraList.get(0).getSpaceEndTime(), DateUtil.YYYY_MM_DD_DATE_FORMAT));
+                }
+            }
+        }
+        return pageInfo;
+    }
+
+    public String addCamera(RequestCamera param) {
+        Camera cameraEntity = cameraService.addCameraByManager(param);
+        if (cameraEntity == null){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        RequestVirtualOrder vo = new RequestVirtualOrder();
+        vo.setBody(AgentConstant.DEFAULT_BODY);
+        vo.setStatus(String.valueOf(0));//0-系统赠送
+        vo.setPoints(Integer.parseInt(param.getBalance()));
+        vo.setPayStatus(1);// 1表示成功
+        vo.setPayType(2); // paypal
+        vo.setOrderSn(param.getOrderSn());
+        vo.setCameraId(cameraEntity.getId());
+        vo.setAbroad(0);//0-国内
+        if("s3".equals(type)){
+            vo.setAbroad(1);//1-国外
+        }
+        vo.setUserId(null);// 空表示后台管理员添加
+        vo.setTradeTime(new Date());
+        vo.setAmount(new BigDecimal("0.00"));
+        if(!virtualOrderService.addVirtualOrder(vo)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        //新增完相机后,判断是否归属企业账号,若归属查看企业账号相机是否自动注册,A注册,I不注册
+        CameraDetail cameraDetailEntity = cameraDetailService.getByCameraId(cameraEntity.getId());
+        if(cameraDetailEntity.getCompanyId() != null){
+            Company companyEntity = companyService.getById(cameraDetailEntity.getCompanyId());
+            if(companyEntity != null && companyEntity.getCameraDelete() == 0){
+                cameraEntity.setRecStatus("I");
+                cameraService.updateById(cameraEntity);
+            }
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    public void exportCamera(RequestCamera param, HttpServletRequest request, HttpServletResponse response) throws Exception{
+        Page<ResponseCamera> responseCameraPage = cameraDetailService.queryListByParams(param);
+
+        //导出的数据
+        Map<String, String> item = null;
+        List<Map> dataList = new ArrayList<Map>();
+        String outType = "";
+        for(ResponseCamera camera : responseCameraPage.getRecords()){
+            //购买相机的订单
+            item = new HashMap();
+            item.put(ConstantExcel.CAMEREXCELCOLENAME[0], camera.getChildName());
+            item.put(ConstantExcel.CAMEREXCELCOLENAME[1], camera.getSnCode());
+            item.put(ConstantExcel.CAMEREXCELCOLENAME[2], DateUtil.date2String(camera.getInTime(), null));
+            if(camera.getType() != null){
+                if(camera.getType() == 0){
+                    item.put(ConstantExcel.CAMEREXCELCOLENAME[3], "测试使用");
+                }
+                if(camera.getType() == 1){
+                    item.put(ConstantExcel.CAMEREXCELCOLENAME[3], "线上出库");
+                }
+                if(camera.getType() == 2){
+                    item.put(ConstantExcel.CAMEREXCELCOLENAME[3], "经销出库");
+                }
+            }
+            item.put(ConstantExcel.CAMEREXCELCOLENAME[4], camera.getOrderSn());
+            item.put(ConstantExcel.CAMEREXCELCOLENAME[5], camera.getAgentName());
+            item.put(ConstantExcel.CAMEREXCELCOLENAME[6], DateUtil.date2String(camera.getOutTime(), null));
+            item.put(ConstantExcel.CAMEREXCELCOLENAME[7], camera.getCountry() == 0? "大陆" : "海外");
+            item.put(ConstantExcel.CAMEREXCELCOLENAME[8], camera.getUserName());
+            item.put(ConstantExcel.CAMEREXCELCOLENAME[9], DateUtil.date2String(camera.getActivatedTime(), null));
+
+            dataList.add(item);
+        }
+
+        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        String dateStr = "库存数据-" + dateFormat.format(new Date());
+        String fileName = dateStr + ".xls";
+        File file = new File(FileUtils.getResource() + dateStr + ".xls");
+
+        ExcelUtil.writeExcel(dataList, ConstantExcel.CAMEREXCELCOLENAME.length, FileUtils.getResource() + dateStr + ".xls", 5);
+
+        String agent = request.getHeader("User-Agent");
+        if (agent != null && (agent.contains("MSIE")||agent.contains("Trident"))) {
+            fileName = URLEncoder.encode(fileName, "UTF-8");
+        } else {
+            //非IE浏览器的处理:
+            fileName = new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
+        }
+        response.setHeader("Content-Disposition", "attachment; filename=\""+fileName+"\"");
+        response.setContentType(request.getServletContext().getMimeType(fileName));
+        response.setContentLength((int) file.length());
+        ExcelUtil.output(response, file);
+    }
+
+    public String modifyPoints(RequestCamera param) {
+        String result = virtualOrderService.modifyPoints(param);
+        boolean result2 = cameraDetailService.updateCameraBalance(param.getCameraId(), param.getBody(), param.getPoints());
+        if(!result2){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return result;
+    }
+
+    public String unbindCamera(Long cameraId) throws Exception {
+        boolean bind = cameraDetailService.unbind(cameraId);
+        if(!bind){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        CameraDetail detailEntity = cameraDetailService.getByCameraId(cameraId);
+        //相机解除绑定,一并解除权益绑定
+        UserIncrement userIncrementEntity = userIncrementService.getByCameraId(cameraId);
+        if(userIncrementEntity != null){
+            userIncrementService.unbindCamera(detailEntity.getUserId(), userIncrementEntity.getId(), true,detailEntity,userIncrementEntity);
+        }
+
+//        sceneService.updateUserIdByCameraId(null, cameraId);
+//        sceneService.updateUserIdByCameraIdPro(null, cameraId);
+        //todo updateUserIdByCameraId
+
+        //删除所有相机协作信息
+
+//        if(detailEntity.getCooperationUser() != null){
+        RequestCamera camera = new RequestCamera();
+        camera.setCameraId(cameraId);
+        userService.deleteCooperationUser(camera,detailEntity);
+        return ServerCode.SUCCESS.message();
+    }
+
+    public String bindCamera(Long cameraId, String userName) {
+        User userEntity = userService.getUserByUserName(userName);
+        if (userEntity == null){
+            throw new BusinessException(AppConstant.FAILURE_CODE_4007, AppConstant.FAILURE_MSG_4007);
+        }
+        boolean bind = cameraDetailService.bind(cameraId, userEntity.getId());
+        if(!bind){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return ServerCode.SUCCESS.message();
+        //sceneService.updateUserIdByCameraId(userEntity.getId(), cameraId);
+        //sceneService.updateUserIdByCameraIdPro(userEntity.getId(), cameraId);
+        //todo updateUserIdByCameraId
+    }
+
+    public String manageSpace(RequestCamera param) {
+        if(param.getCameraId() == null || param.getMonth() == null || param.getSpace() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        //新的容量套餐方案
+        cameraSpaceService.removeByCameraId(param.getCameraId());
+
+        CameraDetail detailEntity = cameraDetailService.getByCameraId(param.getCameraId());
+        if(detailEntity == null){
+            throw new BusinessException(CameraConstant.FAILURE_6003);
+        }
+
+        CameraSpace cameraSpaceEntity = new CameraSpace();
+        DateTime date = null;
+        if(param.getMonth() == 12){
+            date = new DateTime().plusYears(1);
+        }else {
+            date = new DateTime().plusDays(param.getMonth() * 31);
+        }
+        cameraSpaceEntity.setUserId(detailEntity.getUserId());
+//        cameraSpaceEntity.setOrderSn(orderSn);
+        cameraSpaceEntity.setCameraId(param.getCameraId());
+        cameraSpaceEntity.setSpace(Long.parseLong(Constant.EXPANSION_SPACE_VALUE_1G )* Long.parseLong(param.getSpace() + ""));
+        cameraSpaceEntity.setSpaceType(2);
+        cameraSpaceEntity.setSpaceStartTime(new Date());
+        cameraSpaceEntity.setSpaceEndTime(date.toDate());
+        cameraSpaceService.save(cameraSpaceEntity);
+
+        detailEntity.setTotalSpace(cameraSpaceEntity.getSpace());
+        cameraDetailService.updateById(detailEntity);
+
+        //sceneService.unlockBeyondSpaceScenes(cameraSpaceEntity.getSpace(), cameraSpaceEntity.getUserId(), param.getCameraId());
+        //todo unlockBeyondSpaceScenes
+        return ServerCode.SUCCESS.message();
+    }
+
+    public String recoverSpace(RequestCamera param) {
+        if(param.getCameraId() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        //删除改相机所有扩容记录
+        cameraSpaceService.removeByCameraId(param.getCameraId());
+
+
+        //恢复10G基本容量
+        CameraDetail detailEntity = cameraDetailService.getByCameraId(param.getCameraId());
+        if(detailEntity == null){
+            throw new BusinessException(CameraConstant.FAILURE_6003);
+        }
+        detailEntity.setTotalSpace(Long.parseLong(Constant.EXPANSION_SPACE_VALUE_1G) * 10);
+        cameraDetailService.updateById(detailEntity);
+        //sceneService.lockBeyondSpaceScenes(detailEntity.getUsedSpace(), detailEntity.getTotalSpace(), detailEntity.getUserId(), detailEntity.getCameraId());
+        //todo lockBeyondSpaceScenes
+        return ServerCode.SUCCESS.message();
+
+    }
+
+    public Page<ResponseCamera> companyList(RequestCamera param, String token) {
+        Manager managerEntity = this.checkManagerUser(token);
+        param.setUserName(managerEntity.getUsername());
+        return cameraDetailService.queryCompanyCameraListByParams(param);
+    }
+
+    public String companyUpdate(RequestCamera param, String token) {
+        this.checkManagerUser(token);
+        Camera cameraEntity = new Camera();
+        cameraEntity.setId(param.getCameraId());
+        cameraEntity.setRecStatus(param.getRecStatus());
+        cameraService.updateById(cameraEntity);
+
+        CameraDetail cameraDetailEntity = cameraDetailService.getByCameraId(param.getCameraId());
+        cameraDetailEntity.setAddress(param.getAddress());
+        cameraDetailService.updateById(cameraDetailEntity);
+        return ServerCode.SUCCESS.message();
+    }
+    private Manager checkManagerUser(String token){
+        String userName = JwtUtil.getUsername(token);
+        Manager managerEntity = managerService.getByUserName(userName.replace(SsoUtil.PREFIX_CACHE_MANAGER, ""));
+        if (managerEntity == null){
+            throw new BusinessException(ErrorCode.USER_NOT_EXIST);
+        }
+        if(managerEntity.getIsCompany() != 1){
+            throw new BusinessException(ErrorCode.NOT_PERMISSION);
+        }
+        return managerEntity;
+    }
+
+    public Camera addCameraNew(RequestCamera param) {
+        if(StringUtils.isEmpty(param.getSnCode()) || param.getType() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        Camera cameraEntity = cameraService.getBySnCode(param.getSnCode());
+        if(cameraEntity != null){
+            throw new BusinessException(CameraConstant.FAILURE_6001);
+        }
+
+        cameraEntity = new Camera();
+        cameraEntity.setSnCode(param.getSnCode());
+        cameraEntity.setChildName(param.getSnCode());
+        cameraEntity.setActivatedTime(new Date());
+        cameraEntity.setWifiPassword(AgentConstant.WIFI_PASSWORD_VALUE);
+        cameraEntity.setWifiName("4DKKPRO_" + param.getSnCode());
+        cameraEntity.setChildPassword(AgentConstant.CHILD_PASSWORD_VALUE);
+        cameraService.save(cameraEntity);
+
+        CameraDetail detailEntity = new CameraDetail();
+        detailEntity.setCameraId(cameraEntity.getId());
+        detailEntity.setAgency(AgentConstant.DEFAULT_AGENT);
+        detailEntity.setCountry(0);//默认中国
+        if("s3".equals(type)){
+            detailEntity.setCountry(1);//1-国外
+        }
+        detailEntity.setCameraType(param.getType());
+        //商品类型,type:1为8目,type:2为双目 3:为转台
+        if(param.getType().equals(3)){
+            detailEntity.setGoodsId(9L);
+        }else {
+            detailEntity.setGoodsId(param.getType() == 1 ? 4L : 8L);
+        }
+
+        detailEntity.setTotalSpace(Long.valueOf(Constant.CAMERA_BASE_SPACE_VALUE));
+        detailEntity.setUsedSpace(Long.valueOf("0"));
+        cameraDetailService.save(detailEntity);
+        return cameraEntity;
+    }
+
+    public String cameraOwn(RequestCamera param) {
+        if(StringUtils.isEmpty(param.getOwn()) || param.getCameraId() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+
+        if(Integer.parseInt(param.getOwn()) == 4 && param.getAgentFrameworkId() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        Camera cameraEntity = cameraService.getById(param.getCameraId());
+        if(cameraEntity == null || "I".equals(cameraEntity.getRecStatus())){
+            throw new BusinessException(CameraConstant.FAILURE_6003);
+        }
+        CameraDetail cameraDetailEntity = cameraDetailService.getByCameraId(cameraEntity.getId());
+        cameraDetailEntity.setOwn(Integer.valueOf(param.getOwn()));
+        cameraDetailEntity.setAgentFrameworkId(param.getAgentFrameworkId());
+        cameraDetailService.updateById(cameraDetailEntity);
+        return ServerCode.SUCCESS.message();
+    }
+
+    public Page<ResponseCamera> cameraList(RequestCamera param, String userName) {
+        //查找该用户的权限,判断是否四维看看管理员用户
+        Manager managerEntity = managerService.getByUserName(userName);
+        if(managerEntity == null){
+            throw new BusinessException(ErrorCode.USER_NOT_EXIST);
+        }
+
+        AgentFramework agentFrameworkEntity = null;
+
+        if(managerEntity.getAgentFrameworkId() != null){
+            agentFrameworkEntity = agentFrameworkService.getById(managerEntity.getAgentFrameworkId());
+            //四维看看管理员用户是最顶层父类,若有父类,则是企业用户,则只返回该企业的相机列表
+            if(agentFrameworkEntity != null && agentFrameworkEntity.getParentId() != null){
+                param.setAgentFrameworkId(agentFrameworkEntity.getId());
+            }
+        }
+
+        Page<ResponseCamera> pageInfo = cameraDetailService.cameraList(param);
+
+        Company companyEntity = null;
+        User userEntity = null;
+        for (ResponseCamera responseCamera : pageInfo.getRecords()) {
+            if(responseCamera.getAgentFrameworkId() != null){
+                agentFrameworkEntity = agentFrameworkService.getById(responseCamera.getAgentFrameworkId());
+                if(agentFrameworkEntity != null && "A".equals(agentFrameworkEntity.getRecStatus())){
+                    responseCamera.setAgentFrameworkName(agentFrameworkEntity.getAgentName());
+                }
+            }
+
+            if(responseCamera.getCompanyId() != null){
+                companyEntity = companyService.getById(responseCamera.getCompanyId());
+                if(companyEntity != null && "A".equals(companyEntity.getRecStatus())){
+                    responseCamera.setCompanyName(companyEntity.getCompanyName());
+                }
+            }
+
+            if(responseCamera.getUserId() != null){
+                userEntity = userService.getById(responseCamera.getUserId());
+                if(userEntity != null && "A".equals(userEntity.getRecStatus())){
+                    responseCamera.setUserName(userEntity.getUserName());
+                }
+            }
+        }
+        return pageInfo;
+    }
+
+    public Integer importCamera(MultipartFile file) throws Exception{
+        if (file.isEmpty() && file.getSize() <= 0) {
+            throw new BusinessException(SceneConstant.FAILURE_CODE_5012, SceneConstant.FAILURE_MSG_5012);
+        }
+
+        //文件上传的位置可以自定义
+        String path = FileUtils.getResource() + "camera/";
+        File targetFile = new File(path);
+        if (!targetFile.exists()) {
+            targetFile.mkdirs();
+        }
+        String fileName = "inCamera-" + DateUtil.date2String(new Date(), DateUtil.YYYYMMDDHHMMSS_DATA_FORMAT);
+        targetFile = new File(path + File.separator + fileName);
+        // 保存
+        synchronized(this)
+        {
+            if(targetFile.exists())
+            {
+                FileUtils.deleteFile(path + File.separator + fileName);
+            }
+            file.transferTo(targetFile);
+        }
+
+        ImportExeclUtil poi = new ImportExeclUtil();
+        List<List<String>> list = poi.read(path + File.separator + fileName);
+        if (list != null) {
+            Camera cameraEntity = null;
+            String importError = "";
+            RequestCamera param = new RequestCamera();
+            for (int i = 0; i < list.size(); i++) {
+                List<String> cellList = list.get(i);
+                if(i < 3){
+                    continue;
+                }
+                importError = CameraCache.IMPORT_ERROR_NUM.replace("{n}", (i + 1) + "");
+                if(!"四维看看Pro八目相机".equals(cellList.get(0).trim()) && !"四维看看Lite双目相机".equals(cellList.get(0).trim())){
+                    throw new BusinessException(CameraConstant.FAILURE_6018.code(), importError + CameraConstant.FAILURE_6018.name());
+                }
+
+                cameraEntity = cameraService.getBySnCode(cellList.get(1).trim());
+                if(cameraEntity != null){
+                    throw new BusinessException(CameraConstant.FAILURE_6001.code(), importError + CameraConstant.FAILURE_6001.name());
+                }
+
+                param = new RequestCamera();
+                param.setSnCode(cellList.get(1).trim());
+                if("四维看看Pro八目相机".equals(cellList.get(0).trim())){
+                    param.setType(1);
+                }
+                if("四维看看Lite八目相机".equals(cellList.get(0).trim())){
+                    param.setType(2);
+                }
+                this.addCameraNew(param);
+            }
+
+        }
+        return list.size() - 3;
+    }
+
+    public Integer importOutCamera(MultipartFile file) throws Exception {
+        if (file.isEmpty() && file.getSize() <= 0) {
+            throw new BusinessException(SceneConstant.FAILURE_CODE_5012, SceneConstant.FAILURE_MSG_5012);
+        }
+
+        //文件上传的位置可以自定义
+        String path = FileUtils.getResource() + "camera/";
+        File targetFile = new File(path);
+        if (!targetFile.exists()) {
+            targetFile.mkdirs();
+        }
+        String fileName = "outCamera-" + DateUtil.date2String(new Date(), DateUtil.YYYYMMDDHHMMSS_DATA_FORMAT);
+        targetFile = new File(path + File.separator + fileName);
+        // 保存
+        synchronized(this)
+        {
+            if(targetFile.exists())
+            {
+                FileUtils.deleteFile(path + File.separator + fileName);
+            }
+            file.transferTo(targetFile);
+        }
+
+        ImportExeclUtil poi = new ImportExeclUtil();
+        List<List<String>> list = poi.read(path + File.separator + fileName);
+        if (list != null) {
+            Camera cameraEntity = null;
+            String importError = "";
+            QueryWrapper<AgentFramework> queryWrapper = null;
+            Long agentFrameworkId = null;
+            CameraDetail cameraDetailEntity = null;
+            for (int i = 0; i < list.size(); i++) {
+                List<String> cellList = list.get(i);
+                if(i < 3){
+                    continue;
+                }
+                importError = CameraCache.IMPORT_ERROR_NUM.replace("{n}", (i + 1) + "");
+                if(StringUtils.isEmpty(cellList.get(0).trim())){
+                    throw new BusinessException(CameraConstant.FAILURE_6019.code(), importError + CameraConstant.FAILURE_6019.name());
+                }
+                if(StringUtils.isEmpty(cellList.get(1).trim())){
+                    throw new BusinessException(CameraConstant.FAILURE_6021.code(), importError + CameraConstant.FAILURE_6021.name());
+                }
+                if(!"正常销售".equals(cellList.get(1).trim()) && !"经销商销售".equals(cellList.get(1).trim())
+                        && !"礼品赠送".equals(cellList.get(1).trim()) && !"员工自用".equals(cellList.get(1).trim())
+                        && !"其他".equals(cellList.get(1).trim())){
+                    throw new BusinessException(CameraConstant.FAILURE_6022.code(), importError + CameraConstant.FAILURE_6022.name());
+
+                }
+                if("经销商销售".equals(cellList.get(1).trim())){
+                    if(StringUtils.isEmpty(cellList.get(2).trim())){
+                        throw new BusinessException(CameraConstant.FAILURE_6023.code(), importError + CameraConstant.FAILURE_6023.name());
+                    }
+
+                    queryWrapper = new QueryWrapper<>();
+                    queryWrapper.lambda().eq(AgentFramework::getRecStatus,"A");
+                    queryWrapper.lambda().eq(AgentFramework::getAgentName,cellList.get(2).trim());
+                    List<AgentFramework> agentFrameworkEntityList = agentFrameworkService.list(queryWrapper);
+                    if(agentFrameworkEntityList.size() <= 0){
+                        throw new BusinessException(CameraConstant.FAILURE_6024.code(), importError + CameraConstant.FAILURE_6024.name());
+                    }
+                    agentFrameworkId = agentFrameworkEntityList.get(0).getId();
+                }
+
+                cameraEntity = cameraService.getBySnCode(cellList.get(0).trim());
+                if(cameraEntity == null || "I".equals(cameraEntity.getRecStatus())){
+                    throw new BusinessException(CameraConstant.FAILURE_6020.code(), importError + CameraConstant.FAILURE_6020.name());
+                }
+
+                cameraDetailEntity = cameraDetailService.getByCameraId(cameraEntity.getId());
+                if("正常销售".equals(cellList.get(1).trim())){
+                    cameraDetailEntity.setOwn(0);
+                }
+                if("经销商销售".equals(cellList.get(1).trim())){
+                    cameraDetailEntity.setOwn(4);
+                }
+                if("礼品赠送".equals(cellList.get(1).trim())){
+                    cameraDetailEntity.setOwn(2);
+                }
+                if("员工自用".equals(cellList.get(1).trim())){
+                    cameraDetailEntity.setOwn(1);
+                }
+                if("其他".equals(cellList.get(1).trim())){
+                    cameraDetailEntity.setOwn(3);
+                }
+                cameraDetailEntity.setAgentFrameworkId(agentFrameworkId);
+                cameraDetailService.updateById(cameraDetailEntity);
+            }
+
+        }
+        return list.size() - 3;
+    }
+
+    public Integer importCompanyCamera(MultipartFile file) throws Exception {
+        if (file.isEmpty() && file.getSize() <= 0) {
+            throw new BusinessException(SceneConstant.FAILURE_CODE_5012, SceneConstant.FAILURE_MSG_5012);
+        }
+
+        //文件上传的位置可以自定义
+        String path = FileUtils.getResource() + "camera/";
+        File targetFile = new File(path);
+        if (!targetFile.exists()) {
+            targetFile.mkdirs();
+        }
+        String fileName = "companyCamera-" + DateUtil.date2String(new Date(), DateUtil.YYYYMMDDHHMMSS_DATA_FORMAT);
+        targetFile = new File(path + File.separator + fileName);
+        // 保存
+        synchronized(this)
+        {
+            if(targetFile.exists())
+            {
+                FileUtils.deleteFile(path + File.separator + fileName);
+            }
+            file.transferTo(targetFile);
+        }
+
+        ImportExeclUtil poi = new ImportExeclUtil();
+        List<List<String>> list = poi.read(path + File.separator + fileName);
+        if (list != null) {
+            Camera cameraEntity = null;
+            String importError = "";
+            CameraDetail cameraDetailEntity = null;
+            QueryWrapper<Company> queryWrapper = null;
+            List<Company> companyEntityList = null;
+            Long companyId = null;
+            for (int i = 0; i < list.size(); i++) {
+                List<String> cellList = list.get(i);
+                if(i < 3){
+                    continue;
+                }
+                importError = CameraCache.IMPORT_ERROR_NUM.replace("{n}", (i + 1) + "");
+
+                if(StringUtils.isEmpty(cellList.get(0).trim())){
+                    throw new BusinessException(CameraConstant.FAILURE_6019.code(), importError + CameraConstant.FAILURE_6019.name());
+                }
+                if(StringUtils.isEmpty(cellList.get(1).trim())){
+                    throw new BusinessException(CameraConstant.FAILURE_6026.code(), importError + CameraConstant.FAILURE_6026.name());
+                }
+
+                cameraEntity = cameraService.getBySnCode(cellList.get(1).trim());
+                if(cameraEntity == null || "I".equals(cameraEntity.getRecStatus())){
+                    throw new BusinessException(CameraConstant.FAILURE_6020.code(), importError + CameraConstant.FAILURE_6020.name());
+                }
+
+                cameraDetailEntity = cameraDetailService.getByCameraId(cameraEntity.getId());
+                if(cameraDetailEntity.getOwn() == null){
+                    throw new BusinessException(CameraConstant.FAILURE_6025.code(), importError + CameraConstant.FAILURE_6025.name());
+                }
+
+                queryWrapper = new QueryWrapper<>();
+                queryWrapper.lambda().eq(Company::getRecStatus,"A");
+                queryWrapper.lambda().eq(Company::getCompanyName,cellList.get(1).trim());
+                companyEntityList = companyService.list(queryWrapper);
+                if(companyEntityList.size() <= 0){
+                    throw new BusinessException(CameraConstant.FAILURE_6027.code(), importError + CameraConstant.FAILURE_6027.name());
+
+                }
+                companyId = companyEntityList.get(0).getId();
+
+                cameraDetailEntity.setCameraId(companyId);
+                cameraDetailService.updateById(cameraDetailEntity);
+            }
+
+        }
+        return list.size() - 3;
+    }
+}

+ 65 - 10
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraDetailServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fdkankan.platform.goods.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -63,12 +64,16 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
 
     @Override
     public Integer getCountByAgentId(String agentId) {
-        long count = this.count(new QueryWrapper<CameraDetail>().eq("agency", agentId));
+        LambdaQueryWrapper<CameraDetail> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(CameraDetail::getRecStatus, "A");
+        queryWrapper.eq(CameraDetail::getAgency, agentId);
+        long count = this.count();
         return Math.toIntExact(count);
     }
     @Override
     public CameraDetail getByCameraId(Long cameraId) {
         QueryWrapper<CameraDetail> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CameraDetail :: getRecStatus,"A");
         queryWrapper.lambda().eq(CameraDetail :: getCameraId,cameraId);
         List<CameraDetail> list = this.list(queryWrapper);
         if(list == null || list.size()<=0){
@@ -81,6 +86,7 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
     public Page<ResponseAgentCamera> getPageByAgentId(RequestAgent param) {
         QueryWrapper<CameraDetail> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(CameraDetail :: getAgency,param.getAgentId());
+        queryWrapper.lambda().eq(CameraDetail :: getRecStatus,"A");
         queryWrapper.lambda().orderByDesc(CameraDetail::getCreateTime);
 
         Page<CameraDetail> page = new Page<>();
@@ -111,6 +117,7 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
     @Override
     public List<CameraDetail> getListByAgentId(String agentId) {
         QueryWrapper<CameraDetail> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CameraDetail::getRecStatus,"A");
         queryWrapper.lambda().eq(CameraDetail::getAgency,agentId);
         queryWrapper.lambda().orderByDesc(CameraDetail::getCreateTime);
         return  this.list(queryWrapper);
@@ -149,7 +156,10 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
 
     private QueryWrapper<CameraDetail> getQueryByUserAndType(Integer cameraType, Long userId) {
         QueryWrapper<CameraDetail> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(CameraDetail::getUserId,userId);
+        queryWrapper.lambda().eq(CameraDetail::getRecStatus,"A");
+        if(userId != null){
+            queryWrapper.lambda().eq(CameraDetail::getUserId,userId);
+        }
         queryWrapper.lambda().orderByDesc(CameraDetail::getCreateTime);
         if(cameraType!=null){
             switch (cameraType){
@@ -338,6 +348,7 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
     @Override
     public Integer getDeadLineNumber(Long userId) {
         QueryWrapper<CameraDetail> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CameraDetail::getRecStatus,"A");
         queryWrapper.lambda().eq(CameraDetail::getUserId,userId);
         List<CameraDetail> list = this.list(queryWrapper);
         Integer number = 0;
@@ -354,26 +365,25 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
     }
 
     @Override
-    public void unbind(Long cameraId) {
-        this.bindOrUnbind(cameraId,null);
+    public boolean unbind(Long cameraId) {
+        return this.bindOrUnbind(cameraId,null);
     }
 
     @Override
-    public void bind(Long userId, Long cameraId) {
+    public boolean bind(Long userId, Long cameraId) {
         CameraDetail byCameraId = this.getByCameraId(cameraId);
         if(byCameraId != null){
             throw new BusinessException(AppConstant.FAILURE_CODE_4011, AppConstant.FAILURE_MSG_4011);
         }
-        this.bindOrUnbind(cameraId,userId);
+        return this.bindOrUnbind(cameraId,userId);
     }
 
-    private void bindOrUnbind(Long cameraId,Long userId){
+    private boolean bindOrUnbind(Long cameraId, Long userId){
         UpdateWrapper<CameraDetail> updateWrapper = new UpdateWrapper<>();
         updateWrapper.lambda().set(CameraDetail::getUserId,userId);
+        updateWrapper.lambda().eq(CameraDetail::getRecStatus,"A");
         updateWrapper.lambda().eq(CameraDetail::getCameraId,cameraId);
-        if(!this.update(updateWrapper)){
-            throw new BusinessException(ErrorCode.ERROR_MSG);
-        }
+        return this.update(updateWrapper);
     }
 
     @Override
@@ -413,6 +423,7 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
     @Override
     public List<CameraDetail> getListByUserId(Long userId, Long cameraType) {
         QueryWrapper<CameraDetail> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CameraDetail::getRecStatus,"A");
         queryWrapper.lambda().eq(CameraDetail::getUserId,userId);
         queryWrapper.lambda().orderByDesc(CameraDetail::getUpdateTime);
         if(cameraType != null ){
@@ -422,4 +433,48 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
         queryWrapper.lambda().ne(CameraDetail::getGoodsId,4);
         return this.list(queryWrapper);
     }
+
+    @Override
+    public Page<ResponseCamera> queryListByParams(RequestCamera param) {
+        Page<ResponseCamera> pageVo = new Page<ResponseCamera>(param.getPageNum(), param.getPageSize());
+        Integer start = (param.getPageNum() -1 )* param.getPageSize();
+        Integer count = cameraDetailMapper.queryCountByParams(param.getSearchKey(),param.getType(),param.getStartDate(),param.getEndDate());
+        if(count <= 0){
+            return pageVo;
+        }
+        List<ResponseCamera> result = cameraDetailMapper.queryListByParams(param.getSearchKey(),param.getType(),param.getStartDate(),param.getEndDate(),
+                start,param.getPageSize(),"t.id desc");
+        pageVo.setTotal(count);
+        pageVo.setRecords(result);
+        return pageVo;
+    }
+
+    @Override
+    public Page<ResponseCamera>  queryCompanyCameraListByParams(RequestCamera param) {
+        Page<ResponseCamera> pageVo = new Page<>(param.getPageNum(), param.getPageSize());
+        Integer start = (param.getPageNum() -1 )* param.getPageSize();
+        Integer count = cameraDetailMapper.queryCompanyCameraCountByParams(param.getSearchKey(),param.getUserName());
+        if(count <= 0){
+            return pageVo;
+        }
+        List<ResponseCamera> result = cameraDetailMapper.queryCompanyCameraListByParams(param.getSearchKey(),param.getUserName(),
+                start,param.getPageSize(),"a.create_time desc");
+        pageVo.setTotal(count);
+        pageVo.setRecords(result);
+        return pageVo;
+    }
+
+    @Override
+    public Page<ResponseCamera> cameraList(RequestCamera param) {
+        Page<ResponseCamera> pageVo = new Page<>(param.getPageNum(), param.getPageSize());
+        Integer start = (param.getPageNum() -1 )* param.getPageSize();
+        Integer count = cameraDetailMapper.cameraCount(param);
+        if(count <= 0){
+            return pageVo;
+        }
+        List<ResponseCamera> result = cameraDetailMapper.cameraList(param,
+                start,param.getPageSize(),"a.create_time desc");
+        pageVo.setTotal(count);
+        pageVo.setRecords(result);
+        return pageVo;    }
 }

+ 141 - 3
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.constant.*;
+import com.fdkankan.common.util.NumberUtils;
 import com.fdkankan.platform.agent.constant.AgentConstant;
 import com.fdkankan.common.user.SSOUser;
 import com.fdkankan.common.util.DateUtil;
@@ -33,11 +34,13 @@ import org.joda.time.DateTime;
 import org.joda.time.Days;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.OutputStream;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
@@ -62,6 +65,8 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     private IUserService userService;
     @Autowired
     private IGoodsService goodsService;
+    @Value("${oss.type}")
+    private String type;
 
 
     @Override
@@ -95,6 +100,7 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     @Override
     public Camera getByChildName(String childName){
         QueryWrapper<Camera> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Camera::getRecStatus,"A");
         queryWrapper.lambda().eq(Camera::getChildName,childName);
         return this.getEntityByQuery(queryWrapper);
     }
@@ -157,6 +163,7 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     @Override
     public List<ResponseCamera> getByUser(Long userId, Integer cameraType) {
         QueryWrapper<CameraDetail> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CameraDetail::getRecStatus,"A");
         if(cameraType == null){
             queryWrapper.lambda().eq(CameraDetail::getUserId,userId);
         }else if(cameraType == 4){
@@ -203,7 +210,11 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
 
     @Override
     public String addCamera(RequestCamera camera, String token) {
-        SSOUser ssoUser = userService.getSSOUserByToken(token);
+        Long userId = null;
+        if(token != null){
+            SSOUser ssoUser = userService.getSSOUserByToken(token);
+            userId = ssoUser.getId();
+        }
         String[] snCodeArr = camera.getSnCode().split(",");
         for (String snCode : snCodeArr) {
             Camera cameraEntity = this.getBySnCode(snCode);
@@ -217,7 +228,7 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
             if (cameraDetailEntity.getUserId() != null){
                 throw new BusinessException(CameraConstant.FAILURE_6010);
             }
-           this.addCamera(ssoUser.getId(), camera.getCameraType(), cameraEntity.getId());
+           this.addCamera(userId, camera.getCameraType(), cameraEntity.getId());
         }
         return ServerCode.SUCCESS.message();
     }
@@ -239,6 +250,7 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     @Override
     public Camera getBySnCode(String snCode) {
         QueryWrapper<Camera> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Camera::getRecStatus,"A");
         queryWrapper.lambda().eq(Camera::getSnCode,snCode);
         return this.getEntityByQuery(queryWrapper);
     }
@@ -291,6 +303,7 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     @Override
     public List<Camera> findLikeChildName(String trim) {
         QueryWrapper<Camera> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Camera::getRecStatus,"A");
         queryWrapper.lambda().like(Camera::getSnCode,trim);
         return this.list(queryWrapper);
     }
@@ -298,6 +311,7 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     @Override
     public Camera getByChildNameAndChildPassword(String appUserName, String appPassword) {
         QueryWrapper<Camera> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Camera::getRecStatus,RecStatus.VALID.code());
         queryWrapper.lambda().eq(Camera::getChildName,appUserName);
         queryWrapper.lambda().eq(Camera::getChildPassword,appPassword);
         return this.getEntityByQuery(queryWrapper);
@@ -306,7 +320,6 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     @Override
     public Camera getAvailableById(Long id) {
         Camera camera = this.getOne(new LambdaQueryWrapper<Camera>()
-                .eq(Camera::getTbStatus, TbStatus.VALID.code())
                 .eq(Camera::getRecStatus, RecStatus.VALID.code())
                 .eq(Camera::getId, id));
         return camera;
@@ -407,6 +420,131 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
         return wb;
     }
 
+    @Override
+    public Camera addCameraByManager(RequestCamera param) {
+        Camera camera = this.getByChildName(param.getChildName());
+        if (camera != null){
+            throw new BusinessException(CameraConstant.FAILURE_6001);
+        }
+        String orderSn = param.getOrderSn();
+        if (StringUtils.isEmpty(orderSn)){
+            orderSn = NumberUtils.getOrderSn();
+        }
+        //添加相机
+        Camera cameraEntity = new Camera();
+        cameraEntity.setActivatedTime(new Date());
+        cameraEntity.setWifiPassword(AgentConstant.WIFI_PASSWORD_VALUE);
+        cameraEntity.setWifiName(param.getWifiName());
+        cameraEntity.setSnCode(param.getSnCode());
+        cameraEntity.setChildName(param.getChildName());
+        cameraEntity.setChildPassword(AgentConstant.CHILD_PASSWORD_VALUE);
+        this.save(cameraEntity);
+
+        CameraDetail detailEntity = new CameraDetail();
+        detailEntity.setCameraId(cameraEntity.getId());
+        detailEntity.setOrderSn(orderSn);
+        detailEntity.setOwn(StringUtils.isEmpty(param.getOwn()) ? 0 : Integer.valueOf(param.getOwn()));
+        detailEntity.setAgency(AgentConstant.DEFAULT_AGENT);
+        detailEntity.setCountry(0);//默认中国
+        if("s3".equals(type)){
+            detailEntity.setCountry(1);//1-国外
+        }
+        detailEntity.setBalance(param.getBalance());
+        detailEntity.setCameraType(param.getType());
+        if(param.getType() == 9){
+            detailEntity.setGoodsId(9L);
+        }else if(param.getType() == 10){
+            detailEntity.setGoodsId(10L);
+        }else{
+            detailEntity.setGoodsId(param.getType() == 0 ? 1L : 4L);
+        }
+
+        if (1 == param.getType() || 9 == param.getType() || 10 == param.getType()){
+            detailEntity.setTotalSpace(Long.parseLong(Constant.CAMERA_BASE_SPACE_VALUE));
+            detailEntity.setUsedSpace(0L);
+        }
+        detailEntity.setCompanyId(param.getCompanyId());
+        cameraDetailService.save(detailEntity);
+        return cameraEntity;
+    }
 
+    @Override
+    public Camera updateCameraByManager(RequestCamera param) {
+        Camera dbCamera = this.getByChildName(param.getChildName());
+        if (dbCamera == null){
+            throw new BusinessException(CameraConstant.FAILURE_6020);
+        }
+        String orderSn = param.getOrderSn();
+        if (StringUtils.isEmpty(orderSn)){
+            orderSn = NumberUtils.getOrderSn();
+        }
+        //添加相机
+        Camera cameraEntity = new Camera();
+        cameraEntity.setId(param.getCameraId());
+
+        cameraEntity.setActivatedTime(new Date());
+        cameraEntity.setWifiPassword(AgentConstant.WIFI_PASSWORD_VALUE);
+        cameraEntity.setWifiName(param.getWifiName());
+        cameraEntity.setSnCode(param.getSnCode());
+        cameraEntity.setChildName(param.getChildName());
+        cameraEntity.setChildPassword(AgentConstant.CHILD_PASSWORD_VALUE);
+        this.updateById(cameraEntity);
+
+        CameraDetail detailEntity = cameraDetailService.getByCameraId(param.getCameraId());
+
+        if(detailEntity!=null){
+
+            detailEntity.setCameraId(param.getCameraId());
+            detailEntity.setOwn(param.getOwn() ==null ? 0 : Integer.valueOf(param.getOwn()));
+            detailEntity.setBalance(param.getBalance());
+            detailEntity.setOrderSn(orderSn);
+            // lite类型的相机,修改为 Pro、 Minion、Laser类型,相机云端总容量没有更新为10GB
+            if (0 == detailEntity.getCameraType() && param.getType()!=detailEntity.getCameraType()){
+                detailEntity.setTotalSpace(Long.parseLong(Constant.CAMERA_BASE_SPACE_VALUE));
+            }
+            detailEntity.setCameraType(param.getType());
+            if(param.getType() == 9 || param.getType() == 10){
+                detailEntity.setGoodsId(param.getType().longValue());
+            }else{
+                detailEntity.setGoodsId(param.getType() == 0 ? 1L : 4L);
+            }
+            detailEntity.setCompanyId(param.getCompanyId());
 
+            cameraDetailService.updateById(detailEntity);
+        }
+
+        return cameraEntity;
+    }
+
+    @Override
+    public String deleteCamera(RequestCamera param) {
+        String[] ids = param.getIds().split(",");
+        List<Long>  detailIds = new ArrayList<>();
+        for(String id : ids){
+            CameraDetail cameraDetail = cameraDetailService.getByCameraId(Long.valueOf(id));
+            detailIds.add(cameraDetail.getId());
+        }
+        if(!cameraDetailService.removeByIds(detailIds)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        if(!this.removeByIds(Arrays.asList(ids))){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public String deleteCameraNew(RequestCamera param) {
+        String[] ids = param.getIds().split(",");
+        CameraDetail cameraDetailEntity = null;
+        for(String id : ids){
+            cameraDetailEntity = cameraDetailService.getByCameraId(Long.valueOf(id));
+            if(cameraDetailEntity.getOwn() != null){
+                throw new BusinessException(CameraConstant.FAILURE_6017);
+            }
+            cameraDetailService.removeById(cameraDetailEntity.getId());
+            this.removeById(Long.valueOf(id));
+        }
+        return ServerCode.SUCCESS.message();
+    }
 }

+ 8 - 3
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraSpaceServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fdkankan.platform.goods.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.platform.goods.entity.CameraSpace;
 import com.fdkankan.platform.goods.mapper.ICameraSpaceMapper;
@@ -31,6 +32,7 @@ public class CameraSpaceServiceImpl extends ServiceImpl<ICameraSpaceMapper, Came
     @Override
     public List<CameraSpace> getListByCameraId(Long cameraId) {
         QueryWrapper<CameraSpace> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CameraSpace::getRecStatus,"A");
         queryWrapper.lambda().eq(CameraSpace::getCameraId,cameraId);
         return this.list(queryWrapper);
     }
@@ -43,6 +45,7 @@ public class CameraSpaceServiceImpl extends ServiceImpl<ICameraSpaceMapper, Came
     @Override
     public CameraSpace getByUserIdAndCameraId(Long userId, Long cameraId) {
         QueryWrapper<CameraSpace> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CameraSpace::getRecStatus,"A");
         queryWrapper.lambda().eq(CameraSpace::getUserId,userId)
                 .eq(CameraSpace::getCameraId,cameraId)
                 .eq(CameraSpace::getSpaceType,1);
@@ -55,9 +58,11 @@ public class CameraSpaceServiceImpl extends ServiceImpl<ICameraSpaceMapper, Came
 
     @Override
     public void removeByCameraId(Long cameraId) {
-        QueryWrapper<CameraSpace> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(CameraSpace::getCameraId,cameraId);
-        this.remove(queryWrapper);
+        UpdateWrapper<CameraSpace> update = new UpdateWrapper<>();
+        update.lambda().eq(CameraSpace::getRecStatus,"A");
+        update.lambda().eq(CameraSpace::getCameraId,cameraId);
+        update.lambda().set(CameraSpace::getRecStatus,"I");
+        this.update(update);
     }
 
     @Override

+ 2 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraVersionServiceImpl.java

@@ -51,6 +51,7 @@ public class CameraVersionServiceImpl extends ServiceImpl<ICameraVersionMapper,
     private LambdaQueryWrapper<CameraVersion> getQueryByType(String type){
         LambdaQueryWrapper<CameraVersion> queryWrapper = new LambdaQueryWrapper<>();
         String cameraType = StringUtils.isNotBlank(type) ? type : "1";
+        queryWrapper.eq(CameraVersion::getRecStatus,"A");
         queryWrapper.eq(CameraVersion::getCameraType,cameraType)
                 .orderByDesc(CameraVersion::getCreateTime);
         return queryWrapper;
@@ -90,6 +91,7 @@ public class CameraVersionServiceImpl extends ServiceImpl<ICameraVersionMapper,
     public Page<CameraVersion> searchLike(RequestSearch param) {
         String cameraType = StringUtils.isNotBlank(param.getType()) ? param.getType() : "1";
         LambdaQueryWrapper<CameraVersion> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(CameraVersion::getRecStatus,"A");
         queryWrapper.eq(CameraVersion::getCameraType,cameraType);
         if(param.getStartDate()!=null){
             queryWrapper.ge(CameraVersion::getCreateTime,param.getStartDate());

+ 2 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CartServiceImpl.java

@@ -107,6 +107,7 @@ public class CartServiceImpl extends ServiceImpl<ICartMapper, Cart> implements I
 
     public List<Cart> getByUser(Long userId){
         QueryWrapper<Cart> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Cart::getRecStatus,"A");
         queryWrapper.lambda().eq(Cart::getUserId,userId);
         queryWrapper.lambda().orderByDesc(Cart::getCreateTime);
         return this.list(queryWrapper);
@@ -114,6 +115,7 @@ public class CartServiceImpl extends ServiceImpl<ICartMapper, Cart> implements I
 
     public Cart getByUserAndGoods(Long userId ,Long goodsId){
         QueryWrapper<Cart> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Cart::getRecStatus,"A");
         queryWrapper.lambda().eq(Cart::getUserId,userId);
         queryWrapper.lambda().eq(Cart::getGoodsId,goodsId);
         queryWrapper.lambda().last("LIMIT 1");

+ 2 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/GoodsSkuServiceImpl.java

@@ -38,6 +38,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl<IGoodsSkuMapper, GoodsSku>
     @Override
     public GoodsSku getBySkuSn(String skuSn) {
         QueryWrapper<GoodsSku> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(GoodsSku::getRecStatus,"A");
         queryWrapper.lambda().eq(GoodsSku::getSkuSn,skuSn);
         queryWrapper.last("LIMIT 1");
         List<GoodsSku> list = this.list(queryWrapper);
@@ -50,6 +51,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl<IGoodsSkuMapper, GoodsSku>
     @Override
     public List<GoodsSku> getByGoodsId(long goodsId) {
         QueryWrapper<GoodsSku> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(GoodsSku::getRecStatus,"A");
         queryWrapper.lambda().eq(GoodsSku::getGoodsId,goodsId);
         return this.list(queryWrapper);
     }

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/CommerceOrder.java

@@ -102,7 +102,7 @@ public class CommerceOrder implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -114,7 +114,8 @@ public class CommerceOrder implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/DownloadOrder.java

@@ -96,7 +96,7 @@ public class DownloadOrder implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -120,7 +120,8 @@ public class DownloadOrder implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/ExpansionOrder.java

@@ -126,7 +126,7 @@ public class ExpansionOrder implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -138,7 +138,8 @@ public class ExpansionOrder implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/IncrementOrder.java

@@ -102,7 +102,7 @@ public class IncrementOrder implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -114,7 +114,8 @@ public class IncrementOrder implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/Invoice.java

@@ -138,7 +138,7 @@ public class Invoice implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -228,7 +228,8 @@ public class Invoice implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/Order.java

@@ -186,7 +186,7 @@ public class Order implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -198,7 +198,8 @@ public class Order implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/OrderItem.java

@@ -96,7 +96,7 @@ public class OrderItem implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -108,7 +108,8 @@ public class OrderItem implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/PreSale.java

@@ -83,7 +83,7 @@ public class PreSale implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -95,7 +95,8 @@ public class PreSale implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/SpaceSdk.java

@@ -95,13 +95,14 @@ public class SpaceSdk implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/TradeLog.java

@@ -90,7 +90,7 @@ public class TradeLog implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -102,7 +102,8 @@ public class TradeLog implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/entity/VirtualOrder.java

@@ -114,7 +114,7 @@ public class VirtualOrder implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -123,7 +123,8 @@ public class VirtualOrder implements Serializable {
     @TableField("update_time")
     private Date updateTime;
 
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 8 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/mapper/IVirtualOrderMapper.java

@@ -5,6 +5,7 @@ import com.fdkankan.platform.order.entity.VirtualOrder;
 import com.fdkankan.platform.user.vo.ResponseVirtualOrder;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.List;
 
@@ -22,6 +23,13 @@ public interface IVirtualOrderMapper extends BaseMapper<VirtualOrder> {
     List<ResponseVirtualOrder> getChargeListByParam(@Param("userId")Long userId, @Param("status")String status, @Param("childName")String childName,
                                                     @Param("cameraId")Long cameraId, @Param("start")Integer start,
                                                     @Param("pageSize")Integer pageSize, @Param("orderBy")String orderBy);
+
     Integer getChargeCountByParam(@Param("userId")Long userId,@Param("status")String status,@Param("childName")String childName,
                                                     @Param("cameraId")Long cameraId);
+
+    List<VirtualOrder> getAllByParam(@Param("startDate")String startDate, @Param("endDate")String endDate,
+                                     @Param("childName")String childName, @Param("type")Integer type,@Param("orderBy")String orderBy);
+
+    @Select(" SELECT IFNULL(SUM(v.amount),0) FROM t_virtual_order v LEFT JOIN t_camera c on v.camera_id = c.id  WHERE c.id = #{cameraId} and pay_status = 1 and status = #{status} ")
+    int queryRechargeByCameraIdAndStatus(@Param("cameraId") Long cameraId, @Param("status") int status);
 }

+ 12 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/IVirtualOrderService.java

@@ -14,6 +14,8 @@ import com.fdkankan.platform.user.vo.ResponseDownloadOrder;
 import com.fdkankan.platform.user.vo.ResponseIncrementOrder;
 import com.fdkankan.platform.user.vo.ResponseVirtualOrder;
 
+import java.util.List;
+
 /**
  * <p>
  * 充值订单表(双目相机点数充值、消费) 服务类
@@ -43,4 +45,14 @@ public interface IVirtualOrderService extends IService<VirtualOrder> {
     VirtualOrder getByOrderSn(String orderSn);
 
     boolean paySuccessVirtualOrder(String orderSn, String tradeNo, int paymentTypeName);
+
+    List<VirtualOrder> getAllByParam(RequestCamera param);
+
+    Page<ResponseVirtualOrder> getPageVoByParam(RequestCamera param);
+
+    boolean addVirtualOrder(RequestVirtualOrder vo);
+
+    String modifyPoints(RequestCamera param);
+
+    int queryRechargeByCameraIdAndStatus(Long cameraId, int status);
 }

+ 2 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/CommerceOrderServiceImpl.java

@@ -49,6 +49,7 @@ public class CommerceOrderServiceImpl extends ServiceImpl<ICommerceOrderMapper,
     @Override
     public CommerceOrder getByOrderSn(String orderSn) {
         LambdaQueryWrapper<CommerceOrder> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(CommerceOrder::getRecStatus,"A");
         queryWrapper.eq(CommerceOrder::getOrderSn,orderSn);
         List<CommerceOrder> list = this.list(queryWrapper);
         if(list == null || list.size() <= 0){
@@ -64,6 +65,7 @@ public class CommerceOrderServiceImpl extends ServiceImpl<ICommerceOrderMapper,
                 .set(CommerceOrder::getNumber,tradeNo)
                 .set(CommerceOrder::getPayStatus,1)
                 .set(CommerceOrder::getTradeTime,new Date())
+                .eq(CommerceOrder::getRecStatus,"A")
                 .eq(CommerceOrder::getOrderSn,orderSn);
         return this.update(updateWrapper);
     }

+ 3 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/DownloadOrderServiceImpl.java

@@ -70,6 +70,7 @@ public class DownloadOrderServiceImpl extends ServiceImpl<IDownloadOrderMapper,
     @Override
     public Page<ResponseDownloadOrder> getPageByParam(Long userId, RequestDownloadOrder param) {
         QueryWrapper<DownloadOrder> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(DownloadOrder::getRecStatus,"A");
         queryWrapper.lambda().eq(DownloadOrder::getUserId,userId);
         queryWrapper.lambda().eq(DownloadOrder::getPayStatus,1);
         queryWrapper.lambda().orderByDesc(DownloadOrder::getTradeTime);
@@ -116,6 +117,7 @@ public class DownloadOrderServiceImpl extends ServiceImpl<IDownloadOrderMapper,
     @Override
     public DownloadOrder getByOrderSn(String orderSn) {
         QueryWrapper<DownloadOrder> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(DownloadOrder::getRecStatus,"A");
         queryWrapper.lambda().eq(DownloadOrder::getOrderSn,orderSn);
         List<DownloadOrder> list = this.list(queryWrapper);
         if(list == null || list.size() <=0){
@@ -131,6 +133,7 @@ public class DownloadOrderServiceImpl extends ServiceImpl<IDownloadOrderMapper,
                 .set(DownloadOrder::getNumber,tradeNo)
                 .set(DownloadOrder::getPayStatus,1)
                 .set(DownloadOrder::getTradeTime,new Date())
+                .eq(DownloadOrder::getRecStatus,"A")
                 .eq(DownloadOrder::getOrderSn,orderSn);
         return this.update(updateWrapper);
     }

+ 2 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/ExpansionOrderServiceImpl.java

@@ -78,6 +78,7 @@ public class ExpansionOrderServiceImpl extends ServiceImpl<IExpansionOrderMapper
     @Override
     public ExpansionOrder getByOrderSn(String orderSn) {
         QueryWrapper<ExpansionOrder> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ExpansionOrder::getRecStatus,"A");
         queryWrapper.lambda().eq(ExpansionOrder::getOrderSn,orderSn);
         List<ExpansionOrder> list = this.list(queryWrapper);
         if(list == null || list.size()<=0){
@@ -94,6 +95,7 @@ public class ExpansionOrderServiceImpl extends ServiceImpl<IExpansionOrderMapper
                 .set(ExpansionOrder::getStatus, status)
                 .set(ExpansionOrder::getPayStatus, 1)
                 .set(ExpansionOrder::getTradeTime, new Date())
+                .eq(ExpansionOrder::getRecStatus,"A")
                 .eq(ExpansionOrder::getOrderSn,orderSn);
         return this.update(updateWrapper);
     }

+ 4 - 1
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/IncrementOrderServiceImpl.java

@@ -68,6 +68,7 @@ public class IncrementOrderServiceImpl extends ServiceImpl<IIncrementOrderMapper
     @Override
     public Page<ResponseIncrementOrder> getPageByParam(Long userId, RequestIncrementOrder param) {
         QueryWrapper<IncrementOrder> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(IncrementOrder::getRecStatus,"A");
         queryWrapper.lambda().eq(IncrementOrder::getUserId,userId);
         queryWrapper.lambda().eq(IncrementOrder::getPayStatus,1);
         queryWrapper.lambda().orderByDesc(IncrementOrder::getTradeTime);
@@ -115,6 +116,7 @@ public class IncrementOrderServiceImpl extends ServiceImpl<IIncrementOrderMapper
     @Override
     public IncrementOrder getByOrderSn(String orderSn) {
         QueryWrapper<IncrementOrder> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(IncrementOrder::getRecStatus,"A");
         queryWrapper.lambda().eq(IncrementOrder::getOrderSn,orderSn);
         List<IncrementOrder> list = this.list(queryWrapper);
         if(list == null || list.size()<=0){
@@ -130,7 +132,8 @@ public class IncrementOrderServiceImpl extends ServiceImpl<IIncrementOrderMapper
                 .set(IncrementOrder::getNumber,tradeNo)
                 .set(IncrementOrder::getPayStatus, 1)
                 .set(IncrementOrder::getTradeTime, new Date())
-                .eq(IncrementOrder::getOrderSn,orderSn);
+                .eq(IncrementOrder::getOrderSn,orderSn)
+                .eq(IncrementOrder::getRecStatus,"A");
         return this.update(updateWrapper);
     }
 }

+ 7 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/InvoiceServiceImpl.java

@@ -56,6 +56,7 @@ public class InvoiceServiceImpl extends ServiceImpl<IInvoiceMapper, Invoice> imp
 
     private Integer getMaxInvoice(Long cameraId){
         QueryWrapper<VirtualOrder> virtualOrderQueryWrapper = new QueryWrapper<>();
+        virtualOrderQueryWrapper.lambda().eq(VirtualOrder::getRecStatus,"A");
         virtualOrderQueryWrapper.lambda().eq(VirtualOrder::getCameraId,cameraId);
         List<VirtualOrder> virtualOrders = virtualOrderService.list(virtualOrderQueryWrapper);
         Integer maxInvoice = 0;
@@ -69,6 +70,7 @@ public class InvoiceServiceImpl extends ServiceImpl<IInvoiceMapper, Invoice> imp
         }
 
         QueryWrapper<ExpansionOrder> expansionOrderQueryWrapper = new QueryWrapper<>();
+        expansionOrderQueryWrapper.lambda().eq(ExpansionOrder::getRecStatus,"A");
         expansionOrderQueryWrapper.lambda().eq(ExpansionOrder::getCameraId,cameraId);
         List<ExpansionOrder> expansionOrders = expansionOrderService.list(expansionOrderQueryWrapper);
         for (ExpansionOrder expansionOrder : expansionOrders) {
@@ -80,6 +82,7 @@ public class InvoiceServiceImpl extends ServiceImpl<IInvoiceMapper, Invoice> imp
         }
 
         QueryWrapper<Invoice> invoiceQueryWrapper = new QueryWrapper<>();
+        invoiceQueryWrapper.lambda().eq(Invoice::getRecStatus,"A");
         invoiceQueryWrapper.lambda().eq(Invoice::getCameraId,cameraId);
         invoiceQueryWrapper.lambda().eq(Invoice::getConsumeType,1);
         List<Invoice> invoices = this.list(invoiceQueryWrapper);
@@ -94,6 +97,7 @@ public class InvoiceServiceImpl extends ServiceImpl<IInvoiceMapper, Invoice> imp
     @Override
     public Page<ResponseInvoice> listInvoice(RequestInvoice param, String token) {
         QueryWrapper<Invoice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Invoice::getRecStatus,"A");
         if(token!=null){
             SSOUser ssoUser = userService.getSSOUserByToken(token);
             queryWrapper.lambda().eq(Invoice::getUserId,ssoUser.getId());
@@ -136,6 +140,7 @@ public class InvoiceServiceImpl extends ServiceImpl<IInvoiceMapper, Invoice> imp
     }
     private Invoice getMineInvoice(Long userId,String invoiceType){
         QueryWrapper<Invoice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Invoice::getRecStatus,"A");
         queryWrapper.lambda().eq(Invoice::getUserId,userId);
         queryWrapper.lambda().eq(Invoice::getConsumeType ,-1);
         queryWrapper.lambda().eq(Invoice::getType ,invoiceType);
@@ -321,6 +326,7 @@ public class InvoiceServiceImpl extends ServiceImpl<IInvoiceMapper, Invoice> imp
 
     private void checkInvoice(Long orderId, Integer consumeType) {
         QueryWrapper<Invoice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Invoice::getRecStatus,"A");
         switch (consumeType){
             case 1 :    //验证 消费订单是否开票
                 queryWrapper.lambda().eq(Invoice::getVirtualOrderId,orderId);break;
@@ -341,6 +347,7 @@ public class InvoiceServiceImpl extends ServiceImpl<IInvoiceMapper, Invoice> imp
     @Override
     public Invoice getByOrderId(Long orderId) {
         QueryWrapper<Invoice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Invoice::getRecStatus,"A");
         queryWrapper.lambda().eq(Invoice::getOrderId,orderId);
         queryWrapper.last("LIMIT 1");
         List<Invoice> list = this.list(queryWrapper);

+ 4 - 6
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/OrderServiceImpl.java

@@ -104,7 +104,7 @@ public class OrderServiceImpl extends ServiceImpl<IOrderMapper, Order> implement
     public ResponseOrder getOrderDetail(Long orderId) {
         Order order = this.getById(orderId);
         ResponseOrder responseOrder = new ResponseOrder();
-        if(order == null){
+        if(order == null || "I".equals(order.getRecStatus())){
             return responseOrder;
         }
         BeanUtils.copyProperties(order,responseOrder);
@@ -125,6 +125,7 @@ public class OrderServiceImpl extends ServiceImpl<IOrderMapper, Order> implement
     public Page<ResponseOrder> getOrders(RequestOrder param, String token) {
         SSOUser ssoUser = userService.getSSOUserByToken(token);
         QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Order::getRecStatus,"A");
         queryWrapper.lambda().eq(Order::getUserId,ssoUser.getId());
         queryWrapper.lambda().eq(Order::getPaymentStatus, OrderEnum.PaymentStatus.paid);
         queryWrapper.lambda().orderByDesc(Order::getOrderTime);
@@ -447,22 +448,17 @@ public class OrderServiceImpl extends ServiceImpl<IOrderMapper, Order> implement
         if(camera.getDateType() == null){
             throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
         }
-
         if(camera.getDateType() != 5 && camera.getDateType() != 6){
             throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
         }
-
         DateTime dateTime = new DateTime();
-
         if(camera.getUserIncrementId() != null){
             UserIncrement userIncrementEntity = userIncrementService.getById(camera.getUserIncrementId());
             if(userIncrementEntity != null && userIncrementEntity.getIncrementEndTime().getTime() > new Date().getTime()){
                 dateTime = new DateTime(userIncrementEntity.getIncrementEndTime());
             }
         }
-
         ResponseGoodsSku responseGoodsSku = goodsSkuService.getIncrementOrDownloadPrice(camera);
-
         //1年期限
         dateTime = dateTime.plusYears(1);
         responseGoodsSku.setDeadLine(dateTime.toDate().getTime());
@@ -472,6 +468,7 @@ public class OrderServiceImpl extends ServiceImpl<IOrderMapper, Order> implement
     @Override
     public Order getByOrderSn(String orderSn) {
         QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Order::getRecStatus,"A");
         queryWrapper.lambda().eq(Order::getOrderSn,orderSn);
         List<Order> list = this.list(queryWrapper);
         if(list == null || list.size()<=0){
@@ -486,6 +483,7 @@ public class OrderServiceImpl extends ServiceImpl<IOrderMapper, Order> implement
         updateWrapper.set(Order::getPaymentTypeName,paymentTypeName)
                 .set(Order::getTradeNum,tradeNo)
                 .set(Order::getPaymentStatus,OrderEnum.PaymentStatus.paid.name())
+                .eq(Order::getRecStatus,"A")
                 .eq(Order::getOrderSn,orderSn);
         return this.update(updateWrapper);
     }

+ 1 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/SpaceSdkServiceImpl.java

@@ -25,6 +25,7 @@ public class SpaceSdkServiceImpl extends ServiceImpl<ISpaceSdkMapper, SpaceSdk>
     @Override
     public Page<SpaceSdk> getPageByParam(RequestSdkVersion param) {
         LambdaQueryWrapper<SpaceSdk> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(SpaceSdk::getRecStatus,"A");
         if(param.getStatus()!=null){
             queryWrapper.eq(SpaceSdk::getStatus,param.getStatus());
         }

+ 1 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/TradeLogServiceImpl.java

@@ -23,6 +23,7 @@ public class TradeLogServiceImpl extends ServiceImpl<ITradeLogMapper, TradeLog>
     @Override
     public TradeLog getByOrderSn(String orderSn) {
         LambdaQueryWrapper<TradeLog> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(TradeLog::getRecStatus,"A");
         queryWrapper.eq(TradeLog::getOrderSn,orderSn);
         List<TradeLog> list = this.list(queryWrapper);
         if(list == null || list.size() <= 0){

+ 99 - 1
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/VirtualOrderServiceImpl.java

@@ -1,11 +1,14 @@
 package com.fdkankan.platform.order.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.common.constant.CameraConstant;
 import com.fdkankan.common.constant.Constant;
 import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.ServerCode;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.user.SSOUser;
 import com.fdkankan.common.util.NumberUtils;
@@ -34,6 +37,7 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -78,6 +82,7 @@ public class VirtualOrderServiceImpl extends ServiceImpl<IVirtualOrderMapper, Vi
     @Override
     public void getByStatusAndCameraId(AgentVo agentVo, String startDate, String endDate) {
         QueryWrapper<VirtualOrder> queryWrapper= new QueryWrapper<>();
+        queryWrapper.lambda().eq(VirtualOrder::getRecStatus,"A");
         queryWrapper.lambda().eq(VirtualOrder::getPayStatus,1);
         queryWrapper.lambda().inSql(VirtualOrder::getCameraId,
                 "select o.camera_id from t_camera_detail o where o.agency like '%"+agentVo.getAgentId()+"%' and o.rec_status = 'A'");
@@ -137,6 +142,7 @@ public class VirtualOrderServiceImpl extends ServiceImpl<IVirtualOrderMapper, Vi
         BigDecimal extract = new BigDecimal(0.0);
         if(StringUtils.isNotBlank(startDate)){
             QueryWrapper<VirtualOrder> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().eq(VirtualOrder::getRecStatus,"A");
             queryWrapper.lambda().eq(VirtualOrder::getPayStatus,1);
             queryWrapper.lambda().eq(VirtualOrder::getCameraId,cameraId);
             queryWrapper.lambda().orderByDesc(VirtualOrder::getTradeTime);
@@ -284,6 +290,7 @@ public class VirtualOrderServiceImpl extends ServiceImpl<IVirtualOrderMapper, Vi
     @Override
     public VirtualOrder getByOrderSn(String orderSn) {
         QueryWrapper<VirtualOrder> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(VirtualOrder::getRecStatus,"A");
         queryWrapper.lambda().eq(VirtualOrder::getOrderSn,orderSn);
         List<VirtualOrder> list = this.list(queryWrapper);
         if(list == null || list.size()<=0){
@@ -299,7 +306,98 @@ public class VirtualOrderServiceImpl extends ServiceImpl<IVirtualOrderMapper, Vi
                 .set(VirtualOrder::getNumber,tradeNo)
                 .set(VirtualOrder::getPayStatus, 1)
                 .set(VirtualOrder::getTradeTime, new Date())
-                .eq(VirtualOrder::getOrderSn,orderSn);
+                .eq(VirtualOrder::getOrderSn,orderSn)
+                .eq(VirtualOrder::getRecStatus,"A");
         return this.update(updateWrapper);
     }
+
+    @Override
+    public List<VirtualOrder> getAllByParam(RequestCamera param) {
+        return  this.virtualOrderMapper.getAllByParam(param.getStartDate(), param.getEndDate(), param.getChildName(), param.getType(), "trade_time desc");
+    }
+
+    @Override
+    public Page<ResponseVirtualOrder> getPageVoByParam(RequestCamera param) {
+        LambdaQueryWrapper<VirtualOrder> query = new LambdaQueryWrapper<>();
+        query.eq(VirtualOrder::getRecStatus,"A");
+        query.eq(VirtualOrder::getCameraId,param.getCameraId());
+        if(param.getType() == 0 ){
+            query.or().eq(VirtualOrder::getStatus,1).or().eq(VirtualOrder::getStatus,-2);
+        }else {
+            query.eq(VirtualOrder::getStatus,-1);
+        }
+        if (StringUtils.isNotEmpty(param.getStartDate())){
+            query.ge(VirtualOrder::getTradeTime,param.getStartDate() +" 00:00:00");
+        }
+        if (StringUtils.isNotEmpty(param.getEndDate())){
+            query.le(VirtualOrder::getTradeTime,param.getStartDate() +" 00:00:00");
+        }
+        query.orderByDesc(VirtualOrder::getTradeTime);
+        Page<VirtualOrder> objectPage = new Page<>(param.getPageNum(), param.getPageSize());
+        Page<VirtualOrder> page = this.page(objectPage, query);
+
+        List<ResponseVirtualOrder> orderRsps = this.convert(page.getRecords());
+
+        Page<ResponseVirtualOrder> vo = new Page<ResponseVirtualOrder>(param.getPageNum(), param.getPageSize());
+        vo.setTotal(page.getTotal());
+        vo.setRecords(orderRsps);
+        return vo;
+    }
+
+    public List<ResponseVirtualOrder> convert(List<VirtualOrder> list) {
+        List<ResponseVirtualOrder> orderRsps = new ArrayList<>();
+        for (VirtualOrder order : list){
+            ResponseVirtualOrder orderRsp = new ResponseVirtualOrder();
+            BeanUtils.copyProperties(order, orderRsp);
+            orderRsps.add(orderRsp);
+        }
+        return orderRsps;
+    }
+
+    @Override
+    public boolean addVirtualOrder(RequestVirtualOrder vo) {
+        //添加虚拟订单记录
+        VirtualOrder order = new VirtualOrder();
+        BeanUtils.copyProperties(vo, order);
+        order.setStatus(Integer.valueOf(vo.getStatus()));
+        return this.save(order);
+    }
+
+    @Override
+    public String modifyPoints(RequestCamera param) {
+        BigDecimal amount = new BigDecimal(0.00);
+        String body = "";
+        if (-2 == param.getBody()){
+            int rechargeAmount = this.queryRechargeByCameraIdAndStatus(param.getCameraId(), 1);
+            int backRechargeAmount = this.queryRechargeByCameraIdAndStatus(param.getCameraId(), -2);
+            if (rechargeAmount - backRechargeAmount > param.getPoints()){
+                amount = BigDecimal.valueOf(param.getPoints());
+                body = "系统退充值";
+            }else{
+                throw new BusinessException(CameraConstant.FAILURE_6002);
+            }
+        }else if (0 == param.getBody()){
+            body = "系统赠送";
+        }
+        VirtualOrder order = new VirtualOrder();
+        order.setCameraId(param.getCameraId());
+        order.setOrderSn(NumberUtils.getOrderSn());
+        order.setPayType(2);
+        order.setPayStatus(1);
+        order.setPoints(param.getPoints());
+        order.setStatus(param.getBody());
+        order.setUserId(null);//空代表管理员添加
+        order.setAmount(amount);
+        order.setBody(body);
+        order.setTradeTime(new Date());
+        if(!this.save(order)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public int queryRechargeByCameraIdAndStatus(Long cameraId, int status) {
+        return virtualOrderMapper.queryRechargeByCameraIdAndStatus(cameraId,status);
+    }
 }

+ 9 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/test/TestSendController.java

@@ -1,5 +1,8 @@
 package com.fdkankan.platform.test;
 
+import com.fdkankan.platform.agent.entity.Agent;
+import com.fdkankan.platform.agent.service.IAgentService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -9,9 +12,15 @@ public class TestSendController {
 
 
     private final String topic ="test_model_order";
+    @Autowired
+    private IAgentService agentService;
 
     @RequestMapping("/test")
     private void sentTest(){
+        Agent cameraEntity = new Agent();
+        cameraEntity.setId(18L);
+        cameraEntity.setRecStatus("A");
+        agentService.updateById(cameraEntity);
     }
     @RequestMapping("/test1")
     private void sentTest1(){

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/entity/IncrementType.java

@@ -62,7 +62,7 @@ public class IncrementType implements Serializable {
     private Date updateTime;
 
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     @TableField("create_user")
@@ -86,7 +86,8 @@ public class IncrementType implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/entity/IntercomMessage.java

@@ -53,7 +53,7 @@ public class IntercomMessage implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -89,7 +89,8 @@ public class IntercomMessage implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/entity/Manager.java

@@ -80,13 +80,14 @@ public class Manager implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/entity/Province.java

@@ -41,7 +41,7 @@ public class Province implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -53,7 +53,8 @@ public class Province implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/entity/ReceiverInfo.java

@@ -92,7 +92,7 @@ public class ReceiverInfo implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -104,7 +104,8 @@ public class ReceiverInfo implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/entity/User.java

@@ -127,7 +127,7 @@ public class User implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -139,7 +139,8 @@ public class User implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 3 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/entity/UserIncrement.java

@@ -73,7 +73,7 @@ public class UserIncrement implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
-    @TableLogic(value="A",delval = "I")
+    //@TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -100,7 +100,8 @@ public class UserIncrement implements Serializable {
     /**
      * 0正常,1删除
      */
-    @TableField("tb_status")
+   @TableField("tb_status")
+@TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 2 - 1
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/IntercomMessageServiceImpl.java

@@ -41,7 +41,6 @@ public class IntercomMessageServiceImpl extends ServiceImpl<IIntercomMessageMapp
         interComMessage.setContact(message.getContact());
         interComMessage.setCreateTime(new Date());
         interComMessage.setUpdateTime(new Date());
-        interComMessage.setRecStatus("A");
         interComMessage.setNoteType(1);
         interComMessage.setState(1);
         if(!this.save(interComMessage)){
@@ -56,6 +55,7 @@ public class IntercomMessageServiceImpl extends ServiceImpl<IIntercomMessageMapp
             throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
         }
         LambdaQueryWrapper<IntercomMessage> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(IntercomMessage::getRecStatus,"A");
         queryWrapper.eq(IntercomMessage::getEmail,email);
         queryWrapper.orderByDesc(IntercomMessage::getCreateTime);
         return this.list(queryWrapper);
@@ -96,6 +96,7 @@ public class IntercomMessageServiceImpl extends ServiceImpl<IIntercomMessageMapp
     public Page<IntercomMessage> searchLike(RequestSearch param) {
         Page<IntercomMessage> page = new Page<>(param.getPageNum(), param.getPageSize());
         QueryWrapper<IntercomMessage> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().ge(IntercomMessage::getRecStatus,"A");
         if(StringUtils.isNotBlank(param.getStartDate())){
             queryWrapper.lambda().ge(IntercomMessage::getCreateTime,param.getStartDate());
         }

+ 2 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/ManagerServiceImpl.java

@@ -25,6 +25,7 @@ public class ManagerServiceImpl extends ServiceImpl<IManagerMapper, Manager> imp
     @Override
     public List<Manager> getByFrameworkId(Long parentId) {
         queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Manager::getRecStatus,"A");
         queryWrapper.lambda().eq(Manager::getAgentFrameworkId,parentId);
         return  this.list(queryWrapper);
     }
@@ -32,6 +33,7 @@ public class ManagerServiceImpl extends ServiceImpl<IManagerMapper, Manager> imp
     @Override
     public Manager getByUserName(String userName) {
         queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Manager::getRecStatus,"A");
         queryWrapper.lambda().eq(Manager::getUsername,userName);
         return getEntityByQuery(queryWrapper);
     }

+ 2 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/ReceiverInfoServiceImpl.java

@@ -27,6 +27,7 @@ public class ReceiverInfoServiceImpl extends ServiceImpl<IReceiverInfoMapper, Re
     @Override
     public ReceiverInfo getDefaultByUserId(Long userId){
         QueryWrapper<ReceiverInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ReceiverInfo::getRecStatus,"A");
         queryWrapper.lambda().eq(ReceiverInfo::getUserId,userId);
         queryWrapper.lambda().eq(ReceiverInfo::getSetDefault,1);
         List<ReceiverInfo> list = this.list(queryWrapper);
@@ -83,6 +84,7 @@ public class ReceiverInfoServiceImpl extends ServiceImpl<IReceiverInfoMapper, Re
     @Override
     public List<ReceiverInfo> getListByUserId(Long userId) {
         QueryWrapper<ReceiverInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ReceiverInfo::getRecStatus,"A");
         queryWrapper.lambda().eq(ReceiverInfo::getUserId,userId);
         return this.list(queryWrapper);
     }

+ 7 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/UserIncrementServiceImpl.java

@@ -53,6 +53,7 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
     @Override
     public Integer getCountByUserId(Long userId, int status) {
         QueryWrapper<UserIncrement> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(UserIncrement::getRecStatus,"A");
         queryWrapper.lambda().eq(UserIncrement::getUserId,userId);
         queryWrapper.lambda().eq(UserIncrement::getIsExpired,status);
         return Math.toIntExact(this.count(queryWrapper));
@@ -61,6 +62,7 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
     @Override
     public Integer getCountBindByUserId(Long userId) {
         QueryWrapper<UserIncrement> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(UserIncrement::getRecStatus,"A");
         queryWrapper.lambda().eq(UserIncrement::getUserId,userId);
         queryWrapper.lambda().isNotNull(UserIncrement::getCameraId);
         return Math.toIntExact(this.count(queryWrapper));
@@ -69,6 +71,7 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
     @Override
     public UserIncrement getByCameraId(Long cameraId) {
         QueryWrapper<UserIncrement> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(UserIncrement::getRecStatus,"A");
         queryWrapper.lambda().eq(UserIncrement::getCameraId,cameraId);
         List<UserIncrement> list = this.list(queryWrapper);
         if(list == null || list.size()<=0){
@@ -167,6 +170,7 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
         }
         Page<UserIncrement> page = new Page<>(param.getPageNum(), param.getPageSize());
         QueryWrapper<UserIncrement> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(UserIncrement::getRecStatus,"A");
         queryWrapper.lambda().eq(UserIncrement::getUserId,ssoUser.getId());
         if(cameraIdList!=null ){
             queryWrapper.lambda().in(UserIncrement::getCameraId,cameraIdList);
@@ -211,6 +215,9 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
     @Override
     public ResponseUserIncrement findById(RequestUserIncrement param, String token) {
         UserIncrement userIncrementEntity = this.getById(param.getId());
+        if(userIncrementEntity == null || "I".equals(userIncrementEntity.getRecStatus())){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
         ResponseUserIncrement responseUserIncrement = new ResponseUserIncrement();
         BeanUtils.copyProperties(userIncrementEntity, responseUserIncrement);
         responseUserIncrement.setIncrementStartStr(DateUtil.date2String(responseUserIncrement.getIncrementStartTime(), DateUtil.YYYY_MM_DD_DATE_FORMAT));

+ 6 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/UserServiceImpl.java

@@ -96,6 +96,7 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
     @Override
     public User getUserByUserName(String userName){
         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(User::getRecStatus,"A");
         queryWrapper.lambda().eq(User::getUserName,userName);
         List<User> list = this.list(queryWrapper);
         if(list == null || list.size()<=0){
@@ -326,6 +327,7 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
 
     private User getByEmail(String email){
         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(User ::getRecStatus,"A");
         queryWrapper.lambda().eq(User ::getEmail,email);
         List<User> list = this.list(queryWrapper);
         if(list == null || list.size()<=0){
@@ -462,12 +464,16 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
     @Override
     public SSOUser getSSOUserByUserId(Long userId) {
         User user = this.getById(userId);
+        if(user == null || "I".equals(user)){
+            throw new BusinessException(ErrorCode.USER_NOT_EXIST);
+        }
         return this.getSsoUserByUserName(user,user.getUserName());
     }
 
     @Override
     public SSOUser getByNickName(String nickName) {
         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(User ::getRecStatus,"A");
         queryWrapper.lambda().eq(User ::getNickName,nickName);
         List<User> list = this.list(queryWrapper);
         if(list == null || list.size()<=0){

+ 2 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/vo/ResponseCamera.java

@@ -12,6 +12,8 @@ public class ResponseCamera implements Serializable {
 
     private Long id;
 
+    private Long cameraId;
+
     //(value = "用户名", name = "userName")
     private String userName;
 

+ 129 - 0
4dkankan-center-platform/src/main/resources/mapper/goods/CameraDetailMapper.xml

@@ -2,4 +2,133 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fdkankan.platform.goods.mapper.ICameraDetailMapper">
 
+
+    <select id="queryListByParams" resultType="com.fdkankan.platform.user.vo.ResponseCamera">
+        SELECT t.id, t.child_name, t.sn_code, u.user_name,  g.name as goods_name, t.activated_time, t.create_time as inTime, i.own, i.balance,
+        co.out_type, co.agent_name, o.order_sn, co.create_time as outTime, i.country,
+        i.goods_id, i.company_id, com.company_name AS companyName, t.rec_status,t.wifi_name as wifiName,
+        i.camera_type as cameraType, i.order_sn as orderSn from t_camera t
+        INNER JOIN t_camera_detail i ON t.id = i.camera_id
+        INNER JOIN t_goods g on g.id = i.goods_id
+        LEFT JOIN t_user u ON i.user_id = u.id
+        LEFT JOIN t_camera_out co on t.id = co.camera_id
+        LEFT JOIN t_order o on o.id = co.order_id
+        LEFT JOIN t_company com ON com.id = i.company_id
+        WHERE 1 = 1
+        <if test=" searchKey != null and searchKey !='' " >
+            and (t.child_name like concat('%',#{searchKey},'%') or u.user_name  like CONCAT('%', #{searchKey},'%'))
+        </if>
+        <if test=" type != null and type !='' and type == 1" >
+            and (t.create_time &gt;= #{startDate} or t.create_time &lt;= #{endDate})
+        </if>
+        <if test=" type != null and type !='' and type == 2" >
+            and (co.create_time &gt;= #{startDate} or co.create_time &lt;= #{endDate})
+        </if>
+        <if test=" type != null and type !='' and type == 3" >
+            and (ct.activated_time &gt;= #{startDate} or t.activated_time &lt;= #{endDate})
+        </if>
+        <if test="orderBy != null">
+            order by ${orderBy}
+        </if>
+        <if test="start != null and pageSize!=null">
+            limit ${start}, ${pageSize}
+        </if>
+    </select>
+
+
+    <select id="queryCountByParams" resultType="integer">
+        SELECT count(*) from t_camera t
+        INNER JOIN t_camera_detail i ON t.id = i.camera_id
+        INNER JOIN t_goods g on g.id = i.goods_id
+        LEFT JOIN t_user u ON i.user_id = u.id
+        LEFT JOIN t_camera_out co on t.id = co.camera_id
+        LEFT JOIN t_order o on o.id = co.order_id
+        LEFT JOIN t_company com ON com.id = i.company_id
+        WHERE 1 = 1
+        <if test=" searchKey != null and searchKey !='' " >
+            and (t.child_name like concat('%',#{searchKey},'%') or u.user_name  like CONCAT('%', #{searchKey},'%'))
+        </if>
+        <if test=" type != null and type !='' and type == 1" >
+            and (t.create_time &gt;= #{startDate} or t.create_time &lt;= #{endDate})
+        </if>
+        <if test=" type != null and type !='' and type == 2" >
+            and (co.create_time &gt;= #{startDate} or co.create_time &lt;= #{endDate})
+        </if>
+        <if test=" type != null and type !='' and type == 3" >
+            and (ct.activated_time &gt;= #{startDate} or t.activated_time &lt;= #{endDate})
+        </if>
+    </select>
+
+    <select id="queryCompanyCameraListByParams" resultType="com.fdkankan.platform.user.vo.ResponseCamera">
+        SELECT a.id, a.child_name, a.sn_code, a.rec_status, a.create_time, b.address,
+        e.user_name FROM `t_camera` a LEFT JOIN `t_camera_detail` b ON a.id = b.camera_id
+        LEFT JOIN `t_company` c ON b.company_id = c.id
+        LEFT JOIN `t_manager` d ON c.manager_id = d.id
+        LEFT JOIN `t_user` e ON b.user_id = e.id WHERE d.username = #{userName}
+        <if test=" searchKey != null and searchKey !='' " >
+            and a.child_name like concat('%',#{searchKey},'%')
+        </if>
+        <if test="orderBy != null">
+            order by ${orderBy}
+        </if>
+        <if test="start != null and pageSize!=null">
+            limit ${start}, ${pageSize}
+        </if>
+    </select>
+
+
+    <select id="queryCompanyCameraCountByParams" resultType="integer">
+        SELECT count(*) FROM `t_camera` a LEFT JOIN `t_camera_detail` b ON a.id = b.camera_id
+        LEFT JOIN `t_company` c ON b.company_id = c.id
+        LEFT JOIN `t_manager` d ON c.manager_id = d.id
+        LEFT JOIN `t_user` e ON b.user_id = e.id WHERE d.username = #{userName}
+        <if test=" searchKey != null and searchKey !='' " >
+            and a.child_name like concat('%',#{searchKey},'%')
+        </if>
+    </select>
+
+    <select id="cameraList" resultType="com.fdkankan.platform.user.vo.ResponseCamera">
+        SELECT a.id, a.sn_code as snCode, a.activated_time as activatedTime, b.own, b.type,
+        b.agent_framework_id as agentFrameworkId, b.camera_id as cameraId, b.total_space as totalSpace,
+        b.used_space as usedSpace, b.user_id as userId
+        FROM t_camera a LEFT JOIN t_camera_detail b on a.id = b.camera_id
+        WHERE a.rec_status = 'A'
+        <if test=" param.snCode != null and param.snCode !='' " >
+            and a.sn_code = #{param.snCode}
+        </if>
+        <if test=" param.own != null and param.own !='' " >
+            and b.own = #{param.own}
+        </if>
+        <if test=" param.agentFrameworkId != null and param.agentFrameworkId !='' " >
+            and b.agent_framework_id = #{param.agentFrameworkId}
+        </if>
+        <if test=" param.cameraId != null and param.cameraId !='' " >
+            and b.camera_id = #{param.cameraId}
+        </if>
+        <if test="orderBy != null">
+            order by ${orderBy}
+        </if>
+        <if test="start != null and pageSize!=null">
+            limit ${start}, ${pageSize}
+        </if>
+    </select>
+
+
+    <select id="cameraCount" resultType="integer">
+        SELECT count(*)
+        FROM t_camera a LEFT JOIN t_camera_detail b on a.id = b.camera_id
+        WHERE a.rec_status = 'A'
+        <if test=" param.snCode != null and param.snCode !='' " >
+            and a.sn_code = #{param.snCode}
+        </if>
+        <if test=" param.own != null and param.own !='' " >
+            and b.own = #{param.own}
+        </if>
+        <if test=" param.agentFrameworkId != null and param.agentFrameworkId !='' " >
+            and b.agent_framework_id = #{param.agentFrameworkId}
+        </if>
+        <if test=" param.cameraId != null and param.cameraId !='' " >
+            and b.camera_id = #{param.cameraId}
+        </if>
+    </select>
 </mapper>

+ 5 - 2
4dkankan-center-platform/src/main/resources/mapper/order/ExpansionOrderMapper.xml

@@ -19,11 +19,14 @@
         <if test="orderBy != null">
             order by ${orderBy}
         </if>
-        limit ${start}, ${pageSize}
+        <if test="start != null and pageSize!=null">
+            limit ${start}, ${pageSize}
+        </if>
+
     </select>
 
     <select id="getExpansionCountByParam" resultType="integer">
-        select count (*) from t_expansion_order o
+        select count(*) from t_expansion_order o
         WHERE o.pay_status = 1 AND o.rec_status = 'A'
         <if test=" userId != null and userId !='' " >
             and o.user_id = ${userId}

+ 28 - 2
4dkankan-center-platform/src/main/resources/mapper/order/VirtualOrderMapper.xml

@@ -2,6 +2,29 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fdkankan.platform.order.mapper.IVirtualOrderMapper">
 
+    <select id="getAllByParam" resultType="com.fdkankan.platform.order.entity.VirtualOrder">
+        select t.status, t.points, t.amount from t_virtual_order t left join t_camera d on t.camera_id = d.id
+        where t.rec_status = 'A' and t.pay_status = 1
+        <if test="startDate != null and startDate !='' " >
+            and t.trade_time &gt;= ${startDate}
+        </if>
+        <if test=" endDate != null and endDate !='' " >
+            and t.trade_time &lt;= ${endDate}
+        </if>
+        <if test=" childName != null and childName !='' " >
+            and c.child_name like concat('%',#{childName},'%')
+        </if>
+        <if test=" type != null and type !='' " >
+            and and t.status  = ${type}
+        </if>
+        <if test="orderBy != null">
+            order by ${orderBy}
+        </if>
+        <if test="start != null and pageSize !=null">
+            limit ${start}, ${pageSize}
+        </if>
+    </select>
+
     <select id="getChargeListByParam" resultType="com.fdkankan.platform.user.vo.ResponseVirtualOrder">
         SELECT o.id, o.order_sn, o.points, c.child_name, o.pay_type, o.body, o.trade_time, o.status from t_virtual_order o
         LEFT JOIN t_camera c on o.camera_id = c.id  WHERE o.rec_status = 'A' and o.pay_status = 1   and o.pay_type = 0
@@ -20,11 +43,14 @@
         <if test="orderBy != null">
             order by ${orderBy}
         </if>
-        limit ${start}, ${pageSize}
+        <if test="start != null and pageSize !=null">
+            limit ${start}, ${pageSize}
+        </if>
     </select>
 
+
     <select id="getChargeCountByParam" resultType="integer">
-        SELECT count (*) from t_virtual_order o WHERE o.rec_status = 'A' and o.pay_status = 1   and o.pay_type = 0
+        SELECT count(*) from t_virtual_order o WHERE o.rec_status = 'A' and o.pay_status = 1   and o.pay_type = 0
         <if test=" userId != null and userId !='' " >
             and o.user_id = ${userId}
         </if>