com.oriental.manage.controller.merchant.settleManage.MerchantContranctController.java Source code

Java tutorial

Introduction

Here is the source code for com.oriental.manage.controller.merchant.settleManage.MerchantContranctController.java

Source

package com.oriental.manage.controller.merchant.settleManage;

import com.oriental.manage.core.dfsUtils.FastDFSPoolUtil;
import com.oriental.manage.core.enums.CompanyType;
import com.oriental.manage.core.fileUtils.FileUtilsExt;
import com.oriental.manage.core.paging.Pagination;
import com.oriental.manage.core.response.ResponseDTO;
import com.oriental.manage.pojo.base.DfsFileInfo;
import com.oriental.manage.core.system.log.OperateLogger;
import com.oriental.manage.pojo.merchant.ContractInfo;
import com.oriental.manage.service.base.IDfsFileInfoService;
import com.oriental.manage.service.merchant.IContractService;
import com.oriental.paycenter.commons.utils.DateUtil;
import com.oriental.paycenter.commons.utils.RandomMath;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * Created by wangjun on 2016/6/8.
 * ???
 *
 */
@Slf4j
@Controller
@RequestMapping("merchant/merchantContaract")
public class MerchantContranctController {

    private List<String> status = new ArrayList<String>() {
        {
            add("02");
            add("04");
            add("05");
        }
    };

    @Autowired
    private IContractService contractService;

    @Autowired
    private IDfsFileInfoService iDfsFileInfoService;

    @Autowired
    private FastDFSPoolUtil fastDFSPoolUtil;

    @Value("#{cfgProperties['downloadTempDir']}")
    private String downloadTempDir;

    @RequestMapping("init")
    @RequiresPermissions("merchant-contaract_search")
    public String init() {
        return "merchant/settleManage/searchContract";
    }

    @RequestMapping("toAdd")
    public String toAdd() {
        return "merchant/settleManage/addContract";
    }

    @RequestMapping("toUpdate")
    public String toUpdate() {
        return "merchant/settleManage/updateContract";
    }

    @OperateLogger(content = "???", operationType = OperateLogger.OperationType.R)
    @RequestMapping("search")
    @RequiresPermissions("merchant-contaract_search")
    @ResponseBody
    public ResponseDTO<Pagination<ContractInfo>> queryPage(ContractInfo contractInfo,
            Pagination<ContractInfo> pagination) {

        ResponseDTO<Pagination<ContractInfo>> responseDTO = new ResponseDTO<Pagination<ContractInfo>>();
        try {

            contractInfo.setCompanyType(CompanyType.MERCHANT.getCode());
            contractService.queryPage(pagination, contractInfo);
            responseDTO.setSuccess(true);
            responseDTO.setObject(pagination);

        } catch (Exception e) {
            log.error("", e);
            responseDTO.setSuccess(false);
            responseDTO.setMsg(e.getMessage());
        }
        return responseDTO;
    }

    @OperateLogger(content = "???", operationType = OperateLogger.OperationType.C, tables = "T_CONTRACT_INFO")
    @RequestMapping("add")
    @RequiresPermissions("merchant-contaract_add")
    @ResponseBody
    public ResponseDTO<String> add(ContractInfo contractInfo) {
        ResponseDTO<String> responseDTO = new ResponseDTO<String>();
        try {
            if (this.check(contractInfo.getCompanyCode(), contractInfo.getContCode())) {
                responseDTO.setSuccess(false);
                responseDTO.setMsg("????");
            } else {
                contractInfo.setId(DateUtil.getCurrent().concat(RandomMath.getNum(5)));
                contractInfo.setCompanyType(CompanyType.MERCHANT.getCode());
                contractService.addContract(responseDTO, contractInfo);
            }
        } catch (Exception e) {
            log.error("", e);
            responseDTO.setSuccess(false);
            responseDTO.setMsg(e.getMessage());
        }
        return responseDTO;
    }

    @OperateLogger(content = "???", operationType = OperateLogger.OperationType.U, tables = "T_CONTRACT_INFO")
    @RequestMapping("update")
    @RequiresPermissions("merchant-contaract_update")
    @ResponseBody
    public ResponseDTO<String> update(ContractInfo contractInfo) {
        ResponseDTO<String> responseDTO = new ResponseDTO<String>();
        try {
            if (!status.contains(contractInfo.getAuditStatus())) {
                contractInfo.setAuditStatus("01");
            }
            contractInfo.setCompanyType(CompanyType.MERCHANT.getCode());
            contractService.updateContract(responseDTO, contractInfo);
        } catch (Exception e) {
            log.error("", e);
            responseDTO.setSuccess(false);
            responseDTO.setMsg(e.getMessage());
        }
        return responseDTO;
    }

    @OperateLogger(content = "???", operationType = OperateLogger.OperationType.D, tables = "T_CONTRACT_INFO")
    @RequestMapping("delete")
    @RequiresPermissions("merchant-contaract_delete")
    @ResponseBody
    public ResponseDTO<String> delete(ContractInfo contractInfo) {
        ResponseDTO<String> responseDTO = new ResponseDTO<String>();
        try {
            contractInfo.setCompanyType(CompanyType.MERCHANT.getCode());
            contractService.deleteContract(responseDTO, contractInfo);
        } catch (Exception e) {
            log.error("", e);
            responseDTO.setSuccess(false);
            responseDTO.setMsg(e.getMessage());
        }
        return responseDTO;
    }

    @ResponseBody
    @RequestMapping("/updateItemEnableFlag")
    @RequiresPermissions(value = { "merchant-contaract_audit", "merchant-contaract_fail", "merchant-contaract_on",
            "merchant-contaract_off" }, logical = Logical.OR)
    public ResponseDTO<String> updateItemEnableFlag(@RequestBody ContractInfo contractInfo) {
        ResponseDTO<String> responseDTO = new ResponseDTO<String>();
        try {
            contractService.updateContract(responseDTO, contractInfo);
        } catch (Exception e) {
            log.error("?", e);
            responseDTO.setSuccess(false);
            responseDTO.setMsg("");
        }
        return responseDTO;
    }

    @RequestMapping("/downEnclosure")
    @RequiresPermissions("org-contaract_down")
    public ResponseEntity<byte[]> downEnclosure(String id) {

        try {
            ContractInfo contractInfo = contractService.queryById(id);
            String path = downloadTempDir.concat("/").concat(contractInfo.getCompanyCode()).concat("/");
            FileUtilsExt.writeFile(path);
            String[] pathList = { contractInfo.getDfsBankFile(), contractInfo.getDfsBizLicenseCert(),
                    contractInfo.getDfsContAttach(), contractInfo.getDfsOpenBankCert(),
                    contractInfo.getDfsOrganizationCodeCert(), contractInfo.getDfsRatePayerCert(),
                    contractInfo.getDfsTaxRegisterCert() };
            for (String dfsPath : pathList) {
                if (StringUtils.isNotBlank(dfsPath)) {
                    DfsFileInfo dfsFileInfo = new DfsFileInfo();
                    dfsFileInfo.setDfsFullFilename(dfsPath);
                    List<DfsFileInfo> fileInfoList = iDfsFileInfoService.searchDfsFileInfo(dfsFileInfo);
                    if (null != fileInfoList && fileInfoList.size() > 0) {
                        DfsFileInfo dfsFileInfo1 = fileInfoList.get(0);
                        fastDFSPoolUtil.download(dfsFileInfo1.getDfsGroupname(), dfsFileInfo1.getDfsFullFilename(),
                                path.concat(dfsFileInfo1.getLocalFilename()));
                    }
                }
            }
            String localFileName = downloadTempDir.concat("/").concat(contractInfo.getCompanyCode())
                    .concat("???.zip");
            FileUtilsExt.zipFile(Arrays.asList(new File(path).listFiles()), localFileName);
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
            headers.setContentDispositionFormData("attachment", new String(
                    contractInfo.getCompanyCode().concat("???.zip").getBytes("UTF-8"), "ISO-8859-1"));
            return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(new File(localFileName)), headers,
                    HttpStatus.CREATED);
        } catch (Exception e) {
            log.error("", e);
        }
        return null;
    }

    @RequestMapping("check")
    @ResponseBody
    public boolean check(String companyCode, String contCode) {
        ContractInfo contractInfo = new ContractInfo();
        if (companyCode != null && !"".equals(companyCode)) {
            contractInfo.setCompanyCode(companyCode);
        }
        if (contCode != null && !"".equals(contCode)) {
            contractInfo.setContCode(contCode);
        }
        return contractService.check(contractInfo);
    }
}