com.nhncorp.ips.common.bo.ResultSenderBOImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.nhncorp.ips.common.bo.ResultSenderBOImpl.java

Source

/*
 * @(#)ResultSenderBOImpl.java $version 2012. 6. 13.
 *
 * Copyright 2011 NHN Corp. All rights Reserved. 
 * NHN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */
package com.nhncorp.ips.common.bo;

import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.nbp.nmp.api.product.v1.RemoteSimpleProduct;
import com.nbp.nmp.api.product.v1.RemoteSimpleProductService;
import com.nbp.nmp.seller.SellerType;
import com.nbp.nmp.seller.api.v1.BusinessSeller;
import com.nbp.nmp.seller.api.v1.RemoteSeller;
import com.nbp.nmp.seller.api.v1.RemoteSellerService;
import com.nhncorp.common.model.MailParam;
import com.nhncorp.common.model.Sms;
import com.nhncorp.ips.model.Owner;
import com.nhncorp.ips.model.ReportProduct;
import com.nhncorp.ips.model.Seller;
import com.nhncorp.ips.model.WorkRequest;
import com.nhncorp.ips.model.WorkStatus;
import com.nhncorp.ips.owner.bo.OwnerBO;
import com.nhncorp.support.util.cos.CosService;
import com.nhncorp.support.util.mex.SmsUtil;

/**
 */
@Service
public class ResultSenderBOImpl implements ResultSenderBO {
    @Autowired
    private CosService cosService;
    @Autowired
    private SmsUtil smsUtil;
    @Autowired
    private RemoteSellerService remoteSellerService;
    @Autowired
    private RemoteSimpleProductService remoteSimpleProductService;
    @Autowired
    private OwnerBO ownerBO;

    private Logger logger = LoggerFactory.getLogger(getClass());

    /* (non-Javadoc)
     * @see com.nhncorp.ips.common.bo.MailSenderBO#send(com.nhncorp.ips.model.WorkRequest)
     */
    @Override
    public void send(WorkRequest request) {
        if (StringUtils.equals(request.getSmsSendYn(), "N") && StringUtils.equals(request.getMailSendYn(), "N")) {
            logger.debug("### mail, sms   ###\n {}", request);
            return;
        }

        setupDetailInfo(request);
        logger.debug("owner info : {}",
                ToStringBuilder.reflectionToString(request.getOwner(), ToStringStyle.MULTI_LINE_STYLE));
        for (WorkStatus workStatus : WorkStatus.values()) {
            if (StringUtils.equals(workStatus.getCode(), request.getWkResult().getCode())) {
                MailParam mailParam = workStatus.getMailParam(request);
                logger.debug("#######################################");
                logger.debug(" ? : mailParam = {}", mailParam);
                logger.debug(" ? : request.getMailSendYn() = {}", request.getMailSendYn());
                logger.debug("#######################################");
                if (mailParam != null && request.getMailSendYn().equals("Y")) {
                    //  && request.getMailSendYn().equals("Y")
                    logger.debug("#######################################");
                    logger.debug("?   : {}",
                            ToStringBuilder.reflectionToString(mailParam, ToStringStyle.MULTI_LINE_STYLE));
                    logger.debug("#######################################");
                    cosService.send(mailParam);
                }
                List<Sms> smsParam = workStatus.getSmsParam(request);
                logger.debug("#######################################");
                logger.debug(" ? : smsParam = {}", smsParam);
                logger.debug(" ? : request.getSmsSendYn() = {}", request.getSmsSendYn());
                logger.debug("#######################################");
                if (smsParam != null && StringUtils.equals(request.getSmsSendYn(), "Y")) {
                    logger.debug("#######################################");
                    logger.debug("SMS   : {}",
                            ToStringBuilder.reflectionToString(smsParam, ToStringStyle.MULTI_LINE_STYLE));
                    for (Sms sms : smsParam) {
                        logger.debug("sms : {}", sms);
                    }
                    logger.debug("#######################################");
                    smsUtil.send(smsParam);
                }
            }
        }
    }

    /**
     * @param request
     */
    private void setupDetailInfo(WorkRequest request) {
        // seller  .
        List<ReportProduct> productList = request.getProductList();
        Seller seller;
        for (ReportProduct reportProduct : productList) {
            //   ?? seller ? ?
            // ? seller   ? ? .
            if (reportProduct.getPresume() != null) {
                reportProduct.setSeller(reportProduct.getPresume().getSeller());
            }
            seller = reportProduct.getSeller();

            // seller  
            // ?  .
            if (seller.getId() == null) {
                // ? ? ID  Product API  seller .
                RemoteSimpleProduct product = remoteSimpleProductService.get(reportProduct.getProductId());

                seller.setId(product.getSellerId());
                seller.setNo(product.getSellerNo());
                seller.setShopName(product.getSellerShopName());
            }

            logger.debug("#### {}  ? ?? ? {}", request.getWkResult().getName(), seller);

            //  seller  seller api  ? seller?
            // seller?  .
            // TODO ? ? API? seller? ?     ? API    ? .
            RemoteSeller remoteSeller = remoteSellerService.findByLoginId(seller.getId());

            logger.debug("###  ? seller ? : {}",
                    ToStringBuilder.reflectionToString(remoteSeller, ToStringStyle.MULTI_LINE_STYLE));
            if (StringUtils.equals(remoteSeller.getType().getCode(), SellerType.PERSONAL.getCode())
                    || StringUtils.equals(remoteSeller.getType().getCode(), SellerType.DOMESTIC_PERSONAL.getCode())
                    || StringUtils.equals(remoteSeller.getType().getCode(), SellerType.BUSINESS.getCode())
                    || StringUtils.equals(remoteSeller.getType().getCode(),
                            SellerType.DOMESTIC_BUSINESS.getCode())) {
                seller.setPhoneNumber(remoteSeller.getCellPhoneNumber());
            } else if (StringUtils.equals(remoteSeller.getType().getCode(),
                    SellerType.OVERSEAS_PERSONAL.getCode())) {
                seller.setPhoneNumber(remoteSeller.getOverseasTelephoneNumber());
            } else if (StringUtils.equals(remoteSeller.getType().getCode(),
                    SellerType.OVERSEAS_BUSINESS.getCode())) {
                BusinessSeller businessSeller = (BusinessSeller) remoteSeller;
                seller.setPhoneNumber(businessSeller.getChargerOverseasTelephoneNumber());
            }

            // ?  
            final Owner owner = ownerBO.findOwnerByReportedProduct(reportProduct);
            reportProduct.setReportingOwner(owner);
            request.setOwner(owner);
        }

    }

}