DiliServiceManagerImpl.java 3.8 KB
package com.diligrp.website.manager.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.diligrp.website.dao.DiliServiceCoverageDao;
import com.diligrp.website.dao.DiliServiceDao;
import com.diligrp.website.domain.DiliService;
import com.diligrp.website.domain.DiliServiceCoverage;
import com.diligrp.website.manager.DiliServiceManager;
import com.diligrp.website.util.dao.BaseQuery;
import com.diligrp.website.util.web.PageTemplate;

/**
 * <B>Description</B>  <br />
 * <B>Copyright</B> Copyright (c) 2014 www.diligrp.com All rights reserved. <br />
 * 本软件源代码版权归地利集团,未经许可不得任意复制与传播.<br />
 * <B>Company</B> 地利集团
 * @createTime 2014-6-3 11:33:00
 * @author template
 */
@Component
public class DiliServiceManagerImpl implements DiliServiceManager {

    @Autowired
    private DiliServiceDao diliServiceDao;

    @Autowired
    private DiliServiceCoverageDao diliServiceCoverageDao;

    public PageTemplate find(BaseQuery bq) {
        List<DiliService> list = diliServiceDao.listByCondition(bq);
        for (DiliService service : list) {
            if (service.checkStatus()) {
                if (!update(service)) {
                    throw new RuntimeException("状态更新失败!");
                }
            }
        }
        int totalSize = diliServiceDao.countByCondition(bq);
        return PageTemplate.create(bq, totalSize, list);
    }

    public List<DiliService> findAll(BaseQuery baseQuery) {
        List<DiliService> list  = diliServiceDao.listAll(baseQuery);
        for (DiliService service : list) {
            if (service.checkStatus()) {
                if (!update(service)) {
                    throw new RuntimeException("状态更新失败!");
                }
            }
        }
        return list;
    }

    public DiliService findOne(Long pk) {
        DiliService service = diliServiceDao.getById(pk);
        if (service.checkStatus()) {
            if (!update(service)) {
                throw new RuntimeException("状态更新失败!");
            }
        }
        return service;
    }

    @Override
    public DiliService findByCode(String code) {
        return diliServiceDao.findByCode(code);
    }

    public Boolean save(DiliService diliService, Long[] coverages) {
        if (!diliServiceDao.save(diliService)) {
            return false;
        }

        if (!saveCoverages(diliService.getId(), coverages)) {
            return false;
        }
        return true;
    }

    public Boolean update(DiliService diliService) {
        if (!diliServiceDao.update(diliService)) {
            return false;
        }
        return true;
    }

    public Boolean update(DiliService diliService, Long[] coverages) {
        if (!diliServiceDao.update(diliService)) {
            return false;
        }

        if (!saveCoverages(diliService.getId(), coverages)) {
            return false;
        }
        return true;
    }

    private Boolean saveCoverages(Long serviceId, Long[] coverages) {
        if (serviceId == null) {
            return false;
        }
        if (!diliServiceCoverageDao.deleteByServiceId(serviceId)) {
            throw new RuntimeException("删除可服务区域出错");
        }
        if (coverages == null || coverages.length <= 0) {
            return true;
        }
        for (Long id : coverages) {
            DiliServiceCoverage dsc = new DiliServiceCoverage();
            dsc.setCoverageId(id);
            dsc.setServiceId(serviceId);
            if (!diliServiceCoverageDao.save(dsc)) {
                throw new RuntimeException("保存关联数据出错!");
            }
        }
        return true;
    }

    public Boolean del(Long id){
        return diliServiceDao.deleteById(id);
    }

}