dcs 2 月之前
父節點
當前提交
e2a5274853

+ 0 - 8
virgo.api/src/main/java/com/bosshand/virgo/api/workark/controller/OrderInfoController.java

@@ -111,12 +111,4 @@ public class OrderInfoController {
         return Response.ok(orderInfoService.getOrderNo(orderNo));
     }
 
-
-    @ApiOperation("绑定合同")
-    @RequestMapping(value = "/contract", method = RequestMethod.POST)
-    public Response contract(@RequestBody OrderInfo orderInfo) {
-        orderInfoService.updateContract(orderInfo);
-        return Response.ok();
-    }
-
 }

+ 0 - 2
virgo.api/src/main/java/com/bosshand/virgo/api/workark/dao/OrderInfoDao.java

@@ -15,8 +15,6 @@ public interface OrderInfoDao {
 
     void update(OrderInfo orderInfo);
 
-    void updateContract(OrderInfo orderInfo);
-
     void updateTotalFee(OrderInfo orderInfo);
 
     void updateStatus(OrderInfo orderInfo);

+ 23 - 10
virgo.api/src/main/java/com/bosshand/virgo/api/workark/model/OrderInfo.java

@@ -81,9 +81,14 @@ public class OrderInfo {
     private String productCouponIds;
 
     /**
-     * 合同
+     * 合同id-dto
      */
-    private String contract;
+    private long contractId;
+
+    /**
+     * 合同状态-dto
+     */
+    private int contractStatus;
 
     /**
      * 目录id
@@ -209,20 +214,28 @@ public class OrderInfo {
         this.status = status;
     }
 
-    public String getProductCouponIds() {
-        return productCouponIds;
+    public long getContractId() {
+        return contractId;
     }
 
-    public void setProductCouponIds(String productCouponIds) {
-        this.productCouponIds = productCouponIds;
+    public void setContractId(long contractId) {
+        this.contractId = contractId;
     }
 
-    public String getContract() {
-        return contract;
+    public int getContractStatus() {
+        return contractStatus;
     }
 
-    public void setContract(String contract) {
-        this.contract = contract;
+    public void setContractStatus(int contractStatus) {
+        this.contractStatus = contractStatus;
+    }
+
+    public String getProductCouponIds() {
+        return productCouponIds;
+    }
+
+    public void setProductCouponIds(String productCouponIds) {
+        this.productCouponIds = productCouponIds;
     }
 
     public long getProductLevelId() {

+ 0 - 4
virgo.api/src/main/java/com/bosshand/virgo/api/workark/service/OrderInfoService.java

@@ -54,10 +54,6 @@ public class OrderInfoService {
         orderInfoDao.update(orderInfo);
     }
 
-    public void updateContract(OrderInfo orderInfo) {
-        orderInfoDao.updateContract(orderInfo);
-    }
-
     public List<OrderInfo> getList(OrderInfo orderInfo){
         return orderInfoDao.getList(orderInfo);
     }

+ 8 - 7
virgo.api/src/main/resources/mapper/OrderInfoMapper.xml

@@ -19,7 +19,8 @@
         <result column="status" property="status"/>
         <result column="paymentType" property="paymentType"/>
         <result column="productCouponIds" property="productCouponIds"/>
-        <result column="contract" property="contract"/>
+        <result column="contractId" property="contractId"/>
+        <result column="contractStatus" property="contractStatus"/>
         <result column="productLevelId" property="productLevelId"/>
         <result column="organizationId" property="organizationId"/>
         <result column="payOrganizationId" property="payOrganizationId"/>
@@ -45,8 +46,12 @@
                b.content                      as invoice_content,
                b.amount                       as invoice_amount,
                b.file                         as invoice_file,
-               b.state                        as invoice_state
-        from workark_orderInfo a left join workark_invoice b on a.orderNo = b.orderNo
+               b.state                        as invoice_state,
+               c.id                           as contractId,
+               c.state                        as contractStatus
+        from workark_orderInfo a
+            left join workark_invoice b on a.orderNo = b.orderNo
+            left join workark_contract_pdf c on a.orderNo = c.orderNo
     </sql>
 
     <select id="get" resultMap="result">
@@ -188,10 +193,6 @@
         WHERE id=#{id}
     </update>
 
-    <update id="updateContract" parameterType="com.bosshand.virgo.api.workark.model.OrderInfo">
-        UPDATE workark_orderInfo SET contract = #{contract} WHERE id = #{id}
-    </update>
-
     <update id="updateTotalFee" parameterType="com.bosshand.virgo.api.workark.model.OrderInfo">
         UPDATE workark_orderInfo SET totalFee=#{totalFee} WHERE id=#{id}
     </update>

+ 46 - 4
virgo.file/src/main/java/com/bosshand/virgo/file/controller/WorkarkContractController.java

@@ -4,15 +4,13 @@ import com.bosshand.virgo.core.response.Response;
 import com.bosshand.virgo.exception.BadRequestException;
 import com.bosshand.virgo.exception.Constant;
 import com.bosshand.virgo.file.model.WorkarkContract;
+import com.bosshand.virgo.file.model.WorkarkContractPdf;
 import com.bosshand.virgo.file.service.WorkarkContractService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
@@ -131,5 +129,49 @@ public class WorkarkContractController {
         }
     }
 
+    @ApiOperation("绑定合同")
+    @RequestMapping(value = "/pdf", method = RequestMethod.POST)
+    public Response updateWorkarkContractPdf(@RequestBody WorkarkContractPdf workarkContractPdf) {
+        WorkarkContractPdf orderNo = workarkContractService.getOrderNo(workarkContractPdf.getOrderNo());
+        if (orderNo != null) {
+            return Response.fail(20000, orderNo.getOrderNo() + "该订单已经绑定过合同了");
+        }
+        workarkContractService.saveWorkarkContractPdf(workarkContractPdf);
+        return Response.ok();
+    }
+
+    @ApiOperation("修改合同状态")
+    @RequestMapping(value = "/pdf", method = RequestMethod.PUT)
+    public Response contractStatus(@RequestBody WorkarkContractPdf workarkContractPdf) {
+        workarkContractService.updateWorkarkContractPdf(workarkContractPdf);
+        return Response.ok();
+    }
+
+    @ApiOperation("展示绑定后合同PDF")
+    @RequestMapping(value = "/show/{pdfId}", method = RequestMethod.GET)
+    public void getShowPdf(@PathVariable long pdfId, final HttpServletResponse response) {
+        byte[] data = null;
+        OutputStream outputStream = null;
+        try {
+            WorkarkContractPdf workarkContractPdf = workarkContractService.getWorkarkContractPdf(pdfId);
+            data = workarkContractService.getWorkarkContractPdfData(pdfId);
+            response.setCharacterEncoding("UTF-8");
+            response.setContentType("application/x-msdownload");
+            response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(workarkContractPdf.getName(), "UTF-8"));
+            OutputStream outputSream = response.getOutputStream();
+            outputSream.write(data);
+            outputSream.flush();
+        } catch (IOException e) {
+            throw new BadRequestException("Fail to write stream", Constant.RET_DOCUMENT_ERROR, e);
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                }
+            }
+        }
+    }
+
 
 }

+ 17 - 0
virgo.file/src/main/java/com/bosshand/virgo/file/dao/WorkarkContractPdfDao.java

@@ -0,0 +1,17 @@
+package com.bosshand.virgo.file.dao;
+
+import com.bosshand.virgo.file.model.WorkarkContractPdf;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface WorkarkContractPdfDao {
+
+    List<WorkarkContractPdf> getList(long organizationId);
+    WorkarkContractPdf getOrderNo(String orderNo);
+    WorkarkContractPdf get(long id);
+    void insert(WorkarkContractPdf workarkContractPdf);
+    void delete(long id);
+    void update(WorkarkContractPdf workarkContractPdf);
+}

+ 115 - 0
virgo.file/src/main/java/com/bosshand/virgo/file/model/WorkarkContractPdf.java

@@ -0,0 +1,115 @@
+package com.bosshand.virgo.file.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.util.Date;
+
+/**
+ * 合同的pdf
+ */
+public class WorkarkContractPdf {
+
+    private long id;
+
+    /**
+     * 商户订单编号
+     */
+    private String orderNo;
+
+    /**
+     * 合同id
+     */
+    private long contractId;
+
+    /**
+     * 合同状态
+     */
+    private Integer state;
+
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createDate;
+
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateDate;
+
+    private String name;
+
+    /**
+     * 合同pdf
+     */
+    private Node node;
+
+    private long organizationId;
+
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public long getContractId() {
+        return contractId;
+    }
+
+    public void setContractId(long contractId) {
+        this.contractId = contractId;
+    }
+
+    public Integer getState() {
+        return state;
+    }
+
+    public void setState(Integer state) {
+        this.state = state;
+    }
+
+    public Date getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
+    }
+
+    public Date getUpdateDate() {
+        return updateDate;
+    }
+
+    public void setUpdateDate(Date updateDate) {
+        this.updateDate = updateDate;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Node getNode() {
+        return node;
+    }
+
+    public void setNode(Node node) {
+        this.node = node;
+    }
+
+    public long getOrganizationId() {
+        return organizationId;
+    }
+
+    public void setOrganizationId(long organizationId) {
+        this.organizationId = organizationId;
+    }
+}

+ 41 - 0
virgo.file/src/main/java/com/bosshand/virgo/file/service/WorkarkContractService.java

@@ -2,7 +2,9 @@ package com.bosshand.virgo.file.service;
 
 import com.bosshand.virgo.exception.ServiceException;
 import com.bosshand.virgo.file.dao.WorkarkContractDao;
+import com.bosshand.virgo.file.dao.WorkarkContractPdfDao;
 import com.bosshand.virgo.file.model.WorkarkContract;
+import com.bosshand.virgo.file.model.WorkarkContractPdf;
 import com.bosshand.virgo.file.util.AliyunOSSUtil;
 import com.bosshand.virgo.file.util.Doc2Pdf;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,6 +20,9 @@ public class WorkarkContractService {
     @Autowired
     WorkarkContractDao workarkContractDao;
 
+    @Autowired
+    WorkarkContractPdfDao workarkContractPdfDao;
+
     public WorkarkContract create(InputStream is, String name, long organizationId) throws ServiceException {
         WorkarkContract contract = new WorkarkContract();
         contract.setName(name);
@@ -68,4 +73,40 @@ public class WorkarkContractService {
         return Doc2Pdf.doc2pdf(getByte(id));
     }
 
+    public WorkarkContractPdf getWorkarkContractPdf(long id) {
+        return workarkContractPdfDao.get(id);
+    }
+
+    public WorkarkContractPdf getOrderNo(String orderNo) {
+        return workarkContractPdfDao.getOrderNo(orderNo);
+    }
+
+    public void saveWorkarkContractPdf(WorkarkContractPdf workarkContractPdf) {
+
+        String orderNo = workarkContractPdf.getOrderNo();
+
+        long contractId = workarkContractPdf.getContractId();
+
+        WorkarkContract workarkContract = get(contractId);
+
+        workarkContractPdf.setName(orderNo+".PDF");
+        workarkContractPdf.setOrganizationId(workarkContract.getOrganizationId());
+
+        byte[] pdf = getPDF(contractId);
+
+        InputStream inputStream = new ByteArrayInputStream(pdf);
+
+        workarkContractPdf.setNode(AliyunOSSUtil.upload(inputStream));
+
+        workarkContractPdfDao.insert(workarkContractPdf);
+    }
+
+    public void updateWorkarkContractPdf(WorkarkContractPdf workarkContractPdf) {
+        workarkContractPdfDao.update(workarkContractPdf);
+    }
+
+    public byte[] getWorkarkContractPdfData(long id) {
+        WorkarkContractPdf workarkContractPdf = getWorkarkContractPdf(id);
+        return AliyunOSSUtil.getByte(workarkContractPdf.getNode());
+    }
 }

+ 43 - 0
virgo.file/src/main/resources/mapper/WorkarkContractPdfMapper.xml

@@ -0,0 +1,43 @@
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.bosshand.virgo.file.dao.WorkarkContractPdfDao">
+
+    <resultMap type="com.bosshand.virgo.file.model.WorkarkContractPdf" id="result" >
+        <id column="id" property="id"/>
+        <id column="orderNo" property="orderNo"/>
+        <id column="contractId" property="contractId"/>
+        <id column="organizationId" property="organizationId"/>
+        <id column="state" property="state"/>
+        <id column="name" property="name"/>
+        <id column="createDate" property="createDate"/>
+        <id column="updateDate" property="updateDate"/>
+        <id column="node" property="node" typeHandler="com.bosshand.virgo.core.typehandler.BlobTypeHandler"/>
+    </resultMap>
+
+    <select id="getOrderNo" resultMap="result">
+        select * from workark_contract_pdf where orderNo = #{orderNo}
+    </select>
+
+    <select id="get" resultMap="result">
+        select * from workark_contract_pdf where id = #{id}
+    </select>
+
+    <select id="getList" resultMap="result">
+        select * from workark_contract_pdf where organizationId = #{organizationId}
+    </select>
+
+    <delete id="delete">
+        delete from workark_contract_pdf where id = #{id}
+    </delete>
+
+    <insert id="insert" parameterType="com.bosshand.virgo.file.model.WorkarkContractPdf" useGeneratedKeys="true" keyProperty="id">
+        INSERT into workark_contract_pdf(orderNo, contractId, organizationId, name, createDate, node) values(#{orderNo}, #{contractId}, #{organizationId}, #{name}, now(), #{node, typeHandler=com.bosshand.virgo.core.typehandler.BlobTypeHandler})
+    </insert>
+
+    <update id="update" parameterType="com.bosshand.virgo.file.model.WorkarkContractPdf">
+        update workark_contract_pdf set updateDate = now(), state = #{state} where id = #{id}
+    </update>
+
+</mapper>