Bladeren bron

Merge remote-tracking branch 'origin/master'

dengsixing 3 jaren geleden
bovenliggende
commit
36e80f3da4
29 gewijzigde bestanden met toevoegingen van 1679 en 26 verwijderingen
  1. 110 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/common/HttpHelper.java
  2. 124 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/controller/manager/ManagerCompanyController.java
  3. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/Company.java
  4. 26 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/request/RequestCompany.java
  5. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ICameraDetailService.java
  6. 5 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ICompanyService.java
  7. 10 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraDetailServiceImpl.java
  8. 48 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CompanyServiceImpl.java
  9. 120 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/controller/manager/ManagerInvoiceController.java
  10. 7 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/mapper/IInvoiceMapper.java
  11. 33 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/mapper/IOrderMapper.java
  12. 24 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/mapper/IVirtualOrderMapper.java
  13. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/IDownloadOrderService.java
  14. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/IIncrementOrderService.java
  15. 15 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/IInvoiceService.java
  16. 20 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/IOrderService.java
  17. 17 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/IVirtualOrderService.java
  18. 10 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/DownloadOrderServiceImpl.java
  19. 10 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/IncrementOrderServiceImpl.java
  20. 115 10
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/InvoiceServiceImpl.java
  21. 43 8
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/OrderServiceImpl.java
  22. 45 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/VirtualOrderServiceImpl.java
  23. 77 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/controller/manager/ManagerController.java
  24. 4 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/entity/Manager.java
  25. 32 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/request/RequestTrade.java
  26. 29 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/IManagerService.java
  27. 689 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/ManagerServiceImpl.java
  28. 19 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/vo/ResponseManager.java
  29. 39 0
      4dkankan-center-platform/src/main/resources/mapper/order/InvoiceMapper.xml

+ 110 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/common/HttpHelper.java

@@ -0,0 +1,110 @@
+package com.fdkankan.platform.common;
+
+import javax.net.ssl.*;
+import javax.servlet.http.HttpServletRequest;
+import java.io.*;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+
+public class HttpHelper {
+    private static class TrustAnyTrustManager implements X509TrustManager {
+
+        public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
+            // TODO Auto-generated method stub
+
+        }
+
+        public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
+            // TODO Auto-generated method stub
+
+        }
+
+        public X509Certificate[] getAcceptedIssuers() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+    }
+
+    private static class TrustAnyHostnameVerifier implements HostnameVerifier {
+
+        public boolean verify(String arg0, SSLSession arg1) {
+            // TODO Auto-generated method stub
+            return false;
+        }
+    }
+
+    /**
+     * 获取请求Body
+     *
+     * @param request
+     * @return
+     */
+    public static String getBodyString(HttpServletRequest request) {
+        StringBuilder sb = new StringBuilder();
+        InputStream inputStream = null;
+        BufferedReader reader = null;
+        try {
+            inputStream = request.getInputStream();
+            reader = new BufferedReader(new InputStreamReader(inputStream, Charset.forName("UTF-8")));
+            String line = "";
+            while ((line = reader.readLine()) != null) {
+                sb.append(line);
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            if (inputStream != null) {
+                try {
+                    inputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            if (reader != null) {
+                try {
+                    reader.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return sb.toString();
+    }
+
+    public static byte[] post(String url, String content, String charset)
+            throws NoSuchAlgorithmException, KeyManagementException,
+            IOException {
+        SSLContext sc = SSLContext.getInstance("SSL");
+        sc.init(null, new TrustManager[] { new TrustAnyTrustManager() },
+                new java.security.SecureRandom());
+
+        URL console = new URL(url);
+        HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
+        conn.setSSLSocketFactory(sc.getSocketFactory());
+        conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
+        conn.setDoOutput(true);
+        conn.connect();
+        DataOutputStream out = new DataOutputStream(conn.getOutputStream());
+        out.write(content.getBytes(charset));
+        // 刷新、关闭
+        out.flush();
+        out.close();
+        InputStream is = conn.getInputStream();
+        if (is != null) {
+            ByteArrayOutputStream outStream = new ByteArrayOutputStream();
+            byte[] buffer = new byte[1024];
+            int len = 0;
+            while ((len = is.read(buffer)) != -1) {
+                outStream.write(buffer, 0, len);
+            }
+            is.close();
+            return outStream.toByteArray();
+        }
+        return null;
+    }
+}

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

@@ -0,0 +1,124 @@
+package com.fdkankan.platform.goods.controller.manager;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.common.constant.ConstantFilePath;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.ServerCode;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.platform.goods.entity.Company;
+import com.fdkankan.platform.goods.request.RequestCompany;
+import com.fdkankan.platform.goods.service.ICameraDetailService;
+import com.fdkankan.platform.goods.service.ICompanyService;
+import com.fdkankan.platform.user.service.IManagerService;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * 企业信息模块
+ */
+@Log4j2
+@RestController
+@RequestMapping("/api/manager/company")
+public class ManagerCompanyController {
+
+    @Autowired
+    private ICompanyService companyService;
+
+    @Autowired
+    private ICameraDetailService cameraDetailService;
+
+    @Autowired
+    private IManagerService managerService;
+
+    /**
+     * 新增或修改企业信息
+     * id               id有则修改,无则新增
+     * companyName      企业名称
+     * topLogo          顶部logo
+     * markerLogo       地面点位logo
+     * floorLogo        地面logo
+     * qrLogo           二维码logo
+     * managerId        客户账号id
+     * cameraDelete     默认注册,0未注册,1注册
+     * showLogo         是否显示初始logo,0隐藏,1显示
+     */
+    @PostMapping(value = "/insertOrUpdate")
+    public String insertOrUpdate(@RequestBody RequestCompany param){
+        return companyService.saveOrUpdateByParam(param);
+    }
+
+    /**
+     * 根据id查询企业信息
+     * id       企业id
+     * @return
+     */
+    @PostMapping(value = "/findById")
+    public Company findById(@RequestBody RequestCompany param){
+        if(StringUtils.isEmpty(param.getId())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        Company company = companyService.getById(param.getId());
+        if(company!=null && "A".equals(company.getRecStatus())){
+            return company;
+        }
+        return null;
+    }
+
+    /**
+     * 删除企业信息
+     * id       企业id
+     * @return
+     */
+    @PostMapping(value = "/deleteById")
+    public String deleteById(@RequestBody RequestCompany param){
+        if(StringUtils.isEmpty(param.getId())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        companyService.removeById(param.getId());
+        cameraDetailService.updateCompanyId(param.getId());
+        return ServerCode.SUCCESS.message();
+    }
+
+    /**
+     * 企业列表
+     * companyName      企业名称
+     */
+    @PostMapping(value = "/list")
+    public Page<Company> list(@RequestBody RequestCompany param){
+        return companyService.pageList(param);
+    }
+
+    /**
+     * 所有企业
+     * @return
+     */
+    @PostMapping(value = "/listAll")
+    public List<Company> listAll(){
+        return companyService.list(new QueryWrapper<Company>().lambda().eq(Company::getRecStatus,"A"));
+    }
+
+    /**
+     * 上传企业logo
+     * file         文件流
+     * @return
+     */
+    @PostMapping("uploadLogoImg")
+    public String uploadLogoImg(@RequestParam(value = "file",required = false) MultipartFile file) throws Exception {
+        String filePath = ConstantFilePath.AGENT_PATH + "company/";
+        Long date = System.currentTimeMillis();
+        String fileName = "logo" + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
+        File targetFile = new File(filePath + File.separator + date + "_" + fileName);
+        if(!targetFile.getParentFile().exists()){
+            targetFile.getParentFile().mkdirs();
+        }
+        file.transferTo(targetFile);
+        return  "/agent/company/" + date + "_" + fileName;
+    }
+}

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

@@ -102,4 +102,6 @@ public class Company implements Serializable {
     private Integer tbStatus;
 
 
+    private String managerName;
+
 }

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

@@ -0,0 +1,26 @@
+package com.fdkankan.platform.goods.request;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+@Data
+public class RequestCompany extends RequestBase {
+
+    private Long id;
+
+    private String companyName;
+
+    private String topLogo;
+
+    private String markerLogo;
+
+    private String floorLogo;
+
+    private String qrLogo;
+
+    private Integer showLogo;
+
+    private Long managerId;
+
+    private Integer cameraDelete;
+}

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

@@ -60,4 +60,6 @@ public interface ICameraDetailService extends IService<CameraDetail> {
     Page<ResponseCamera>  queryCompanyCameraListByParams(RequestCamera param);
 
     Page<ResponseCamera> cameraList(RequestCamera param);
+
+    void updateCompanyId(Long companyId);
 }

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

@@ -1,7 +1,9 @@
 package com.fdkankan.platform.goods.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.platform.goods.entity.Company;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.platform.goods.request.RequestCompany;
 
 /**
  * <p>
@@ -13,4 +15,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ICompanyService extends IService<Company> {
 
+    String saveOrUpdateByParam(RequestCompany param);
+
+    Page<Company> pageList(RequestCompany param);
 }

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

@@ -476,5 +476,14 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
                 start,param.getPageSize(),"a.create_time desc");
         pageVo.setTotal(count);
         pageVo.setRecords(result);
-        return pageVo;    }
+        return pageVo;
+    }
+
+    @Override
+    public void updateCompanyId(Long companyId) {
+        UpdateWrapper<CameraDetail> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(CameraDetail::getCompanyId,null);
+        updateWrapper.lambda().eq(CameraDetail::getCompanyId,companyId);
+        this.update(updateWrapper);
+    }
 }

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

@@ -1,10 +1,23 @@
 package com.fdkankan.platform.goods.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+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.platform.goods.entity.Company;
 import com.fdkankan.platform.goods.mapper.ICompanyMapper;
+import com.fdkankan.platform.goods.request.RequestCompany;
 import com.fdkankan.platform.goods.service.ICompanyService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.platform.user.entity.Manager;
+import com.fdkankan.platform.user.service.IManagerService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import java.util.List;
 
 /**
  * <p>
@@ -17,4 +30,38 @@ import org.springframework.stereotype.Service;
 @Service
 public class CompanyServiceImpl extends ServiceImpl<ICompanyMapper, Company> implements ICompanyService {
 
+    @Autowired
+    private IManagerService managerService;
+
+    @Override
+    public String saveOrUpdateByParam(RequestCompany param) {
+        Company entity = new Company();
+        BeanUtils.copyProperties(param, entity);
+        if(!this.saveOrUpdate(entity)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public Page<Company> pageList(RequestCompany param) {
+        LambdaQueryWrapper<Company> queryWrapper =new LambdaQueryWrapper<>();
+        queryWrapper.eq(Company::getRecStatus,"A");
+        queryWrapper.orderByDesc(Company::getId);
+        if(!StringUtils.isEmpty(param.getCompanyName())){
+            queryWrapper.eq(Company::getCompanyName,param.getCompanyName());
+        }
+        Page<Company> pageInfo = this.page(new Page<>(param.getPageNum(),param.getPageSize()),queryWrapper);
+
+        List<Company> list = pageInfo.getRecords();
+        for (Company companyEntity : list) {
+            if(companyEntity.getManagerId() != null){
+                Manager managerEntity = managerService.getById(companyEntity.getManagerId());
+                if(managerEntity != null){
+                    companyEntity.setManagerName(managerEntity.getUsername());
+                }
+            }
+        }
+        return pageInfo;
+    }
 }

+ 120 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/controller/manager/ManagerInvoiceController.java

@@ -0,0 +1,120 @@
+package com.fdkankan.platform.order.controller.manager;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.common.controller.BaseController;
+import com.fdkankan.platform.user.request.RequestCamera;
+import com.fdkankan.platform.user.request.RequestInvoice;
+import com.fdkankan.platform.user.request.RequestTrade;
+import com.fdkankan.platform.user.service.IManagerService;
+import com.fdkankan.platform.user.vo.ResponseInvoice;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * 后台管理-开票
+ */
+@Log4j2
+@RestController
+@RequestMapping("/api/manager/invoice")
+public class ManagerInvoiceController extends BaseController {
+
+    @Autowired
+    private IManagerService managerService;
+
+    /**
+     * 查看增值记录-开票记录  汇总
+     * startDate        开始时间
+     * endDate          结束时间
+     * searchKey        关键词
+     * pageNum          分页
+     * pageSize         每页大小
+     */
+    @RequestMapping(value = {"/all"}, method = RequestMethod.POST)
+    public Page<JSONObject> all(@RequestBody RequestCamera param) throws Exception {
+        return managerService.findAllInvoiceByCondition(param);
+    }
+
+    /**
+     * 设备查询列表-开票记录
+     * startDate        开始时间
+     * endDate          结束时间
+     * searchKey        关键词
+     * pageNum          分页
+     * pageSize         每页大小
+     */
+    @RequestMapping(value = {"/list"}, method = RequestMethod.POST)
+    public Page<ResponseInvoice> list(@RequestBody RequestTrade param) throws Exception {
+        return managerService.findInvoiceByCondition(param);
+    }
+
+    /**
+     * 更新发票记录
+     * invoiceId        发票id
+     * type             0-发票未开,1-发票已开
+     */
+    @RequestMapping(value = {"/updateStatus"}, method = RequestMethod.POST)
+    public String updateStatus(@RequestBody RequestInvoice param) throws Exception {
+        return managerService.updateInvoiceStatus(param.getInvoiceId(), param.getType());
+    }
+
+    /**
+     * 发票管理,查询发票列表
+     * finish       0:发票未开,1:发票已开,2:已发出
+     * type         发票类型,2表示增值税普通发票,3表示增值税专用发票
+     * searchKey    关键词
+     * pageNum      分页
+     * pageSize     每页大小
+     */
+    @RequestMapping(value = {"/invoiceList"}, method = RequestMethod.POST)
+    public Page<ResponseInvoice> invoiceList(@RequestBody RequestTrade param) throws Exception {
+        return managerService.findInvoiceList(param);
+    }
+
+    /**
+     * 快递发送发票
+     * invoiceId            发票id
+     * expressCompany       快递公司
+     * expressNumber        快递单号
+     * remarks              备注
+     */
+    @RequestMapping(value = {"/sendExpress"}, method = RequestMethod.POST)
+    public String sendExpress(@RequestBody RequestInvoice param) throws Exception {
+        return managerService.sendExpress(param);
+    }
+
+    /**
+     * 上传电子发票
+     * file
+     */
+    @RequestMapping(value = {"/uploadEInvoice"}, method = RequestMethod.POST)
+    public String uploadEInvoice(@RequestParam(value = "file",required = false) MultipartFile file, String invoiceId) throws Exception{
+        return managerService.uploadEInvoice(file, invoiceId);
+    }
+
+    /**
+     * 发送电子发票
+     * @return
+     */
+    @RequestMapping(value = {"/sendEInvoice"}, method = RequestMethod.POST)
+    public String sendEInvoice(@RequestBody RequestInvoice param) throws Exception{
+        return managerService.sendEInvoice(param.getInvoiceId(), param.getRemarks(), param.getFilePath());
+    }
+
+    /**
+     * 发票管理,导出发票列表
+     * finish           0:发票未开,1:发票已开,2:已发出
+     * type             发票类型,2表示增值税普通发票,3表示增值税专用发票
+     * searchKey        关键词
+     */
+    @RequestMapping(value = {"/exportInvoiceList"}, method = RequestMethod.POST)
+    public void exportInvoiceList(@RequestBody RequestTrade param, HttpServletRequest request, HttpServletResponse response) throws Exception {
+        managerService.exportInvoiceList(param, request, response);
+    }
+
+}

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

@@ -2,7 +2,11 @@ package com.fdkankan.platform.order.mapper;
 
 import com.fdkankan.platform.order.entity.Invoice;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fdkankan.platform.user.request.RequestTrade;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -15,4 +19,7 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface IInvoiceMapper extends BaseMapper<Invoice> {
 
+    List<Invoice> getListByParam(@Param("param") RequestTrade param,@Param("start")Integer start,@Param("pageSize") Integer pageSize,@Param("orderBy") String orderBy);
+
+    Integer getCountByParam(@Param("param")RequestTrade param);
 }

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

@@ -1,8 +1,14 @@
 package com.fdkankan.platform.order.mapper;
 
-import com.fdkankan.platform.order.entity.Order;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fdkankan.platform.order.entity.Order;
+import com.fdkankan.platform.user.vo.ResponseOrder;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * <p>
@@ -15,4 +21,30 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface IOrderMapper extends BaseMapper<Order> {
 
+    @Select(" SELECT count(id) FROM t_order WHERE (DATEDIFF(order_time, NOW())=0) AND REC_STATUS = 'A' AND payment_status = 'paid' ")
+    Integer queryOrderCountByToday();
+
+    @Select(" SELECT count(id) FROM t_order WHERE (DATE_FORMAT( order_time, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )) AND REC_STATUS = 'A' AND payment_status = 'paid' ")
+    int queryOrderCountByMonth();
+
+    @Select(" SELECT IFNULL(SUM(total_amount),0) FROM t_order WHERE (DATEDIFF(order_time,NOW())=0) AND REC_STATUS = 'A' AND payment_status = 'paid' ")
+    BigDecimal queryTurnoverByToday();
+
+    @Select(" SELECT IFNULL(SUM(total_amount),0) FROM t_order WHERE (DATE_FORMAT( order_time, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )) AND REC_STATUS = 'A' AND payment_status = 'paid' ")
+    BigDecimal queryTurnoverByMonth();
+
+    @Select(" SELECT IFNULL(SUM(total_amount),0) FROM t_order WHERE (PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( order_time, '%Y%m' ) ) =1) AND REC_STATUS = 'A' AND payment_status = 'paid' ")
+    BigDecimal queryTurnoverByLastMonth();
+
+    @Select(" SELECT count(id) FROM t_order WHERE REC_STATUS = 'A' AND payment_status = 'paid' ")
+    int queryAllPayOrdersCount();
+
+    @Select(" SELECT IFNULL(SUM(total_amount),0) FROM t_order WHERE REC_STATUS = 'A' AND payment_status = 'paid' ")
+    BigDecimal queryAllTurnoverByOrder();
+
+    @Select(" SELECT count(id) FROM t_order WHERE REC_STATUS = 'A' AND payment_status = 'paid' AND shipping_status = #{status} ")
+    int queryOrderCountByShippingStatus(@Param("status")String status);
+
+    @Select(" SELECT order_time as orderTime, count(id) as orderCount, finish_time FROM t_order WHERE (DATE_SUB(CURDATE(), INTERVAL 12 DAY) <=date(order_time)) AND REC_STATUS = 'A' AND payment_status = 'paid' group by day(order_time) ")
+    List<ResponseOrder> queryTrendOrder();
 }

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

@@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -31,5 +32,27 @@ public interface IVirtualOrderMapper extends BaseMapper<VirtualOrder> {
                                      @Param("childName")String childName, @Param("type")Integer type,@Param("orderBy")String orderBy);
 
     @Select(" SELECT IFNULL(SUM(v.amount),0) FROM t_virtual_order v LEFT JOIN t_camera c on v.camera_id = c.id  WHERE c.id = #{cameraId} and pay_status = 1 and status = #{status} ")
-    int queryRechargeByCameraIdAndStatus(@Param("cameraId") Long cameraId, @Param("status") int status);
+    Integer queryRechargeByCameraIdAndStatus(@Param("cameraId") Long cameraId, @Param("status") int status);
+
+
+    @Select(" SELECT count(id) FROM t_virtual_order WHERE (DATEDIFF(trade_time, NOW())=0) AND REC_STATUS = 'A' AND pay_status = 1 AND status = 1 ")
+    Integer queryOrderCountByToday();
+
+    @Select(" SELECT IFNULL(SUM(amount),0) FROM t_virtual_order WHERE (DATEDIFF(trade_time,NOW())=0) AND REC_STATUS = 'A' AND pay_status = 1 AND status = #{status}  ")
+    BigDecimal queryTurnoverByToday(@Param("status")int status);
+
+    @Select(" SELECT IFNULL(SUM(amount),0) FROM t_virtual_order WHERE (DATE_FORMAT( trade_time, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )) AND REC_STATUS = 'A' AND pay_status = 1 AND status = 1  ")
+    BigDecimal queryTurnoverByMonth();
+
+    @Select(" SELECT IFNULL(SUM(amount),0) FROM t_virtual_order WHERE (PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( trade_time, '%Y%m' ) ) =1) AND REC_STATUS = 'A' AND pay_status = 1 AND status = 1  ")
+    BigDecimal queryTurnoverByLastMonth();
+
+    @Select(" SELECT count(id) FROM t_virtual_order WHERE REC_STATUS = 'A' AND pay_status = 1 AND status = 1  ")
+    Integer queryAllCount();
+
+    @Select(" SELECT IFNULL(SUM(amount),0) FROM t_virtual_order WHERE REC_STATUS = 'A' AND pay_status = 1 AND status = #{status}   ")
+    BigDecimal selectAllTurnover(@Param("status")int status);
+
+    @Select(" SELECT trade_time as tradeTime, count(id) as orderCount FROM t_virtual_order WHERE (DATE_SUB(CURDATE(), INTERVAL 12 DAY) <=date(trade_time)) AND REC_STATUS = 'A' AND pay_status = 1 AND status = #{status} group by day(create_time) ")
+    List<ResponseVirtualOrder> queryTrendRechargeOrder(@Param("status")int status);
 }

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

@@ -26,4 +26,6 @@ public interface IDownloadOrderService extends IService<DownloadOrder> {
     DownloadOrder getByOrderSn(String orderSn);
 
     boolean paySuccessDownloadOrder(String orderSn, String tradeNo, int paymentTypeName);
+
+    ResponseDownloadOrder getVoById(Long downloadOrderId);
 }

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

@@ -25,4 +25,6 @@ public interface IIncrementOrderService extends IService<IncrementOrder> {
     IncrementOrder getByOrderSn(String orderSn);
 
     boolean paySuccessIncrementOrder(String orderSn, String tradeNo, int paymentTypeName);
+
+    ResponseIncrementOrder getVoById(Long incrementOrderId);
 }

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

@@ -5,8 +5,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.platform.order.entity.Invoice;
 import com.fdkankan.platform.order.request.RequestPlaceOrder;
 import com.fdkankan.platform.user.request.RequestInvoice;
+import com.fdkankan.platform.user.request.RequestTrade;
 import com.fdkankan.platform.user.vo.ResponseInvoice;
 
+import java.util.List;
+
 /**
  * <p>
  * 发票表 服务类
@@ -38,4 +41,16 @@ public interface IInvoiceService extends IService<Invoice> {
     Invoice getByOrderId(Long orderId);
 
     void saveInvoiceByOrder(Long userId, RequestPlaceOrder order);
+
+    List<Invoice> getListByParam(RequestTrade trade);
+
+    Page<ResponseInvoice> getPageByParam(RequestTrade param);
+
+    Page<ResponseInvoice> findInvoiceList(RequestTrade param);
+
+    Invoice sendEInvoice(Long invoiceId, String remarks, String filePath);
+
+    String sendExpress(RequestInvoice param);
+
+    List<ResponseInvoice> getVoListByParam(RequestTrade param);
 }

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

@@ -11,6 +11,9 @@ import com.fdkankan.platform.order.vo.ResponseExpansionOrder;
 import com.fdkankan.platform.user.request.*;
 import com.fdkankan.platform.user.vo.*;
 
+import java.math.BigDecimal;
+import java.util.List;
+
 /**
  * <p>
  * 订单表 服务类
@@ -52,4 +55,21 @@ public interface IOrderService extends IService<Order> {
     Order getByOrderSn(String orderSn);
 
     boolean paySuccessEntityOrder(String orderSn, String tradeNo, int paymentTypeName);
+
+    Integer queryOrderCountByToday();
+
+    BigDecimal queryTurnoverByToday();
+
+    BigDecimal queryTurnoverByMonth();
+
+    BigDecimal queryTurnoverByLastMonth();
+
+    Integer queryAllPayOrdersCount();
+
+    BigDecimal queryAllTurnoverByOrder();
+
+    Integer queryOrderCountByShippingStatus(String unshipped);
+
+    List<ResponseOrder> queryTrendOrder();
+
 }

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

@@ -14,6 +14,7 @@ import com.fdkankan.platform.user.vo.ResponseDownloadOrder;
 import com.fdkankan.platform.user.vo.ResponseIncrementOrder;
 import com.fdkankan.platform.user.vo.ResponseVirtualOrder;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -55,4 +56,20 @@ public interface IVirtualOrderService extends IService<VirtualOrder> {
     String modifyPoints(RequestCamera param);
 
     int queryRechargeByCameraIdAndStatus(Long cameraId, int status);
+
+    Integer queryOrderCountByToday();
+
+    BigDecimal queryTurnoverByToday(int i);
+
+    BigDecimal queryTurnoverByMonth();
+
+    BigDecimal queryTurnoverByLastMonth();
+
+    Integer queryAllCount();
+
+    BigDecimal selectAllTurnover(int i);
+
+    List<ResponseVirtualOrder> queryTrendRechargeOrder(int i);
+
+    ResponseVirtualOrder getVoById(Long virtualOrderId);
 }

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

@@ -137,4 +137,14 @@ public class DownloadOrderServiceImpl extends ServiceImpl<IDownloadOrderMapper,
                 .eq(DownloadOrder::getOrderSn,orderSn);
         return this.update(updateWrapper);
     }
+
+    @Override
+    public ResponseDownloadOrder getVoById(Long downloadOrderId) {
+        DownloadOrder downloadOrderEntity  = getById(downloadOrderId);
+        ResponseDownloadOrder responseDownloadOrder = new ResponseDownloadOrder();
+        if(downloadOrderEntity!=null){
+            BeanUtils.copyProperties(downloadOrderEntity,responseDownloadOrder);
+        }
+        return responseDownloadOrder;
+    }
 }

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

@@ -136,4 +136,14 @@ public class IncrementOrderServiceImpl extends ServiceImpl<IIncrementOrderMapper
                 .eq(IncrementOrder::getRecStatus,"A");
         return this.update(updateWrapper);
     }
+
+    @Override
+    public ResponseIncrementOrder getVoById(Long incrementOrderId) {
+        IncrementOrder incrementOrderEntity  = getById(incrementOrderId);
+        ResponseIncrementOrder responseIncrementOrder = new ResponseIncrementOrder();
+        if(incrementOrderEntity!=null){
+            BeanUtils.copyProperties(incrementOrderEntity,responseIncrementOrder);
+        }
+        return responseIncrementOrder;
+    }
 }

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

@@ -1,12 +1,10 @@
 package com.fdkankan.platform.order.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fdkankan.common.constant.AppConstant;
-import com.fdkankan.common.constant.ErrorCode;
-import com.fdkankan.common.constant.OrderConstant;
-import com.fdkankan.common.constant.ServerCode;
+import com.fdkankan.common.constant.*;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.user.SSOUser;
 import com.fdkankan.platform.order.entity.*;
@@ -14,13 +12,16 @@ import com.fdkankan.platform.order.mapper.IInvoiceMapper;
 import com.fdkankan.platform.order.request.RequestPlaceOrder;
 import com.fdkankan.platform.order.service.*;
 import com.fdkankan.platform.user.request.RequestInvoice;
+import com.fdkankan.platform.user.request.RequestTrade;
 import com.fdkankan.platform.user.service.IUserService;
 import com.fdkankan.platform.user.vo.ResponseInvoice;
 import com.fdkankan.platform.user.vo.ResponseOrder;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -46,6 +47,8 @@ public class InvoiceServiceImpl extends ServiceImpl<IInvoiceMapper, Invoice> imp
     private IOrderService orderService;
     @Autowired
     private IIncrementOrderService incrementOrderService;
+    @Resource
+    private IInvoiceMapper invoiceMapper;
 
     @Override
     public Integer getMaxInvoice(RequestInvoice param, String token) {
@@ -117,12 +120,7 @@ public class InvoiceServiceImpl extends ServiceImpl<IInvoiceMapper, Invoice> imp
         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());
-
+        List<ResponseInvoice> voList = this.convert(pageEntity.getRecords());
         Page<ResponseInvoice> pageVo = new Page<>(param.getPageNum(),param.getPageSize());
         pageVo.setTotal(page.getTotal());
         pageVo.setRecords(voList);
@@ -385,4 +383,111 @@ public class InvoiceServiceImpl extends ServiceImpl<IInvoiceMapper, Invoice> imp
             throw new BusinessException(ErrorCode.ERROR_MSG);
         }
     }
+
+    @Override
+    public List<Invoice> getListByParam(RequestTrade trade) {
+        return invoiceMapper.getListByParam(trade,null,null,"create_time desc");
+    }
+
+    @Override
+    public Page<ResponseInvoice> getPageByParam(RequestTrade param) {
+        Page<ResponseInvoice> pageVo = new Page<>(param.getPageNum(), param.getPageSize());
+        Integer start = (param.getPageNum() -1 )* param.getPageSize();
+        Integer count = invoiceMapper.getCountByParam(param);
+        if(count <= 0){
+            return pageVo;
+        }
+        List<Invoice> list = invoiceMapper.getListByParam(param,
+                start,param.getPageSize(),"create_time desc");
+        List<ResponseInvoice> result = this.convert(list);
+        pageVo.setTotal(count);
+        pageVo.setRecords(result);
+        return pageVo;
+    }
+
+    @Override
+    public Page<ResponseInvoice> findInvoiceList(RequestTrade param) {
+        LambdaQueryWrapper<Invoice> queryWrapper = getWrapperByParam(param);
+        Page<Invoice> page = new Page<>(param.getPageNum(),param.getPageSize());
+        Page<Invoice> pageEntity = this.page(page, queryWrapper);
+
+        List<ResponseInvoice> result = this.convert(pageEntity.getRecords());
+
+        Page<ResponseInvoice> pageVo = new Page<>(param.getPageNum(),param.getPageSize());
+        pageVo.setTotal(pageEntity.getTotal());
+        pageVo.setRecords(result);
+        return pageVo;
+    }
+
+    @Override
+    public List<ResponseInvoice> getVoListByParam(RequestTrade param) {
+        List<Invoice> list = this.list(getWrapperByParam(param));
+        return this.convert(list);
+    }
+
+    public LambdaQueryWrapper<Invoice> getWrapperByParam(RequestTrade param){
+        LambdaQueryWrapper<Invoice> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Invoice::getRecStatus,"A");
+        if(param.getFinish()!=null){
+            queryWrapper.eq(Invoice::getFinish,param.getFinish());
+        }
+        if(param.getOrderId()!=null){
+            queryWrapper.eq(Invoice::getOrderId,param.getOrderId());
+        }else if(param.getIncrementId()!=null){
+            queryWrapper.eq(Invoice::getIncrementOrderId,param.getIncrementId());
+        }else if (param.getDownloadId()!=null){
+            queryWrapper.eq(Invoice::getDownloadOrderId,param.getDownloadId());
+        }
+        if(StringUtils.isNotEmpty(param.getSearchKey())){
+            queryWrapper.like(Invoice::getTitle,param.getSearchKey())
+                    .or().like(Invoice::getEmailAddress,param.getSearchKey())
+                    .or().like(Invoice::getShipMobile,param.getSearchKey())
+                    .or().like(Invoice::getRegisterPhone,param.getSearchKey());
+        }
+        if(param.getType()!=null){
+            queryWrapper.eq(Invoice::getType,param.getPageNum());
+        }
+        if(param.getConsumeType() != null){
+            queryWrapper.eq(Invoice::getConsumeType,param.getConsumeType());
+        }
+        queryWrapper.orderByDesc(Invoice::getCreateTime);
+        return queryWrapper;
+    }
+
+    public List<ResponseInvoice> convert(List<Invoice> list){
+        return list.stream().map(invoice -> {
+            ResponseInvoice responseInvoice = new ResponseInvoice();
+            BeanUtils.copyProperties(invoice, responseInvoice);
+            return responseInvoice;
+        }).collect(Collectors.toList());
+    }
+
+    public String sendExpress(RequestInvoice param) {
+        Invoice invoiceEntity = this.getById(param.getInvoiceId());
+        if(invoiceEntity == null){
+            throw new BusinessException(-1,"开票信息不存在");
+        }
+        invoiceEntity.setSend(1);
+        invoiceEntity.setExpressCompany(param.getExpressCompany());
+        invoiceEntity.setExpressNumber(param.getExpressNumber());
+        invoiceEntity.setRemarks(param.getRemarks());
+        invoiceEntity.setFinish(1);
+        invoiceEntity.setSend(1);
+        this.updateById(invoiceEntity);
+        return ServerCode.SUCCESS.message();
+    }
+    @Override
+    public Invoice sendEInvoice(Long invoiceId, String remarks, String filePath) {
+        Invoice invoiceEntity = this.getById(invoiceId);
+        if(invoiceEntity == null){
+            throw new BusinessException(-1,"开票信息不存在");
+        }
+
+        invoiceEntity.setRemarks(remarks);
+        invoiceEntity.setEInvoice(filePath);
+        invoiceEntity.setFinish(1);
+        invoiceEntity.setSend(2);
+        this.updateById(invoiceEntity);
+        return invoiceEntity;
+    }
 }

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

@@ -12,7 +12,6 @@ import com.fdkankan.common.util.DateUtil;
 import com.fdkankan.common.util.FileSizeUtil;
 import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.common.util.NumberUtils;
-import com.fdkankan.pay.alipay.AlipayDefaultConfig;
 import com.fdkankan.pay.alipay.sdk.AlipayService;
 import com.fdkankan.pay.wx.WXPayDefaultConfig;
 import com.fdkankan.pay.wx.sdk.WXPay;
@@ -22,12 +21,12 @@ import com.fdkankan.platform.goods.entity.*;
 import com.fdkankan.platform.goods.service.*;
 import com.fdkankan.platform.goods.vo.ResponseGoods;
 import com.fdkankan.platform.goods.vo.ResponseGoodsSku;
-import com.fdkankan.platform.order.request.RequestPlaceOrder;
 import com.fdkankan.platform.order.constant.OrderEnum;
 import com.fdkankan.platform.order.entity.Invoice;
 import com.fdkankan.platform.order.entity.Order;
 import com.fdkankan.platform.order.entity.OrderItem;
 import com.fdkankan.platform.order.mapper.IOrderMapper;
+import com.fdkankan.platform.order.request.RequestPlaceOrder;
 import com.fdkankan.platform.order.service.*;
 import com.fdkankan.platform.order.vo.ResponseCommerceOrder;
 import com.fdkankan.platform.order.vo.ResponseExpansionOrder;
@@ -41,7 +40,6 @@ import org.apache.commons.lang3.StringUtils;
 import org.joda.time.DateTime;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -94,11 +92,8 @@ public class OrderServiceImpl extends ServiceImpl<IOrderMapper, Order> implement
     private AlipayService alipayService;
     @Autowired
     private IUserIncrementService userIncrementService;
-    @Autowired
-    private AlipayDefaultConfig alipayDefaultConfig;
-
-    @Value("${main.url}")
-    private String mainUrl;
+    @Resource
+    private IOrderMapper orderMapper;
 
     @Override
     public ResponseOrder getOrderDetail(Long orderId) {
@@ -487,4 +482,44 @@ public class OrderServiceImpl extends ServiceImpl<IOrderMapper, Order> implement
                 .eq(Order::getOrderSn,orderSn);
         return this.update(updateWrapper);
     }
+
+    @Override
+    public Integer queryOrderCountByToday() {
+        return orderMapper.queryOrderCountByToday();
+    }
+
+    @Override
+    public BigDecimal queryTurnoverByToday() {
+        return orderMapper.queryTurnoverByToday();
+    }
+
+    @Override
+    public BigDecimal queryTurnoverByMonth() {
+        return orderMapper.queryTurnoverByMonth();
+    }
+
+    @Override
+    public BigDecimal queryTurnoverByLastMonth() {
+        return orderMapper.queryTurnoverByLastMonth();
+    }
+
+    @Override
+    public Integer queryAllPayOrdersCount() {
+        return orderMapper.queryAllPayOrdersCount();
+    }
+
+    @Override
+    public BigDecimal queryAllTurnoverByOrder() {
+        return orderMapper.queryAllTurnoverByOrder();
+    }
+
+    @Override
+    public Integer queryOrderCountByShippingStatus(String unshipped) {
+        return orderMapper.queryOrderCountByShippingStatus(unshipped);
+    }
+
+    @Override
+    public List<ResponseOrder> queryTrendOrder() {
+        return orderMapper.queryTrendOrder();
+    }
 }

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

@@ -400,4 +400,49 @@ public class VirtualOrderServiceImpl extends ServiceImpl<IVirtualOrderMapper, Vi
     public int queryRechargeByCameraIdAndStatus(Long cameraId, int status) {
         return virtualOrderMapper.queryRechargeByCameraIdAndStatus(cameraId,status);
     }
+
+    @Override
+    public Integer queryOrderCountByToday() {
+        return virtualOrderMapper.queryOrderCountByToday();
+    }
+
+    @Override
+    public BigDecimal queryTurnoverByToday(int i) {
+        return virtualOrderMapper.queryTurnoverByToday(i);
+    }
+
+    @Override
+    public BigDecimal queryTurnoverByMonth() {
+        return virtualOrderMapper.queryTurnoverByMonth();
+    }
+
+    @Override
+    public BigDecimal queryTurnoverByLastMonth() {
+        return virtualOrderMapper.queryTurnoverByLastMonth();
+    }
+
+    @Override
+    public Integer queryAllCount() {
+        return virtualOrderMapper.queryAllCount();
+    }
+
+    @Override
+    public BigDecimal selectAllTurnover(int i) {
+        return virtualOrderMapper.selectAllTurnover(i);
+    }
+
+    @Override
+    public List<ResponseVirtualOrder> queryTrendRechargeOrder(int i) {
+        return virtualOrderMapper.queryTrendRechargeOrder(i);
+    }
+
+    @Override
+    public ResponseVirtualOrder getVoById(Long virtualOrderId) {
+        VirtualOrder virtualOrderEntity = getById(virtualOrderId);
+        ResponseVirtualOrder responseVirtualOrder = new ResponseVirtualOrder();
+        if(virtualOrderEntity!=null){
+            BeanUtils.copyProperties(virtualOrderEntity,responseVirtualOrder);
+        }
+        return responseVirtualOrder;
+    }
 }

+ 77 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/controller/manager/ManagerController.java

@@ -0,0 +1,77 @@
+package com.fdkankan.platform.user.controller.manager;
+
+import com.fdkankan.common.controller.BaseController;
+import com.fdkankan.common.util.PasswordUtils;
+import com.fdkankan.platform.common.HttpHelper;
+import com.fdkankan.platform.order.service.IOrderService;
+import com.fdkankan.platform.order.service.IVirtualOrderService;
+import com.fdkankan.platform.user.entity.Manager;
+import com.fdkankan.platform.user.request.RequestTrade;
+import com.fdkankan.platform.user.service.IManagerService;
+import com.fdkankan.platform.user.vo.ResponseManager;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+
+@Log4j2
+@RestController
+@RequestMapping("/api/manager")
+public class ManagerController extends BaseController {
+
+    @Autowired
+    private IManagerService managerService;
+    @Autowired
+    private IOrderService orderService;
+    @Autowired
+    private IVirtualOrderService virtualOrderService;
+
+    @RequestMapping(value = "/add", method = RequestMethod.GET)
+    public String add(){
+        Manager managerEntity = new Manager("admin", PasswordUtils.encrypt("admin", "123456", PasswordUtils.getStaticSalt()));
+        managerService.save(managerEntity);
+        return "sdk";
+    }
+
+    @RequestMapping(value = "/detail/{userName}", method = RequestMethod.GET)
+    public ResponseManager detail(@PathVariable String userName) throws Exception {
+        Manager managerEntity = managerService.getByUserName(userName);
+        ResponseManager responseManager = new ResponseManager();
+        BeanUtils.copyProperties(managerEntity, responseManager);
+        return responseManager;
+    }
+
+    @RequestMapping(value = "/home", method = RequestMethod.POST)
+    public HashMap<String,Object> home() throws Exception {
+        return managerService.getHome();
+    }
+
+    /**
+     * 查看增值记录-汇总
+     * @return
+     */
+    @RequestMapping(value = {"/getAllTrades"}, method = RequestMethod.POST)
+    public String getAllTrades(@RequestBody RequestTrade base){
+        return null;
+    }
+
+    @RequestMapping(value = {"/statistics"}, method = RequestMethod.POST)
+    public String statistics(@RequestBody String param){
+        try {
+            String urlStr = "https://api.baidu.com/json/tongji/v1/ReportService/getData";
+            String charset = "utf-8";
+            byte[] res = HttpHelper.post(urlStr, param, charset);
+            String s = new String(res);
+            System.out.println(s);
+            return  s;
+
+        } catch (Exception e) {
+            // TODO: handle exception
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+}

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

@@ -1,8 +1,7 @@
 package com.fdkankan.platform.user.entity;
 
 import com.baomidou.mybatisplus.annotation.*;
-import lombok.Getter;
-import lombok.Setter;
+import lombok.*;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -17,6 +16,7 @@ import java.util.Date;
  */
 @Getter
 @Setter
+@RequiredArgsConstructor
 @TableName("t_manager")
 public class Manager implements Serializable {
 
@@ -37,12 +37,14 @@ public class Manager implements Serializable {
     /**
      * 用户名
      */
+    @NonNull
     @TableField("username")
     private String username;
 
     /**
      * 密码
      */
+    @NonNull
     @TableField("password")
     private String password;
 

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

@@ -0,0 +1,32 @@
+package com.fdkankan.platform.user.request;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class RequestTrade extends RequestBase implements Serializable {
+
+    private static final long serialVersionUID = -7801130335996246487L;
+
+    private Integer type;
+
+    private String startDate;
+
+    private String endDate;
+
+    private String searchKey;
+
+    private Integer finish;
+
+    private String orderSn;
+
+    private Long orderId;
+
+    private Long downloadId;
+
+    private Long incrementId;
+
+    private Integer consumeType;
+}

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

@@ -1,8 +1,18 @@
 package com.fdkankan.platform.user.service;
 
-import com.fdkankan.platform.user.entity.Manager;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.platform.user.entity.Manager;
+import com.fdkankan.platform.user.request.RequestCamera;
+import com.fdkankan.platform.user.request.RequestInvoice;
+import com.fdkankan.platform.user.request.RequestTrade;
+import com.fdkankan.platform.user.vo.ResponseInvoice;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -18,4 +28,22 @@ public interface IManagerService extends IService<Manager> {
     List<Manager> getByFrameworkId(Long parentId);
 
     Manager getByUserName(String userName);
+
+    HashMap<String,Object> getHome();
+
+    Page<JSONObject> findAllInvoiceByCondition(RequestCamera param) throws Exception;
+
+    Page<ResponseInvoice> findInvoiceByCondition(RequestTrade param);
+
+    String updateInvoiceStatus(Long invoiceId, Integer type);
+
+    Page<ResponseInvoice> findInvoiceList(RequestTrade param) throws Exception;
+
+    String sendExpress(RequestInvoice param);
+
+    String uploadEInvoice(MultipartFile file, String invoiceId) throws Exception;
+
+    String sendEInvoice(Long invoiceId, String remarks, String filePath) throws Exception;
+
+    void exportInvoiceList(RequestTrade param, HttpServletRequest request, HttpServletResponse response) throws Exception;
 }

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

@@ -1,13 +1,49 @@
 package com.fdkankan.platform.user.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 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.ConstantFilePath;
+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.FileUtils;
+import com.fdkankan.platform.common.ConstantExcel;
+import com.fdkankan.platform.common.ExcelUtil;
+import com.fdkankan.platform.common.LogFactory;
+import com.fdkankan.platform.goods.service.ICameraDetailService;
+import com.fdkankan.platform.order.entity.*;
+import com.fdkankan.platform.order.service.*;
 import com.fdkankan.platform.user.entity.Manager;
+import com.fdkankan.platform.user.entity.ReceiverInfo;
+import com.fdkankan.platform.user.entity.User;
 import com.fdkankan.platform.user.mapper.IManagerMapper;
+import com.fdkankan.platform.user.request.RequestCamera;
+import com.fdkankan.platform.user.request.RequestInvoice;
+import com.fdkankan.platform.user.request.RequestTrade;
 import com.fdkankan.platform.user.service.IManagerService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.platform.user.service.IReceiverInfoService;
+import com.fdkankan.platform.user.service.IUserService;
+import com.fdkankan.platform.user.vo.*;
+import com.fdkankan.sms.SendMailAcceUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.math.BigDecimal;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+
+import static com.fdkankan.platform.common.ExcelUtil.output;
 
 /**
  * <p>
@@ -20,6 +56,25 @@ import java.util.List;
 @Service
 public class ManagerServiceImpl extends ServiceImpl<IManagerMapper, Manager> implements IManagerService {
 
+    @Autowired
+    private IOrderService orderService;
+    @Autowired
+    private IExpansionOrderService expansionOrderService;
+    @Autowired
+    private IIncrementOrderService incrementOrderService;
+    @Autowired
+    private IDownloadOrderService downloadOrderService;
+    @Autowired
+    private IVirtualOrderService virtualOrderService;
+    @Autowired
+    private ICameraDetailService cameraDetailService;
+    @Autowired
+    private IInvoiceService invoiceService;
+    @Autowired
+    private IReceiverInfoService iReceiverInfoService;
+    @Autowired
+    private IUserService userService;
+
     QueryWrapper<Manager> queryWrapper;
 
     @Override
@@ -46,4 +101,637 @@ public class ManagerServiceImpl extends ServiceImpl<IManagerMapper, Manager> imp
         }
         return list.get(0);
     }
+
+    @Override
+    public  HashMap<String,Object> getHome() {
+        Integer orderTodayCount = orderService.queryOrderCountByToday();
+        BigDecimal todayTurnover = orderService.queryTurnoverByToday();
+        BigDecimal monthTurnover = orderService.queryTurnoverByMonth();
+        BigDecimal lastMonthTurnover = orderService.queryTurnoverByLastMonth();
+        Integer sumcamera = orderService.queryAllPayOrdersCount();
+        BigDecimal allcameramoneys = orderService.queryAllTurnoverByOrder();
+        Integer waitCount = orderService.queryOrderCountByShippingStatus("unshipped");
+        Integer todayRechargeCount = virtualOrderService.queryOrderCountByToday();
+        BigDecimal todayRechargeTurnover = virtualOrderService.queryTurnoverByToday(1);
+        BigDecimal monthRechargeTurnover = virtualOrderService.queryTurnoverByMonth();
+        BigDecimal lastMonthRechargeTurnover = virtualOrderService.queryTurnoverByLastMonth();
+        Integer allRechargeCount = virtualOrderService.queryAllCount();
+        BigDecimal allRechargeTurnover = virtualOrderService.selectAllTurnover(1);
+        List<ResponseVirtualOrder> trendRechargeOrder = virtualOrderService.queryTrendRechargeOrder(1);
+
+        BigDecimal todayConsumeTurnover = virtualOrderService.queryTurnoverByToday(-1);
+        BigDecimal allConsumeTurnover = virtualOrderService.selectAllTurnover(-1);
+        List<ResponseVirtualOrder> trendConsumeOrder = virtualOrderService.queryTrendRechargeOrder(-1);
+
+        BigDecimal monthMoney = monthRechargeTurnover.add(monthTurnover);
+        BigDecimal lastMonthMoney = lastMonthRechargeTurnover.add(lastMonthTurnover);
+        List<ResponseOrder> trendOrders = orderService.queryTrendOrder();
+
+        BigDecimal allMoney = allcameramoneys.add(allRechargeTurnover);
+        HashMap<String,Object> result = new HashMap<>();
+
+        result.put("sumcamera", sumcamera);
+        result.put("allcameramoneys", allcameramoneys);
+        result.put("todayOrder", orderTodayCount);
+        result.put("todayTurnover", todayTurnover);
+        result.put("allMoney", allMoney);
+        result.put("allRechargeCount", allRechargeCount);
+        result.put("allRechargeTurnover", allRechargeTurnover);
+        result.put("todayRecharge", todayRechargeCount);
+        result.put("todayRechargeTurnover", todayRechargeTurnover);
+        result.put("todayConsumeTurnover", todayConsumeTurnover);
+        result.put("allConsumeTurnover", allConsumeTurnover);
+        result.put("waitCount", waitCount);
+        result.put("monthMoney", monthMoney);
+        result.put("monthCamera", monthTurnover);
+        result.put("monthRecharge", monthRechargeTurnover);
+        result.put("lastMonthMoney", lastMonthMoney);
+        result.put("lastMonthCamera", lastMonthTurnover);
+        result.put("lastMonthRecharge", lastMonthRechargeTurnover);
+        result.put("trendRecharge", trendRechargeOrder);
+        result.put("consumeRecharge", trendConsumeOrder);
+        result.put("trend", trendOrders);
+        return result;
+    }
+
+    @Override
+    public Page<JSONObject> findAllInvoiceByCondition(RequestCamera param) throws Exception {
+        Page<ResponseCamera> cameras = cameraDetailService.queryListByParams(param);
+        List<ResponseCamera> list = cameras.getRecords();
+        List<JSONObject> jsonArray = new ArrayList<>();
+        if (list!= null && list.size() > 0){
+            for (ResponseCamera responseCamera : list){
+                param.setChildName(responseCamera.getChildName());
+
+                int initPoints = 0;
+                int initInvoice = 0;
+                int add = 0;
+                int less = 0;
+                int other = 0;
+                int addInvoice = 0;
+                int lessInvoice = 0;
+
+                if (StringUtils.isNotEmpty(param.getStartDate())){
+                    RequestCamera param1 = new RequestCamera();
+                    param1.setChildName(responseCamera.getChildName());
+                    param1.setEndDate(param.getStartDate());
+
+                    List<VirtualOrder> startList = virtualOrderService.getAllByParam(param1);
+                    for (VirtualOrder start : startList) {
+                        int status = start.getStatus();
+                        if (status == 0 || status == 1) {
+                            initPoints += start.getPoints();
+                            if (status == 1) {
+                                initInvoice += start.getPoints();
+                            }
+                        } else if (status == -1 || status == -2) {
+                            initPoints -= start.getPoints();
+                            if (status == -2) {
+                                initInvoice -= start.getPoints();
+                            }
+                        }
+                    }
+                }
+
+                List<VirtualOrder> virtualOrderEntities = virtualOrderService.getAllByParam(param);
+                for (VirtualOrder virtualOrderEntity : virtualOrderEntities) {
+                    int status = virtualOrderEntity.getStatus();
+                    if (status == 1 || status == 0) {
+                        add += virtualOrderEntity.getPoints();
+                        if (status == 1) {
+                            addInvoice += virtualOrderEntity.getPoints();
+                        }
+                    } else if (status == -1) {
+                        less += virtualOrderEntity.getPoints();
+                    } else if (status == -2) {
+                        other -= virtualOrderEntity.getPoints();
+                    }
+                }
+
+                if (StringUtils.isNotEmpty(param.getStartDate())){
+                    RequestTrade trade1 = new RequestTrade();
+                    trade1.setSearchKey(param.getSearchKey());
+                    trade1.setEndDate(param.getStartDate());
+                    List<Invoice> invoices = invoiceService.getListByParam(trade1);
+                    for (Invoice invoice : invoices){
+                        initInvoice -= invoice.getMoney().intValue();
+                    }
+                }
+
+                RequestTrade trade = new RequestTrade();
+                trade.setSearchKey(param.getSearchKey());
+                trade.setStartDate(param.getStartDate());
+                trade.setEndDate(param.getEndDate());
+                List<Invoice> invoices = invoiceService.getListByParam(trade);
+                for (Invoice invoice : invoices){
+                    lessInvoice +=invoice.getMoney().intValue();
+                }
+
+                JSONObject jo = new JSONObject();
+                jo.put("userName", responseCamera.getUserName());
+                jo.put("childName", responseCamera.getChildName());
+                jo.put("initPoints", initPoints);
+                jo.put("addPoints", add);
+                jo.put("lessPoints", -1*less);
+                jo.put("otherPoints", other);
+                jo.put("endPoints", initPoints+add-less+other);
+                jo.put("initInvoice", initInvoice);
+                jo.put("addInvoice", addInvoice);
+                jo.put("lessInvoice", lessInvoice);
+                jo.put("endInvoice", initInvoice+addInvoice-lessInvoice+other);
+                jo.put("otherCredits", other);
+                jsonArray.add(jo);
+            }
+        }
+
+        Page<JSONObject> pageVo = new Page<JSONObject>(param.getPageNum(), param.getPageSize());
+        pageVo.setTotal(cameras.getTotal());
+        pageVo.setRecords(jsonArray);
+        return pageVo;
+    }
+
+    @Override
+    public Page<ResponseInvoice> findInvoiceByCondition(RequestTrade param) {
+        return invoiceService.getPageByParam(param);
+    }
+
+    @Override
+    public String updateInvoiceStatus(Long invoiceId, Integer type) {
+        Invoice invoiceEntity = invoiceService.getById(invoiceId);
+        invoiceEntity.setFinish(type);
+        if(!invoiceService.updateById(invoiceEntity)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public Page<ResponseInvoice> findInvoiceList(RequestTrade param) throws Exception {
+        if(StringUtils.isNotEmpty(param.getOrderSn())){
+            Order orderEntity = orderService.getByOrderSn(param.getOrderSn());
+            if(orderEntity != null){
+                param.setOrderId(orderEntity.getId());
+                param.setConsumeType(0);
+            }else {
+                ExpansionOrder expansionOrder = expansionOrderService.getByOrderSn(param.getOrderSn());
+                if(expansionOrder != null){
+                    param.setOrderId(expansionOrder.getId());
+                    param.setConsumeType(1);
+                }else{
+                    IncrementOrder incrementOrderEntity = incrementOrderService.getByOrderSn(param.getOrderSn());
+                    if(incrementOrderEntity!=null){
+                        param.setIncrementId(incrementOrderEntity.getId());
+                        param.setConsumeType(2);
+                    }else{
+                        DownloadOrder downloadOrderEntity = downloadOrderService.getByOrderSn(param.getOrderSn());
+                        if(downloadOrderEntity!=null){
+                            param.setDownloadId(downloadOrderEntity.getId());
+                            param.setConsumeType(3);
+                        }else{
+                            param.setOrderId(9999999999999L);
+                        }
+                    }
+                }
+            }
+        }
+        Page<ResponseInvoice> pageInfo = invoiceService.findInvoiceList(param);
+        ResponseOrder orderDetail = new ResponseOrder();
+        ResponseVirtualOrder virtualOrderDetail = new ResponseVirtualOrder();
+        ResponseIncrementOrder incrementDetail = new ResponseIncrementOrder();
+        ResponseDownloadOrder downloadDetail = new ResponseDownloadOrder();
+        List<ResponseOrderItem> orderItems = null;
+        ResponseOrderItem orderItem = null;
+        StringBuilder goodsName = null;
+        ReceiverInfo receiverInfoEntity = new ReceiverInfo();
+        for(ResponseInvoice invoice : pageInfo.getRecords()){
+            //购买相机的订单
+            if(invoice.getConsumeType() == 0){
+                orderDetail  = orderService.getOrderDetail(invoice.getOrderId());
+                invoice.setOrderDetail(orderDetail);
+            }
+
+            //消费订单
+            if(invoice.getConsumeType() == 1){
+                virtualOrderDetail = virtualOrderService.getVoById(invoice.getVirtualOrderId());
+                if(orderDetail!=null){
+                    invoice.setResponseVirtualOrder(virtualOrderDetail);
+                }
+            }
+
+            //会员权益
+            if(invoice.getConsumeType() == 2){
+                incrementDetail = incrementOrderService.getVoById(invoice.getIncrementOrderId());
+                if(incrementDetail!=null){
+                    invoice.setResponseIncrementOrder(incrementDetail);
+                }
+            }
+
+            //会员权益
+            if(invoice.getConsumeType() == 3){
+                downloadDetail  = downloadOrderService.getVoById(invoice.getDownloadOrderId());
+                if(downloadDetail!=null){
+                    invoice.setResponseDownloadOrder(downloadDetail);
+                }
+            }
+
+            receiverInfoEntity = iReceiverInfoService.getDefaultByUserId(invoice.getUserId());
+            if(receiverInfoEntity!=null){
+                invoice.setShipName(receiverInfoEntity.getShipName() == null?"" : receiverInfoEntity.getShipName());
+                invoice.setShipMobile(receiverInfoEntity.getShipMobile() == null?"" : receiverInfoEntity.getShipMobile());
+                invoice.setShipAreaPath( receiverInfoEntity.getShipAreaPath()== null?"" : receiverInfoEntity.getShipAreaPath());
+                invoice.setShipAddress(receiverInfoEntity.getShipAddress()== null?"" : receiverInfoEntity.getShipAddress());
+            }
+        }
+        return pageInfo;
+    }
+
+    @Override
+    public String sendExpress(RequestInvoice param) {
+        if(param.getInvoiceId() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        return invoiceService.sendExpress(param);
+    }
+
+    @Override
+    public String uploadEInvoice(MultipartFile file, String invoiceId) throws Exception{
+        String fileName = System.currentTimeMillis() + "_" + file.getOriginalFilename();
+        File targetFile = new File(ConstantFilePath.INVOICE_PATH + fileName);
+        file.transferTo(targetFile);
+        return ConstantFilePath.INVOICE_PATH.replace(ConstantFilePath.BASE_PATH, "") + fileName;
+    }
+
+    @Override
+    public String sendEInvoice(Long invoiceId, String remarks, String filePath)throws Exception {
+        if(invoiceId == null || StringUtils.isEmpty(filePath)){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        Invoice invoice = invoiceService.sendEInvoice(invoiceId, remarks, filePath);
+
+        String ordersn = "";
+        Long userId = null;
+        if(invoice != null){
+            if(StringUtils.isEmpty(invoice.getEmailAddress())){
+                throw new BusinessException(ErrorCode.NOT_RECORD);
+            }
+            if(invoice.getOrderId() != null){
+                ResponseOrder order  = orderService.getOrderDetail(invoice.getOrderId());
+                if(order == null) {
+                    ExpansionOrder expansionOrderEntity = expansionOrderService.getById(invoice.getOrderId());
+                    if(expansionOrderEntity != null){
+                        ordersn = expansionOrderEntity.getOrderSn();
+                        userId = expansionOrderEntity.getUserId();
+                    }
+                }else {
+                    ordersn = order.getOrderSn();
+                    userId = order.getUserId();
+                }
+            }else if (invoice.getIncrementOrderId()!=null){
+                IncrementOrder incrementOrderEntity = incrementOrderService.getById(invoice.getIncrementOrderId());
+                if(incrementOrderEntity!=null ){
+                    ordersn = incrementOrderEntity.getOrderSn();
+                    userId = incrementOrderEntity.getUserId();
+                }
+            }else if(invoice.getDownloadOrderId()!=null){
+                DownloadOrder downloadOrderEntity = downloadOrderService.getById(invoice.getDownloadOrderId());
+                if(downloadOrderEntity!=null){
+                    ordersn = downloadOrderEntity.getOrderSn();
+                    userId = downloadOrderEntity.getUserId();
+                }
+            }
+        }
+
+        String subject = SendMailAcceUtils.subjectinvoice.replace("${ordernum}", ordersn);
+        String msg = SendMailAcceUtils.msg;
+        msg = msg.replace("${ordernum}", ordersn);
+        User userEntity = userService.getById(userId);
+        if(userEntity!=null){
+            msg = msg.replace("${username}", userEntity.getUserName() == null?"":userEntity.getUserName());
+        }else{
+            msg = msg.replace("${username}", "");
+        }
+
+        //TODO aa
+        //发送电子邮件
+        boolean falg = SendMailAcceUtils.sendMail(invoice.getEmailAddress(), subject, msg, ConstantFilePath.BASE_PATH + invoice.getEInvoice());
+        LogFactory.P_LOG.info("邮件发送状态:{}", falg);
+        return ServerCode.SUCCESS.message();
+    }
+
+    @Override
+    public void exportInvoiceList(RequestTrade param, HttpServletRequest request, HttpServletResponse response)throws Exception {
+        param.setPageSize(9999);
+
+        List<ResponseInvoice> list = invoiceService.getVoListByParam(param);
+        ResponseOrder orderDetail = new ResponseOrder();
+        ExpansionOrder expansionOrderEntity = new ExpansionOrder();
+        List<ResponseOrderItem> orderItems = null;
+        StringBuilder goodsName = null;
+        ResponseIncrementOrder incrementDetail = new ResponseIncrementOrder();
+        ResponseDownloadOrder downloadDetail = new ResponseDownloadOrder();
+        ReceiverInfo receiverInfoEntity = new ReceiverInfo();
+
+        //导出的数据
+        int serNum = 1;
+        Map<String, Object> item = null;
+        List<Map> dataList = new ArrayList<Map>();
+        for(ResponseInvoice invoice : list){
+
+            if(invoice.getOrderId()==null && invoice.getVirtualOrderId()==null &&
+                    invoice.getIncrementOrderId() == null && invoice.getDownloadOrderId() == null){
+                continue;
+            }
+
+            //购买相机的订单
+            item = new HashMap();
+            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[0], String.valueOf(serNum));
+            if(invoice.getType() == 2){
+                item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[7], "增值税普通发票");
+            }
+            if(invoice.getType() == 3){
+                item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[7], "增值税专用发票");
+            }
+            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[4], invoice.getExpressNumber()== null?"" : invoice.getExpressNumber());
+            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[5], invoice.getMoney()== null?"" : String.valueOf(invoice.getMoney()));
+
+            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[8], invoice.getTitle() == null?"" : invoice.getTitle());
+            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[9], invoice.getCode() == null?"" : invoice.getCode());
+            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[10], invoice.getOrganizedAddress() == null?"" : invoice.getOrganizedAddress());
+            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[11], invoice.getRegisterPhone() == null?"" : invoice.getRegisterPhone());
+            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[12], invoice.getBankName() == null?"" : invoice.getBankName());
+            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[13], invoice.getBankAccount() == null?"" : invoice.getBankAccount());
+
+            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[17], invoice.getEmailAddress() == null?"" : invoice.getEmailAddress());
+
+            if(invoice.getConsumeType() == 0){
+                orderDetail = orderService.getOrderDetail(invoice.getOrderId());
+
+                item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[1], orderDetail.getOrderSn() == null?"" : orderDetail.getOrderSn());
+//                item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[2], orderDetail.getUserName() == null?"" : orderDetail.getUserName());
+
+                if(orderDetail.getUserId()!=null){
+                    User userEntity = userService.getById(orderDetail.getUserId());
+                    if(userEntity!=null){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[2], userEntity.getUserName() == null?"" : userEntity.getUserName());
+
+                        if(invoice.getType() == 3){
+                            //获取默认地址
+                            receiverInfoEntity = iReceiverInfoService.getDefaultByUserId(orderDetail.getUserId());
+                            if(receiverInfoEntity!=null){
+                                item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[14], receiverInfoEntity.getShipName() == null?"" : receiverInfoEntity.getShipName());
+                                item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[15], receiverInfoEntity.getShipMobile() == null?"" : receiverInfoEntity.getShipMobile());
+                                item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[16], receiverInfoEntity.getShipAreaPath()== null?"" : receiverInfoEntity.getShipAreaPath()
+                                        + " " + receiverInfoEntity.getShipAddress()== null?"" : receiverInfoEntity.getShipAddress());
+                            }
+                        }
+                    }
+                }
+
+                if( orderDetail.getOrderTime() == null){
+                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[3], "");
+                }else{
+                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[3], DateUtil.date2String(orderDetail.getOrderTime(),null));
+                }
+
+                if (orderDetail.getPaymentTypeName() ==null || orderDetail.getPaymentTypeName() == -1) {
+                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[6], "未支付");
+                    continue;
+                } else {
+                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[6], ConstantExcel.PAYFORM[orderDetail.getPaymentTypeName()]);
+                }
+
+                if(orderDetail.getOrderStatus()!=null){
+                    if(orderDetail.getOrderStatus().equals("unprocessed")){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[18], "未处理");
+                    }else if(orderDetail.getOrderStatus().equals("processed")){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[18], "已确认");
+                    }else if(orderDetail.getOrderStatus().equals("completed")){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[18], "已完成");
+                    }else if(orderDetail.getOrderStatus().equals("invalid")){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[18], "已取消");
+                    }
+                }else{
+                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[18], "");
+                }
+
+                if(orderDetail.getShippingStatus()!=null){
+                    if(orderDetail.getShippingStatus().equals("unshipped")){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[19], "未发货");
+                    }else if(orderDetail.getShippingStatus().equals("partShipped")){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[19], "部分发货");
+                    }else if(orderDetail.getShippingStatus().equals("shipped")){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[19], "已发货");
+                    }else if(orderDetail.getShippingStatus().equals("partReshiped")){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[19], "部分退货");
+                    }else if(orderDetail.getShippingStatus().equals("reshiped")){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[19], "已退货");
+                    }else if(orderDetail.getShippingStatus().equals("received")){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[19], "已收货");
+                    }
+                }else{
+                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[19], "");
+                }
+
+                if(orderDetail.getPaymentStatus()!=null){
+                    if(orderDetail.getPaymentStatus().equals("unpaid")){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[20], "未付款");
+                        continue;
+                    }else if(orderDetail.getPaymentStatus().equals("paid")){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[20], "已付款");
+                    }else if(orderDetail.getPaymentStatus().equals("cancel")){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[20], "已取消");
+                    }else if(orderDetail.getPaymentStatus().equals("partPayment")){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[20], "部分支付");
+                    }else if(orderDetail.getPaymentStatus().equals("partRefund")){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[20], "部分退款");
+                    }else if(orderDetail.getPaymentStatus().equals("refunded")){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[20], "全额退款");
+                    }
+                }else{
+                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[20], "");
+                }
+            }else if(invoice.getConsumeType() == 1){
+                expansionOrderEntity = expansionOrderService.getById(invoice.getOrderId());
+
+                if(expansionOrderEntity!=null){
+                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[1], expansionOrderEntity.getOrderSn() == null?"" : expansionOrderEntity.getOrderSn());
+                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[5], expansionOrderEntity.getAmount()== null?"" : String.valueOf(expansionOrderEntity.getAmount()));
+                    if(expansionOrderEntity.getUserId()!=null){
+                        User userEntity = userService.getById(expansionOrderEntity.getUserId());
+                        if(userEntity!=null){
+                            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[2], userEntity.getUserName() == null?"" : userEntity.getUserName());
+                            if(invoice.getType() == 3){
+                                //获取默认地址
+                                receiverInfoEntity = iReceiverInfoService.getDefaultByUserId(expansionOrderEntity.getUserId());
+                                if(receiverInfoEntity!=null){
+                                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[14], receiverInfoEntity.getShipName() == null?"" : receiverInfoEntity.getShipName());
+                                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[15], receiverInfoEntity.getShipMobile() == null?"" : receiverInfoEntity.getShipMobile());
+                                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[16], receiverInfoEntity.getShipAreaPath()== null?"" : receiverInfoEntity.getShipAreaPath()
+                                            + " " + receiverInfoEntity.getShipAddress()== null?"" : receiverInfoEntity.getShipAddress());
+                                }
+                            }
+                        }
+                    }
+
+                    if( expansionOrderEntity.getTradeTime() == null){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[3], "");
+                    }else{
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[3], DateUtil.date2String(expansionOrderEntity.getTradeTime(),null));
+                    }
+
+                    if (expansionOrderEntity.getPayType() == -1) {
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[6], "未支付");
+                        continue;
+                    } else {
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[6], ConstantExcel.PAYFORM[expansionOrderEntity.getPayType()]);
+                    }
+
+                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[18], "");
+                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[19], "");
+
+                    try{
+                        if(expansionOrderEntity.getPayStatus() == 0 || expansionOrderEntity.getPayStatus() ==-1 ){
+                            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[20], "未付款");
+                            continue;
+                        }else if(expansionOrderEntity.getPayStatus() == -2 ){
+                            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[20], "已退款");
+                        }else if(expansionOrderEntity.getPayStatus() == 1){
+                            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[20], "已付款");
+                        }
+                    }catch (Exception e){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[20], "");
+                    }
+                }
+
+            }else if(invoice.getConsumeType() == 2){
+                incrementDetail = incrementOrderService.getVoById(invoice.getIncrementOrderId());
+
+                if(incrementDetail!=null){
+                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[1], incrementDetail.getOrderSn() == null?"" : incrementDetail.getOrderSn());
+                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[5], incrementDetail.getAmount()== null?"" : String.valueOf(incrementDetail.getAmount()));
+                    if(incrementDetail.getUserId()!=null){
+                        User userEntity = userService.getById(incrementDetail.getUserId());
+                        if(userEntity!=null){
+                            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[2], userEntity.getUserName() == null?"" : userEntity.getUserName());
+
+                            if(invoice.getType() == 3){
+                                //获取默认地址
+                                receiverInfoEntity = iReceiverInfoService.getDefaultByUserId(incrementDetail.getUserId());
+                                if(receiverInfoEntity!=null){
+                                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[14], receiverInfoEntity.getShipName() == null?"" : receiverInfoEntity.getShipName());
+                                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[15], receiverInfoEntity.getShipMobile() == null?"" : receiverInfoEntity.getShipMobile());
+                                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[16], receiverInfoEntity.getShipAreaPath()== null?"" : receiverInfoEntity.getShipAreaPath()
+                                            + " " + receiverInfoEntity.getShipAddress()== null?"" : receiverInfoEntity.getShipAddress());
+                                }
+                            }
+                        }
+                    }
+
+                    if( incrementDetail.getTradeTime() == null){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[3], "");
+                    }else{
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[3], DateUtil.date2String(incrementDetail.getTradeTime(),null));
+                    }
+
+                    if (incrementDetail.getPayType() == null || incrementDetail.getPayType() == -1) {
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[6], "未支付");
+                        continue;
+                    } else {
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[6], ConstantExcel.PAYFORM[incrementDetail.getPayType()]);
+                    }
+
+                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[18], "");
+                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[19], "");
+
+                    if(incrementDetail.getPayStatus()!=null){
+                        if(incrementDetail.getPayStatus().equals(0) || incrementDetail.getPayStatus().equals(-1)){
+                            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[20], "未付款");
+                            continue;
+                        }else if(incrementDetail.getPayStatus().equals(-2)){
+                            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[20], "已退款");
+                        }else if(incrementDetail.getPayStatus().equals(1)){
+                            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[20], "已付款");
+                        }
+                    }else{
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[20], "");
+                    }
+                }
+
+            }else if(invoice.getConsumeType() == 3){
+                downloadDetail = downloadOrderService.getVoById(invoice.getDownloadOrderId());
+
+                if(downloadDetail!=null){
+                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[1], downloadDetail.getOrderSn() == null?"" : downloadDetail.getOrderSn());
+                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[5], downloadDetail.getAmount()== null?"" : String.valueOf(downloadDetail.getAmount()));
+                    if(downloadDetail.getUserId()!=null){
+                        User userEntity = userService.getById(downloadDetail.getUserId());
+                        if(userEntity!=null){
+                            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[2], userEntity.getUserName() == null?"" : userEntity.getUserName());
+
+                            if(invoice.getType() == 3){
+                                //获取默认地址
+                                receiverInfoEntity = iReceiverInfoService.getDefaultByUserId(downloadDetail.getUserId());
+                                if(receiverInfoEntity!=null){
+                                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[14], receiverInfoEntity.getShipName() == null?"" : receiverInfoEntity.getShipName());
+                                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[15], receiverInfoEntity.getShipMobile() == null?"" : receiverInfoEntity.getShipMobile());
+                                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[16], receiverInfoEntity.getShipAreaPath()== null?"" : receiverInfoEntity.getShipAreaPath()
+                                            + " " + receiverInfoEntity.getShipAddress()== null?"" : receiverInfoEntity.getShipAddress());
+                                }
+                            }
+                        }
+                    }
+
+                    if( downloadDetail.getTradeTime() == null){
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[3], "");
+                    }else{
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[3], DateUtil.date2String(downloadDetail.getTradeTime(),null));
+                    }
+
+                    if (downloadDetail.getPayType() == null || downloadDetail.getPayType() == -1) {
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[6], "未支付");
+                        continue;
+                    } else {
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[6], ConstantExcel.PAYFORM[downloadDetail.getPayType()]);
+                    }
+
+                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[18], "");
+                    item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[19], "");
+
+                    if(downloadDetail.getPayStatus()!=null){
+                        if(downloadDetail.getPayStatus().equals(0) || downloadDetail.getPayStatus().equals(-1)){
+                            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[20], "未付款");
+                            continue;
+                        }else if(downloadDetail.getPayStatus().equals(-2)){
+                            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[20], "已退款");
+                        }else if(downloadDetail.getPayStatus().equals(1)){
+                            item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[20], "已付款");
+                        }
+                    }else{
+                        item.put(ConstantExcel.INVOICEEXCELCOLENNAME2[20], "");
+                    }
+                }
+
+            }
+
+            serNum++;
+            dataList.add(item);
+        }
+
+        String fileName = "发票数据-" + String.valueOf(System.currentTimeMillis()) + ".xls";
+        File file = new File(FileUtils.getResource() + fileName + ".xls");
+
+        ExcelUtil.writeExcel(dataList, ConstantExcel.INVOICEEXCELCOLENNAME2.length, FileUtils.getResource() + fileName + ".xls", 6);
+
+        String agent = request.getHeader("User-Agent");
+        if (agent != null && (agent.contains("MSIE")||agent.contains("Trident"))) {
+            fileName = URLEncoder.encode(fileName, "UTF-8");
+        } else {
+            //非IE浏览器的处理:
+            fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
+        }
+        response.setHeader("Content-Disposition", "attachment; filename=\""+fileName+"\"");
+        response.setContentType(request.getServletContext().getMimeType(fileName));
+        response.setContentLength((int) file.length());
+        output(response, file);
+    }
 }

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

@@ -0,0 +1,19 @@
+package com.fdkankan.platform.user.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class ResponseManager implements Serializable {
+
+    private static final long serialVersionUID = 7814707176169825535L;
+
+    private Long id;
+
+    //@ApiModelProperty(value = "用户名", name = "userName")
+    private String username;
+
+    //@ApiModelProperty(value = "密码", name = "password")
+    private String password;
+}

+ 39 - 0
4dkankan-center-platform/src/main/resources/mapper/order/InvoiceMapper.xml

@@ -2,4 +2,43 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fdkankan.platform.order.mapper.IInvoiceMapper">
 
+    <select id="getListByParam"  resultType="com.fdkankan.platform.order.entity.Invoice">
+        SELECT i.* FROM t_invoice i LEFT JOIN t_camera c on i.camera_id = c.id
+        <if test="param.searchKey != null and param.searchKey !='' " >
+        LEFT JOIN t_user u on i.user_id = u.id  LEFT JOIN t_order o on i.order_id = o.id
+        </if>
+        WHERE i.rec_status = 'A' AND i.consume_type = 1 AND c.child_name IS NOT NULL
+        <if test="param.searchKey != null and param.searchKey !='' " >
+        AND ((u.user_name like CONCAT('%',#{param.searchKey},'%')) or (o.order_sn like CONCAT('%',#{param.searchKey},'%')))
+        </if>
+        <if test="param.startDate != null and param.startDate !='' " >
+        and i.create_time &gt;= ${param.startDate} '00:00:00'
+        </if>
+        <if test=" param.endDate != null and param.endDate !='' " >
+         and i.create_time &lt;= ${param.endDate} '23:59:59'
+        </if>
+        <if test="orderBy != null">
+            order by ${orderBy}
+        </if>
+        <if test="start != null and pageSize !=null">
+            limit ${start}, ${pageSize}
+        </if>
+    </select>
+
+    <select id="getCountByParam"  resultType="integer">
+        SELECT count(*) FROM t_invoice i LEFT JOIN t_camera c on i.camera_id = c.id
+        <if test="param.searchKey != null and param.searchKey !='' " >
+            LEFT JOIN t_user u on i.user_id = u.id  LEFT JOIN t_order o on i.order_id = o.id
+        </if>
+        WHERE i.rec_status = 'A' AND i.consume_type = 1 AND c.child_name IS NOT NULL
+        <if test="param.searchKey != null and param.searchKey !='' " >
+            AND ((u.user_name like CONCAT('%',#{param.searchKey},'%')) or (o.order_sn like CONCAT('%',#{param.searchKey},'%')))
+        </if>
+        <if test="param.startDate != null and param.startDate !='' " >
+            and i.create_time &gt;= ${param.startDate} '00:00:00'
+        </if>
+        <if test=" param.endDate != null and param.endDate !='' " >
+            and i.create_time &lt;= ${param.endDate} '23:59:59'
+        </if>
+    </select>
 </mapper>