Procházet zdrojové kódy

设备中心,购物车 接口业务移植

lyhzzz před 3 roky
rodič
revize
0cfe68caf3
67 změnil soubory, kde provedl 3590 přidání a 534 odebrání
  1. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CameraController.java
  2. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CameraDetailController.java
  3. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CameraOutController.java
  4. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CameraSpaceController.java
  5. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CameraVersionController.java
  6. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CartController.java
  7. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/CompanyController.java
  8. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/GoodsController.java
  9. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/GoodsSkuController.java
  10. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/GoodsSpecController.java
  11. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/GoodsSpecValueController.java
  12. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/GoodsSpuSpecController.java
  13. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/controller/SnCodeController.java
  14. 17 0
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/entity/CameraDetailNumEntity.java
  15. 14 1
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/mapper/ICameraDetailMapper.java
  16. 9 0
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/mapper/ICameraSpaceMapper.java
  17. 24 0
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/ICameraDetailService.java
  18. 26 0
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/ICameraService.java
  19. 5 1
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/ICameraSpaceService.java
  20. 11 0
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/ICartService.java
  21. 302 1
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/impl/CameraDetailServiceImpl.java
  22. 330 3
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/impl/CameraServiceImpl.java
  23. 12 1
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/impl/CameraSpaceServiceImpl.java
  24. 107 1
      4dkankan-center-platform/src/main/java/com/fdkankan/goods/service/impl/CartServiceImpl.java
  25. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/CommerceOrderController.java
  26. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/DownloadOrderController.java
  27. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/ExpansionOrderController.java
  28. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/IncrementOrderController.java
  29. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/InvoiceController.java
  30. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/OrderController.java
  31. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/OrderItemController.java
  32. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/PreSaleController.java
  33. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/SpaceSdkController.java
  34. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/TradeLogController.java
  35. 0 21
      4dkankan-center-platform/src/main/java/com/fdkankan/order/controller/VirtualOrderController.java
  36. 20 0
      4dkankan-center-platform/src/main/java/com/fdkankan/order/service/IInvoiceService.java
  37. 135 1
      4dkankan-center-platform/src/main/java/com/fdkankan/order/service/impl/InvoiceServiceImpl.java
  38. 164 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/controller/api/UserCameraController.java
  39. 65 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/controller/api/UserCarController.java
  40. 9 8
      4dkankan-center-platform/src/main/java/com/fdkankan/user/controller/api/UserController.java
  41. 65 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/controller/api/UserIncrementController.java
  42. 150 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/controller/api/UserInvoiceController.java
  43. 7 1
      4dkankan-center-platform/src/main/java/com/fdkankan/user/mapper/IUserIncrementMapper.java
  44. 89 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/request/RequestCamera.java
  45. 32 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/request/RequestCart.java
  46. 64 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/request/RequestInvoice.java
  47. 37 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/request/RequestUserIncrement.java
  48. 21 1
      4dkankan-center-platform/src/main/java/com/fdkankan/user/service/IUserIncrementService.java
  49. 32 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/service/IUserService.java
  50. 186 1
      4dkankan-center-platform/src/main/java/com/fdkankan/user/service/impl/UserIncrementServiceImpl.java
  51. 203 8
      4dkankan-center-platform/src/main/java/com/fdkankan/user/service/impl/UserServiceImpl.java
  52. 134 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/vo/ResponseCamera.java
  53. 51 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/vo/ResponseCameraSpace.java
  54. 31 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/vo/ResponseCart.java
  55. 74 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/vo/ResponseDownloadOrder.java
  56. 71 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/vo/ResponseIncrementOrder.java
  57. 152 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/vo/ResponseInvoice.java
  58. 78 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/vo/ResponseOrder.java
  59. 71 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/vo/ResponseOrderItem.java
  60. 48 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/vo/ResponseUserIncrement.java
  61. 60 0
      4dkankan-center-platform/src/main/java/com/fdkankan/user/vo/ResponseVirtualOrder.java
  62. 71 0
      4dkankan-common/src/main/java/com/fdkankan/common/constant/AppConstant.java
  63. 50 0
      4dkankan-common/src/main/java/com/fdkankan/common/constant/CameraConstant.java
  64. 6 2
      4dkankan-common/src/main/java/com/fdkankan/common/constant/ErrorCode.java
  65. 5 0
      4dkankan-common/src/main/java/com/fdkankan/common/exception/BusinessException.java
  66. 411 0
      4dkankan-common/src/main/java/com/fdkankan/common/util/DateUtil.java
  67. 141 0
      4dkankan-common/src/main/java/com/fdkankan/common/util/FileSizeUtil.java

+ 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 {
-
-}
-

+ 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;
+}

+ 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);
 }

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

@@ -5,7 +5,11 @@ 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;
 
 /**
@@ -23,4 +27,24 @@ public interface ICameraDetailService extends IService<CameraDetail> {
     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);
 }

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

@@ -1,21 +1,44 @@
 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>
@@ -32,12 +55,30 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
     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) {
@@ -77,4 +118,264 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
         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-27
- */
-@RestController
-@RequestMapping("/order/virtualOrder")
-public class VirtualOrderController {
-
-}
-

+ 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);
 }

+ 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;
+    }
 }

+ 164 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/user/controller/api/UserCameraController.java

@@ -0,0 +1,164 @@
+package com.fdkankan.user.controller.api;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.goods.entity.CameraDetailNumEntity;
+import com.fdkankan.goods.service.ICameraService;
+import com.fdkankan.user.request.RequestCamera;
+import com.fdkankan.user.service.IUserService;
+import com.fdkankan.user.vo.ResponseCamera;
+import com.fdkankan.user.vo.ResponseCameraSpace;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 个人中心-设备模块
+ */
+@RestController
+@RequestMapping("/api/user/camera")
+public class UserCameraController {
+
+    private static Logger log = LoggerFactory.getLogger("programLog");
+
+    @Autowired
+    private IUserService userService;
+    @Autowired
+    private ICameraService cameraService;
+    /**
+     * 获取用户设备--新(返回增值权益到期时间)
+     * childName        sn编码
+     * selecttype       1:协作者,2:sn编码 ,3:全部
+     * cameraType       设备类型
+     * @return
+     */
+    @RequestMapping(value = "/listNew", method = RequestMethod.POST)
+    public Page<ResponseCamera> listNew(@RequestBody RequestCamera param, @RequestHeader String token) throws Exception {
+        return userService.getCameraPage(param,token);
+    }
+
+    /**
+     * 获取相机类别 个数
+     * @return
+     */
+    @RequestMapping(value = "/cameratypelist", method = RequestMethod.GET)
+    public List<CameraDetailNumEntity> listCameraTypeNum(Integer type, @RequestHeader String token) throws Exception {
+        return userService.getCameraTypeNum(type ,token);
+    }
+
+    /**
+     * 获取用户设备
+     * childName    设备号
+     */
+    @RequestMapping(value = "/detail", method = RequestMethod.POST)
+    public ResponseCamera detail(@RequestBody RequestCamera param, @RequestHeader String token) throws Exception {
+        return userService.getCameraDetailByChildName(param,token);
+    }
+
+    /**
+     * 获取设备到期信息
+     * childName    设备号
+     */
+    @RequestMapping(value = "/deadline", method = RequestMethod.POST)
+    public HashMap<String, Object> deadline(@RequestBody RequestCamera param, @RequestHeader String token) throws Exception {
+        return userService.getCameraDetailDeadline(param,token);
+    }
+    /**
+     * 获取设备到期数量
+     */
+    @RequestMapping(value = "/deadlineNumber", method = RequestMethod.POST)
+    public Integer deadlineNumber(@RequestHeader String token) throws Exception {
+        return userService.getCameraDetailNumber(token);
+    }
+
+    /**
+     * 获取用户所有设备
+     * cameraType   相机类型,1双目,4八目
+     * @return
+     */
+    @RequestMapping(value = "/getAll", method = RequestMethod.POST)
+    public List<ResponseCamera> getAllCameras(@RequestBody RequestCamera param, @RequestHeader String token) throws Exception {
+        return userService.getCameraByUser(param, token);
+    }
+
+    /**
+     * 用户解绑设备
+     * cameraId     cameraId单个操作时相机id
+     * ids          设备id的集合
+     */
+    @RequestMapping(value = "/unbind", method = RequestMethod.POST)
+    public String unbindCamera(@RequestBody RequestCamera camera) throws Exception {
+        return userService.unbindCamera(camera.getCameraId(), camera.getIds());
+    }
+    /**
+     * 用户添加设备
+     * snCode sn码,批量的时候以逗号分割
+     * cameraType   设备类型
+     */
+    @RequestMapping(value = "/add", method = RequestMethod.POST)
+    public String addCamera(@RequestBody RequestCamera camera,@RequestHeader String token) throws Exception {
+        return cameraService.addCamera(camera,token);
+    }
+    /**
+     * 获取设备未过期的扩容信息
+     * childName 设备号
+     * @return
+     */
+    @RequestMapping(value = "/cameraSpaceList", method = RequestMethod.POST)
+    public List<ResponseCameraSpace> cameraSpaceList(@RequestBody RequestCamera camera, @RequestHeader String token) throws Exception {
+        return cameraService.cameraSpaceList(camera);
+    }
+
+    /**
+     * 根据sn查询相机信息
+     * snCode 设备号
+     * @return
+     */
+    @RequestMapping(value = "/findCameraBySn", method = RequestMethod.POST)
+    public ResponseCamera findCameraBySn(@RequestBody RequestCamera camera, @RequestHeader String token) throws Exception {
+        return cameraService.findCameraBySn(camera);
+    }
+
+    /**
+     * 添加相机协作用户
+     * cameraId
+     * ids
+     * resourceIds
+     * userName
+     */
+    @RequestMapping(value = "/saveCooperationUser", method = RequestMethod.POST)
+    public String saveCooperationUser(@RequestBody RequestCamera camera,@RequestHeader String token) throws Exception {
+        return userService.saveCooperationUser(camera, token);
+    }
+
+    /**
+     * 删除相机协作用户
+     * cameraId     相机id
+     */
+    @RequestMapping(value = "/deleteCooperationUser", method = RequestMethod.POST)
+    public String deleteCooperationUser(@RequestBody RequestCamera camera,@RequestHeader String token) throws Exception{
+        return userService.deleteCooperationUser(camera,null);
+    }
+
+    /**
+     * 根据相机id获取场景资源集合
+     * cameraId  相机id
+     */
+    @RequestMapping(value = "/sceneResourceByCameraId", method = RequestMethod.POST)
+    public String sceneResourceByCameraId(@RequestBody RequestCamera camera,@RequestHeader String token) throws Exception{
+        return userService.sceneResourceByCameraId(camera);
+    }
+
+    /**
+     * 获取四维看看PRO - 我的相机列表 并到处execl
+     */
+    @RequestMapping(value = "/export", method = RequestMethod.POST)
+    public HSSFWorkbook export(@RequestHeader String token, HttpServletResponse response) throws Exception {
+        return cameraService.export(token,response);
+    }
+}

+ 65 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/user/controller/api/UserCarController.java

@@ -0,0 +1,65 @@
+package com.fdkankan.user.controller.api;
+
+import com.fdkankan.goods.service.ICartService;
+import com.fdkankan.user.request.RequestCart;
+import com.fdkankan.user.vo.ResponseCart;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 个人中心-用户购物车模块
+ */
+@RestController
+@RequestMapping("/api/user/cart")
+public class UserCarController {
+
+    private static Logger log = LoggerFactory.getLogger("programLog");
+
+    @Autowired
+    private ICartService cartService;
+
+
+    /**
+     * 添加购物车
+     * goodsId      商品id
+     * skuSn        商品编码
+     * goodsCount   商品数量
+     */
+    @RequestMapping(value = "/add", method = RequestMethod.POST)
+    public String add(@RequestBody RequestCart param, @RequestHeader String token) throws Exception {
+        return cartService.addCart(param,token);
+    }
+
+    /**
+     * 查找会员的购物车记录
+     * @return
+     */
+    @RequestMapping(value = "/list", method = RequestMethod.POST)
+    public List<ResponseCart> list(@RequestBody RequestCart param, @RequestHeader String token) throws Exception {
+        return cartService.getCartList(param,token);
+    }
+
+    /**
+     * 购物车商品减或移除
+     * goodsId      商品id
+     * goodsCount   商品数量
+     */
+    @RequestMapping(value = "/remove", method = RequestMethod.POST)
+    public String remove(@RequestBody RequestCart param, @RequestHeader String token) throws Exception {
+        return cartService.removeCart(param,token);
+    }
+
+    /**
+     * 删除购物车
+     * ids          id组合
+     */
+    @RequestMapping(value = "/delete", method = RequestMethod.POST)
+    public String delete(@RequestBody RequestCart param, @RequestHeader String token) throws Exception {
+        return cartService.removeCarts(param,token);
+    }
+
+}

+ 9 - 8
4dkankan-center-platform/src/main/java/com/fdkankan/user/controller/api/UserController.java

@@ -2,7 +2,6 @@ package com.fdkankan.user.controller.api;
 
 import com.fdkankan.common.constant.ServerCode;
 import com.fdkankan.user.request.RequestUser;
-import com.fdkankan.user.service.IReceiverInfoService;
 import com.fdkankan.user.service.IUserService;
 import com.fdkankan.user.vo.ReceiverInfoVo;
 import com.fdkankan.user.vo.ResponseUser;
@@ -23,8 +22,6 @@ public class UserController {
     private static Logger log = LoggerFactory.getLogger("programLog");
     @Autowired
     private IUserService userService;
-    @Autowired
-    private IReceiverInfoService receiverInfoService;
 
 
     @RequestMapping(value = "/checkToken", method = RequestMethod.POST)
@@ -98,7 +95,6 @@ public class UserController {
 
     /**
      * 获取用户收货信息列表
-     * @return
      */
     @RequestMapping(value = "/getReceiverList", method = RequestMethod.POST)
     public List<ReceiverInfoVo> getReceiverList(@RequestHeader String token){
@@ -114,6 +110,7 @@ public class UserController {
     }
     /**
      * 用户更新邮箱地址
+     * email        邮箱地址
      */
     @RequestMapping(value = "/updateEmail", method = RequestMethod.POST)
     public String updateEmail(@RequestBody RequestUser user,@RequestHeader String token){
@@ -122,16 +119,20 @@ public class UserController {
 
     /**
      * 更改昵称
+     * nickName     用户昵称
      */
     @RequestMapping(value = "/updateNickName", method = RequestMethod.POST)
-    public String updateNickName(@RequestBody RequestUser user){
-        return null;
+    public String updateNickName(@RequestBody RequestUser user,@RequestHeader String token){
+        return userService.updateNickName(user,token);
     }
     /**
      * 修改用户信息
+     * nickName     昵称
+     * email        邮箱
+     * isNotice     isNotice
      */
     @RequestMapping(value = "/updateUserDetail", method = RequestMethod.POST)
-    public String updateUserDetail(@RequestBody RequestUser user){
-        return null;
+    public String updateUserDetail(@RequestBody RequestUser user,@RequestHeader String token){
+        return userService.updateUserDetail(user,token);
     }
 }

+ 65 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/user/controller/api/UserIncrementController.java

@@ -0,0 +1,65 @@
+package com.fdkankan.user.controller.api;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.user.request.RequestUserIncrement;
+import com.fdkankan.user.service.IUserIncrementService;
+import com.fdkankan.user.vo.ResponseUserIncrement;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 个人中心-增值权益
+ */
+@RestController
+@RequestMapping("/api/user/increment")
+public class UserIncrementController {
+
+    private static Logger log = LoggerFactory.getLogger("programLog");
+
+    @Autowired
+    private IUserIncrementService userIncrementService;
+
+
+    /**
+     * 获取用户的增值权益包列表
+     * snCode      相机sn查询
+     * pageNum     分页
+     * pageSize   每页大小
+     * @return
+     */
+    @RequestMapping(value = "/findIncrementList", method = RequestMethod.POST)
+    public Page<ResponseUserIncrement> findIncrementList(@RequestBody RequestUserIncrement param, @RequestHeader String token) throws Exception {
+        return userIncrementService.findIncrementList(param,token);
+    }
+
+    /**
+     * 绑定增值权益包
+     * id       权益包id
+     * snCode   相机sn查询
+     */
+    @RequestMapping(value = "/bindCamera", method = RequestMethod.POST)
+    public String bindCamera(@RequestBody RequestUserIncrement param, @RequestHeader String token) throws Exception {
+        return userIncrementService.bindCamera(param,token);
+    }
+
+    /**
+     * 根据id查询权益信息
+     * id      权益包id
+     */
+    @RequestMapping(value = "/unbindCamera", method = RequestMethod.POST)
+    public String unbindCamera(@RequestBody RequestUserIncrement param, @RequestHeader String token) throws Exception {
+        return userIncrementService.unbindCamera(param,token);
+    }
+
+    /**
+     * 根据id查询权益信息
+     * id          权益id
+     */
+    @RequestMapping(value = "/findById", method = RequestMethod.POST)
+    public ResponseUserIncrement findById(@RequestBody RequestUserIncrement param, @RequestHeader String token) throws Exception {
+        return userIncrementService.findById(param,token);
+    }
+
+}

+ 150 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/user/controller/api/UserInvoiceController.java

@@ -0,0 +1,150 @@
+package com.fdkankan.user.controller.api;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.order.service.IInvoiceService;
+import com.fdkankan.user.request.RequestInvoice;
+import com.fdkankan.user.service.IUserIncrementService;
+import com.fdkankan.user.vo.ResponseUserIncrement;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 个人中心-增值发票
+ */
+@RestController
+@RequestMapping("/api/user/invoice")
+public class UserInvoiceController {
+
+    private static Logger log = LoggerFactory.getLogger("programLog");
+
+    @Autowired
+    private IInvoiceService invoiceService;
+
+
+    /**
+     * 获得可开发票的最高额度
+     * cameraId     设备id
+     */
+    @RequestMapping(value = "/max", method = RequestMethod.POST)
+    public String getMaxInvoice(@RequestBody RequestInvoice param, @RequestHeader String token) throws Exception {
+        return invoiceService.getMaxInvoice(param,token);
+    }
+
+    /**
+     * 获取用户发票记录
+     * cameraId       相机id
+     */
+    @RequestMapping(value = "/list", method = RequestMethod.POST)
+    public String list(@RequestBody RequestInvoice param, @RequestHeader String token) throws Exception {
+        return invoiceService.listInvoice(param,token);
+    }
+
+    /**
+     * 获取用户发票记录
+     * invoiceType      发票类型,2表示增值税普通发票,3表示增值税专用发票
+     */
+    @RequestMapping(value = "/mine", method = RequestMethod.POST)
+    public String mine(@RequestBody RequestInvoice param, @RequestHeader String token) throws Exception {
+        return invoiceService.mineInvoice(param,token);
+    }
+
+    /**
+     * 保存用户发票信息
+     * cameraId          相机id
+     * invoiceType          发票类型,2表示增值税普通发票,3表示增值税专用发票
+     * title          发票抬头
+     * code          税号
+     * organizedAddress          公司地址
+     * registerPhone          注册电话
+     * bankName          开户银行
+     * bankAccount          银行账户
+     */
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    public String save(@RequestBody RequestInvoice param, @RequestHeader String token) throws Exception {
+        return invoiceService.saveInvoice(param,token);
+    }
+
+    /**
+     * 获取发票详情
+     * invoiceId          发票id
+     */
+    @RequestMapping(value = "/detail", method = RequestMethod.POST)
+    public String detail(@RequestBody RequestInvoice param, @RequestHeader String token) throws Exception {
+        return invoiceService.detailInvoice(param,token);
+    }
+
+    /**
+     * 申请开票
+     * invoiceType          发票类型,2表示增值税普通发票,3表示增值税专用发票
+     * title          发票抬头
+     * code          税号
+     * amount           开票金额
+     * organizedAddress          公司地址
+     * registerPhone          注册电话
+     * bankName          开户银行
+     * bankAccount          银行账户
+     * shipName         收货人姓名
+     * shipAreaPath     收货地区路径
+     * shipAddress      收货地址
+     * shipMobile       收货手机
+     */
+    @RequestMapping(value = "/add", method = RequestMethod.POST)
+    public String add(@RequestBody RequestInvoice param, @RequestHeader String token) throws Exception {
+        return invoiceService.addInvoice(param,token);
+    }
+
+    /**
+     * 修改开票信息
+     * invoiceType          发票类型,2表示增值税普通发票,3表示增值税专用发票
+     * title          发票抬头
+     * code          税号
+     * amount           开票金额
+     * organizedAddress          公司地址
+     * registerPhone          注册电话
+     * bankName          开户银行
+     * bankAccount          银行账户
+     * shipName         收货人姓名
+     * shipAreaPath     收货地区路径
+     * shipAddress      收货地址
+     * shipMobile       收货手机
+     */
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    public String update(@RequestBody RequestInvoice param, @RequestHeader String token) throws Exception {
+        return invoiceService.updateInvoice(param,token);
+    }
+
+    /**
+     * 不开发票
+     * invoiceId       发票id
+     */
+    @RequestMapping(value = "/delete", method = RequestMethod.POST)
+    public String deleteInvoice(@RequestBody RequestInvoice param, @RequestHeader String token) throws Exception {
+        return invoiceService.deleteInvoice(param,token);
+    }
+
+
+    /**
+     * 申请开票
+     * consumeType         0表示购买相机,1消费订单,2会员权益 , 3下载订单
+     * orderId              订单Id
+     * type             发票类型,2表示增值税普通发票,3表示增值税专用发票
+     * title          发票抬头
+     * code          税号
+     * amount           开票金额
+     * organizedAddress          公司地址
+     * registerPhone          注册电话
+     * bankName          开户银行
+     * bankAccount          银行账户
+     * shipName         收货人姓名
+     * shipAreaPath     收货地区路径
+     * shipAddress      收货地址
+     * shipMobile       收货手机
+     */
+    @RequestMapping(value = "/open", method = RequestMethod.POST)
+    public String open(@RequestBody RequestInvoice param, @RequestHeader String token) throws Exception {
+        return invoiceService.openInvoice(param,token);
+    }
+
+}

+ 7 - 1
4dkankan-center-platform/src/main/java/com/fdkankan/user/mapper/IUserIncrementMapper.java

@@ -1,8 +1,12 @@
 package com.fdkankan.user.mapper;
 
-import com.fdkankan.user.entity.UserIncrement;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fdkankan.user.entity.UserIncrement;
 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 +19,6 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface IUserIncrementMapper extends BaseMapper<UserIncrement> {
 
+    @Select("SELECT * FROM t_user_increment x LEFT JOIN t_camera c ON x.camera_id = c.id and c.rec_status = 'A' WHERE c.child_name = #{childName} AND x.rec_status = 'A' ")
+    List<UserIncrement> getByChildName(@Param("childName")String childName);
 }

+ 89 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/user/request/RequestCamera.java

@@ -0,0 +1,89 @@
+package com.fdkankan.user.request;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class RequestCamera extends RequestBase implements Serializable {
+
+    private static final long serialVersionUID = 5251625920621810844L;
+
+    private Long cameraId;
+
+    private String userName;
+
+    private String childName;
+
+    private String childPassword;
+
+    private String snCode;
+
+    private String wifiName;
+
+    private String balance;
+
+    private String own;
+
+    private String orderSn;
+
+    private String startDate;
+
+    private String endDate;
+    // 0-充值记录,1-消费记录
+    private Integer type;
+
+    private String searchKey;
+    //充值类型
+    private int body;
+
+    private int points;
+    // 支付类型,0表示微信,1表示支付宝,2表示paypal
+    private int payType;
+
+    private Integer cameraType;
+
+    private Long userId;
+    // 0表示国内订单,1表示国外订单
+    private Integer abroad;
+
+    private Integer dateType;
+
+    private String ids;
+
+    //月份
+    private Integer month;
+
+    //容量G位单位
+    private Integer space;
+
+    /**
+     * 企业表t_company的id
+     */
+    private Long companyId;
+
+    private String recStatus;
+
+    private String address;
+
+    private String resourceIds;
+
+    private Long agentFrameworkId;
+
+    private Long userIncrementId;
+
+    /**
+     * 权益类型Id
+     */
+    private Long incrementTypeId;
+
+    private String sceneType;
+
+    private String startTime;
+
+    private String endTime;
+
+    private String selecttype;
+
+}

+ 32 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/user/request/RequestCart.java

@@ -0,0 +1,32 @@
+package com.fdkankan.user.request;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class RequestCart extends RequestBase implements Serializable {
+    /**
+     *  id
+     */
+    private Long id;
+    /**
+     * t_goods的id
+     */
+    private Long goodsId;
+    /**
+     * 商品数量
+     */
+    private int goodsCount;
+    /**
+     *  t_goods_sku的skuSn
+     */
+    private String skuSn;
+    /**
+     * id组合
+     */
+    private String ids;
+
+    private Long userId;
+}

+ 64 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/user/request/RequestInvoice.java

@@ -0,0 +1,64 @@
+package com.fdkankan.user.request;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class RequestInvoice extends RequestBase implements Serializable {
+
+    private static final long serialVersionUID = -4551505946155392907L;
+
+    private Long invoiceId;
+
+    private Long cameraId;
+
+    private Long orderId;
+
+    private String invoiceType;
+
+    private String amount;
+
+    private String title;
+
+    private String code;
+
+    private String organizedAddress;
+
+    private String registerPhone;
+
+    private String bankName;
+
+    private String bankAccount;
+
+    private String shipName;
+
+    private String shipAreaPath;
+
+    private String shipAddress;
+
+    private String shipMobile;
+
+    private Integer type;
+
+    private Long userId;
+
+    private String emailAddress;
+
+    private Integer send;
+
+    private String expressCompany;
+
+    private String expressNumber;
+
+    private String eInvoice;
+
+    private String remarks;
+
+    private String filePath;
+
+    private Integer consumeType;
+
+}
+

+ 37 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/user/request/RequestUserIncrement.java

@@ -0,0 +1,37 @@
+package com.fdkankan.user.request;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class RequestUserIncrement extends RequestBase {
+
+    private Long id;
+
+    private Long userId;
+
+    private Long cameraId;
+
+    private String orderSn;
+
+    /**
+     * 生效时间
+     */
+    private Date incrementStartTime;
+    /**
+     * 结束时间
+     */
+    private Date incrementEndTime;
+
+    private String snCode;
+
+    private String userName;
+
+    //添加权益次数
+    private Integer incrementNum;
+
+    //下载次数
+    private Integer downloadNum;
+}

+ 21 - 1
4dkankan-center-platform/src/main/java/com/fdkankan/user/service/IUserIncrementService.java

@@ -1,7 +1,13 @@
 package com.fdkankan.user.service;
 
-import com.fdkankan.user.entity.UserIncrement;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.goods.entity.CameraDetail;
+import com.fdkankan.user.entity.UserIncrement;
+import com.fdkankan.user.request.RequestUserIncrement;
+import com.fdkankan.user.vo.ResponseUserIncrement;
+
+import java.util.List;
 
 /**
  * <p>
@@ -16,4 +22,18 @@ public interface IUserIncrementService extends IService<UserIncrement> {
     Integer getCountByUserId(Long userId, int status);
 
     Integer getCountBindByUserId(Long userId);
+
+    UserIncrement getByCameraId(Long cameraId);
+
+    List<UserIncrement> getByChildName(String childName);
+
+    String unbindCamera(Long userId, Long id, boolean unbind, CameraDetail cameraDetail, UserIncrement userIncrement);
+
+    String unbindCamera(RequestUserIncrement param, String token);
+
+    String bindCamera(RequestUserIncrement param, String token);
+
+    Page<ResponseUserIncrement> findIncrementList(RequestUserIncrement param, String token);
+
+    ResponseUserIncrement findById(RequestUserIncrement param, String token);
 }

+ 32 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/user/service/IUserService.java

@@ -1,13 +1,19 @@
 package com.fdkankan.user.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.goods.entity.CameraDetail;
+import com.fdkankan.goods.entity.CameraDetailNumEntity;
 import com.fdkankan.user.entity.SSOUser;
 import com.fdkankan.user.entity.User;
+import com.fdkankan.user.request.RequestCamera;
 import com.fdkankan.user.request.RequestUser;
 import com.fdkankan.user.vo.ReceiverInfoVo;
+import com.fdkankan.user.vo.ResponseCamera;
 import com.fdkankan.user.vo.ResponseUser;
 import com.fdkankan.user.vo.SSOUserVo;
 
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -22,6 +28,8 @@ public interface IUserService extends IService<User> {
 
     String register(RequestUser user);
 
+    SSOUser getSSOUserByToken(String token);
+
     User getUserByUserName(String userName);
 
     SSOUser getSsoUserByUserName(User user,String phoneNum);
@@ -45,4 +53,28 @@ public interface IUserService extends IService<User> {
     List<ReceiverInfoVo> getReceiverList(String token);
 
     String updateEmail(RequestUser param, String token);
+
+    String updateNickName(RequestUser user, String token);
+
+    String updateUserDetail(RequestUser user, String token);
+
+    Page<ResponseCamera> getCameraPage(RequestCamera param, String token);
+
+    List<CameraDetailNumEntity> getCameraTypeNum(Integer type, String token);
+
+    ResponseCamera getCameraDetailByChildName(RequestCamera param, String token);
+
+    HashMap<String, Object> getCameraDetailDeadline(RequestCamera param, String token);
+
+    Integer getCameraDetailNumber(String token);
+
+    List<ResponseCamera> getCameraByUser(RequestCamera param, String token);
+
+    String unbindCamera(Long cameraId, String ids) throws Exception;
+
+    String deleteCooperationUser(RequestCamera camera, CameraDetail cameraDetailEntity)throws Exception;
+
+    String saveCooperationUser(RequestCamera camera, String token) throws Exception;
+
+    String sceneResourceByCameraId(RequestCamera camera);
 }

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

@@ -1,11 +1,34 @@
 package com.fdkankan.user.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.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.goods.entity.Camera;
+import com.fdkankan.goods.entity.CameraDetail;
+import com.fdkankan.goods.service.ICameraDetailService;
+import com.fdkankan.goods.service.ICameraService;
+import com.fdkankan.user.entity.SSOUser;
 import com.fdkankan.user.entity.UserIncrement;
 import com.fdkankan.user.mapper.IUserIncrementMapper;
+import com.fdkankan.user.request.RequestUserIncrement;
 import com.fdkankan.user.service.IUserIncrementService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.user.service.IUserService;
+import com.fdkankan.user.vo.ResponseUserIncrement;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -18,6 +41,15 @@ import org.springframework.stereotype.Service;
 @Service
 public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper, UserIncrement> implements IUserIncrementService {
 
+    @Resource
+    private IUserIncrementMapper userIncrementMapper;
+    @Autowired
+    private ICameraDetailService cameraDetailService;
+    @Autowired
+    private IUserService userService;
+    @Autowired
+    private ICameraService cameraService;
+
     @Override
     public Integer getCountByUserId(Long userId, int status) {
         QueryWrapper<UserIncrement> queryWrapper = new QueryWrapper<>();
@@ -33,4 +65,157 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
         queryWrapper.lambda().isNotNull(UserIncrement::getCameraId);
         return Math.toIntExact(this.count(queryWrapper));
     }
+
+    @Override
+    public UserIncrement getByCameraId(Long cameraId) {
+        QueryWrapper<UserIncrement> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(UserIncrement::getCameraId,cameraId);
+        List<UserIncrement> list = this.list(queryWrapper);
+        if(list == null || list.size()<=0){
+            return null;
+        }
+        return list.get(0);
+    }
+
+    @Override
+    public List<UserIncrement> getByChildName(String childName) {
+        return userIncrementMapper.getByChildName(childName);
+    }
+
+    @Override
+    public String unbindCamera(Long userId, Long id, boolean unbind, CameraDetail cameraDetail, UserIncrement userIncrement) {
+        if(userIncrement == null){
+            userIncrement = this.getById(id);
+        }
+        if(userIncrement == null){
+            throw new BusinessException(ErrorCode.VALUE_NOT_EXIST);
+        }
+        if(userIncrement.getCameraId() == null){
+            return ServerCode.SUCCESS.message();
+        }
+        if(cameraDetail == null){
+            cameraDetail = cameraDetailService.getByCameraId(userIncrement.getCameraId());
+        }
+        if(cameraDetail == null){
+            throw new BusinessException(CameraConstant.FAILURE_6003);
+        }
+        if(unbind){
+            userIncrement.setCameraId(null);
+            this.updateById(userIncrement);
+        }
+
+
+        //根据相机实际容量使用情况,封锁场景 todo
+//        sceneFeignClient.lockBeyondSpaceScenes(cameraDetailEntity.getUsedSpace(),
+//                cameraDetailEntity.getTotalSpace(), userId, cameraId);
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public String unbindCamera(RequestUserIncrement param, String token) {
+        SSOUser ssoUser = userService.getSSOUserByToken(token);
+        return  this.unbindCamera(ssoUser.getId(),param.getId(),true,null,null);
+    }
+
+    @Override
+    public String bindCamera(RequestUserIncrement param, String token) {
+        SSOUser ssoUser = userService.getSSOUserByToken(token);
+        if(param.getId() == null || param.getSnCode() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        UserIncrement userIncrementEntity = this.getById(param.getId());
+        if(userIncrementEntity == null){
+            throw new BusinessException(ErrorCode.VALUE_NOT_EXIST);
+        }
+        Camera cameraEntity = cameraService.getBySnCode(param.getSnCode());
+        if(cameraEntity == null){
+            throw new BusinessException(CameraConstant.FAILURE_6003);
+        }
+
+        UserIncrement byCameraId = this.getByCameraId(cameraEntity.getId());
+        if(byCameraId != null){
+            throw new BusinessException(ErrorCode.CAMERA_GIVEN);
+        }
+        CameraDetail cameraDetailEntity = cameraDetailService.getByCameraId(cameraEntity.getId());
+        if(cameraDetailEntity == null){
+            throw new BusinessException(CameraConstant.FAILURE_6003);
+        }
+        if(cameraDetailEntity.getUserId() == null || cameraDetailEntity.getUserId().longValue() != ssoUser.getId().longValue()){
+            throw new BusinessException(CameraConstant.FAILURE_6005);
+        }
+        userIncrementEntity.setCameraId(cameraEntity.getId());
+        this.updateById(userIncrementEntity);
+
+        //解封所有场景 todo
+        //sceneFeignClient.unlockBeyondSpaceScenes(null, userId, cameraEntity.getId());
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public Page<ResponseUserIncrement> findIncrementList(RequestUserIncrement param, String token) {
+        SSOUser ssoUser = userService.getSSOUserByToken(token);
+        Page<ResponseUserIncrement> pageVo = new Page<>(param.getPageNum(), param.getPageSize());
+
+        List<Long> cameraIdList = null;
+        if(StringUtils.isNotEmpty(param.getSnCode().trim())){
+            List<Camera> cameraEntityList = cameraService.findLikeChildName(param.getSnCode().trim());
+            if(cameraEntityList == null || cameraEntityList.size()<=0){
+                return pageVo;
+            }
+            cameraIdList = cameraEntityList.stream().map(Camera::getId)
+                    .collect(Collectors.toList());
+        }
+        Page<UserIncrement> page = new Page<>(param.getPageNum(), param.getPageSize());
+        QueryWrapper<UserIncrement> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(UserIncrement::getUserId,ssoUser.getId());
+        if(cameraIdList!=null ){
+            queryWrapper.lambda().in(UserIncrement::getCameraId,cameraIdList);
+        }
+        Page<UserIncrement> pageEntity = this.page(page, queryWrapper);
+
+        List<ResponseUserIncrement> responseList = convert(pageEntity.getRecords());
+        pageVo.setTotal(pageEntity.getTotal());
+        pageVo.setRecords(responseList);
+        return pageVo;
+    }
+
+    public List<ResponseUserIncrement> convert(List<UserIncrement> list) {
+        List<ResponseUserIncrement> result = new ArrayList<>();
+        if(list == null){
+            return result;
+        }
+        ResponseUserIncrement responseUserIncrement = new ResponseUserIncrement();
+        for (UserIncrement userIncrementEntity : list) {
+            responseUserIncrement = new ResponseUserIncrement();
+            BeanUtils.copyProperties(userIncrementEntity, responseUserIncrement);
+            if(!ObjectUtils.isEmpty(responseUserIncrement.getIncrementStartTime())){
+                responseUserIncrement.setIncrementStartStr(DateUtil.date2String(responseUserIncrement.getIncrementStartTime(), DateUtil.YYYY_MM_DD_DATE_FORMAT));
+            }
+            if(!ObjectUtils.isEmpty(responseUserIncrement.getIncrementEndTime())){
+                responseUserIncrement.setIncrementEndStr(DateUtil.date2String(responseUserIncrement.getIncrementEndTime(), DateUtil.YYYY_MM_DD_DATE_FORMAT));
+            }
+            if(!ObjectUtils.isEmpty(responseUserIncrement.getCreateTime())){
+                responseUserIncrement.setCreateStr(DateUtil.date2String(responseUserIncrement.getCreateTime(), DateUtil.YYYY_MM_DD_DATE_FORMAT));
+            }
+            if(responseUserIncrement.getCameraId() != null){
+                Camera cameraEntity = cameraService.getById(responseUserIncrement.getCameraId());
+                responseUserIncrement.setSnCode(cameraEntity != null ? cameraEntity.getSnCode() : null);
+            }
+            responseUserIncrement.setIsExpire(userIncrementEntity.getIsExpired() != 0);
+            result.add(responseUserIncrement);
+        }
+        return result;
+    }
+
+
+    @Override
+    public ResponseUserIncrement findById(RequestUserIncrement param, String token) {
+        UserIncrement userIncrementEntity = this.getById(param.getId());
+        ResponseUserIncrement responseUserIncrement = new ResponseUserIncrement();
+        BeanUtils.copyProperties(userIncrementEntity, responseUserIncrement);
+        responseUserIncrement.setIncrementStartStr(DateUtil.date2String(responseUserIncrement.getIncrementStartTime(), DateUtil.YYYY_MM_DD_DATE_FORMAT));
+        responseUserIncrement.setIncrementEndStr(DateUtil.date2String(responseUserIncrement.getIncrementEndTime(), DateUtil.YYYY_MM_DD_DATE_FORMAT));
+        responseUserIncrement.setCreateStr(DateUtil.date2String(responseUserIncrement.getCreateTime(), DateUtil.YYYY_MM_DD_DATE_FORMAT));
+        return responseUserIncrement;
+    }
 }

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

@@ -1,23 +1,32 @@
 package com.fdkankan.user.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.common.constant.*;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.Base64Converter;
 import com.fdkankan.common.util.FileUtils;
+import com.fdkankan.common.validation.Variable;
+import com.fdkankan.goods.entity.CameraDetail;
+import com.fdkankan.goods.entity.CameraDetailNumEntity;
+import com.fdkankan.goods.service.ICameraDetailService;
+import com.fdkankan.goods.service.ICameraService;
 import com.fdkankan.user.common.SSOLoginHelper;
 import com.fdkankan.user.common.util.QiniuUpload;
 import com.fdkankan.user.entity.ReceiverInfo;
 import com.fdkankan.user.entity.SSOUser;
 import com.fdkankan.user.entity.User;
+import com.fdkankan.user.entity.UserIncrement;
 import com.fdkankan.user.mapper.IUserMapper;
+import com.fdkankan.user.request.RequestCamera;
 import com.fdkankan.user.request.RequestUser;
 import com.fdkankan.user.service.IReceiverInfoService;
 import com.fdkankan.user.service.IUserIncrementService;
 import com.fdkankan.user.service.IUserService;
 import com.fdkankan.user.service.RegisterService;
 import com.fdkankan.user.vo.ReceiverInfoVo;
+import com.fdkankan.user.vo.ResponseCamera;
 import com.fdkankan.user.vo.ResponseUser;
 import com.fdkankan.user.vo.SSOUserVo;
 import org.apache.commons.lang3.StringUtils;
@@ -28,7 +37,9 @@ import org.springframework.stereotype.Service;
 
 import java.io.File;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -52,6 +63,10 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
     private IUserIncrementService userIncrementService;
     @Autowired
     private IReceiverInfoService receiverInfoService;
+    @Autowired
+    private ICameraService cameraService;
+    @Autowired
+    private ICameraDetailService cameraDetailService;
 
     @Override
     public String register(RequestUser user) {
@@ -165,7 +180,8 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
         }
         return dbUser;
     }
-    private SSOUser getSSOUserByToken(String token){
+    @Override
+    public SSOUser getSSOUserByToken(String token){
         SSOUser ssoUser = ssoLoginHelper.loginCheck(token);
         if(ssoUser == null){
             throw new BusinessException(ErrorCode.USER_NOT_LOGIN);
@@ -235,20 +251,199 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
         if(param.getEmail() != null && !param.getEmail().matches(ConstantRegex.EMAIL_REGEX)){
             throw new BusinessException(ErrorCode.EMAIL_ERROR);
         }
-        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(User ::getEmail,param.getEmail());
-        List<User> list = this.list(queryWrapper);
-        SSOUser ssoUser = ssoLoginHelper.loginCheck(token);
-        if(list!=null && list.size()>0){
-            if(!list.get(0).getId().equals(ssoUser.getId())){
-                throw new BusinessException(ErrorCode.EMAIL_EXIST);
+        User user = this.getByEmail(param.getEmail());
+        SSOUser ssoUser = this.getSSOUserByToken(token);
+        if(user!=null && !user.getId().equals(ssoUser.getId())){
+            throw new BusinessException(ErrorCode.EMAIL_EXIST);
+        }
+        User dbUser = this.getById(ssoUser.getId());
+        dbUser.setEmail(param.getEmail());
+        if(!this.updateById(dbUser)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public String updateNickName(RequestUser param, String token) {
+        if (StringUtils.isEmpty(param.getNickName())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        //检验昵称敏感词
+        Set<String> set = Variable.sensitiveWord.getSensitiveWord(param.getNickName(), 1);
+        if (set != null && set.size() > 0){
+            throw new BusinessException(ErrorCode.NICKNAME_ERROR);
+        }
+        SSOUser ssoUser = this.getSSOUserByToken(token);
+        User dbUser = this.getById(ssoUser.getId());
+        dbUser.setNickName(param.getNickName());
+        if(!this.updateById(dbUser)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public String updateUserDetail(RequestUser param, String token) {
+        if (param.getNickName() != null){
+            //检验昵称敏感词
+            Set<String> set = Variable.sensitiveWord.getSensitiveWord(param.getNickName(), 1);
+            if (set != null && set.size() > 0){
+                throw new BusinessException(ErrorCode.NICKNAME_ERROR);
             }
         }
+
+        if(param.getEmail() != null && !param.getEmail().matches(ConstantRegex.EMAIL_REGEX)){
+            throw new BusinessException(ErrorCode.EMAIL_ERROR);
+        }
+        SSOUser ssoUser = this.getSSOUserByToken(token);
+        User emailUser = getByEmail(param.getEmail());
+        if(emailUser != null && emailUser.getId().longValue() != ssoUser.getId().longValue()){
+            throw new BusinessException(ErrorCode.EMAIL_EXIST);
+        }
+
         User dbUser = this.getById(ssoUser.getId());
+        dbUser.setNickName(param.getNickName());
         dbUser.setEmail(param.getEmail());
+        dbUser.setIsNotice(param.getIsNotice());
         if(!this.updateById(dbUser)){
             throw new BusinessException(ErrorCode.ERROR_MSG);
         }
         return ServerCode.SUCCESS.message();
     }
+
+    private User getByEmail(String email){
+        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(User ::getEmail,email);
+        List<User> list = this.list(queryWrapper);
+        if(list == null || list.size()<=0){
+            return null;
+        }
+        return list.get(0);
+    }
+
+    @Override
+    public Page<ResponseCamera> getCameraPage(RequestCamera param, String token) {
+        SSOUser ssoUser = this.getSSOUserByToken(token);
+        return cameraService.getPageByUser(param,ssoUser.getId());
+    }
+
+    @Override
+    public List<CameraDetailNumEntity> getCameraTypeNum(Integer type, String token) {
+        SSOUser ssoUser = this.getSSOUserByToken(token);
+        return cameraDetailService.getTypeNumByUser(type,ssoUser.getId());
+    }
+
+    @Override
+    public ResponseCamera getCameraDetailByChildName(RequestCamera param, String token) {
+        SSOUser ssoUser = this.getSSOUserByToken(token);
+        return cameraDetailService.getByChildName(ssoUser.getId(),param);
+    }
+
+    @Override
+    public HashMap<String, Object> getCameraDetailDeadline(RequestCamera param, String token) {
+        SSOUser ssoUser = this.getSSOUserByToken(token);
+        return cameraDetailService.getCameraDetailDeadline(ssoUser.getId(),param);
+    }
+
+    @Override
+    public Integer getCameraDetailNumber(String token) {
+        SSOUser ssoUser = this.getSSOUserByToken(token);
+        return cameraDetailService.getDeadLineNumber(ssoUser.getId());
+    }
+
+    @Override
+    public List<ResponseCamera> getCameraByUser(RequestCamera param, String token) {
+        SSOUser ssoUser = this.getSSOUserByToken(token);
+        return cameraService.getByUser(ssoUser.getId(),param.getCameraType());
+    }
+
+    @Override
+    public String unbindCamera(Long cameraId, String ids)throws Exception {
+        if(StringUtils.isEmpty(ids) && cameraId !=null){
+            ids = String.valueOf(cameraId);
+        }
+        String[] cameraIds = ids.split(",");
+        for (String id : cameraIds) {
+            cameraDetailService.unbind(Long.valueOf(id));
+            CameraDetail cameraDetailEntity = cameraDetailService.getByCameraId(Long.valueOf(id));
+            //相机解除绑定,一并解除权益绑定
+            UserIncrement userIncrementEntity = userIncrementService.getByCameraId(Long.valueOf(id));
+            if(userIncrementEntity != null){
+                userIncrementService.unbindCamera(cameraDetailEntity.getUserId(), userIncrementEntity.getId(), true,cameraDetailEntity,userIncrementEntity);
+            }
+
+            //todo
+//            if (cameraDetailEntity.getType() == 0){
+//                result2 = sceneService.updateUserIdByCameraId(null, Long.valueOf(id));
+//            }else {
+//                result2 = sceneService.updateUserIdByCameraIdPro(null, Long.valueOf(id));
+//            }
+//            if (result2.getCode() == Result.CODE_FAILURE){
+//                throw new Exception(LoginConstant.ERROR_MSG);
+//            }
+            RequestCamera camera = new RequestCamera();
+            camera.setCameraId(Long.valueOf(id));
+            deleteCooperationUser(camera,cameraDetailEntity);
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public String deleteCooperationUser(RequestCamera camera,CameraDetail cameraDetailEntity )throws Exception{
+        if(camera.getCameraId() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        if(cameraDetailEntity == null){
+            cameraDetailEntity = cameraDetailService.getByCameraId(camera.getCameraId());
+            if(cameraDetailEntity == null){
+                throw new BusinessException(CameraConstant.FAILURE_6003);
+            }
+        }
+        cameraDetailEntity.setCooperationUser(null);
+        cameraDetailService.updateById(cameraDetailEntity);
+
+        //删除相机和场景资源的关联关系 todo
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public String saveCooperationUser(RequestCamera camera, String token) throws Exception {
+        SSOUser ssoUser = getSSOUserByToken(token);
+        if(StringUtils.isEmpty(camera.getUserName()) || (camera.getCameraId() == null &&
+                StringUtils.isEmpty(camera.getIds()) ) || StringUtils.isEmpty(camera.getResourceIds())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        User userEntity = this.getUserByUserName(camera.getUserName());
+        if(userEntity == null){
+            throw new BusinessException(ErrorCode.USER_NOT_EXIST);
+        }
+
+        if(ssoUser.getId().longValue() == userEntity.getId().longValue()){
+            throw new BusinessException(ErrorCode.CAMERA_NOT_OWN);
+        }
+        if(StringUtils.isEmpty(camera.getIds()) && camera.getCameraId() !=null){
+            camera.setIds( String.valueOf(camera.getCameraId()));
+        }
+        RequestCamera deleteCamera = new RequestCamera();
+        String[] cameraIds = camera.getIds().split(",");
+        for (String cameraId : cameraIds) {
+            //删除旧的资源后再添加
+            deleteCamera.setCameraId(Long.valueOf(cameraId));
+            deleteCooperationUser(deleteCamera,null);
+
+            CameraDetail cameraDetailEntity = cameraDetailService.getByCameraId(Long.valueOf(cameraId));
+            cameraDetailEntity.setCooperationUser(userEntity.getId());
+            cameraDetailService.updateById(cameraDetailEntity);
+            //保存相机和场景资源的关联关系 todo
+
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public String sceneResourceByCameraId(RequestCamera camera) {
+        //todo
+        return null;
+    }
 }

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

@@ -0,0 +1,134 @@
+package com.fdkankan.user.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class ResponseCamera implements Serializable {
+
+    private static final long serialVersionUID = -8445289048065283322L;
+
+    private Long id;
+
+    //(value = "用户名", name = "userName")
+    private String userName;
+
+    //(value = "激活时间", name = "activatedTime")
+    private Date activatedTime;
+
+    //(value = "相机的Mac地址", name = "childName")
+    private String childName;
+
+    //(value = "余额", name = "balance")
+    private String balance;
+
+    //(value = "商品名称", name = "goodsName")
+    private String goodsName;
+
+    //(value = "商品图片", name = "imageUrl")
+    private String imageUrl;
+
+    //(value = "商品图片2", name = "pic")
+    private String pic;
+
+    //(value = "0表示客户,1表示员工,2表示赠送,3表示其他", name = "own")
+    private int own;
+
+    //(value = "已使用的容量(字符串)", name = "usedSpaceStr")
+    private String usedSpaceStr;
+
+    //(value = "总的容量(字符串)", name = "totalSpaceStr")
+    private String totalSpaceStr;
+
+    //(value = "已使用的容量", name = "usedSpace")
+    private double usedSpace;
+
+    //(value = "总的容量", name = "totalSpace")
+    private double totalSpace;
+
+    //(value = "出货类型,0测试使用,1线上出库,2经销商出库", name = "type")
+    private Integer type;
+
+    //(value = "", name = "type")
+    private String wifiName;
+
+    //(value = "0:双目  1:八目  9:转台 10:激光", name = "cameratype")
+    private String cameraType;
+
+    //(value = "容量到期时间", name = "spaceEndTime")
+    private String spaceEndTime;
+
+    private String spaceContent;
+
+    //(value = "国际,0国内,1国际", name = "country")
+    private int country;
+
+    //(value = "sn码", name = "snCode")
+    private String snCode;
+
+    //(value = "商品id", name = "goodsId")
+    private Long goodsId;
+
+    //(value = "容量到期时间(字符串)", name = "spaceEndStr")
+    private String spaceEndStr;
+
+    //(value = "容量大小", name = "space")
+    private Long space;
+
+    //(value = "容量大小(字符串)", name = "spaceStr")
+    private String spaceStr;
+
+    //(value = "容量到期时间是否小于7天", name = "isExpire")
+    private Boolean isExpire;
+
+    //(value = "昵称", name = "nickName")
+    private String nickName;
+
+    //(value = "相机容量表id", name = "spaceId")
+    private Long spaceId;
+
+    //(value = "用户id", name = "userId")
+    private Long userId;
+
+    //(value = "订单编码", name = "orderSn")
+    private String orderSn;
+
+    //(value = "经销商名字", name = "agentName")
+    private String agentName;
+
+    //(value = "入库时间", name = "inTime")
+    private Date inTime;
+
+    //(value = "出库时间", name = "outTime")
+    private Date outTime;
+
+    private Long companyId;
+
+    private String companyName;
+
+    private String recStatus;
+
+    private String address;
+
+    private Date createTime;
+
+    private Long cooperationUser;
+
+    private String cooperationUserName;
+
+    private Integer sceneNum;
+
+    private Date lastTime;
+
+    private Long agentFrameworkId;
+
+    private String agentFrameworkName;
+
+    private Integer surplusDate;
+
+    private Long userIncrementId;
+
+    private  ResponseUserIncrement responseUserIncrement;
+}

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

@@ -0,0 +1,51 @@
+package com.fdkankan.user.vo;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fdkankan.common.util.DateUtil;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class ResponseCameraSpace implements Serializable, Comparable<ResponseCameraSpace> {
+
+    private Long id;
+
+    private String childName;
+
+    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+    private Date spaceEndTime;
+
+    private int deadlineDays;
+
+    private String content;
+
+    private double usedSpace;
+
+    private String usedSpaceStr;
+
+    private double totalSpace;
+
+    private String totalSpaceStr;
+
+    private String spaceEndStr;
+
+    private Long space;
+
+    private String spaceStr;
+
+    private String snCode;
+
+    @Override
+    public int compareTo(ResponseCameraSpace o) {
+        if (o.getSpaceEndTime() != null) {
+            if (DateUtil.after(this.getSpaceEndTime(), o.getSpaceEndTime())) {
+                return 1;
+            } else if (DateUtil.after(o.getSpaceEndTime(), this.getSpaceEndTime())) {
+                return -1;
+            }
+        }
+        return 0;
+    }
+}

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

@@ -0,0 +1,31 @@
+package com.fdkankan.user.vo;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class ResponseCart extends RequestBase implements Serializable {
+
+    private static final long serialVersionUID = 7100084510470333803L;
+
+    private Long id;
+    /**
+     * t_goods的id
+     */
+    private Long goodsId;
+    /**
+     * 商品数量
+     */
+    private int goodsCount;
+    /**
+     * 价格
+     */
+    private BigDecimal price;
+    /**
+     * sku
+     */
+    private String skuSn;
+}

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

@@ -0,0 +1,74 @@
+package com.fdkankan.user.vo;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class ResponseDownloadOrder extends RequestBase implements Serializable {
+
+    private static final long serialVersionUID = 4972396312239681244L;
+
+    private Long id;
+    /**
+     * 订单号
+     */
+    private String orderSn;
+    /**
+     * 充值金额
+     */
+    private BigDecimal amount;
+    /**
+     * 支付宝的交易号或者微信支付订单号
+     */
+    private String number;
+    /**
+     * 付款方式,0表示微信,1表示支付宝,2表示paypal,3表示其他
+     */
+    private Integer payType;
+    /**
+     * 状态,0或-1表示未付款,-2表示已退款,1表示已付款
+     */
+    private Integer payStatus;
+
+    /**
+     * 状态,1表示新增值权益,2表示续费增值权益
+     */
+    private Integer status;
+    /**
+     * 交易时间
+     */
+    private Date tradeTime;
+    /**
+     * 用户表t_user的id,空表示后台管理员添加
+     */
+    private Long userId;
+
+    /**
+     * 0表示国内订单,1表示国外订单
+     */
+    private Integer abroad;
+
+    /**
+     * 购买数量
+     */
+    private Integer count;
+
+    /**
+     * 发票
+     */
+    private ResponseInvoice invoice;
+
+    /**
+     * 场景码
+     */
+    private String sceneNum;
+
+    /**
+     * 场景名
+     */
+    private String sceneName;
+}

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

@@ -0,0 +1,71 @@
+package com.fdkankan.user.vo;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class ResponseIncrementOrder extends RequestBase implements Serializable {
+
+    private static final long serialVersionUID = 4972396312239681244L;
+
+    private Long id;
+    /**
+     * 订单号
+     */
+    private String orderSn;
+    /**
+     * 充值金额
+     */
+    private BigDecimal amount;
+    /**
+     * 支付宝的交易号或者微信支付订单号
+     */
+    private String number;
+    /**
+     * 付款方式,0表示微信,1表示支付宝,2表示paypal,3表示其他
+     */
+    private Integer payType;
+    /**
+     * 状态,0或-1表示未付款,-2表示已退款,1表示已付款
+     */
+    private Integer payStatus;
+
+    /**
+     * 状态,1表示新增值权益,2表示续费增值权益
+     */
+    private Integer status;
+    /**
+     * 交易时间
+     */
+    private Date tradeTime;
+    /**
+     * 用户表t_user的id,空表示后台管理员添加
+     */
+    private Long userId;
+
+    /**
+     * 增值权益表t_user_increment的id,status为2时才有
+     */
+    private Long incrementId;
+    /**
+     * 0表示国内订单,1表示国外订单
+     */
+    private Integer abroad;
+
+    /**
+     * 购买数量
+     */
+    private Integer count;
+
+    private String name;
+
+    /**
+     * 发票
+     */
+    private ResponseInvoice invoice;
+
+}

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

@@ -0,0 +1,152 @@
+package com.fdkankan.user.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class ResponseInvoice implements Serializable {
+
+    private Long id;
+
+    //value = "订单id", name = "orderId")
+    private Long orderId;
+
+    /**
+     * 点数充值订单表的id
+     */
+    //value = "点数充值订单表的id(消费)", name = "virtual_order_id")
+    private Long virtualOrderId;
+
+    /**
+     * 会员权益订单表的id
+     */
+    //value = "会员权益订单表的id", name = "increment_order_id")
+    private Long incrementOrderId;
+
+    /**
+     * 会员权益订单表的id
+     */
+    //value = "下载订单表的id", name = "download_order_id")
+    private Long downloadOrderId;
+
+    //value = "用户id", name = "userId")
+    private Long userId;
+
+    //value = "发票类型,1表示不需要发票,2表示增值税普通发票,3表示增值税专用发票", name = "type")
+    private int type;
+
+    //value = "发票抬头(个人还是公司)", name = "title")
+    private String title;
+
+    //value = "描述", name = "description")
+    private String description;
+
+    //value = "税号", name = "code")
+    private String code;
+
+    //value = "公司名称", name = "organizedName")
+    private String organizedName;
+
+    //value = "公司地址", name = "organizedAddress")
+    private String organizedAddress;
+
+    //value = "注册电话", name = "registerPhone")
+    private String registerPhone;
+
+    //value = "开户银行", name = "bankName")
+    private String bankName;
+
+    //value = "银行账户", name = "bankAccount")
+    private String bankAccount;
+
+    //value = "0表示购买相机,1表示充值", name = "consumeType")
+    private int consumeType;
+
+    //value = "开票金额", name = "money")
+    private BigDecimal money;
+
+    //value = "相机主表的id", name = "cameraId")
+    private Long cameraId;
+
+    //value = "0:发票未开,1:发票已开", name = "finish")
+    private int finish;
+
+    //value = "电子发票收件邮箱", name = "emailAddress")
+    private String emailAddress;
+
+    //value = "收货人姓名", name = "shipName")
+    private String shipName;
+
+    //value = "收货地区", name = "shipArea")
+    private String shipArea;
+
+    //value = "收货地区路径", name = "shipAreaPath")
+    private String shipAreaPath;
+
+    //value = "收货地址", name = "shipAddress")
+    private String shipAddress;
+
+    //value = "收货邮编", name = "shipZipCode")
+    private String shipZipCode;
+
+    //value = "收货电话", name = "shipPhone")
+    private String shipPhone;
+
+    //value = "收货手机", name = "shipMobile")
+    private String shipMobile;
+
+    private Date createTime;
+
+    /**
+     * 发送状态:0未发送,1快递发送,2邮箱发送
+     */
+    //name = "send")
+    private Integer send;
+    /**
+     * 快递公司
+     */
+    //name = "express_company")
+    private String expressCompany;
+
+    /**
+     * 快递单号
+     */
+    //name = "express_number")
+    private String expressNumber;
+
+    /**
+     * 电子发票存放url
+     */
+    //name = "e_invoice")
+    private String eInvoice;
+
+    /**
+     * 备注
+     */
+    //name = "remarks")
+    private String remarks;
+
+    /**
+     * 订单详情信息
+     */
+    private ResponseOrder orderDetail;
+
+    /**
+     * 消费订单
+     */
+    private ResponseVirtualOrder responseVirtualOrder;
+
+    /**
+     * 权益订单
+     */
+    private ResponseIncrementOrder responseIncrementOrder;
+
+    /**
+     * 下载订单
+     */
+    private ResponseDownloadOrder responseDownloadOrder;
+
+}

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

@@ -0,0 +1,78 @@
+package com.fdkankan.user.vo;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class ResponseOrder implements Serializable {
+
+    private static final long serialVersionUID = 834859493610695062L;
+
+    private Long id;
+
+   //(value = "订单编号", name = "orderSn")
+    private String orderSn;
+
+   //(value = "下单时间", name = "orderTime")
+    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+    private Date orderTime;
+
+   //(value = "用户名", name = "userName")
+    private String userName;
+
+   //(value = "订单总额", name = "totalAmount")
+    private BigDecimal totalAmount;
+
+   //(value = "支付方式:0表示微信,1表示支付宝,2表示paypal,3表示其他,4表示货到付款", name = "paymentTypeName")
+    private Integer paymentTypeName;
+
+   //(value = "订单状态(未处理、已确认、已完成、已取消)", name = "orderStatus")
+    private String orderStatus;
+
+   //(value = "付款状态(未付款、已付款、已取消, 部分支付, 部分退款, 全额退款)", name = "paymentStatus")
+    private String paymentStatus;
+
+   //(value = "配送状态(未发货、部分发货、已发货、部分退货、已退货、已收货)", name = "shippingStatus")
+    private String shippingStatus;
+
+   //(value = "商品总额", name = "goodsAmount")
+    private BigDecimal goodsAmount;
+
+   //(value = "快递费", name = "expressAmount")
+    private BigDecimal expressAmount;
+
+   //(value = "订单完成时间", name = "finishTime")
+    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+    private Date finishTime;
+
+   //(value = "交易号", name = "tradeNum")
+    private String tradeNum;
+
+   //(value = "收货人姓名", name = "shipName")
+    private String shipName;
+
+   //(value = "收货地址", name = "shipAddress")
+    private String shipAddress;
+
+   //(value = "收货手机", name = "shipMobile")
+    private String shipMobile;
+
+   //(value = "订单详情", name = "orderItems")
+    private List<ResponseOrderItem> orderItems;
+
+   //(value = "发票", name = "invoice")
+    private ResponseInvoice invoice;
+
+    private String shipAreaPath;
+
+    private int orderCount;
+
+    private int abroad;
+
+    private Long userId;
+}

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

@@ -0,0 +1,71 @@
+package com.fdkankan.user.vo;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class ResponseOrderItem implements Serializable {
+
+    private static final long serialVersionUID = -1578220758423450788L;
+
+    private Long id;
+    /**
+     * 商品编码
+     */
+    //value = "商品编码", name = "goodsSn")
+    private String goodsSn;
+    /**
+     * sku编码
+     */
+    private String skuSn;
+    /**
+     * 商品名称
+     */
+    //value = "商品名称", name = "goodsName")
+    private String goodsName;
+    /**
+     * 商品价格
+     */
+    //value = "商品价格", name = "goodsPrice")
+    private BigDecimal goodsPrice;
+    /**
+     * 商品数量
+     */
+    //value = "商品数量", name = "goodsCount")
+    private Integer goodsCount;
+    /**
+     * 快递公司
+     */
+    //value = "快递公司", name = "expressName")
+    private String expressName;
+    /**
+     * 快递单号
+     */
+    //value = "快递单号", name = "expressNum")
+    private String expressNum;
+    /**
+     * 配送状态
+     */
+    //value = "配送状态", name = "shippingStatus")
+    private String shippingStatus;
+
+    //value = "描述", name = "description")
+    private String description;
+    //value = "图片", name = "pic")
+    private String pic;
+    //value = "商品id", name = "goodsId")
+    private Long goodsId;
+    //value = "订单id", name = "orderId")
+    private Long orderId;
+    @JsonIgnore
+    private String openid;
+
+    /**
+     * 0表示国内订单,1表示国外订单
+     */
+    private Integer abroad;
+
+}

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

@@ -0,0 +1,48 @@
+package com.fdkankan.user.vo;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ResponseUserIncrement extends RequestBase {
+
+    private String key;
+
+    private Long id;
+
+    private Long userId;
+
+    private Long cameraId;
+
+    private String orderSn;
+
+    /**
+     * 生效时间
+     */
+    private Date incrementStartTime;
+    /**
+     * 结束时间
+     */
+    private Date incrementEndTime;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    private String snCode;
+
+    private String incrementStartStr;
+
+    private String incrementEndStr;
+
+    private String createStr;
+
+    private Boolean isExpire;
+
+    private String keyWord;
+
+    private Integer isExpired;
+}

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

@@ -0,0 +1,60 @@
+package com.fdkankan.user.vo;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class ResponseVirtualOrder implements Serializable {
+
+    private static final long serialVersionUID = 2727347338052981033L;
+
+    private Long id;
+
+  //(value = "订单编号", name = "orderSn")
+    private String orderSn;
+
+  //(value = "充值金额", name = "userName")
+    private BigDecimal amount;
+
+  //(value = "点数", name = "points")
+    private int points;
+
+  //(value = "支付宝的交易号或者微信支付订单号", name = "number")
+    private String number;
+
+  //(value = "付款方式,0表示微信,1表示支付宝,2表示paypal,3表示其他", name = "payType")
+    private int payType;
+
+  //(value = "状态,0或-1表示消费失败,1表示成功", name = "payStatus")
+    private int payStatus;
+
+  //(value = "交易时间", name = "tradeTime")
+    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+    private Date tradeTime;
+
+  //(value = "状态,-1表示支出,1表示充值,0表示系统赠送,-2表示系统退充值", name = "status")
+    private int status;
+
+  //(value = "目的", name = "body")
+    private String body;
+
+  //(value = "场景序号", name = "sceneNum")
+    private String sceneNum;
+
+  //(value = "用户id", name = "userId")
+    private Long userId;
+
+  //(value = "相机id", name = "cameraId")
+    private Long cameraId;
+
+  //(value = "0表示国内订单,1表示国外订单", name = "abroad")
+    private int abroad;
+
+    private int orderCount;
+
+    private String childName;
+}

+ 71 - 0
4dkankan-common/src/main/java/com/fdkankan/common/constant/AppConstant.java

@@ -0,0 +1,71 @@
+package com.fdkankan.common.constant;
+
+// 4001-5000 App状态码
+public class AppConstant {
+    public static final String APP_USER_NAME = "APP_USER_NAME";
+
+    public static final int SUCCESS_CODE = 0;
+
+    public static final int FAILURE_CODE_4001 = 4001;
+    public static final String FAILURE_MSG_4001 = "验证码超时";
+
+    public static final int FAILURE_CODE_4002 = 4002;
+    public static final String FAILURE_MSG_4002 = "用户已经存在";
+
+    public static final int FAILURE_CODE_4003 = 4003;
+    public static final String FAILURE_MSG_4003 = "手机号已经被注册";
+
+    public static final int FAILURE_CODE_4004 = 4004;
+    public static final String FAILURE_MSG_4004 = "两次输入的密码不正确";
+
+    public static final int FAILURE_CODE_4005 = 4005;
+    public static final String FAILURE_MSG_4005 = "手机号与验证码不匹配";
+
+    public static final int FAILURE_CODE_4006 = 4006;
+    public static final String FAILURE_MSG_4006 = "验证码错误";
+
+    public static final int FAILURE_CODE_4007 = 4007;
+    public static final String FAILURE_MSG_4007 = "用户名不存在";
+
+    public static final int FAILURE_CODE_4008 = 4008;
+    public static final String FAILURE_MSG_4008 = "用户尚未登录";
+
+    public static final int FAILURE_CODE_4009 = 4009;
+    public static final String FAILURE_MSG_4009 = "异常错误";
+
+    public static final int FAILURE_CODE_4010 = 4010;
+    public static final String FAILURE_MSG_4010 = "绑定的相机不存在";
+
+    public static final int FAILURE_CODE_4011 = 4011;
+    public static final String FAILURE_MSG_4011 = "相机已经被绑定";
+
+    public static final int FAILURE_CODE_4012 = 4012;
+    public static final String FAILURE_MSG_4012 = "账号或密码错误";
+
+    public static final int FAILURE_CODE_4013 = 4013;
+    public static final String FAILURE_MSG_4013 = "昵称重复";
+
+    public static final int FAILURE_CODE_4014 = 4014;
+    public static final String FAILURE_MSG_4014 = "余额不足,无法生成模型,请前往网页端充值或上传时去掉生成模型选项";
+
+    public static final int FAILURE_CODE_4015 = 4015;
+    public static final String FAILURE_MSG_4015 = "昵称中包含敏感词";
+
+    public static final int FAILURE_CODE_4016 = 4016;
+    public static final String FAILURE_MSG_4016 = "参数为空";
+
+    public static final int FAILURE_CODE_4017 = 4017;
+    public static final String FAILURE_MSG_4017 = "场景为空";
+
+    public static final int FAILURE_CODE_4018 = 4018;
+    public static final String FAILURE_MSG_4018 = "场景不属于该相机";
+
+    public static final int FAILURE_CODE_4019 = 4019;
+    public static final String FAILURE_MSG_4019 = "场景序号为空";
+
+    public static final int FAILURE_CODE_4020 = 4020;
+    public static final String FAILURE_MSG_4020 = "相机未绑定用户";
+
+    public static final int FAILURE_CODE_4021 = 4021;
+    public static final String FAILURE_MSG_4021 = "开票失败,该订单已经开具发票";
+}

+ 50 - 0
4dkankan-common/src/main/java/com/fdkankan/common/constant/CameraConstant.java

@@ -0,0 +1,50 @@
+package com.fdkankan.common.constant;
+
+// 6001-7000 相机状态码
+public enum   CameraConstant {
+
+    FAILURE_6001(6001,"sn码重复"),
+    FAILURE_6002(6002,"退充值超过了充值总额"),
+    FAILURE_6003(6003,"该相机未被绑定,请前往 我的相机 先绑定相机后再进行授权 "),
+    FAILURE_6004(6004,"表示相机的点数超过了10万"),
+    FAILURE_6005(6005,"无权操作该相机"),
+    FAILURE_6006(6006,"不支持重复绑定"),
+    FAILURE_6007(6007,"八目相机不支持解除绑定"),
+    FAILURE_6008(6008,"相机容量不足"),
+    FAILURE_6009(6009,"data.fdage文件不存在"),
+    FAILURE_6010(6010,"该序列号已被绑定"),
+    FAILURE_6011(6011,"查询不到企业相机列表"),
+    FAILURE_6012(6012,"相机未绑定用户"),
+    FAILURE_6013(6013,"必须输入需迁相机所绑定用户的验证码"),
+    FAILURE_6014(6014,"必须输入目标相机所绑定用户的验证码"),
+    FAILURE_6015(6015,"该相机已添加协作者,请先取消协作后再添加"),
+    FAILURE_6016(6016,"部分相机已添加协作者,请先取消协作后再添加"),
+    FAILURE_6017(6017,"设备已出库,不可删除"),
+    FAILURE_6018(6018,"设备类型不存在"),
+    FAILURE_6019(6019,"sn码未填写"),
+    FAILURE_6020(6020,"sn码不存在"),
+    FAILURE_6021(6021,"出库类型未填写"),
+    FAILURE_6022(6022,"出库类型不存在"),
+    FAILURE_6023(6023,"经销商未填写"),
+    FAILURE_6024(6024,"经销商类型不存在"),
+    FAILURE_6025(6025,"sn码未出库"),
+    FAILURE_6026(6026,"客户名称未填写"),
+    FAILURE_6027(6027,"客户名称不存在"),
+    FAILURE_6028(6028,"相机类型不正确!"),
+    ;
+    private Integer code;
+    private String message;
+
+    private CameraConstant(Integer code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+
+    public Integer code() {
+        return code;
+    }
+
+    public String message() {
+        return message;
+    }
+}

+ 6 - 2
4dkankan-common/src/main/java/com/fdkankan/common/constant/ErrorCode.java

@@ -28,8 +28,12 @@ public enum ErrorCode {
     V_CODE_ERROR(40019, "验证码错误"),
     NICKNAME_ERROR(40020, "昵称包含敏感词"),
     V_CODE_TIME_NOT_OUT(40021, "60秒内不能重复获取验证码"),
-    PHONE_CODE_TO_MANY(40021, "手机验证码获取验证码次数过多,请明天再试"),
-    EMAIL_EXIST(40022, "手机验证码获取验证码次数过多,请明天再试"),
+    PHONE_CODE_TO_MANY(40022, "手机验证码获取验证码次数过多,请明天再试"),
+    EMAIL_EXIST(40023, "手机验证码获取验证码次数过多,请明天再试"),
+    CAMERA_BIND_NO_EXIST(40024, "绑定的相机不存在"),
+    VALUE_NOT_EXIST(40025, "当前增值权益不存在"),
+    CAMERA_NOT_OWN(40026, "不能将相机分配给自己"),
+    CAMERA_GIVEN(40027, "当前相机已被授权,请选择另外相机绑定"),
 
 
 

+ 5 - 0
4dkankan-common/src/main/java/com/fdkankan/common/exception/BusinessException.java

@@ -1,5 +1,6 @@
 package com.fdkankan.common.exception;
 
+import com.fdkankan.common.constant.CameraConstant;
 import com.fdkankan.common.constant.ErrorCode;
 import lombok.Data;
 
@@ -15,6 +16,10 @@ public class BusinessException extends RuntimeException {
         this.code = errorCode.code();
         this.message = errorCode.message();
     }
+    public BusinessException (CameraConstant errorCode){
+        this.code = errorCode.code();
+        this.message = errorCode.message();
+    }
     public BusinessException (int code,String msg){
         this.code = code;
         this.message = msg;

+ 411 - 0
4dkankan-common/src/main/java/com/fdkankan/common/util/DateUtil.java

@@ -0,0 +1,411 @@
+package com.fdkankan.common.util;
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+@Slf4j
+public final class DateUtil {
+
+    /**
+     * 时间格式
+     */
+    public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
+
+    public static final String YYYY_MM_DD_DATE_FORMAT = "yyyy-MM-dd";
+
+    public static final String YYYYMMDD_DATA_FORMAT = "yyyyMMdd";
+
+    public static final String HHMMSS_DATA_FORMAT = "HHmmss";
+
+    public static final String YYYYMMDDHHMMSSSSS_DATA_FORMAT = "yyyyMMddHHmmssSSS";
+
+    public static final String YYYYMMDDHHMMSS_DATA_FORMAT = "yyyyMMddHHmmss";
+
+    public static final String YYMMDDHHMMSS_DATA_FORMAT = "yyMMddHHmmss";
+
+    public static final String YYMMDDHHMM_DATA_FORMAT = "yyyyMMddHHmm";
+
+
+    /**
+     * 过去的Date对象,TIMESTAMP值可以从1970的某时的开始一直到2037年
+     */
+    public static final Date PASSED_DATE = DateUtil.string2Date("2000-01-01 00:00:00",
+            DEFAULT_DATE_FORMAT);;
+    /**
+     * 永久的Date对象,TIMESTAMP值可以从1970的某时的开始一直到2037年
+     */
+    public static final Date FOREVER_DATE = DateUtil.string2Date("9999-12-31 23:59:59",
+            DEFAULT_DATE_FORMAT);
+
+    private DateUtil() {
+    }
+
+    /**
+     * 把时间转成北京时间的时间戳
+     *
+     * @param input
+     * @return
+     */
+    public static long convert2CST(String input) {
+        SimpleDateFormat dff = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        dff.setTimeZone(TimeZone.getTimeZone("GMT+08"));
+
+        long result = -1;
+        try {
+            Date cstDate = dff.parse(input);
+            result = cstDate.getTime();
+        } catch (Exception e) {
+            log.error("convert2CST meet exception.", e);
+        }
+
+        return result;
+    }
+
+    /**
+     * 把时间戳转成北京时间的字符串表示
+     *
+     * @param input
+     * @return
+     */
+    public static String convert2CST(long input) {
+        SimpleDateFormat dff = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        dff.setTimeZone(TimeZone.getTimeZone("GMT+08"));
+
+        try {
+            return dff.format(new Date(input));
+        } catch (Exception e) {
+            log.error("convert2CST meet exception.", e);
+        }
+
+        return "";
+    }
+
+
+    /**
+     * 判断两个日期是否是同一天
+     *
+     * @param dateA
+     *            日期1
+     * @param dateB
+     *            日期2
+     * @return true:false
+     */
+    public static boolean isSameDay(Date dateA, Date dateB) {
+        Calendar calDateA = Calendar.getInstance();
+        calDateA.setTime(dateA);
+
+        Calendar calDateB = Calendar.getInstance();
+        calDateB.setTime(dateB);
+
+        return calDateA.get(Calendar.YEAR) == calDateB.get(Calendar.YEAR)
+                && calDateA.get(Calendar.MONTH) == calDateB.get(Calendar.MONTH)
+                && calDateA.get(Calendar.DAY_OF_MONTH) == calDateB.get(Calendar.DAY_OF_MONTH);
+    }
+
+    /**
+     * 将Java日期转成以秒为单位,去除毫秒信息
+     * java中Date类中的getTime()是获取时间戳的,java中生成的时间戳精确到毫秒级别,而unix中精确到秒级别,
+     * 所以通过java生成的时间戳需要除以1000
+     *
+     * @param date
+     * @return
+     */
+    public static Date truncMesc(Date date) {
+        String strDate = DateUtil.date2String(date, DEFAULT_DATE_FORMAT);
+
+        Date result = null;
+        try {
+            SimpleDateFormat dateFmt = new SimpleDateFormat(DEFAULT_DATE_FORMAT);
+            result = dateFmt.parse(strDate);
+        } catch (Exception e) {
+            log.error("truncMesc meet exception", e);
+        }
+
+        return result;
+    }
+
+    /**
+     * 判断当前时间是否在指定的有效期内
+     *
+     * @param beginDate
+     *            开始时间
+     * @param endDate
+     *            结束时间
+     * @return true : false
+     */
+    public static boolean isInPeriod(Date beginDate, Date endDate) {
+        Date now = new Date();
+
+        if (beginDate == null || endDate == null) {
+            log.error("isInPeriod meet null argument.");
+            throw new IllegalArgumentException("isInPeriod meet null argument.");
+        }
+
+        if (beginDate.before(endDate) == false) {
+            log.error("isInPeriod meet invalid date argument.");
+            throw new IllegalArgumentException("isInPeriod meet invalid date argument.");
+        }
+
+        if (now.after(beginDate) && now.before(endDate)) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * 判断目标时间是否比当前时间早
+     *
+     * @param targetDate
+     *            需比较的时间
+     * @return
+     */
+    public static boolean isBeforeNow(Date targetDate) {
+        if (targetDate == null) {
+            log.error("isBeforeNow meet null argument.");
+            throw new IllegalArgumentException("isBeforeNow meet null argument.");
+        }
+
+        Date now = new Date();
+
+        return (now.after(targetDate)) ? true : false;
+    }
+
+    /**
+     * 判断目标时间是否比当前时间早
+     *
+     * @param targetDate
+     *            需比较的时间
+     * @return
+     */
+    public static boolean isBeforeNow2(Date targetDate) {
+        if (targetDate == null) {
+            log.error("isBeforeNow meet null argument.");
+            throw new IllegalArgumentException("isBeforeNow meet null argument.");
+        }
+
+        Date now = new Date();
+
+        return (now.after(targetDate)) ? false : true;
+    }
+
+    /**
+     * @param beginDate
+     *            开始时期
+     * @param days
+     *            偏离天数,> 0 往后推算; < 0 往前推算
+     * @return
+     */
+    public static Date daysCalculate(Date beginDate, int days) {
+        return timesCalculate(beginDate, days, GregorianCalendar.DATE);
+    }
+
+    /**
+     * @param beginDate
+     *            开始时期
+     * @return
+     */
+    public static Date hoursCalculate(Date beginDate, int hours) {
+        return timesCalculate(beginDate, hours, GregorianCalendar.HOUR);
+    }
+
+    public static Date timesCalculate(Date beginDate, int times, int type) {
+        /*
+         * GregorianCalendar类的add(int field,int amount)方法表示年月日加减.
+         * field参数表示年,月,周,日等. amount参数表示要加减的数量.
+         */
+        GregorianCalendar gc = new GregorianCalendar();
+        gc.setTime(beginDate);
+        gc.add(type, times);
+        return gc.getTime();
+    }
+
+    /**
+     * 将日期对象按照格式转成字符串
+     *
+     * @param date
+     *            日期对象
+     * @param format
+     *            日期格式
+     * @return 字符串
+     */
+    public static String date2String(Date date, String format) {
+        if (date == null) {
+            log.error("date2String meet null argument.");
+            throw new IllegalArgumentException("argument is null.");
+        }
+
+        if (format == null) {
+            format = DEFAULT_DATE_FORMAT;
+        }
+
+        String result = null;
+        try {
+            DateFormat fmt = new SimpleDateFormat(format);
+            result = fmt.format(date);
+        } catch (Exception e) {
+            log.error("date2String meet exception. " + e.getLocalizedMessage());
+        }
+        return result;
+    }
+
+    /**
+     * 将字符串转成日期对象
+     *
+     * @param date
+     *            日期字符串
+     * @param format
+     *            日期格式
+     * @return 日期对象
+     */
+    public static Date string2Date(String date, String format) {
+        if (date == null) {
+            log.error("string2Date meet null argument.");
+            throw new IllegalArgumentException("argument is null.");
+        }
+
+        if (format == null) {
+            format = DEFAULT_DATE_FORMAT;
+        }
+
+        Date result = null;
+        try {
+            DateFormat fmt = new SimpleDateFormat(format);
+            result = fmt.parse(date);
+        } catch (Exception e) {
+            log.error("string2Date meet exception. " + e.getLocalizedMessage());
+        }
+
+        return result;
+    }
+
+    /**
+     * java时间戳转换到php时间戳
+     *
+     * @param time
+     * @return
+     */
+    public static long javaTimestamp(long time) {
+        if (time <= 0) {
+            log.error("javaTimestamp meet null argument.");
+            throw new IllegalArgumentException("argument is null.");
+        }
+        // mysql 时间戳只有10位,只精确到秒,而Java时间戳精确到毫秒,故要做处理
+        String dateline = String.valueOf(time);
+        dateline = dateline.substring(0, 10);
+        return Long.parseLong(dateline);
+    }
+
+    public static long javaTimestamp(Date now) {
+        return javaTimestamp(now.getTime());
+    }
+
+    /**
+     * 计算两个日期之间相差的天数
+     *
+     * @param smdate
+     *            较小的时间
+     * @param bdate
+     *            较大的时间
+     * @return 相差天数
+     * @throws ParseException
+     */
+    public static int daysBetween(Date smdate, Date bdate) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        try {
+            smdate = sdf.parse(sdf.format(smdate));
+            bdate = sdf.parse(sdf.format(bdate));
+        } catch (ParseException e) {
+            log.error("ParseException:", e);
+        }
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(smdate);
+        long time1 = cal.getTimeInMillis();
+        cal.setTime(bdate);
+        long time2 = cal.getTimeInMillis();
+        long between_days = (time2 - time1) / (1000 * 3600 * 24);
+
+        return Integer.parseInt(String.valueOf(between_days));
+    }
+
+    /**
+     * 调整日期
+     * @param date
+     * @param num
+     * @param type calendar.DATE
+     * @return 相差天数
+     * @throws ParseException
+     */
+    public static Date delay(Date date,int num, int type) {
+        Calendar calendar = new GregorianCalendar();
+        calendar.setTime(date);
+        calendar.add(type, num);// 把日期往后增加一天.整数往后推,负数往前移动
+        date = calendar.getTime(); // 这个时间就是日期往后推一天的结果
+        return date;
+    }
+
+    /**
+     * 获取某年某月的最后一天日期
+     */
+    public static Date getLastDayOfMonth(int year, int month) {
+        Calendar cal = Calendar.getInstance();
+        cal.set(Calendar.YEAR, year);
+        cal.set(Calendar.MONTH, month - 1);
+        int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
+        cal.set(Calendar.DAY_OF_MONTH, lastDay);
+        return cal.getTime();
+    }
+
+    /**
+     * 获取某年某月的第一天 日期
+     */
+    public static Date getFisrtDayOfMonth(int year, int month) {
+        Calendar cal = Calendar.getInstance();
+        cal.set(Calendar.YEAR, year);
+        cal.set(Calendar.MONTH, month - 1);
+        int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
+        cal.set(Calendar.DAY_OF_MONTH, firstDay);
+        return cal.getTime();
+    }
+
+    /**
+     * 根据开始时间和结束时间返回时间段内的时间集合
+     *
+     * @param beginDate
+     * @param endDate
+     * int calendarType 差距的时间 如获取间隔为一天 输入Calendar.DAY_OF_MONTH
+     * @return List
+     */
+    public static List<Date> getDatesBetweenTwoDate(Date beginDate, Date endDate, int calendarType) {
+        List<Date> lDate = new ArrayList<Date>();
+        lDate.add(beginDate);// 把开始时间加入集合
+        Calendar cal = Calendar.getInstance();
+        // 使用给定的 Date 设置此 Calendar 的时间
+        cal.setTime(beginDate);
+        boolean bContinue = true;
+        while (bContinue) {
+            // 根据日历的规则,为给定的日历字段添加或减去指定的时间量
+            cal.add(calendarType, 1);
+            // 测试此日期是否在指定日期之后
+            if (endDate.after(cal.getTime())) {
+                lDate.add(cal.getTime());
+            } else {
+                break;
+            }
+        }
+        lDate.add(endDate);// 把结束时间加入集合
+        return lDate;
+    }
+
+    public static boolean after(Date date1,Date date2){
+        Calendar c1 = Calendar.getInstance();
+        c1.setTime(date1);
+        Calendar c2 = Calendar.getInstance();
+        c2.setTime(date2);
+        return c2.after(c1);
+    }
+}

+ 141 - 0
4dkankan-common/src/main/java/com/fdkankan/common/util/FileSizeUtil.java

@@ -0,0 +1,141 @@
+package com.fdkankan.common.util;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.text.DecimalFormat;
+
+public class FileSizeUtil {
+
+    private static final String TAG=FileSizeUtil.class.getSimpleName();
+
+    public static final int SIZETYPE_B = 1;//获取文件大小单位为B的double值
+    public static final int SIZETYPE_KB = 2;//获取文件大小单位为KB的double值
+    public static final int SIZETYPE_MB = 3;//获取文件大小单位为MB的double值
+    public static final int SIZETYPE_GB = 4;//获取文件大小单位为GB的double值
+
+    /**
+     * 获取文件指定文件的指定单位的大小
+     *
+     * @param filePath 文件路径
+     * @param sizeType 获取大小的类型1为B、2为KB、3为MB、4为GB
+     * @return double值的大小
+     */
+    public static double getFileOrFilesSize(String filePath, int sizeType) {
+        File file = new File(filePath);
+        long blockSize = 0;
+        try {
+            if (file.isDirectory()) {
+                blockSize = getFileSizes(file);
+            } else {
+                blockSize = getFileSize(file);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return formetFileSize(blockSize, sizeType);
+    }
+
+    /**
+     * 调用此方法自动计算指定文件或指定文件夹的大小
+     *
+     * @param filePath 文件路径
+     * @return 计算好的带B、KB、MB、GB的字符串
+     */
+    public static String getAutoFileOrFilesSize(String filePath) {
+        File file = new File(filePath);
+        long blockSize = 0;
+        try {
+            if (file.isDirectory()) {
+                blockSize = getFileSizes(file);
+            } else {
+                blockSize = getFileSize(file);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return formatFileSize(blockSize);
+    }
+
+    /**
+     * 获取指定文件大小
+     */
+    private static long getFileSize(File file) throws Exception {
+        long size = 0;
+        if (file.exists()) {
+            FileInputStream fis = null;
+            fis = new FileInputStream(file);
+            size = fis.available();
+        } else {
+            file.createNewFile();
+        }
+        return size;
+    }
+
+    /**
+     * 获取指定文件夹
+     */
+    private static long getFileSizes(File f) throws Exception {
+        long size = 0;
+        File flist[] = f.listFiles();
+        assert flist != null;
+        for (File file : flist) {
+            if (file.isDirectory()) {
+                size = size + getFileSizes(file);
+            } else {
+                size = size + getFileSize(file);
+            }
+        }
+        return size;
+    }
+
+    /**
+     * 转换文件大小
+     */
+    public static String formatFileSize(long fileS) {
+        DecimalFormat df = new DecimalFormat("#.00");
+        String fileSizeString = "";
+        String wrongSize = "0B";
+        if (fileS == 0) {
+            return wrongSize;
+        }
+        if (fileS < 1024) {
+            fileSizeString = df.format((double) fileS) + "B";
+        } else if (fileS < 1048576) {
+            fileSizeString = df.format((double) fileS / 1024) + "KB";
+        } else if (fileS < 1073741824) {
+            fileSizeString = df.format((double) fileS / 1048576) + "MB";
+        } else if (fileS < 1099511627776L){
+            fileSizeString = df.format((double) fileS / 1073741824) + "GB";
+        } else if (fileS < 1125899906842624L){
+            fileSizeString = df.format((double) fileS / 1099511627776L) + "TB";
+        } else {
+            fileSizeString = df.format((double) fileS / 1125899906842624L) + "PB";
+        }
+        return fileSizeString;
+    }
+
+    /**
+     * 转换文件大小,指定转换的类型
+     */
+    public static double formetFileSize(long fileS, int sizeType) {
+        DecimalFormat df = new DecimalFormat("#.00");
+        double fileSizeLong = 0;
+        switch (sizeType) {
+            case SIZETYPE_B:
+                fileSizeLong = Double.valueOf(df.format((double) fileS));
+                break;
+            case SIZETYPE_KB:
+                fileSizeLong = Double.valueOf(df.format((double) fileS / 1024));
+                break;
+            case SIZETYPE_MB:
+                fileSizeLong = Double.valueOf(df.format((double) fileS / 1048576));
+                break;
+            case SIZETYPE_GB:
+                fileSizeLong = Double.valueOf(df.format((double) fileS / 1073741824));
+                break;
+            default:
+                break;
+        }
+        return fileSizeLong;
+    }
+}