فهرست منبع

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	4dkankan-common/pom.xml
#	4dkankan-common/src/main/java/com/fdkankan/common/constant/ConstantFilePath.java
#	4dkankan-common/src/main/java/com/fdkankan/common/constant/ConstantUrl.java
#	4dkankan-common/src/main/java/com/fdkankan/common/constant/ErrorCode.java
#	pom.xml
by su 3 سال پیش
والد
کامیت
85d6de496b
100فایلهای تغییر یافته به همراه2576 افزوده شده و 723 حذف شده
  1. 15 0
      4dkankan-center-api/4dkankan-center-platform-api/pom.xml
  2. 1 0
      4dkankan-center-api/pom.xml
  3. 23 0
      4dkankan-center-platform/pom.xml
  4. 32 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/api/AgentAuditController.java
  5. 3 4
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/api/AgentController.java
  6. 4 8
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/api/AgentLoginController.java
  7. 53 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/manager/ManagerAgentAuditController.java
  8. 119 2
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/manager/ManagerAgentController.java
  9. 2 4
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/entity/Agent.java
  10. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/entity/AgentAudit.java
  11. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/entity/AgentFramework.java
  12. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/entity/AgentNotice.java
  13. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/entity/VaildCameras.java
  14. 61 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/request/RequestAgentAudit.java
  15. 13 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/request/RequestAgentFramework.java
  16. 13 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/request/RequestAgentNotice.java
  17. 19 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/request/RequestNote.java
  18. 17 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/request/RequestSearch.java
  19. 14 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/service/IAgentAuditService.java
  20. 6 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/service/IAgentFrameworkService.java
  21. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/service/IAgentNoticeService.java
  22. 16 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/service/IAgentService.java
  23. 114 1
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/service/impl/AgentAuditServiceImpl.java
  24. 67 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/service/impl/AgentFrameworkServiceImpl.java
  25. 12 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/service/impl/AgentNoticeServiceImpl.java
  26. 142 20
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/service/impl/AgentServiceImpl.java
  27. 65 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/util/AgentFrameworkTree.java
  28. 97 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/util/AgentFrameworkTreeUtil.java
  29. 78 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/vo/AgentAuditVo.java
  30. 16 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/vo/AgentDetailTotalAmount.java
  31. 21 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/vo/AgentTotalAmountVo.java
  32. 35 0
      4dkankan-center-platform/src/main/java/com/fdkankan/agent/vo/ResponseAgentCamera.java
  33. 3 3
      4dkankan-center-platform/src/main/java/com/fdkankan/generate/AutoGenerate.java
  34. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CameraController.java
  35. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CameraDetailController.java
  36. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CameraOutController.java
  37. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CameraSpaceController.java
  38. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CameraVersionController.java
  39. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CartController.java
  40. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CompanyController.java
  41. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/GoodsController.java
  42. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/GoodsSkuController.java
  43. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/GoodsSpecController.java
  44. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/GoodsSpecValueController.java
  45. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/GoodsSpuSpecController.java
  46. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/SnCodeController.java
  47. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/entity/Camera.java
  48. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/entity/CameraDetail.java
  49. 17 0
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/entity/CameraDetailNumEntity.java
  50. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/entity/CameraOut.java
  51. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/entity/CameraSpace.java
  52. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/entity/CameraVersion.java
  53. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/entity/Cart.java
  54. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/entity/Company.java
  55. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/entity/Goods.java
  56. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/entity/GoodsSku.java
  57. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/entity/GoodsSpec.java
  58. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/entity/GoodsSpecValue.java
  59. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/entity/GoodsSpuSpec.java
  60. 14 1
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/mapper/ICameraDetailMapper.java
  61. 9 0
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/mapper/ICameraSpaceMapper.java
  62. 35 1
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/ICameraDetailService.java
  63. 26 0
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/ICameraService.java
  64. 5 1
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/ICameraSpaceService.java
  65. 11 0
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/ICartService.java
  66. 362 1
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/impl/CameraDetailServiceImpl.java
  67. 330 3
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/impl/CameraServiceImpl.java
  68. 12 1
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/impl/CameraSpaceServiceImpl.java
  69. 107 1
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/impl/CartServiceImpl.java
  70. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/CommerceOrderController.java
  71. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/DownloadOrderController.java
  72. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/ExpansionOrderController.java
  73. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/IncrementOrderController.java
  74. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/InvoiceController.java
  75. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/OrderController.java
  76. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/OrderItemController.java
  77. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/PreSaleController.java
  78. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/SpaceSdkController.java
  79. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/TradeLogController.java
  80. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/VirtualOrderController.java
  81. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/order/entity/CommerceOrder.java
  82. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/order/entity/DownloadOrder.java
  83. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/order/entity/ExpansionOrder.java
  84. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/order/entity/IncrementOrder.java
  85. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/order/entity/Invoice.java
  86. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/order/entity/Order.java
  87. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/order/entity/OrderItem.java
  88. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/order/entity/PreSale.java
  89. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/order/entity/SpaceSdk.java
  90. 5 6
      4dkankan-center-platform/src/main/java/com/fdkankan/order/entity/TradeLog.java
  91. 6 9
      4dkankan-center-platform/src/main/java/com/fdkankan/order/entity/VirtualOrder.java
  92. 1 1
      4dkankan-center-platform/src/main/java/com/fdkankan/order/mapper/IVirtualOrderMapper.java
  93. 20 0
      4dkankan-center-platform/src/main/java/com/fdkankan/order/service/IInvoiceService.java
  94. 8 1
      4dkankan-center-platform/src/main/java/com/fdkankan/order/service/IVirtualOrderService.java
  95. 135 1
      4dkankan-center-platform/src/main/java/com/fdkankan/order/service/impl/InvoiceServiceImpl.java
  96. 146 0
      4dkankan-center-platform/src/main/java/com/fdkankan/order/service/impl/VirtualOrderServiceImpl.java
  97. 28 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/common/SSOLoginHelper.java
  98. 57 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/common/SSOLoginStore.java
  99. 54 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/common/util/LogoConfig.java
  100. 0 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/common/util/MatrixToImageWriterUtil.java

+ 15 - 0
4dkankan-center-api/4dkankan-center-platform-api/pom.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>4dkankan-center-api</artifactId>
+        <groupId>com.fdkankan</groupId>
+        <version>2.0.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>4dkankan-center-platform-api</artifactId>
+
+
+</project>

+ 1 - 0
4dkankan-center-api/pom.xml

@@ -13,6 +13,7 @@
     <packaging>pom</packaging>
     <modules>
         <module>4dkankan-center-scene-api</module>
+        <module>4dkankan-center-platform-api</module>
     </modules>
 
 

+ 23 - 0
4dkankan-center-platform/pom.xml

@@ -29,6 +29,29 @@
           <artifactId>4dkankan-pom</artifactId>
           <version>2.0.0</version>
       </dependency>
+
+<!--      二维码-->
+      <dependency>
+          <groupId>com.github.penggle</groupId>
+          <artifactId>kaptcha</artifactId>
+          <version>2.3.2</version>
+      </dependency>
+      <dependency>
+          <groupId>com.google.zxing</groupId>
+          <artifactId>core</artifactId>
+          <version>2.1</version>
+      </dependency>
+      <dependency>
+          <groupId>com.google.code.gson</groupId>
+          <artifactId>gson</artifactId>
+          <version>2.8.5</version>
+      </dependency>
+
+      <dependency>
+          <groupId>com.qiniu</groupId>
+          <artifactId>qiniu-java-sdk</artifactId>
+          <version>7.2.0</version>
+      </dependency>
   </dependencies>
 
 

+ 32 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/api/AgentAuditController.java

@@ -0,0 +1,32 @@
+package com.fdkankan.agent.controller.api;
+
+
+import com.fdkankan.agent.request.RequestAgentAudit;
+import com.fdkankan.agent.service.IAgentAuditService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * 经销商申请模块
+ */
+@RestController
+@RequestMapping("/api")
+public class AgentAuditController {
+
+    @Autowired
+    private IAgentAuditService agentAuditService;
+
+    /**
+     * 保存申请信息
+     */
+    @PostMapping("/agentAduit/save")
+    public String save(@RequestBody RequestAgentAudit param){
+        return agentAuditService.saveByParam(param);
+    }
+
+
+}

+ 3 - 4
4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/api/AgentController.java

@@ -10,11 +10,10 @@ import com.fdkankan.agent.vo.AgentVo;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.servlet.http.HttpServletRequest;
-
 /**
  * <p>
  * 代理商表 前端控制器
@@ -37,8 +36,8 @@ public class AgentController {
      * @return
      */
     @PostMapping(value = "/detail")
-    public AgentVo detail(HttpServletRequest request){
-        String userName = JWT.decode(request.getHeader("token")).getClaim("userName").asString();
+    public AgentVo detail(@RequestHeader String token){
+        String userName = JWT.decode(token).getClaim("userName").asString();
         String agentId = userName.split(":")[1];
         Agent agent = agentService.getAgentById(agentId);
         AgentVo rsp =  new AgentVo();

+ 4 - 8
4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/api/AgentLoginController.java

@@ -4,17 +4,14 @@ import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.agent.request.RequestAgent;
 import com.fdkankan.agent.service.IAgentService;
 import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.ServerCode;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.JwtUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
 
 /**
  * 代理商登录模块
@@ -40,8 +37,7 @@ public class AgentLoginController  {
      * 代理商登出
      */
     @PostMapping(value = "/logout")
-    public String logout(HttpServletRequest request) {
-        String token = request.getHeader("token");
+    public String logout(@RequestHeader String token) {
         if(token == null){
             throw new BusinessException(ErrorCode.USER_NOT_LOGIN);
         }
@@ -50,6 +46,6 @@ public class AgentLoginController  {
             throw new BusinessException(ErrorCode.TOKEN_ILLEGAL);
         }
         redisTemplate.delete(userName);
-        return "登出成功";
+        return ServerCode.SUCCESS.message();
     }
 }

+ 53 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/manager/ManagerAgentAuditController.java

@@ -0,0 +1,53 @@
+package com.fdkankan.agent.controller.manager;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.agent.entity.AgentAudit;
+import com.fdkankan.agent.request.RequestNote;
+import com.fdkankan.agent.request.RequestSearch;
+import com.fdkankan.agent.service.IAgentAuditService;
+import com.fdkankan.agent.vo.AgentAuditVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 经销商申请模块
+ */
+@RestController
+@RequestMapping("/api/manager/agentAudit")
+public class ManagerAgentAuditController {
+
+    @Autowired
+    private IAgentAuditService agentAuditService;
+    /**
+     * 获取申请经销商列表
+     */
+    @GetMapping("/list")
+    public Page<AgentAudit> list(@RequestParam(value="pageNum", defaultValue="1", required = false) Integer pageNum,
+                                 @RequestParam(value="pageSize", defaultValue="10", required = false) Integer pageSize){
+        return agentAuditService.getPageList(pageNum,pageSize);
+    }
+
+    /**
+     * 更新状态
+     */
+    @GetMapping("/update/active/{id}/{state}")
+    private String updateActive(@PathVariable("id") Long id, @PathVariable("state") String state){
+        return agentAuditService.updateStatus(id,state);
+    }
+
+    /**
+     * 更新备注信息
+     */
+    @PostMapping("/update/note")
+    private String updateNote(@RequestBody RequestNote param){
+        return agentAuditService.updateNote(param);
+    }
+
+    /**
+     * 搜索查询
+     */
+    @PostMapping("/search")
+    private Page<AgentAuditVo> search(@RequestBody RequestSearch param){
+        return agentAuditService.searchLike(param);
+    }
+}

+ 119 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/agent/controller/manager/ManagerAgentController.java

@@ -3,13 +3,28 @@ package com.fdkankan.agent.controller.manager;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.agent.entity.Agent;
+import com.fdkankan.agent.entity.AgentFramework;
 import com.fdkankan.agent.request.RequestAgent;
+import com.fdkankan.agent.request.RequestAgentFramework;
+import com.fdkankan.agent.request.RequestAgentNotice;
+import com.fdkankan.agent.service.IAgentFrameworkService;
 import com.fdkankan.agent.service.IAgentNoticeService;
 import com.fdkankan.agent.service.IAgentService;
+import com.fdkankan.agent.util.AgentFrameworkTree;
+import com.fdkankan.agent.util.AgentFrameworkTreeUtil;
+import com.fdkankan.agent.vo.AgentDetailTotalAmount;
+import com.fdkankan.agent.vo.AgentTotalAmountVo;
 import com.fdkankan.agent.vo.AgentVo;
+import com.fdkankan.agent.vo.ResponseAgentCamera;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
 
 /**
  * <p>
@@ -25,6 +40,8 @@ public class ManagerAgentController {
     IAgentService agentService;
     @Autowired
     IAgentNoticeService agentNoticeService;
+    @Autowired
+    IAgentFrameworkService agentFrameworkService;
 
     /**
      * 获取代理商列表
@@ -56,9 +73,109 @@ public class ManagerAgentController {
     /**
      * 删除代理商
      */
-    @RequestMapping(value = {"/delete"}, method = RequestMethod.POST)
+    @PostMapping(value = "/delete")
     public String delete(@RequestBody RequestAgent param) throws Exception {
         return agentService.deleteAgent(param.getId());
     }
+
+    /**
+     * 更新状态
+     */
+    @PostMapping(value = "/updateStatus")
+    public String updateStatus(@RequestBody RequestAgent param) throws Exception {
+        return agentService.updateAgentStatus(param.getId(), param.getStatus());
+    }
+
+    /**
+     * 上传设备表格
+     * @return
+     */
+    @PostMapping(value = "/uploadFile")
+    public String uploadFile(MultipartFile file) throws Exception {
+        return agentService.uploadFile(file);
+    }
+
+
+    /**
+     * 代理查询列表
+     */
+    @PostMapping(value = {"/searchList"})
+    public Page<AgentVo> searchList(@RequestBody RequestAgent param) throws Exception {
+        return agentService.searchAgentList(param);
+    }
+
+    /**
+     * 代理查询列表统计
+     */
+    @PostMapping(value = "/searchListStatistics")
+    public AgentTotalAmountVo searchListStatistics(@RequestBody RequestAgent param) throws Exception {
+        return agentService.searchAgentListStatistics(param);
+    }
+
+    /**
+     * 代理查询列表详情
+     */
+    @PostMapping(value = "/searchListDetail")
+    public Page<ResponseAgentCamera> searchListDetail(@RequestBody RequestAgent param) throws Exception {
+        return agentService.searchAgentListDetail(param);
+    }
+
+    /**
+     * 代理查询列表详情统计
+     */
+    @PostMapping(value = "/searchListDetailStatistics")
+    public AgentDetailTotalAmount searchListDetailStatistics(@RequestBody RequestAgent param) throws Exception {
+        return agentService.searchAgentListDetailStatistics(param);
+    }
+
+    /**
+     * 发布公告
+     */
+    @PostMapping(value = "/publishNotice")
+    public String publishNotice(@RequestBody RequestAgentNotice param) throws Exception {
+        return agentNoticeService.saveNotice(param.getTitle(), param.getContent());
+    }
+
+    /**
+     * 新增经销商架构管理
+     */
+    @PostMapping(value = "/addAgentFramework")
+    public String addAgentFramework(@RequestBody RequestAgentFramework param){
+       return  agentFrameworkService.saveByParam(param);
+    }
+
+    /**
+     * 修改经销商架构管理
+     */
+    @PostMapping(value = "/updateAgentFramework")
+    public String updateAgentFramework(@RequestBody RequestAgentFramework param){
+        return  agentFrameworkService.updateByParam(param);
+    }
+
+    /**
+     * 删除经销商架构管理
+     */
+    @PostMapping(value = "/deleteAgentFramework")
+    public String deleteAgentFramework(@RequestBody RequestAgentFramework param){
+        return agentFrameworkService.deleteByParam(param);
+    }
+
+    /**
+     * 查询经销商架构树结构
+     * @return
+     */
+    @PostMapping(value = "/agentFrameworkTree")
+    public List<AgentFrameworkTree> agentFrameworkTree(){
+        List<AgentFramework> list = agentFrameworkService.list();
+        return new AgentFrameworkTreeUtil(list).buildTree();
+    }
+
+    /**
+     * 查询经销商架构所有
+     */
+    @PostMapping(value = "/agentFrameworkAll")
+    public List<AgentFramework> agentFrameworkAll(){
+        return agentFrameworkService.list();
+    }
 }
 

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

@@ -1,9 +1,6 @@
 package com.fdkankan.agent.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -98,6 +95,7 @@ public class Agent implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.agent.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.io.Serializable;
+import java.util.Date;
+
 /**
  * <p>
  * 代理商申请表
@@ -121,6 +119,7 @@ public class AgentAudit implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.agent.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.io.Serializable;
+import java.util.Date;
+
 /**
  * <p>
  * 代理商架构管理
@@ -40,6 +38,7 @@ public class AgentFramework implements Serializable {
     private String agentName;
 
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     @TableField("create_time")

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

@@ -1,14 +1,12 @@
 package com.fdkankan.agent.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.io.Serializable;
+import java.util.Date;
+
 /**
  * <p>
  * 代理商公告表
@@ -55,6 +53,7 @@ public class AgentNotice implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.agent.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.io.Serializable;
+import java.util.Date;
+
 /**
  * <p>
  * 代理商可用相机表
@@ -52,6 +50,7 @@ public class VaildCameras implements Serializable {
     private String devicemac;
 
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     @TableField("create_time")

+ 61 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/agent/request/RequestAgentAudit.java

@@ -0,0 +1,61 @@
+package com.fdkankan.agent.request;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+@Data
+public class RequestAgentAudit extends RequestBase {
+
+    /**
+     * 经销商公司名称
+     */
+    private String name;
+    /**
+     * 国家
+     */
+    private String country;
+    /**
+     * 地区
+     */
+    private String region;
+    /**
+     * 地址
+     */
+    private String address;
+    /**
+     * 类型,1为线下,2为线上
+     */
+    private Integer type;
+    /**
+     * 线下门店地址或线上网站
+     */
+    private String storeAddress;
+    /**
+     * 申请人的姓
+     */
+    private String surName;
+    /**
+     * 状态,0申请中,1审核通过,2审核失败
+     */
+    private int state;
+    /**
+     * 申请人的名字
+     */
+    private String userName;
+    /**
+     * 申请人职位
+     */
+    private String post;
+    /**
+     * 区号
+     */
+    private String areaCode;
+    /**
+     * 手机号
+     */
+    private String phone;
+    /**
+     * 邮箱地址
+     */
+    private String email;
+}

+ 13 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/agent/request/RequestAgentFramework.java

@@ -0,0 +1,13 @@
+package com.fdkankan.agent.request;
+
+import lombok.Data;
+
+@Data
+public class RequestAgentFramework {
+
+    private Long id;
+
+    private Long parentId;
+
+    private String name;
+}

+ 13 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/agent/request/RequestAgentNotice.java

@@ -0,0 +1,13 @@
+package com.fdkankan.agent.request;
+
+import lombok.Data;
+
+@Data
+public class RequestAgentNotice {
+
+    //    @ApiModelProperty(value = "标题", name = "title")
+    private String title;
+
+    //    @ApiModelProperty(value = "公告内容", name = "content")
+    private String content;
+}

+ 19 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/agent/request/RequestNote.java

@@ -0,0 +1,19 @@
+package com.fdkankan.agent.request;
+
+import lombok.Data;
+
+@Data
+public class RequestNote {
+
+    private Long id;
+
+    /**
+     * 备注等级
+     */
+    private Integer noteType;
+
+    /**
+     * 备注内容
+     */
+    private String noteContent;
+}

+ 17 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/agent/request/RequestSearch.java

@@ -0,0 +1,17 @@
+package com.fdkankan.agent.request;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class RequestSearch extends RequestBase implements Serializable {
+    private String itemName;
+
+    private String startDate;
+
+    private String endDate;
+
+    private String type;
+}

+ 14 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/agent/service/IAgentAuditService.java

@@ -1,7 +1,12 @@
 package com.fdkankan.agent.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.agent.entity.AgentAudit;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.agent.request.RequestAgentAudit;
+import com.fdkankan.agent.request.RequestNote;
+import com.fdkankan.agent.request.RequestSearch;
+import com.fdkankan.agent.vo.AgentAuditVo;
 
 /**
  * <p>
@@ -13,4 +18,13 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IAgentAuditService extends IService<AgentAudit> {
 
+    String saveByParam(RequestAgentAudit param);
+
+    Page<AgentAudit> getPageList(Integer pageNum, Integer pageSize);
+
+    String updateStatus(Long id, String state);
+
+    String updateNote(RequestNote param);
+
+    Page<AgentAuditVo> searchLike(RequestSearch param);
 }

+ 6 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/agent/service/IAgentFrameworkService.java

@@ -2,6 +2,7 @@ package com.fdkankan.agent.service;
 
 import com.fdkankan.agent.entity.AgentFramework;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.agent.request.RequestAgentFramework;
 
 /**
  * <p>
@@ -13,4 +14,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IAgentFrameworkService extends IService<AgentFramework> {
 
+    String saveByParam(RequestAgentFramework param);
+
+    String updateByParam(RequestAgentFramework param);
+
+    String deleteByParam(RequestAgentFramework param);
 }

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

@@ -15,4 +15,6 @@ import com.fdkankan.agent.vo.AgentNoticeVo;
 public interface IAgentNoticeService extends IService<AgentNotice> {
 
     AgentNoticeVo getAgentNotice();
+
+    String saveNotice(String title, String content);
 }

+ 16 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/agent/service/IAgentService.java

@@ -5,7 +5,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.agent.entity.Agent;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.agent.request.RequestAgent;
+import com.fdkankan.agent.vo.AgentDetailTotalAmount;
+import com.fdkankan.agent.vo.AgentTotalAmountVo;
 import com.fdkankan.agent.vo.AgentVo;
+import com.fdkankan.agent.vo.ResponseAgentCamera;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * <p>
@@ -26,4 +30,16 @@ public interface IAgentService extends IService<Agent> {
     String saveAgent(RequestAgent param);
 
     String deleteAgent(Long id);
+
+    String updateAgentStatus(Long id, int status);
+
+    Page<AgentVo> searchAgentList(RequestAgent param);
+
+    AgentTotalAmountVo searchAgentListStatistics(RequestAgent param);
+
+    Page<ResponseAgentCamera> searchAgentListDetail(RequestAgent param);
+
+    AgentDetailTotalAmount searchAgentListDetailStatistics(RequestAgent param);
+
+    String uploadFile(MultipartFile file)throws Exception;
 }

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

@@ -1,11 +1,27 @@
 package com.fdkankan.agent.service.impl;
 
+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.agent.entity.AgentAudit;
 import com.fdkankan.agent.mapper.IAgentAuditMapper;
+import com.fdkankan.agent.request.RequestAgentAudit;
+import com.fdkankan.agent.request.RequestNote;
+import com.fdkankan.agent.request.RequestSearch;
 import com.fdkankan.agent.service.IAgentAuditService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.agent.vo.AgentAuditVo;
+import com.fdkankan.common.constant.ConstantRegex;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.ServerCode;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.validation.ValidationUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  * 代理商申请表 服务实现类
@@ -17,4 +33,101 @@ import org.springframework.stereotype.Service;
 @Service
 public class AgentAuditServiceImpl extends ServiceImpl<IAgentAuditMapper, AgentAudit> implements IAgentAuditService {
 
+    @Override
+    public String saveByParam(RequestAgentAudit param) {
+        if(param == null || StringUtils.isEmpty(param.getName()) || StringUtils.isEmpty(param.getAddress()) ||
+                StringUtils.isEmpty(param.getCountry()) || StringUtils.isEmpty(param.getRegion()) ||
+                StringUtils.isEmpty(param.getSurName()) || StringUtils.isEmpty(param.getUserName()) ||
+                StringUtils.isEmpty(param.getPost()) || StringUtils.isEmpty(param.getAreaCode()) ||
+                StringUtils.isEmpty(param.getPhone()) || StringUtils.isEmpty(param.getEmail())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        if(!param.getEmail().matches(ConstantRegex.EMAIL_REGEX)){
+            throw new BusinessException(ErrorCode.EMAIL_ERROR);
+        }
+        AgentAudit agentAudit = new AgentAudit();
+        BeanUtils.copyProperties(param,agentAudit);
+        agentAudit.setNoteType(1);
+        agentAudit.setState(1);
+        if(!this.save(agentAudit)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public Page<AgentAudit> getPageList(Integer pageNum, Integer pageSize) {
+        QueryWrapper<AgentAudit> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().orderByDesc(AgentAudit::getCreateTime);
+        Page<AgentAudit> page = new Page<>();
+        page.setCurrent(pageNum);
+        page.setSize(pageSize);
+        return  this.page(page,queryWrapper);
+    }
+
+    @Override
+    public String updateStatus(Long id, String state) {
+        AgentAudit audit = this.getById(id);
+        Integer status = Integer.valueOf(state);
+        if (audit == null || !ValidationUtils.validateState(status)) {
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        audit.setState(status);
+        if(!this.updateById(audit)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public String updateNote(RequestNote param) {
+        if(param.getId() == null || param.getNoteType() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        AgentAudit audit = this.getById(param.getId());
+        if(audit == null){
+            throw new BusinessException(ErrorCode.NOT_RECORD);
+        }
+        if (!ValidationUtils.validateInteger(param.getNoteType())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        audit.setNoteType(param.getNoteType());
+        audit.setNoteContent(param.getNoteContent());
+        this.updateById(audit);
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public Page<AgentAuditVo> searchLike(RequestSearch param) {
+        QueryWrapper<AgentAudit> queryWrapper = new QueryWrapper<>();
+        if(StringUtils.isNotBlank(param.getStartDate())){
+            queryWrapper.lambda().ge(AgentAudit::getCreateTime,param.getStartDate());
+        }
+        if(StringUtils.isNotBlank(param.getEndDate())){
+            queryWrapper.lambda().le(AgentAudit::getCreateTime,param.getEndDate());
+        }
+        if(StringUtils.isNotBlank(param.getItemName())){
+            queryWrapper.lambda().like(AgentAudit::getAuditName,param.getItemName());
+            queryWrapper.lambda().like(AgentAudit::getAddress,param.getItemName());
+            queryWrapper.lambda().like(AgentAudit::getNoteContent,param.getItemName());
+        }
+        queryWrapper.lambda().orderByDesc(AgentAudit::getCreateTime);
+        Page<AgentAudit> page = new Page<>();
+        page.setCurrent(param.getPageNum());
+        page.setSize(param.getPageSize());
+        Page<AgentAudit> auditPage = this.page(page, queryWrapper);
+
+        List<AgentAuditVo> voList = auditPage.getRecords().parallelStream().map(agentAudit -> {
+            AgentAuditVo agentAuditVo = new AgentAuditVo();
+            BeanUtils.copyProperties(agentAudit, agentAuditVo);
+            return agentAuditVo;
+        }).collect(Collectors.toList());
+
+        Page<AgentAuditVo> auditVoPage = new Page<>();
+        auditVoPage.setCurrent(page.getCurrent());
+        auditVoPage.setSize(page.getSize());
+        auditVoPage.setRecords(voList);
+        auditVoPage.setTotal(page.getTotal());
+        return auditVoPage;
+    }
 }

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

@@ -1,11 +1,22 @@
 package com.fdkankan.agent.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fdkankan.agent.entity.AgentFramework;
 import com.fdkankan.agent.mapper.IAgentFrameworkMapper;
+import com.fdkankan.agent.request.RequestAgentFramework;
 import com.fdkankan.agent.service.IAgentFrameworkService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.ServerCode;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.user.entity.Manager;
+import com.fdkankan.user.service.IManagerService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  * 代理商架构管理 服务实现类
@@ -17,4 +28,60 @@ import org.springframework.stereotype.Service;
 @Service
 public class AgentFrameworkServiceImpl extends ServiceImpl<IAgentFrameworkMapper, AgentFramework> implements IAgentFrameworkService {
 
+    @Autowired
+    private IManagerService managerService;
+
+    @Override
+    public String saveByParam(RequestAgentFramework param) {
+        if(StringUtils.isBlank(param.getName()) || param.getParentId() == null){
+            throw new BusinessException(ErrorCode.PARAM_REQUIRED);
+        }
+        QueryWrapper<AgentFramework> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(AgentFramework::getAgentName,param.getName());
+        List<AgentFramework> list = this.list(queryWrapper);
+        if(list != null && list.size() > 0){
+            throw new BusinessException(ErrorCode.AGENT_EXIST);
+        }
+        AgentFramework agentFramework = new AgentFramework();
+        agentFramework.setAgentName(param.getName());
+        agentFramework.setParentId(param.getParentId());
+        if(!this.save(agentFramework)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public String updateByParam(RequestAgentFramework param) {
+        if(StringUtils.isBlank(param.getName()) || param.getId() == null){
+            throw new BusinessException(ErrorCode.PARAM_REQUIRED);
+        }
+        AgentFramework agentFramework = this.getById(param.getId());
+        if(agentFramework == null){
+            throw new BusinessException(ErrorCode.AGENT_NOT_EXIST);
+        }
+        if(agentFramework.getAgentName().equals(param.getName())){
+            throw new BusinessException(ErrorCode.AGENT_EXIST);
+        }
+        agentFramework.setAgentName(param.getName());
+        if(!this.saveOrUpdate(agentFramework)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public String deleteByParam(RequestAgentFramework param) {
+        if( param.getId() == null){
+            throw new BusinessException(ErrorCode.PARAM_REQUIRED);
+        }
+        List<Manager> managerList= managerService.getByFrameworkId(param.getId());
+        if(managerList!=null && managerList.size()>0){
+            throw  new BusinessException(ErrorCode.AGENT_SUB_EXIST);
+        }
+        if(!this.removeById(param.getId())){
+            throw  new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return ServerCode.SUCCESS.message();
+    }
 }

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

@@ -8,6 +8,7 @@ import com.fdkankan.agent.service.IAgentNoticeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.agent.vo.AgentNoticeVo;
 import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.ServerCode;
 import com.fdkankan.common.exception.BusinessException;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -47,4 +48,15 @@ public class AgentNoticeServiceImpl extends ServiceImpl<IAgentNoticeMapper, Agen
         BeanUtils.copyProperties(list.get(0), agentNoticeVo);
         return agentNoticeVo;
     }
+
+    @Override
+    public String saveNotice(String title, String content) {
+        AgentNotice agentNotice = new AgentNotice();
+        agentNotice.setTitle(title);
+        agentNotice.setContent(content);
+        if(!this.save(agentNotice)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return ServerCode.SUCCESS.message();
+    }
 }

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

@@ -8,27 +8,36 @@ import com.fdkankan.agent.entity.Agent;
 import com.fdkankan.agent.mapper.IAgentMapper;
 import com.fdkankan.agent.request.RequestAgent;
 import com.fdkankan.agent.service.IAgentService;
+import com.fdkankan.agent.util.ExcelUtil;
+import com.fdkankan.agent.vo.AgentDetailTotalAmount;
+import com.fdkankan.agent.vo.AgentTotalAmountVo;
 import com.fdkankan.agent.vo.AgentVo;
+import com.fdkankan.agent.vo.ResponseAgentCamera;
+import com.fdkankan.common.constant.ConstantFilePath;
 import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.ServerCode;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.JwtUtil;
 import com.fdkankan.common.util.PasswordUtils;
 import com.fdkankan.common.util.SsoUtil;
 import com.fdkankan.goods.entity.Camera;
+import com.fdkankan.goods.entity.CameraDetail;
+import com.fdkankan.goods.service.ICameraDetailService;
 import com.fdkankan.goods.service.ICameraService;
 import com.fdkankan.order.service.IVirtualOrderService;
-import com.fdkankan.agent.util.ExcelUtil;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
+import java.io.File;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -47,6 +56,8 @@ public class AgentServiceImpl extends ServiceImpl<IAgentMapper, Agent> implement
     private ICameraService cameraService;
     @Autowired
     private IVirtualOrderService virtualOrderService;
+    @Autowired
+    private ICameraDetailService cameraDetailService;
 
     @Override
     public Agent getAgentById(String agentId) {
@@ -81,25 +92,18 @@ public class AgentServiceImpl extends ServiceImpl<IAgentMapper, Agent> implement
 
     @Override
     public Page<AgentVo> getPageList(RequestAgent param) {
-        QueryWrapper<Agent> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("rec_status","A");
-        if(StringUtils.isNotBlank(param.getAgentName())){
-            queryWrapper.like("agent_name",param.getAgentName());
-        }
-        if(StringUtils.isNotBlank(param.getAgentId())){
-            queryWrapper.like("agent_id",param.getAgentId());
-        }
 
         Page<Agent> agentPage = new Page<>();
         agentPage.setCurrent(param.getPageNum());
         agentPage.setSize(param.getPageSize());
-        Page<Agent> page = this.page(agentPage, queryWrapper);
-        List<AgentVo> agentVoList = new ArrayList<>();
-        for (Agent record : page.getRecords()) {
+        Page<Agent> page = this.page(agentPage, getQueryWrapper(param));
+
+        List<AgentVo> agentVoList =page.getRecords().parallelStream().map(agent -> {
             AgentVo agentVo = new AgentVo();
-            BeanUtils.copyProperties(record,agentVo);
-            agentVoList.add(agentVo);
-        }
+            BeanUtils.copyProperties(agent, agentVo);
+            return agentVo;
+        }).collect(Collectors.toList());
+
         Page<AgentVo> agentVoPage = new Page<>();
         agentVoPage.setCurrent(agentPage.getCurrent());
         agentPage.setSize(agentPage.getSize());
@@ -127,15 +131,133 @@ public class AgentServiceImpl extends ServiceImpl<IAgentMapper, Agent> implement
                 }
             }
         }
-        return "操作成功";
+        return ServerCode.SUCCESS.message();
     }
 
     @Override
     public String deleteAgent(Long id) {
-        this.removeById(id);
-        return null;
+        if(!this.removeById(id)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return ServerCode.SUCCESS.message();
     }
 
+    @Override
+    public String updateAgentStatus(Long id, int status) {
+        Agent agent = this.getById(id);
+        if(agent == null){
+            throw new BusinessException(ErrorCode.NOT_RECORD);
+        }
+        agent.setState(status);
+        if(!this.saveOrUpdate(agent)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public Page<AgentVo> searchAgentList(RequestAgent param) {
+        Page<AgentVo> pageList = this.getPageList(param);
+        pageList.getRecords().forEach(agentVo -> {
+            Integer count = cameraDetailService.getCountByAgentId(agentVo.getAgentId());
+            agentVo.setRepertory(agentVo.getAgentNum() -count);
+            virtualOrderService.getByStatusAndCameraId(agentVo, param.getStartDate(), param.getEndDate());
+        });
+        return pageList;
+    }
+
+    @Override
+    public AgentTotalAmountVo searchAgentListStatistics(RequestAgent param) {
+        if(redisTemplate.hasKey("AgentSearchListTotalAmount")){
+            String jsonObject = redisTemplate.opsForValue().get("AgentSearchListTotalAmount");
+            return JSONObject.parseObject(jsonObject, AgentTotalAmountVo.class);
+        }
+        List<Agent> list = this.list(getQueryWrapper(param));
+        if(list == null || list.size()<=0){
+            throw new BusinessException(ErrorCode.NOT_RECORD);
+        }
+        AgentTotalAmountVo totalAmountVo = new AgentTotalAmountVo();
+        for (Agent agent : list) {
+            Integer countByAgentId = cameraDetailService.getCountByAgentId(agent.getAgentId());
+            AgentVo agentVo = new AgentVo();
+            agentVo.setAgentId(agent.getAgentId());
+            virtualOrderService.getByStatusAndCameraId(agentVo,param.getStartDate(),param.getEndDate());
+
+            totalAmountVo.setTotalRepertory( totalAmountVo.getTotalRepertory() + (agent.getAgentNum() - countByAgentId));
+            totalAmountVo.setTotalAgentNum(totalAmountVo.getTotalAgentNum() + agent.getAgentNum());
+            totalAmountVo.setTotalSubExpend(totalAmountVo.getTotalSubExpend() + agentVo.getSubExpend());
+            totalAmountVo.setTotalSubExtract(totalAmountVo.getTotalSubExtract() + agentVo.getSubExtract());
+            totalAmountVo.setTotalSubRecharge(totalAmountVo.getTotalSubRecharge() + agentVo.getSubRecharge());
+        }
+        redisTemplate.opsForValue().set("AgentSearchListTotalAmount",JSONObject.toJSONString(totalAmountVo),7200 ,TimeUnit.SECONDS);
+        return totalAmountVo;
+    }
+
+    @Override
+    public Page<ResponseAgentCamera> searchAgentListDetail(RequestAgent param) {
+        return  cameraDetailService.getPageByAgentId(param);
+    }
+
+    @Override
+    public AgentDetailTotalAmount searchAgentListDetailStatistics(RequestAgent param) {
+        if(redisTemplate.hasKey("AgentSearchListDetailTotalAmount")){
+            String jsonObject = redisTemplate.opsForValue().get("AgentSearchListDetailTotalAmount");
+            return JSONObject.parseObject(jsonObject, AgentDetailTotalAmount.class);
+        }
+        AgentDetailTotalAmount totalAmount = new AgentDetailTotalAmount();
+        List<CameraDetail> detailList = cameraDetailService.getListByAgentId(param.getAgentId());
+        for (CameraDetail entity : detailList) {
+            Camera camera = cameraService.getById(entity.getCameraId());
+            if(camera == null){
+                continue;
+            }
+            ResponseAgentCamera vo = virtualOrderService.getPointsByCameraId(entity.getCameraId(), param.getStartDate(), param.getEndDate());
+            totalAmount.setTotalCharge(totalAmount.getTotalCharge() + vo.getCharge() );
+            totalAmount.setTotalExchangePoint(totalAmount.getTotalExchangePoint() + vo.getExchangePoint());
+            totalAmount.setTotalLessPoint(totalAmount.getTotalLessPoint() + vo.getLessPoint());
+            totalAmount.setTotalExtract(totalAmount.getTotalExtract().add(vo.getExtract()));
+        }
+        redisTemplate.opsForValue().set("AgentSearchListTotalAmount",JSONObject.toJSONString(totalAmount),7200 ,TimeUnit.SECONDS);
+        return totalAmount;
+    }
+
+    @Override
+    public String uploadFile(MultipartFile file) throws Exception{
+        if (file.isEmpty()) {
+            throw new BusinessException(ErrorCode.EMPTY_FILE);
+        }
+        File targetFile = new File(ConstantFilePath.AGENT_PATH);
+        if (!targetFile.exists()) {
+            targetFile.mkdirs();
+        }
+        String fileName = file.getOriginalFilename();
+        targetFile = new File(ConstantFilePath.AGENT_PATH + fileName);
+        int count = 1;
+        while (targetFile.exists()) {
+            targetFile = new File(ConstantFilePath.AGENT_PATH + fileName.substring(0, fileName.lastIndexOf(".")) + "(" + count + ")" + fileName.substring(fileName.lastIndexOf(".")));
+            ++count;
+        }
+        file.transferTo(targetFile);
+        return ConstantFilePath.AGENT_PATH + targetFile.getName();
+    }
+
+    private QueryWrapper<Agent> getQueryWrapper(RequestAgent param){
+        QueryWrapper<Agent> queryWrapper = new QueryWrapper<>();
+        //queryWrapper.eq("rec_status","A");
+        if(StringUtils.isNotBlank(param.getAgentName())){
+            queryWrapper.like("agent_name",param.getAgentName());
+        }
+        if(StringUtils.isNotBlank(param.getAgentId())){
+            queryWrapper.like("agent_id",param.getAgentId());
+        }
+        if(StringUtils.isNotBlank(param.getStartDate())){
+            queryWrapper.between("create_time",param.getStartDate()+" 00:00:00",param.getEndDate()+" 23:59:59");
+        }
+        queryWrapper.orderByDesc("create_time");
+        return queryWrapper;
+    }
+
+
     private void saveOrUpdate(RequestAgent param){
         Agent agent = new Agent();
         agent.setId(param.getId());

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

@@ -0,0 +1,65 @@
+package com.fdkankan.agent.util;
+
+import java.util.List;
+
+public class AgentFrameworkTree {
+    private Long id;
+
+    private String name;
+
+    private Long parentId;
+
+    private List<AgentFrameworkTree> children;
+
+    public List<AgentFrameworkTree> getChildren() {
+        return children;
+    }
+
+    public void setChildren(List<AgentFrameworkTree> children) {
+        this.children = children;
+    }
+
+    private int level;
+
+    private boolean checked = false;
+
+    public void setChecked(boolean checked) {
+        this.checked = checked;
+    }
+
+    public int getLevel() {
+        return level;
+    }
+
+    public boolean isChecked() {
+        return checked;
+    }
+
+    public void setLevel(int level) {
+        this.level = level;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Long getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Long parentId) {
+        this.parentId = parentId;
+    }
+}

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

@@ -0,0 +1,97 @@
+package com.fdkankan.agent.util;
+
+import com.fdkankan.agent.entity.AgentFramework;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AgentFrameworkTreeUtil {
+
+    private List<AgentFrameworkTree> resultNodes = new ArrayList<AgentFrameworkTree>();//树形结构排序之后list内容
+
+    private List<AgentFrameworkTree> nodes = new ArrayList<AgentFrameworkTree>();
+    //传入list参数
+
+    public AgentFrameworkTreeUtil(List<AgentFramework> nodesList) {//通过构造函数初始化
+        for (AgentFramework n : nodesList) {
+            AgentFrameworkTree treeGrid = new AgentFrameworkTree();
+            treeGrid.setId(n.getId());
+            treeGrid.setName(n.getAgentName());
+//            treeGrid.setIcon(n.getIcon());
+            if (n.getParentId() != null) {
+                treeGrid.setParentId(n.getParentId());
+            }
+            nodes.add(treeGrid);
+        }
+    }
+
+    public AgentFrameworkTreeUtil() {
+    }
+
+    /**
+     * 构建树形结构list
+     *
+     * @return 返回树形结构List列表
+     */
+    public List<AgentFrameworkTree> buildTree() {
+        for (AgentFrameworkTree node : nodes) {
+            Long id = node.getParentId();
+            if (id == null) {//通过循环一级节点 就可以通过递归获取二级以下节点
+                resultNodes.add(node);//添加一级节点
+//                node.setLevel(1);
+                build(node, node.getLevel());//递归获取二级、三级、。。。节点
+            }
+        }
+        return resultNodes;
+    }
+
+    /**
+     * 递归循环子节点
+     *
+     * @param node 当前节点
+     */
+    private void build(AgentFrameworkTree node, int level) {
+        List<AgentFrameworkTree> children = getChildren(node);
+        if (!children.isEmpty()) {//如果存在子节点
+            node.setChildren(children);
+//        	level++;
+            for (AgentFrameworkTree child : children) {//将子节点遍历加入返回值中
+//        		child.setLevel(level);
+                build(child, child.getLevel());
+            }
+        }
+    }
+
+    /**
+     * @param node
+     * @return 返回
+     */
+    private List<AgentFrameworkTree> getChildren(AgentFrameworkTree node) {
+        List<AgentFrameworkTree> children = new ArrayList<AgentFrameworkTree>();
+        Long id = node.getId();
+        for (AgentFrameworkTree child : nodes) {
+            if (child.getParentId() != null && id.longValue() == child.getParentId().longValue()) {//如果id等于父id
+                children.add(child);//将该节点加入循环列表中
+            }
+        }
+        return children;
+    }
+
+    public List<AgentFrameworkTree> buildTree(List<AgentFramework> all, List<AgentFramework> in) {
+        for (AgentFramework n : all) {
+            AgentFrameworkTree treeGrid = new AgentFrameworkTree();
+            treeGrid.setId(n.getId());
+            treeGrid.setName(n.getAgentName());
+            for (AgentFramework nin : in) {
+                if (nin.getId().equals(n.getId())) {
+                    treeGrid.setChecked(true);
+                }
+            }
+            if (n.getParentId() != null) {
+                treeGrid.setParentId(n.getParentId());
+            }
+            nodes.add(treeGrid);
+        }
+        return buildTree();
+    }
+}

+ 78 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/agent/vo/AgentAuditVo.java

@@ -0,0 +1,78 @@
+package com.fdkankan.agent.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class AgentAuditVo {
+
+    private Long id;
+
+    private Date createTime;
+
+    private Date updateTime;
+
+    /**
+     * 经销商公司名称
+     */
+    private String name;
+    /**
+     * 国家
+     */
+    private String country;
+    /**
+     * 地区
+     */
+    private String region;
+    /**
+     * 地址
+     */
+    private String address;
+    /**
+     * 类型,1为线下,2为线上
+     */
+    private Integer type;
+    /**
+     * 线下门店地址或线上网站
+     */
+    private String storeAddress;
+    /**
+     * 申请人的姓
+     */
+    private String surName;
+    /**
+     * 状态, O:无效, 1:有效
+     */
+    private int state;
+    /**
+     * 申请人的名字
+     */
+    private String userName;
+    /**
+     * 申请人职位
+     */
+    private String post;
+    /**
+     * 区号
+     */
+    private String areaCode;
+    /**
+     * 手机号
+     */
+    private String phone;
+    /**
+     * 邮箱地址
+     */
+    private String email;
+
+    /**
+     * 备注等级
+     */
+    private Integer noteType;
+
+    /**
+     * 备注内容
+     */
+    private String noteContent;
+}

+ 16 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/agent/vo/AgentDetailTotalAmount.java

@@ -0,0 +1,16 @@
+package com.fdkankan.agent.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class AgentDetailTotalAmount implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private int totalCharge = 0;
+    private int totalExchangePoint = 0;
+    private int totalLessPoint = 0;
+    private BigDecimal totalExtract = new BigDecimal(0.0);
+}

+ 21 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/agent/vo/AgentTotalAmountVo.java

@@ -0,0 +1,21 @@
+package com.fdkankan.agent.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class AgentTotalAmountVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    // 总共消耗点数
+    private int totalSubExpend = 0;
+    // 总共提成金额
+    private int totalSubExtract = 0;
+    // 总共充值
+    private int totalSubRecharge = 0;
+    // 总共代理数目
+    private int totalAgentNum = 0;
+    // 总共库存
+    private int totalRepertory = 0;
+}

+ 35 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/agent/vo/ResponseAgentCamera.java

@@ -0,0 +1,35 @@
+package com.fdkankan.agent.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class ResponseAgentCamera {
+
+    private static final long serialVersionUID = 1495336400562799480L;
+
+    private long id;
+
+    //相机的Mac地址
+    private String childName;
+    //已用点数
+    private int usedPoint;
+    //期初点数
+    private int initPoint;
+    //赠送点数
+    private int giftPoint;
+    //剩余点数
+    private int surPlusPoint;
+    //充值金额
+    private int charge;
+    //兑换点数
+    private int exchangePoint;
+    //消耗点数
+    private int lessPoint;
+    //提成金额
+    private BigDecimal extract;
+    //当前余额
+    private int balance;
+
+}

+ 3 - 3
4dkankan-center-platform/src/main/java/com/fdkankan/generate/AutoGenerate.java

@@ -30,9 +30,9 @@ public class AutoGenerate {
 //                        "t_increment_order","t_invoice","t_order","t_order_item",
 //                        "t_pre_sale","t_space_sdk","t_trade_log","t_commerce_order","t_download_order","t_expansion_order"
 //        }));
-        generate(path,"order", getTables(new String[]{
-                        "t_virtual_order"
-        }));
+//        generate(path,"order", getTables(new String[]{
+//                        "t_virtual_order"
+//        }));
 
 //        generate(path,"user", getTables(new String[]{
 //                        "t_user","t_user_increment","t_manager","t_province","t_increment_type","t_intercom_message","t_receiver_info"

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CameraController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.goods.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 相机主表 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/goods/camera")
-public class CameraController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CameraDetailController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.goods.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 相机子表 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/goods/cameraDetail")
-public class CameraDetailController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CameraOutController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.goods.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 相机出库表 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/goods/cameraOut")
-public class CameraOutController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CameraSpaceController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.goods.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 相机容量表 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/goods/cameraSpace")
-public class CameraSpaceController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CameraVersionController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.goods.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 相机版本表 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/goods/cameraVersion")
-public class CameraVersionController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CartController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.goods.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 购物车 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/goods/cart")
-public class CartController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CompanyController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.goods.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 客户企业logo信息 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/goods/company")
-public class CompanyController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/GoodsController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.goods.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 商品主表 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/goods/goods")
-public class GoodsController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/GoodsSkuController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.goods.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 商品sku表 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/goods/goodsSku")
-public class GoodsSkuController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/GoodsSpecController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.goods.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 商品规格表 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/goods/goodsSpec")
-public class GoodsSpecController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/GoodsSpecValueController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.goods.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 商品规格值表 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/goods/goodsSpecValue")
-public class GoodsSpecValueController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/GoodsSpuSpecController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.goods.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 商品规格关系表 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/goods/goodsSpuSpec")
-public class GoodsSpuSpecController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/SnCodeController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.goods.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 相机sn记录表 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/goods/snCode")
-public class SnCodeController {
-
-}
-

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

@@ -1,14 +1,12 @@
 package com.fdkankan.goods.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.io.Serializable;
+import java.util.Date;
+
 /**
  * <p>
  * 相机主表
@@ -79,6 +77,7 @@ public class Camera implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.goods.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.io.Serializable;
+import java.util.Date;
+
 /**
  * <p>
  * 相机子表
@@ -133,6 +131,7 @@ public class CameraDetail implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

+ 17 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/goods/entity/CameraDetailNumEntity.java

@@ -0,0 +1,17 @@
+package com.fdkankan.goods.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class CameraDetailNumEntity  implements Serializable {
+
+    private static final long serialVersionUID = -122990405139092098L;
+
+
+
+    private String cameraType;
+
+    private String cameraTypenum;
+}

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

@@ -1,14 +1,12 @@
 package com.fdkankan.goods.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.io.Serializable;
+import java.util.Date;
+
 /**
  * <p>
  * 相机出库表
@@ -58,6 +56,7 @@ public class CameraOut implements Serializable {
     private Date updateTime;
 
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.goods.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.io.Serializable;
+import java.util.Date;
+
 /**
  * <p>
  * 相机容量表
@@ -73,6 +71,7 @@ public class CameraSpace implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.goods.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.io.Serializable;
+import java.util.Date;
+
 /**
  * <p>
  * 相机版本表
@@ -73,6 +71,7 @@ public class CameraVersion implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.goods.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
-import lombok.Getter;
-import lombok.Setter;
 
 /**
  * <p>
@@ -80,6 +78,7 @@ public class Cart implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.goods.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.io.Serializable;
+import java.util.Date;
+
 /**
  * <p>
  * 客户企业logo信息
@@ -91,6 +89,7 @@ public class Company implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.goods.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
-import lombok.Getter;
-import lombok.Setter;
 
 /**
  * <p>
@@ -98,6 +96,7 @@ public class Goods implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.goods.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
-import lombok.Getter;
-import lombok.Setter;
 
 /**
  * <p>
@@ -92,6 +90,7 @@ public class GoodsSku implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.goods.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.io.Serializable;
+import java.util.Date;
+
 /**
  * <p>
  * 商品规格表
@@ -43,6 +41,7 @@ public class GoodsSpec implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.goods.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.io.Serializable;
+import java.util.Date;
+
 /**
  * <p>
  * 商品规格值表
@@ -49,6 +47,7 @@ public class GoodsSpecValue implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.goods.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.io.Serializable;
+import java.util.Date;
+
 /**
  * <p>
  * 商品规格关系表
@@ -49,6 +47,7 @@ public class GoodsSpuSpec implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,8 +1,13 @@
 package com.fdkankan.goods.mapper;
 
-import com.fdkankan.goods.entity.CameraDetail;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fdkankan.goods.entity.CameraDetail;
+import com.fdkankan.goods.entity.CameraDetailNumEntity;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
 
 /**
  * <p>
@@ -15,4 +20,12 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 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 ")
+    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 ")
+    List<CameraDetailNumEntity> selectTypeNumAll(@Param("userId") Long userId);
 }

+ 9 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/goods/mapper/ICameraSpaceMapper.java

@@ -2,7 +2,12 @@ package com.fdkankan.goods.mapper;
 
 import com.fdkankan.goods.entity.CameraSpace;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fdkankan.user.vo.ResponseCameraSpace;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
 
 /**
  * <p>
@@ -15,4 +20,8 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface ICameraSpaceMapper extends BaseMapper<CameraSpace> {
 
+    @Select(" select s.id, s.space_end_time, c.child_name, s.space from t_camera_space s " +
+            "LEFT JOIN t_camera c on s.camera_id = c.id where s.rec_status = 'A' and " +
+            "s.space_type = 2 and s.camera_id = #{cameraId} and TIMESTAMPDIFF(MINUTE, NOW(), s.space_end_time) > -1 ORDER BY s.space_end_time ")
+    List<ResponseCameraSpace> getListByCameraId(@Param("cameraId")Long cameraId);
 }

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

@@ -1,7 +1,16 @@
 package com.fdkankan.goods.service;
 
-import com.fdkankan.goods.entity.CameraDetail;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.agent.request.RequestAgent;
+import com.fdkankan.agent.vo.ResponseAgentCamera;
+import com.fdkankan.goods.entity.CameraDetail;
+import com.fdkankan.goods.entity.CameraDetailNumEntity;
+import com.fdkankan.user.request.RequestCamera;
+import com.fdkankan.user.vo.ResponseCamera;
+
+import java.util.HashMap;
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +22,29 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ICameraDetailService extends IService<CameraDetail> {
 
+    Integer getCountByAgentId(String agentId);
+
+    Page<ResponseAgentCamera> getPageByAgentId(RequestAgent param);
+
+    List<CameraDetail> getListByAgentId(String agentId);
+
+    Page<ResponseCamera> getPageByUserAndType(RequestCamera param, Long userId);
+
+    List<ResponseCamera> getListByUserAndType(Integer cameraType, Long userId);
+
+
+    List<CameraDetailNumEntity> getTypeNumByUser(Integer type, Long userId);
+
+    ResponseCamera getByChildName(Long userId, RequestCamera param);
+
+    HashMap<String, Object> getCameraDetailDeadline(Long userId, RequestCamera param);
+
+    Integer getDeadLineNumber(Long userId);
+
+    void unbind(Long cameraId);
+
+    CameraDetail getByCameraId(Long valueOf);
+
+    void bind(Long userId, Long cameraId);
+
 }

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

@@ -1,7 +1,15 @@
 package com.fdkankan.goods.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.goods.entity.Camera;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.user.request.RequestCamera;
+import com.fdkankan.user.vo.ResponseCamera;
+import com.fdkankan.user.vo.ResponseCameraSpace;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
  * <p>
@@ -14,4 +22,22 @@ import com.baomidou.mybatisplus.extension.service.IService;
 public interface ICameraService extends IService<Camera> {
 
     Camera saveByAgent(String childName, String wifiName, String agentId, String balance);
+
+    Page<ResponseCamera> getPageByUser(RequestCamera param, Long id);
+
+    Camera getByChildName(String childName);
+
+    List<ResponseCamera> getByUser(Long userId, Integer type);
+
+    String addCamera(RequestCamera camera, String token);
+
+    List<ResponseCameraSpace> cameraSpaceList(RequestCamera camera);
+
+    ResponseCamera findCameraBySn(RequestCamera camera);
+
+    HSSFWorkbook export(String token, HttpServletResponse response) throws Exception;
+
+    List<Camera> findLikeChildName(String trim);
+
+    Camera getBySnCode(String snCode);
 }

+ 5 - 1
4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/ICameraSpaceService.java

@@ -1,7 +1,10 @@
 package com.fdkankan.goods.service;
 
-import com.fdkankan.goods.entity.CameraSpace;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.goods.entity.CameraSpace;
+import com.fdkankan.user.vo.ResponseCameraSpace;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ICameraSpaceService extends IService<CameraSpace> {
 
+    List<ResponseCameraSpace> getListByCameraId(Long cameraId);
 }

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

@@ -2,6 +2,10 @@ package com.fdkankan.goods.service;
 
 import com.fdkankan.goods.entity.Cart;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.user.request.RequestCart;
+import com.fdkankan.user.vo.ResponseCart;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +17,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ICartService extends IService<Cart> {
 
+    String addCart(RequestCart param, String token);
+
+    List<ResponseCart> getCartList(RequestCart param, String token);
+
+    String removeCart(RequestCart param, String token);
+
+    String removeCarts(RequestCart param, String token);
 }

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

@@ -1,11 +1,45 @@
 package com.fdkankan.goods.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.agent.request.RequestAgent;
+import com.fdkankan.agent.vo.ResponseAgentCamera;
+import com.fdkankan.common.constant.AppConstant;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.util.DateUtil;
+import com.fdkankan.common.util.FileSizeUtil;
+import com.fdkankan.goods.entity.Camera;
 import com.fdkankan.goods.entity.CameraDetail;
+import com.fdkankan.goods.entity.CameraDetailNumEntity;
 import com.fdkankan.goods.mapper.ICameraDetailMapper;
 import com.fdkankan.goods.service.ICameraDetailService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.goods.service.ICameraService;
+import com.fdkankan.goods.service.ICameraSpaceService;
+import com.fdkankan.order.service.IVirtualOrderService;
+import com.fdkankan.user.entity.User;
+import com.fdkankan.user.entity.UserIncrement;
+import com.fdkankan.user.request.RequestCamera;
+import com.fdkankan.user.service.IUserIncrementService;
+import com.fdkankan.user.service.IUserService;
+import com.fdkankan.user.vo.ResponseCamera;
+import com.fdkankan.user.vo.ResponseCameraSpace;
+import com.fdkankan.user.vo.ResponseUserIncrement;
+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.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  * 相机子表 服务实现类
@@ -17,4 +51,331 @@ import org.springframework.stereotype.Service;
 @Service
 public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, CameraDetail> implements ICameraDetailService {
 
+    @Autowired
+    private ICameraService cameraService;
+    @Autowired
+    private IVirtualOrderService virtualOrderService;
+    @Resource
+    private ICameraDetailMapper cameraDetailMapper;
+    @Autowired
+    private IUserService userService;
+    @Autowired
+    private ICameraSpaceService cameraSpaceService;
+    @Autowired
+    private IUserIncrementService userIncrementService;
+
+    @Override
+    public Integer getCountByAgentId(String agentId) {
+        long count = this.count(new QueryWrapper<CameraDetail>().eq("agency", agentId));
+        return Math.toIntExact(count);
+    }
+    @Override
+    public CameraDetail getByCameraId(Long cameraId) {
+        QueryWrapper<CameraDetail> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CameraDetail :: getCameraId,cameraId);
+        List<CameraDetail> list = this.list(queryWrapper);
+        if(list == null || list.size()<=0){
+            return null;
+        }
+        return list.get(0);
+    }
+
+    @Override
+    public Page<ResponseAgentCamera> getPageByAgentId(RequestAgent param) {
+        QueryWrapper<CameraDetail> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CameraDetail :: getAgency,param.getAgentId());
+        queryWrapper.lambda().orderByDesc(CameraDetail::getCreateTime);
+
+        Page<CameraDetail> page = new Page<>();
+        page.setCurrent(param.getPageNum());
+        page.setSize(param.getPageSize());
+        Page<CameraDetail> pageResult = this.page(page, queryWrapper);
+
+        List<ResponseAgentCamera> voList = new ArrayList<>();
+        for (CameraDetail record : pageResult.getRecords()) {
+            Camera camera = cameraService.getById(record.getCameraId());
+            if(camera == null){
+                continue;
+            }
+            ResponseAgentCamera vo = virtualOrderService.getPointsByCameraId(record.getCameraId(), param.getStartDate(), param.getEndDate());
+            vo.setId(camera.getId());
+            vo.setBalance(Integer.parseInt(record.getBalance()));
+            vo.setChildName(camera.getChildName());
+            voList.add(vo);
+        }
+        Page<ResponseAgentCamera> pageVo = new Page<>();
+        pageVo.setCurrent(page.getCurrent());
+        pageVo.setSize(page.getSize());
+        pageVo.setTotal(page.getTotal());
+        pageVo.setRecords(voList);
+        return pageVo;
+    }
+
+    @Override
+    public List<CameraDetail> getListByAgentId(String agentId) {
+        QueryWrapper<CameraDetail> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CameraDetail::getAgency,agentId);
+        queryWrapper.lambda().orderByDesc(CameraDetail::getCreateTime);
+        return  this.list(queryWrapper);
+    }
+
+    @Override
+    public Page<ResponseCamera> getPageByUserAndType(RequestCamera param, Long userId) {
+        QueryWrapper<CameraDetail> queryWrapper = this.getQueryByUserAndType(param.getCameraType(), userId);
+        Page<CameraDetail> page = new Page<>();
+        page.setCurrent(param.getPageNum());
+        page.setSize(param.getPageSize());
+        Page<CameraDetail> pageEntity = this.page(page, queryWrapper);
+
+        List<ResponseCamera> voList = pageEntity.getRecords().parallelStream().map(cameraDetail -> {
+            ResponseCamera responseCamera = new ResponseCamera();
+            BeanUtils.copyProperties(cameraDetail, responseCamera);
+            return responseCamera;
+        }).collect(Collectors.toList());
+
+        Page<ResponseCamera> voPage = new Page<>(param.getPageNum(), param.getPageSize());
+        voPage.setTotal(pageEntity.getTotal());
+        voPage.setRecords(voList);
+        return voPage;
+    }
+
+    @Override
+    public List<ResponseCamera> getListByUserAndType(Integer cameraType, Long userId) {
+        QueryWrapper<CameraDetail> queryWrapper = this.getQueryByUserAndType(cameraType, userId);
+        List<CameraDetail> list = this.list(queryWrapper);
+        return list.parallelStream().map(cameraDetail -> {
+            ResponseCamera responseCamera = new ResponseCamera();
+            BeanUtils.copyProperties(cameraDetail, responseCamera);
+            return responseCamera;
+        }).collect(Collectors.toList());
+    }
+
+    private QueryWrapper<CameraDetail> getQueryByUserAndType(Integer cameraType, Long userId) {
+        QueryWrapper<CameraDetail> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CameraDetail::getUserId,userId);
+        queryWrapper.lambda().orderByDesc(CameraDetail::getCreateTime);
+        if(cameraType!=null){
+            switch (cameraType){
+                case 0 :
+                case 9 :
+                    queryWrapper.lambda().eq(CameraDetail::getCameraType,cameraType);break;
+                case 4:queryWrapper.lambda().eq(CameraDetail::getCameraType,1);break;
+                case 1:queryWrapper.lambda().eq(CameraDetail::getCameraType,0);break;
+                default:queryWrapper.lambda().ne(CameraDetail::getCameraType,0);break;
+            }
+        }
+       return queryWrapper;
+    }
+
+    @Override
+    public List<CameraDetailNumEntity> getTypeNumByUser(Integer type, Long userId) {
+        if(type!=null){
+            return cameraDetailMapper.selectTypeNum(userId,type);
+        }else{
+            return cameraDetailMapper.selectTypeNumAll(userId);
+        }
+    }
+
+    @Override
+    public ResponseCamera getByChildName(Long userId, RequestCamera param) {
+        ResponseCamera vo = new ResponseCamera();
+        Camera cameraEntity = cameraService.getByChildName(param.getChildName());
+        if (cameraEntity != null){
+            CameraDetail detailEntity = this.getByCameraId(cameraEntity.getId());
+            if (detailEntity != null){
+                vo.setId(cameraEntity.getId());
+                vo.setUserId(detailEntity.getUserId());
+                vo.setActivatedTime(cameraEntity.getActivatedTime());
+                vo.setBalance(detailEntity.getBalance());
+                vo.setChildName(cameraEntity.getChildName());
+                vo.setSnCode(cameraEntity.getSnCode());
+                if (detailEntity.getCameraType() != 0){
+                    vo.setUsedSpace(FileSizeUtil.formetFileSize(detailEntity.getUsedSpace(), FileSizeUtil.SIZETYPE_GB));
+                    vo.setTotalSpace(FileSizeUtil.formetFileSize(detailEntity.getTotalSpace(), FileSizeUtil.SIZETYPE_GB));
+                    vo.setUsedSpaceStr(FileSizeUtil.formatFileSize(detailEntity.getUsedSpace()));
+                    vo.setTotalSpaceStr(FileSizeUtil.formatFileSize(detailEntity.getTotalSpace()));
+                }
+                vo.setType(detailEntity.getCameraType());
+                vo.setCountry(detailEntity.getCountry());
+            }
+        }
+        if(userId != null){
+            User userEntity = userService.getById(userId);
+            vo.setNickName(userEntity.getNickName());
+        }else {
+            if(vo.getType().equals(9)){
+                vo.setNickName("Minion设备用户");
+            }else if(vo.getType().equals(10)){
+                vo.setNickName("Laser设备用户");
+            }else{
+                vo.setNickName("Pro设备用户");
+            }
+        }
+
+        List<ResponseCameraSpace> cameraList = cameraSpaceService.getListByCameraId(vo.getId());
+        if(cameraList != null && cameraList.size() > 0){
+            ResponseCameraSpace cameraSpace = cameraList.get(0);
+
+            Long space = cameraSpace.getSpace();
+            vo.setSpaceId(cameraSpace.getId());
+            vo.setSpace((long)FileSizeUtil.formetFileSize(space, FileSizeUtil.SIZETYPE_GB));
+            vo.setSpaceStr(FileSizeUtil.formatFileSize(space));
+            vo.setSpaceEndStr(DateUtil.date2String(cameraSpace.getSpaceEndTime(), DateUtil.YYYY_MM_DD_DATE_FORMAT));
+            if(Days.daysBetween(new DateTime(), new DateTime(cameraSpace.getSpaceEndTime())).getDays() < 7){
+                vo.setIsExpire(true);
+            }
+        }
+
+        //获取会员权益
+        List<UserIncrement> userIncrementEntityList = userIncrementService.getByChildName(param.getChildName());
+        ResponseUserIncrement responseUserIncrement = new ResponseUserIncrement();
+        if(userIncrementEntityList!=null && userIncrementEntityList.size()>0){
+
+            UserIncrement userIncrementEntity = userIncrementEntityList.get(0);
+            BeanUtils.copyProperties(userIncrementEntity,responseUserIncrement);
+
+            vo.setResponseUserIncrement(responseUserIncrement);
+        }
+        return vo;
+    }
+
+
+
+    @Override
+    public HashMap<String, Object> getCameraDetailDeadline(Long userId, RequestCamera param) {
+        List<ResponseCameraSpace> cameraSpaceList = new ArrayList<>();
+        //所有期限的集合
+        List<ResponseCameraSpace> cameraSpaceAll = new ArrayList<>();
+        DateTime dateTime = null;
+        Long space = 0L;
+        User user = userService.getById(userId);
+        if(param.getChildName() != null && user == null){
+            Camera cameraEntity = cameraService.getByChildName(param.getChildName());
+            if (cameraEntity == null){
+                throw new BusinessException(ErrorCode.CAMERA_BIND_NO_EXIST);
+            }
+
+            CameraDetail detailEntity = this.getByCameraId(cameraEntity.getId());
+            if (detailEntity == null){
+                throw new BusinessException(ErrorCode.CAMERA_BIND_NO_EXIST);
+            }
+            List<ResponseCameraSpace> cameraList = cameraSpaceService.getListByCameraId(cameraEntity.getId());
+
+            if(cameraList != null && cameraList.size() > 0){
+                ResponseCameraSpace cameraSpace = cameraList.get(0);
+                dateTime = new DateTime(cameraSpace.getSpaceEndTime());
+                cameraSpace.setSnCode(cameraEntity.getSnCode());
+                cameraSpace.setChildName(cameraEntity.getChildName());
+                cameraSpace.setUsedSpace(FileSizeUtil.formetFileSize(detailEntity.getUsedSpace(), FileSizeUtil.SIZETYPE_GB));
+                cameraSpace.setTotalSpace(FileSizeUtil.formetFileSize(detailEntity.getTotalSpace(), FileSizeUtil.SIZETYPE_GB));
+                cameraSpace.setUsedSpaceStr(FileSizeUtil.formatFileSize(detailEntity.getUsedSpace()));
+                cameraSpace.setTotalSpaceStr(FileSizeUtil.formatFileSize(detailEntity.getTotalSpace()));
+
+                space = cameraSpace.getSpace();
+                cameraSpace.setSpace((long)FileSizeUtil.formetFileSize(space, FileSizeUtil.SIZETYPE_GB));
+                cameraSpace.setSpaceStr(FileSizeUtil.formatFileSize(space));
+                cameraSpace.setSpaceEndStr(DateUtil.date2String(cameraSpace.getSpaceEndTime(), DateUtil.YYYY_MM_DD_DATE_FORMAT));
+                if(Days.daysBetween(new DateTime(), dateTime).getDays() < 7){
+                    cameraSpaceList.add(cameraSpace);
+                }
+                cameraSpaceAll.add(cameraSpace);
+            }
+
+            HashMap<String,Object> map = new HashMap<>();
+            map.put("nickName", "Pro设备用户");
+
+            if(cameraSpaceList.size() > 0){
+                map.put("isExpire", true);
+                map.put("cameraList", cameraSpaceList);
+                return map;
+            }
+
+            map.put("isExpire", false);
+            map.put("cameraList", cameraSpaceAll);
+            return map;
+        }
+        List<ResponseCamera> cameras8 = cameraService.getByUser(userId, 4);
+        for(ResponseCamera responseCamera : cameras8){
+            List<ResponseCameraSpace> cameraList = cameraSpaceService.getListByCameraId(responseCamera.getId());
+
+            if(cameraList != null && cameraList.size() > 0){
+                ResponseCameraSpace cameraSpace = cameraList.get(0);
+
+                dateTime = new DateTime(cameraSpace.getSpaceEndTime());
+                cameraSpace.setSnCode(responseCamera.getSnCode());
+                cameraSpace.setUsedSpace(responseCamera.getUsedSpace());
+                cameraSpace.setUsedSpaceStr(responseCamera.getUsedSpaceStr());
+                cameraSpace.setTotalSpace(responseCamera.getTotalSpace());
+                cameraSpace.setTotalSpaceStr(responseCamera.getTotalSpaceStr());
+
+                space = cameraSpace.getSpace().longValue();
+                cameraSpace.setSpace((long)FileSizeUtil.formetFileSize(space, FileSizeUtil.SIZETYPE_GB));
+                cameraSpace.setSpaceStr(FileSizeUtil.formatFileSize(space));
+                cameraSpace.setSpaceEndStr(DateUtil.date2String(cameraSpace.getSpaceEndTime(), DateUtil.YYYY_MM_DD_DATE_FORMAT));
+
+                if(Days.daysBetween(new DateTime(), dateTime).getDays() < 7){
+                    cameraSpaceList.add(cameraSpace);
+                    cameraSpaceAll.add(cameraSpace);
+                    continue;
+                }
+
+                cameraSpaceAll.add(cameraSpace);
+            }
+        }
+        HashMap<String,Object> map = new HashMap<>();
+        map.put("nickName", user.getNickName());
+
+        if(cameraSpaceList.size() > 0){
+            map.put("isExpire", true);
+            Collections.sort(cameraSpaceList);
+            map.put("cameraList", cameraSpaceList);
+            return map;
+        }
+
+        map.put("isExpire", false);
+        Collections.sort(cameraSpaceAll);
+        map.put("cameraList", cameraSpaceAll);
+        return map;
+    }
+
+    @Override
+    public Integer getDeadLineNumber(Long userId) {
+        QueryWrapper<CameraDetail> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CameraDetail::getUserId,userId);
+        List<CameraDetail> list = this.list(queryWrapper);
+        Integer number = 0;
+        List<ResponseCameraSpace> cameraList = null;
+        for (CameraDetail cameraDetailEntity : list) {
+            cameraList = cameraSpaceService.getListByCameraId(cameraDetailEntity.getCameraId());
+            if(cameraList != null && cameraList.size() > 0){
+                if(Days.daysBetween(new DateTime(), new DateTime(cameraList.get(0).getSpaceEndTime())).getDays() < 30){
+                    number++;
+                }
+            }
+        }
+        return number;
+    }
+
+    @Override
+    public void unbind(Long cameraId) {
+        this.bindOrUnbind(cameraId,null);
+    }
+
+    @Override
+    public void 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);
+    }
+
+    private void bindOrUnbind(Long cameraId,Long userId){
+        UpdateWrapper<CameraDetail> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(CameraDetail::getUserId,userId);
+        updateWrapper.lambda().eq(CameraDetail::getCameraId,cameraId);
+        if(!this.update(updateWrapper)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+    }
 }

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

@@ -1,16 +1,45 @@
 package com.fdkankan.goods.service.impl;
 
 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.agent.constant.AgentConstant;
+import com.fdkankan.common.constant.AppConstant;
+import com.fdkankan.common.constant.CameraConstant;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.ServerCode;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.util.DateUtil;
+import com.fdkankan.common.util.FileSizeUtil;
 import com.fdkankan.goods.entity.Camera;
 import com.fdkankan.goods.entity.CameraDetail;
+import com.fdkankan.goods.entity.Goods;
 import com.fdkankan.goods.mapper.ICameraMapper;
 import com.fdkankan.goods.service.ICameraDetailService;
 import com.fdkankan.goods.service.ICameraService;
+import com.fdkankan.goods.service.ICameraSpaceService;
+import com.fdkankan.goods.service.IGoodsService;
+import com.fdkankan.user.entity.SSOUser;
+import com.fdkankan.user.entity.User;
+import com.fdkankan.user.entity.UserIncrement;
+import com.fdkankan.user.request.RequestCamera;
+import com.fdkankan.user.service.IUserIncrementService;
+import com.fdkankan.user.service.IUserService;
+import com.fdkankan.user.vo.ResponseCamera;
+import com.fdkankan.user.vo.ResponseCameraSpace;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+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.stereotype.Service;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.OutputStream;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -27,6 +56,14 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
 
     @Autowired
     private ICameraDetailService cameraDetailService;
+    @Autowired
+    private ICameraSpaceService cameraSpaceService;
+    @Autowired
+    private IUserIncrementService userIncrementService;
+    @Autowired
+    private IUserService userService;
+    @Autowired
+    private IGoodsService goodsService;
 
 
     @Override
@@ -57,14 +94,304 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     }
 
 
-    private Camera getByChildName(String childName){
+    @Override
+    public Camera getByChildName(String childName){
+        QueryWrapper<Camera> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Camera::getChildName,childName);
+        List<Camera> list = this.list(queryWrapper);
+        if(list == null || list.size()<=0){
+            return null;
+        }
+        return list.get(0);
+    }
+
+    @Override
+    public Page<ResponseCamera> getPageByUser(RequestCamera param, Long userId) {
+        Page<ResponseCamera> pageVo = cameraDetailService.getPageByUserAndType(param, userId);
+        if (param.getCameraType() == 4 || param.getCameraType() == 9 || param.getCameraType() == 10){
+            coverList(pageVo.getRecords());
+        }
+        return pageVo;
+    }
+
+    private void coverList(List<ResponseCamera> list){
+        UserIncrement userIncrement = null;
+
+        for (ResponseCamera responseCamera : list) {
+            Integer surplusDate = null;
+
+            List<ResponseCameraSpace> cameraList = cameraSpaceService.getListByCameraId(responseCamera.getId());
+            if(cameraList != null && cameraList.size() > 0){
+                responseCamera.setSpace((long) FileSizeUtil.formetFileSize(cameraList.get(0).getSpace(), FileSizeUtil.SIZETYPE_GB));
+                responseCamera.setSpaceStr(FileSizeUtil.formatFileSize(cameraList.get(0).getSpace()));
+                responseCamera.setSpaceEndStr(DateUtil.date2String(cameraList.get(0).getSpaceEndTime(), DateUtil.YYYY_MM_DD_DATE_FORMAT));
+                if(Days.daysBetween(new DateTime(), new DateTime(cameraList.get(0).getSpaceEndTime())).getDays() < 7){
+                    responseCamera.setIsExpire(true);
+                }
+            }
+
+            userIncrement = userIncrementService.getByCameraId(responseCamera.getId());
+
+            if(userIncrement != null){
+                responseCamera.setUserIncrementId(userIncrement.getId());
+                responseCamera.setSpaceEndStr(DateUtil.date2String(userIncrement.getIncrementEndTime(), DateUtil.YYYY_MM_DD_DATE_FORMAT));
+                surplusDate = Days.daysBetween(new DateTime(), new DateTime(userIncrement.getIncrementEndTime())).getDays();
+                if(surplusDate < 31){
+                    responseCamera.setIsExpire(true);
+                    responseCamera.setSurplusDate(surplusDate);
+                }else {
+                    responseCamera.setIsExpire(false);
+                }
+            }
+
+            if(responseCamera.getCooperationUser() != null){
+                User userEntity = userService.getById(responseCamera.getCooperationUser());
+                if(userEntity != null){
+                    responseCamera.setCooperationUserName(userEntity.getUserName());
+                }
+            }
+// todo
+//                responseCamera.setSceneNum(sceneService.findSceneNumByCameraId(responseCamera.getId()));
+//                sceneProEntity = sceneService.findLastSceneByCameraId(responseCamera.getId());
+//                if(sceneProEntity != null){
+//                    responseCamera.setLastTime(sceneProEntity.getCreateTime());
+//                }
+
+        }
+    }
+
+    @Override
+    public List<ResponseCamera> getByUser(Long userId, Integer cameraType) {
+        QueryWrapper<CameraDetail> queryWrapper = new QueryWrapper<>();
+        if(cameraType == null){
+            queryWrapper.lambda().eq(CameraDetail::getUserId,userId);
+        }else if(cameraType == 4){
+            queryWrapper.lambda().eq(CameraDetail::getUserId,userId);
+            queryWrapper.lambda().ge(CameraDetail::getGoodsId,cameraType);
+        }else {
+            queryWrapper.lambda().le(CameraDetail::getGoodsId,cameraType);
+        }
+        List<CameraDetail> list = cameraDetailService.list(queryWrapper);
+        return convert(list);
+    }
+
+    public List<ResponseCamera>  convert(List<CameraDetail> list) {
+        List<ResponseCamera> vos = new ArrayList<>();
+        if (list != null && list.size() > 0){
+            for (CameraDetail detailEntity : list){
+                Camera cameraEntity = this.getById(detailEntity.getCameraId());
+                Goods goodsEntity = goodsService.getById(detailEntity.getGoodsId());
+                if (cameraEntity != null && goodsEntity != null){
+                    ResponseCamera vo = new ResponseCamera();
+                    vo.setId(cameraEntity.getId());
+                    vo.setActivatedTime(cameraEntity.getActivatedTime());
+                    vo.setBalance(detailEntity.getBalance());
+                    vo.setChildName(cameraEntity.getChildName());
+                    vo.setSnCode(cameraEntity.getSnCode());
+                    vo.setGoodsName(goodsEntity.getGoodName());
+                    vo.setImageUrl(goodsEntity.getImageUrl());
+                    vo.setGoodsId(detailEntity.getGoodsId());
+                    vo.setPic(goodsEntity.getPic());
+                    vo.setCooperationUser(detailEntity.getCooperationUser());
+                    if (detailEntity.getCameraType() != 0){
+                        vo.setUsedSpace(FileSizeUtil.formetFileSize(detailEntity.getUsedSpace(), FileSizeUtil.SIZETYPE_GB));
+                        vo.setTotalSpace(FileSizeUtil.formetFileSize(detailEntity.getTotalSpace(), FileSizeUtil.SIZETYPE_GB));
+                        vo.setUsedSpaceStr(FileSizeUtil.formatFileSize(detailEntity.getUsedSpace()));
+                        vo.setTotalSpaceStr(FileSizeUtil.formatFileSize(detailEntity.getTotalSpace()));
+                    }
+                    vo.setType(detailEntity.getCameraType());
+                    vos.add(vo);
+                }
+            }
+        }
+        return vos;
+    }
+
+    @Override
+    public String addCamera(RequestCamera camera, String token) {
+        SSOUser ssoUser = userService.getSSOUserByToken(token);
+        String[] snCodeArr = camera.getSnCode().split(",");
+        for (String snCode : snCodeArr) {
+            Camera cameraEntity = this.getBySnCode(snCode);
+            if (cameraEntity == null){
+                cameraEntity = this.getBySnCode(snCode.replace("4DKKPRO_",""));
+                if(cameraEntity == null){
+                    throw new BusinessException(AppConstant.FAILURE_CODE_4010, snCode + "-" + AppConstant.FAILURE_MSG_4010);
+                }
+            }
+            CameraDetail cameraDetailEntity = cameraDetailService.getByCameraId(cameraEntity.getId());
+            if (cameraDetailEntity.getUserId() != null){
+                throw new BusinessException(CameraConstant.FAILURE_6010);
+            }
+           this.addCamera(ssoUser.getId(), camera.getCameraType(), cameraEntity.getId());
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    private void addCamera(Long userId, Integer cameraType, Long cameraId){
+        cameraDetailService.bind(userId,cameraId);
+        // TODO:  updateUserIdByCameraId
+//        if (cameraType == null || cameraType == 0){
+//            result = sceneService.updateUserIdByCameraId(userId, cameraId);
+//        }else {
+//            result = sceneService.updateUserIdByCameraIdPro(userId, cameraId);
+//        }
+//
+//        if (result.getCode() == Result.CODE_FAILURE){
+//            throw new Exception(LoginConstant.ERROR_MSG);
+//        }
+    }
+
+    @Override
+    public Camera getBySnCode(String snCode) {
         QueryWrapper<Camera> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("rec_status","A");
-        queryWrapper.eq("child_name",childName);
+        queryWrapper.lambda().eq(Camera::getSnCode,snCode);
         List<Camera> list = this.list(queryWrapper);
         if(list == null || list.size()<=0){
             return null;
         }
         return list.get(0);
     }
+
+    @Override
+    public List<ResponseCameraSpace> cameraSpaceList(RequestCamera camera) {
+        if(camera == null || camera.getChildName() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        Camera cameraEntity = this.getByChildName(camera.getChildName());
+        if (cameraEntity == null){
+            throw new BusinessException(AppConstant.FAILURE_CODE_4010, AppConstant.FAILURE_MSG_4010);
+        }
+
+        return cameraSpaceService.getListByCameraId(cameraEntity.getId());
+    }
+
+    @Override
+    public ResponseCamera findCameraBySn(RequestCamera camera) {
+        if(camera == null || camera.getSnCode() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        Camera cameraEntity = this.getBySnCode(camera.getSnCode());
+        if (cameraEntity == null){
+            cameraEntity = this.getBySnCode(camera.getSnCode().replace("4DKKPRO_",""));
+            if(cameraEntity == null){
+                throw new BusinessException(CameraConstant.FAILURE_6003);
+            }
+        }
+        CameraDetail cameraDetailEntity = cameraDetailService.getByCameraId(cameraEntity.getId());
+        if(cameraDetailEntity == null){
+            throw new BusinessException(CameraConstant.FAILURE_6003);
+        }
+
+        if(cameraDetailEntity.getUserId() == null){
+            throw new BusinessException(CameraConstant.FAILURE_6012);
+        }
+        User userEntity = userService.getById(cameraDetailEntity.getUserId());
+        if(userEntity == null){
+            throw new BusinessException(ErrorCode.USER_NOT_EXIST);
+        }
+
+        ResponseCamera responseCamera = new ResponseCamera();
+        BeanUtils.copyProperties(cameraEntity, responseCamera);
+
+        responseCamera.setUserName(userEntity.getUserName());
+        return responseCamera;
+    }
+
+    @Override
+    public List<Camera> findLikeChildName(String trim) {
+        QueryWrapper<Camera> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().like(Camera::getSnCode,trim);
+        return this.list(queryWrapper);
+    }
+
+    @Override
+    public HSSFWorkbook export(String token, HttpServletResponse response) throws Exception {
+
+        String fileName = "我的相机";
+        SSOUser ssoUser = userService.getSSOUserByToken(token);
+        List<ResponseCamera> responseCameraList = cameraDetailService.getListByUserAndType(4, ssoUser.getId());
+        HSSFWorkbook wb = new HSSFWorkbook();
+        if (responseCameraList != null) {
+
+            HSSFSheet sheet = wb.createSheet("camera");
+            //在sheet里创建第一行,这里即是表头
+            HSSFRow rowTitle = sheet.createRow(0);
+            rowTitle.createCell(0).setCellValue("S/N码");
+            rowTitle.createCell(1).setCellValue("云容量");
+            rowTitle.createCell(2).setCellValue("到期时间");
+            rowTitle.createCell(3).setCellValue("协作者");
+            rowTitle.createCell(4).setCellValue("拍摄场景数量");
+            rowTitle.createCell(5).setCellValue("最后拍摄时间");
+
+            int i = 1;
+            String rl = "";
+            String UsedSpaceStr = "";
+            String TotalSpaceStr = "";
+            for (ResponseCamera rc : responseCameraList) {
+                HSSFRow rowData = sheet.createRow(i);
+                rowData.createCell(0).setCellValue(rc.getSnCode());
+
+
+                if(rc.getUsedSpaceStr() == null || StringUtils.isEmpty(rc.getUsedSpaceStr())){
+                    UsedSpaceStr = "0GB";
+                }else {
+                    UsedSpaceStr = rc.getUsedSpaceStr();
+                }
+
+                if(rc.getTotalSpaceStr() == null || StringUtils.isEmpty(rc.getTotalSpaceStr())){
+                    TotalSpaceStr = "0GB";
+                }else {
+                    TotalSpaceStr = rc.getTotalSpaceStr();
+                }
+
+                if(rc.getUserIncrementId() == null){
+                    rowData.createCell(1).setCellValue(UsedSpaceStr + " / " + TotalSpaceStr);
+                }else {
+                    if(rc.getIsExpire() == null || rc.getIsExpire() == true){
+                        rowData.createCell(1).setCellValue(UsedSpaceStr + " / " + TotalSpaceStr);
+                    }else{
+                        rowData.createCell(1).setCellValue(UsedSpaceStr);
+                    }
+                }
+
+                if(rc.getSpaceEndStr() == null ){
+                    rowData.createCell(2).setCellValue("");
+                }else{
+                    rowData.createCell(2).setCellValue(rc.getSpaceEndStr());
+                }
+
+                if(rc.getCooperationUser() == null ){
+                    rowData.createCell(3).setCellValue("");
+                }else{
+                    rowData.createCell(3).setCellValue(rc.getCooperationUserName());
+                }
+                if(rc.getSceneNum() == null ){
+                    rowData.createCell(4).setCellValue("");
+                }else{
+                    rowData.createCell(4).setCellValue(rc.getSceneNum());
+                }
+                if(rc.getLastTime() == null ){
+                    rowData.createCell(5).setCellValue("");
+                }else{
+                    String time = DateUtil.date2String(rc.getLastTime(),null);
+                    rowData.createCell(5).setCellValue(time);
+                }
+                i++;
+            }
+
+        }
+        //输出Excel文件
+        OutputStream output = response.getOutputStream();
+        response.reset();
+        //中文名称要进行编码处理
+        response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("GB2312"), "ISO8859-1") + ".xls");
+        response.setContentType("application/msexcel");
+        wb.write(output);
+        output.close();
+        return wb;
+    }
+
+
+
 }

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

@@ -1,11 +1,15 @@
 package com.fdkankan.goods.service.impl;
 
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.goods.entity.CameraSpace;
 import com.fdkankan.goods.mapper.ICameraSpaceMapper;
 import com.fdkankan.goods.service.ICameraSpaceService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.user.vo.ResponseCameraSpace;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.util.List;
+
 /**
  * <p>
  * 相机容量表 服务实现类
@@ -17,4 +21,11 @@ import org.springframework.stereotype.Service;
 @Service
 public class CameraSpaceServiceImpl extends ServiceImpl<ICameraSpaceMapper, CameraSpace> implements ICameraSpaceService {
 
+    @Resource
+    private ICameraSpaceMapper cameraSpaceMapper;
+
+    @Override
+    public List<ResponseCameraSpace> getListByCameraId(Long cameraId) {
+        return cameraSpaceMapper.getListByCameraId(cameraId);
+    }
 }

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

@@ -1,11 +1,29 @@
 package com.fdkankan.goods.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.ServerCode;
+import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.goods.entity.Cart;
+import com.fdkankan.goods.entity.Goods;
 import com.fdkankan.goods.mapper.ICartMapper;
 import com.fdkankan.goods.service.ICartService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.goods.service.IGoodsService;
+import com.fdkankan.user.entity.SSOUser;
+import com.fdkankan.user.request.RequestCart;
+import com.fdkankan.user.service.IUserService;
+import com.fdkankan.user.vo.ResponseCart;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  * 购物车 服务实现类
@@ -17,4 +35,92 @@ import org.springframework.stereotype.Service;
 @Service
 public class CartServiceImpl extends ServiceImpl<ICartMapper, Cart> implements ICartService {
 
+    @Autowired
+    private  IUserService userService;
+    @Autowired
+    private IGoodsService goodsService;
+
+    @Override
+    public String addCart(RequestCart param, String token) {
+        if (param.getGoodsId() == null){
+           throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        SSOUser ssoUser = userService.getSSOUserByToken(token);
+        Cart cartEntity = getByUserAndGoods(ssoUser.getId(), param.getGoodsId());
+        if (cartEntity == null){
+            cartEntity = new Cart();
+            cartEntity.setUserId(ssoUser.getId());
+            cartEntity.setGoodsId(param.getGoodsId());
+            cartEntity.setPayStatus(0);
+            cartEntity.setSkuSn(param.getSkuSn());
+        }
+        Integer count = cartEntity.getGoodsCount() == null ? 0 : cartEntity.getGoodsCount();
+        cartEntity.setGoodsCount(count + param.getGoodsCount());
+        if(!this.saveOrUpdate(cartEntity)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public List<ResponseCart> getCartList(RequestCart param, String token) {
+        SSOUser ssoUser = userService.getSSOUserByToken(token);
+        List<Cart> cartList = getByUser(ssoUser.getId());
+        List<ResponseCart> voList = cartList.parallelStream().map(cart -> {
+            ResponseCart cartVo = new ResponseCart();
+            BeanUtils.copyProperties(cart, cartVo);
+            Goods goods = goodsService.getById(param.getGoodsId());
+            cartVo.setPrice(goods.getGoodsPrice());
+            return cartVo;
+        }).collect(Collectors.toList());
+        return voList;
+    }
+
+    @Override
+    public String removeCart(RequestCart param, String token) {
+        if (param.getGoodsId() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        SSOUser ssoUser = userService.getSSOUserByToken(token);
+        Cart cart = this.getByUserAndGoods(ssoUser.getId(), param.getGoodsId());
+        if (param.getGoodsCount() != 0){
+            cart.setGoodsCount(param.getGoodsCount());
+            this.updateById(cart);
+        }else {
+            this.removeById(cart.getId());
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public String removeCarts(RequestCart param, String token) {
+        if (StringUtils.isEmpty(param.getIds())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        String [] ids = param.getIds().split(",");
+        List<String> idsList = new ArrayList<>(Arrays.asList(ids));
+        if(!this.removeByIds(idsList)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    public List<Cart> getByUser(Long userId){
+        QueryWrapper<Cart> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Cart::getUserId,userId);
+        queryWrapper.lambda().orderByDesc(Cart::getCreateTime);
+        return this.list(queryWrapper);
+    }
+
+    public Cart getByUserAndGoods(Long userId ,Long goodsId){
+        QueryWrapper<Cart> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Cart::getUserId,userId);
+        queryWrapper.lambda().eq(Cart::getGoodsId,goodsId);
+        queryWrapper.lambda().last("LIMIT 1");
+        List<Cart> list = this.list(queryWrapper);
+        if(list == null || list.size()<=0){
+            return null;
+        }
+        return list.get(0);
+    }
 }

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/CommerceOrderController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.order.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 商业订单表(八目相机) 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/order/commerceOrder")
-public class CommerceOrderController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/DownloadOrderController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.order.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 下载次数订单表 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/order/downloadOrder")
-public class DownloadOrderController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/ExpansionOrderController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.order.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 扩容订单表(八目相机) 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/order/expansionOrder")
-public class ExpansionOrderController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/IncrementOrderController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.order.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 增值权益订单表 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/order/incrementOrder")
-public class IncrementOrderController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/InvoiceController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.order.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 发票表 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/order/invoice")
-public class InvoiceController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/OrderController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.order.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 订单表 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/order/order")
-public class OrderController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/OrderItemController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.order.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 订单项表 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/order/orderItem")
-public class OrderItemController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/PreSaleController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.order.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 预售表 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/order/preSale")
-public class PreSaleController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/SpaceSdkController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.order.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * space sdk表 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/order/spaceSdk")
-public class SpaceSdkController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/TradeLogController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.order.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 交易成功记录表 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/order/tradeLog")
-public class TradeLogController {
-
-}
-

+ 0 - 21
4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/VirtualOrderController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.order.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 充值订单表(双目相机点数充值、消费) 前端控制器
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@RestController
-@RequestMapping("/order/virtualOrder")
-public class VirtualOrderController {
-
-}
-

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

@@ -1,14 +1,12 @@
 package com.fdkankan.order.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
-import lombok.Getter;
-import lombok.Setter;
 
 /**
  * <p>
@@ -104,6 +102,7 @@ public class CommerceOrder implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.order.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
-import lombok.Getter;
-import lombok.Setter;
 
 /**
  * <p>
@@ -98,6 +96,7 @@ public class DownloadOrder implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.order.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
-import lombok.Getter;
-import lombok.Setter;
 
 /**
  * <p>
@@ -128,6 +126,7 @@ public class ExpansionOrder implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.order.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
-import lombok.Getter;
-import lombok.Setter;
 
 /**
  * <p>
@@ -104,6 +102,7 @@ public class IncrementOrder implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.order.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
-import lombok.Getter;
-import lombok.Setter;
 
 /**
  * <p>
@@ -140,6 +138,7 @@ public class Invoice implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.order.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
-import lombok.Getter;
-import lombok.Setter;
 
 /**
  * <p>
@@ -188,6 +186,7 @@ public class Order implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.order.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
-import lombok.Getter;
-import lombok.Setter;
 
 /**
  * <p>
@@ -98,6 +96,7 @@ public class OrderItem implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.order.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.io.Serializable;
+import java.util.Date;
+
 /**
  * <p>
  * 预售表
@@ -85,6 +83,7 @@ public class PreSale implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.order.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.io.Serializable;
+import java.util.Date;
+
 /**
  * <p>
  * space sdk表
@@ -97,6 +95,7 @@ public class SpaceSdk implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,14 +1,12 @@
 package com.fdkankan.order.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
-import lombok.Getter;
-import lombok.Setter;
 
 /**
  * <p>
@@ -92,6 +90,7 @@ public class TradeLog implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**

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

@@ -1,15 +1,12 @@
 package com.fdkankan.order.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
-import lombok.Getter;
-import lombok.Setter;
 
 /**
  * <p>
@@ -17,7 +14,7 @@ import lombok.Setter;
  * </p>
  *
  * @author 
- * @since 2021-12-24
+ * @since 2021-12-27
  */
 @Getter
 @Setter
@@ -117,6 +114,7 @@ public class VirtualOrder implements Serializable {
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
+    @TableLogic(value="A",delval = "I")
     private String recStatus;
 
     /**
@@ -126,7 +124,6 @@ public class VirtualOrder implements Serializable {
     private Date updateTime;
 
     @TableField("tb_status")
-    @TableLogic
     private Integer tbStatus;
 
 

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

@@ -10,7 +10,7 @@ import org.apache.ibatis.annotations.Mapper;
  * </p>
  *
  * @author 
- * @since 2021-12-24
+ * @since 2021-12-27
  */
 @Mapper
 public interface IVirtualOrderMapper extends BaseMapper<VirtualOrder> {

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

@@ -1,7 +1,10 @@
 package com.fdkankan.order.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.order.entity.Invoice;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.user.request.RequestInvoice;
+import com.fdkankan.user.vo.ResponseInvoice;
 
 /**
  * <p>
@@ -13,4 +16,21 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IInvoiceService extends IService<Invoice> {
 
+    Integer getMaxInvoice(RequestInvoice param, String token);
+
+    Page<ResponseInvoice> listInvoice(RequestInvoice param, String token);
+
+    String mineInvoice(RequestInvoice param, String token);
+
+    String saveInvoice(RequestInvoice param, String token);
+
+    String detailInvoice(RequestInvoice param, String token);
+
+    String addInvoice(RequestInvoice param, String token);
+
+    String updateInvoice(RequestInvoice param, String token);
+
+    String deleteInvoice(RequestInvoice param, String token);
+
+    String openInvoice(RequestInvoice param, String token);
 }

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

@@ -1,7 +1,9 @@
 package com.fdkankan.order.service;
 
-import com.fdkankan.order.entity.VirtualOrder;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.agent.vo.AgentVo;
+import com.fdkankan.agent.vo.ResponseAgentCamera;
+import com.fdkankan.order.entity.VirtualOrder;
 
 /**
  * <p>
@@ -14,4 +16,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
 public interface IVirtualOrderService extends IService<VirtualOrder> {
 
     void saveVirtualOrderByAgent(Long cameraId);
+
+    void getByStatusAndCameraId(AgentVo agentVo, String startDate, String endDate);
+
+    ResponseAgentCamera getPointsByCameraId(Long cameraId, String startDate, String endDate);
+
 }

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

@@ -1,11 +1,26 @@
 package com.fdkankan.order.service.impl;
 
+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.order.entity.ExpansionOrder;
 import com.fdkankan.order.entity.Invoice;
+import com.fdkankan.order.entity.VirtualOrder;
 import com.fdkankan.order.mapper.IInvoiceMapper;
+import com.fdkankan.order.service.IExpansionOrderService;
 import com.fdkankan.order.service.IInvoiceService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.order.service.IVirtualOrderService;
+import com.fdkankan.user.entity.SSOUser;
+import com.fdkankan.user.request.RequestInvoice;
+import com.fdkankan.user.service.IUserService;
+import com.fdkankan.user.vo.ResponseInvoice;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  * 发票表 服务实现类
@@ -17,4 +32,123 @@ import org.springframework.stereotype.Service;
 @Service
 public class InvoiceServiceImpl extends ServiceImpl<IInvoiceMapper, Invoice> implements IInvoiceService {
 
+    @Autowired
+    private IVirtualOrderService virtualOrderService;
+    @Autowired
+    private IExpansionOrderService expansionOrderService;
+    @Autowired
+    private IUserService userService;
+
+    @Override
+    public Integer getMaxInvoice(RequestInvoice param, String token) {
+        Integer maxInvoice = getMaxInvoice(param.getCameraId());
+        maxInvoice = maxInvoice < 0 ? 0 : maxInvoice;
+        return maxInvoice;
+    }
+
+    private Integer getMaxInvoice(Long cameraId){
+        QueryWrapper<VirtualOrder> virtualOrderQueryWrapper = new QueryWrapper<>();
+        virtualOrderQueryWrapper.lambda().eq(VirtualOrder::getCameraId,cameraId);
+        List<VirtualOrder> virtualOrders = virtualOrderService.list(virtualOrderQueryWrapper);
+        Integer maxInvoice = 0;
+
+        for (VirtualOrder virtualOrder : virtualOrders) {
+            if (virtualOrder.getStatus() == 1 && virtualOrder.getPayStatus() == 1){
+                maxInvoice += virtualOrder.getPoints();
+            }else if (virtualOrder.getStatus() == -2){
+                maxInvoice -= virtualOrder.getPoints();
+            }
+        }
+
+        QueryWrapper<ExpansionOrder> expansionOrderQueryWrapper = new QueryWrapper<>();
+        expansionOrderQueryWrapper.lambda().eq(ExpansionOrder::getCameraId,cameraId);
+        List<ExpansionOrder> expansionOrders = expansionOrderService.list(expansionOrderQueryWrapper);
+        for (ExpansionOrder expansionOrder : expansionOrders) {
+            if(expansionOrder.getPayStatus() == 1){
+                maxInvoice += expansionOrder.getAmount().intValue();
+            }else if (expansionOrder.getPayStatus() == -2){
+                maxInvoice -= expansionOrder.getAmount().intValue();
+            }
+        }
+
+        QueryWrapper<Invoice> invoiceQueryWrapper = new QueryWrapper<>();
+        invoiceQueryWrapper.lambda().eq(Invoice::getCameraId,cameraId);
+        invoiceQueryWrapper.lambda().eq(Invoice::getConsumeType,1);
+        List<Invoice> invoices = this.list(invoiceQueryWrapper);
+        for (Invoice invoice : invoices) {
+            if (invoice.getMoney() != null){
+                maxInvoice -= invoice.getMoney().intValue();
+            }
+        }
+        return maxInvoice;
+    }
+
+    @Override
+    public Page<ResponseInvoice> listInvoice(RequestInvoice param, String token) {
+        SSOUser ssoUser = userService.getSSOUserByToken(token);
+        Page<Invoice> page = new Page<>(param.getPageNum(),param.getPageSize());
+        QueryWrapper<Invoice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Invoice::getUserId,ssoUser.getId());
+        queryWrapper.lambda().ne(Invoice::getConsumeType ,-1);
+        if(param.getCameraId()!=null){
+            queryWrapper.lambda().eq(Invoice::getCameraId ,param.getCameraId());
+        }
+        if(param.getType()!=null){
+            if(param.getType() == 0){
+                queryWrapper.lambda().eq(Invoice::getType ,param.getType());
+            }else {
+                queryWrapper.lambda().ne(Invoice::getType ,0);
+            }
+        }
+
+        queryWrapper.lambda().orderByDesc(Invoice::getCreateTime);
+        Page<Invoice> pageEntity = this.page(page, queryWrapper);
+
+        List<ResponseInvoice> voList = pageEntity.getRecords().parallelStream().map(invoice -> {
+            ResponseInvoice responseInvoice = new ResponseInvoice();
+            BeanUtils.copyProperties(invoice, responseInvoice);
+            return responseInvoice;
+        }).collect(Collectors.toList());
+
+        Page<ResponseInvoice> pageVo = new Page<>(param.getPageNum(),param.getPageSize());
+        pageVo.setTotal(page.getTotal());
+        pageVo.setRecords(voList);
+
+        return pageVo;
+    }
+
+    @Override
+    public String mineInvoice(RequestInvoice param, String token) {
+        return null;
+    }
+
+    @Override
+    public String saveInvoice(RequestInvoice param, String token) {
+        return null;
+    }
+
+    @Override
+    public String detailInvoice(RequestInvoice param, String token) {
+        return null;
+    }
+
+    @Override
+    public String addInvoice(RequestInvoice param, String token) {
+        return null;
+    }
+
+    @Override
+    public String updateInvoice(RequestInvoice param, String token) {
+        return null;
+    }
+
+    @Override
+    public String deleteInvoice(RequestInvoice param, String token) {
+        return null;
+    }
+
+    @Override
+    public String openInvoice(RequestInvoice param, String token) {
+        return null;
+    }
 }

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

@@ -1,16 +1,22 @@
 package com.fdkankan.order.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.agent.constant.AgentConstant;
+import com.fdkankan.agent.vo.AgentVo;
+import com.fdkankan.agent.vo.ResponseAgentCamera;
 import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.NumberUtils;
 import com.fdkankan.order.entity.VirtualOrder;
 import com.fdkankan.order.mapper.IVirtualOrderMapper;
 import com.fdkankan.order.service.IVirtualOrderService;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 /**
  * <p>
@@ -38,4 +44,144 @@ public class VirtualOrderServiceImpl extends ServiceImpl<IVirtualOrderMapper, Vi
             throw new BusinessException(ErrorCode.ERROR_MSG);
         }
     }
+
+    @Override
+    public void getByStatusAndCameraId(AgentVo agentVo, String startDate, String endDate) {
+        QueryWrapper<VirtualOrder> queryWrapper= new QueryWrapper<>();
+        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'");
+        if(StringUtils.isNotBlank(startDate)){
+            queryWrapper.lambda().ge(VirtualOrder::getTradeTime,startDate);
+        }
+        if(StringUtils.isNotBlank(startDate)){
+            queryWrapper.lambda().le(VirtualOrder::getTradeTime,startDate);
+        }
+        List<VirtualOrder> list = this.list(queryWrapper);
+        // 累计消耗点数
+        int subSubExpend = 0;
+        // 提成金额
+        int subSubExtract = 0;
+        // 累计充值
+        int subSubRecharge = 0;
+        int subGift = 0;
+        int subMoney = 0;
+        int subStract = 0;
+        for (VirtualOrder virtualOrder : list) {
+            if (virtualOrder.getStatus() == 1) {
+                subMoney += virtualOrder.getPoints();
+            } else if (virtualOrder.getStatus() == -1) {
+                subStract += virtualOrder.getPoints();
+            } else if (virtualOrder.getStatus() == 0) {
+                subGift += virtualOrder.getPoints();
+            } else if (virtualOrder.getStatus() == -2) {
+                subMoney -= virtualOrder.getPoints();
+            }
+        }
+        if (subStract > subGift) {
+            subSubExpend += subStract - subGift;
+            subSubExtract += (subStract - subGift) * AgentConstant.EXTRACT;
+        }
+        subSubRecharge += subMoney;
+        agentVo.setSubExpend(subSubExpend);
+        agentVo.setSubExtract(subSubExtract);
+        agentVo.setSubRecharge(subSubRecharge);
+    }
+
+    @Override
+    public ResponseAgentCamera getPointsByCameraId(Long cameraId, String startDate, String endDate) {
+        //期初点数
+        int initPoint = 0;
+        //赠送点数
+        int giftPoint = 0;
+        int preGiftPoint = 0;
+        //之前消耗的点数
+        int preLessPoint = 0;
+        //已用点数
+        int usedPoint = 0;
+        //充值金额
+        int charge = 0;
+        //退充值
+        int recharge = 0;
+        //提成
+        BigDecimal extract = new BigDecimal(0.0);
+        if(StringUtils.isNotBlank(startDate)){
+            QueryWrapper<VirtualOrder> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().eq(VirtualOrder::getPayStatus,1);
+            queryWrapper.lambda().eq(VirtualOrder::getCameraId,cameraId);
+            queryWrapper.lambda().orderByDesc(VirtualOrder::getTradeTime);
+            queryWrapper.lambda().le(VirtualOrder::getTradeTime,startDate+" 00:00:00");
+            List<VirtualOrder> list = this.list(queryWrapper);
+            for (VirtualOrder entityV : list) {
+                int status = entityV.getStatus();
+                if (status == 0 || status == 1) {
+                    initPoint += entityV.getPoints();
+                    if (status == 0) {
+                        preGiftPoint += entityV.getPoints();
+                    }
+                } else if (status == -1) {
+                    initPoint -= entityV.getPoints();
+                    preLessPoint += entityV.getPoints();
+                } else if (status == -2) {
+                    initPoint -= entityV.getPoints();
+                }
+            }
+        }
+        QueryWrapper<VirtualOrder> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(VirtualOrder::getPayStatus,1);
+        queryWrapper.lambda().eq(VirtualOrder::getCameraId,cameraId);
+        queryWrapper.lambda().orderByDesc(VirtualOrder::getTradeTime);
+        if(StringUtils.isNotBlank(startDate)){
+            queryWrapper.lambda().ge(VirtualOrder::getTradeTime,startDate+" 00:00:00");
+        }
+        if(StringUtils.isNotBlank(startDate)){
+            queryWrapper.lambda().le(VirtualOrder::getTradeTime,endDate+" 23:59:59");
+        }
+        List<VirtualOrder> list = this.list(queryWrapper);
+        for (VirtualOrder entityV : list) {
+            int status = entityV.getStatus();
+            if (status == 0) {
+                giftPoint += entityV.getPoints();
+            } else if (status == -1) {
+                usedPoint += entityV.getPoints();
+            }
+            if (status == 1) {
+                charge += entityV.getPoints();
+            } else if (status == -2) {
+                recharge += entityV.getPoints();
+            }
+        }
+        ResponseAgentCamera vo = new ResponseAgentCamera();
+        vo.setInitPoint(initPoint);
+        vo.setGiftPoint(giftPoint);
+        //之前赠送的点数大于使用的点数
+        if (preGiftPoint >= preLessPoint) {
+            //赠送的点数一直大于使用的点数
+            if (preGiftPoint - preLessPoint + giftPoint - usedPoint >= 0) {
+                vo.setUsedPoint(-1 * usedPoint);
+                vo.setLessPoint(0);
+            } else {
+                vo.setUsedPoint(-1 * (preGiftPoint - preLessPoint + giftPoint));
+                vo.setLessPoint(usedPoint - (preGiftPoint - preLessPoint + giftPoint));
+            }
+        } else {
+            //规定的时间段内赠送的点数大于使用的点数
+            if (preGiftPoint - preLessPoint + giftPoint - usedPoint >= 0) {
+                vo.setUsedPoint(-1 * usedPoint);
+                vo.setLessPoint(0);
+            } else {
+                vo.setUsedPoint(-1 * giftPoint);
+                vo.setLessPoint(usedPoint - giftPoint);
+            }
+        }
+        vo.setSurPlusPoint( (initPoint + giftPoint > usedPoint) ? (initPoint + giftPoint - usedPoint) : 0);
+        vo.setCharge(charge - recharge);
+        vo.setExchangePoint(charge - recharge);
+        if (usedPoint > giftPoint) {
+            extract = new BigDecimal((usedPoint - giftPoint) * AgentConstant.EXTRACT).setScale(2, BigDecimal.ROUND_HALF_UP);
+        }
+        vo.setExtract(extract);
+        return vo;
+    }
+
 }

+ 28 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/user/common/SSOLoginHelper.java

@@ -0,0 +1,28 @@
+package com.fdkankan.user.common;
+
+import com.fdkankan.user.entity.SSOUser;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class SSOLoginHelper {
+    @Autowired
+    private SSOLoginStore ssoLoginStore;
+    public  SSOUser loginCheck(String sessionId) {
+        if (sessionId != null && sessionId.trim().length() > 0) {
+            SSOUser ssoUser = ssoLoginStore.get(sessionId);
+            if (ssoUser != null) {
+                return ssoUser;
+            }
+        }
+        return null;
+    }
+
+    public void login(String token, SSOUser ssoUser) {
+        ssoLoginStore.put(token, ssoUser);
+    }
+
+    public  void logout(String sessionId) {
+        ssoLoginStore.remove(sessionId);
+    }
+}

+ 57 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/user/common/SSOLoginStore.java

@@ -0,0 +1,57 @@
+package com.fdkankan.user.common;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.common.util.SsoUtil;
+import com.fdkankan.user.entity.SSOUser;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class SSOLoginStore {
+
+    @Resource
+    private RedisTemplate<String,String> redisTemplate;
+    /**
+     * get
+     *
+     * @param sessionId
+     * @return
+     */
+    public  SSOUser get(String sessionId) {
+
+        String redisKey = redisKey(sessionId);
+        String objectValue = redisTemplate.opsForValue().get(redisKey);
+        if (objectValue != null) {
+            return JSONObject.parseObject(objectValue, SSOUser.class);
+        }
+        return null;
+    }
+
+    /**
+     * remove
+     *
+     * @param sessionId
+     */
+    public  void remove(String sessionId) {
+        String redisKey = redisKey(sessionId);
+        redisTemplate.delete(redisKey);
+    }
+
+    /**
+     * put
+     *
+     * @param sessionId
+     * @param ssoUser
+     */
+    public  void put(String sessionId, SSOUser ssoUser) {
+        String redisKey = redisKey(sessionId);
+        redisTemplate.opsForValue().set(redisKey, JSONObject.toJSONString(ssoUser), 216000, TimeUnit.SECONDS);
+    }
+
+    private static String redisKey(String sessionId){
+        return SsoUtil.SSO_SESSIONID.concat("#").concat(sessionId);
+    }
+}

+ 54 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/user/common/util/LogoConfig.java

@@ -0,0 +1,54 @@
+package com.fdkankan.user.common.util;
+
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.geom.RoundRectangle2D;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+
+public class LogoConfig {
+    /**
+     * 设置 logo
+     * @param matrixImage 源二维码图片
+     * @return 返回带有logo的二维码图片
+     * @throws IOException
+     * @author Administrator sangwenhao
+     */
+    public BufferedImage LogoMatrix(BufferedImage matrixImage, String logoPath) throws IOException{
+        /**
+         * 读取二维码图片,并构建绘图对象
+         */
+        Graphics2D g2 = matrixImage.createGraphics();
+
+        int matrixWidth = matrixImage.getWidth();
+        int matrixHeigh = matrixImage.getHeight();
+        /**
+         * 读取Logo图片
+         */
+        if(logoPath == null){
+            logoPath = this.getClass().getResource("/static/img/logo.png").getPath();
+        }
+        BufferedImage logo = ImageIO.read(new File(logoPath));
+
+        //开始绘制图片
+        g2.drawImage(logo,matrixWidth/5*2,matrixHeigh/5*2, matrixWidth/5, matrixHeigh/5, null);//绘制
+        BasicStroke stroke = new BasicStroke(5,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);
+        g2.setStroke(stroke);// 设置笔画对象
+        //指定弧度的圆角矩形
+        RoundRectangle2D.Float round = new RoundRectangle2D.Float(matrixWidth/5*2, matrixHeigh/5*2, matrixWidth/5, matrixHeigh/5,20,20);
+        g2.setColor(Color.white);
+        g2.draw(round);// 绘制圆弧矩形
+
+        //设置logo 有一道灰色边框
+        BasicStroke stroke2 = new BasicStroke(1,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);
+        g2.setStroke(stroke2);// 设置笔画对象
+        RoundRectangle2D.Float round2 = new RoundRectangle2D.Float(matrixWidth/5*2+2, matrixHeigh/5*2+2, matrixWidth/5-4, matrixHeigh/5-4,20,20);
+        g2.setColor(new Color(128,128,128));
+        g2.draw(round2);// 绘制圆弧矩形
+
+        g2.dispose();
+        matrixImage.flush() ;
+        return matrixImage ;
+    }
+}

+ 0 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/user/common/util/MatrixToImageWriterUtil.java


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است