UserAttendanceManagerImpl.java 3.79 KB
/*
 * @(#)UserManagerImpl.java
 *
 * Copyright (c) 2014-2017  xiniunet 版权所有
 * xiniunet. All rights reserved.
 *
 * This software is the confidential and proprietary
 * information of  xiniunet.
 * ("Confidential Information"). You shall not disclose
 * such Confidential Information and shall use it only
 * in accordance with the terms of the contract agreement
 * you entered into with xiniunet.
 */
package com.xiniunet.service.railway.biz;

import com.xiniunet.foundation.service.FoundationService;
import com.xiniunet.framework.base.BaseManagerImpl;
import com.xiniunet.framework.security.Passport;
import com.xiniunet.master.service.MasterService;
import com.xiniunet.railway.domain.UserAttendance;
import com.xiniunet.railway.request.*;
import com.xiniunet.railway.response.*;
import com.xiniunet.security.service.SecurityService;
import com.xiniunet.service.railway.dal.EscortAttendanceMapper;
import com.xiniunet.service.railway.dal.SafetyEscortMapper;
import com.xiniunet.service.railway.dal.UserAttendanceMapper;
import com.xiniunet.service.railway.po.UserAttendancePO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;

/**
 * 用户的管理方法实现.
 *
 * @author xiniunet
 */
@Transactional
@Service("RailwayUserAttendanceManager")
public class UserAttendanceManagerImpl extends BaseManagerImpl implements UserAttendanceManager {

    @Autowired
    private FoundationService foundationService;

    @Autowired
    private MasterService masterService;
    @Autowired
    private SecurityService securityService;
    @Autowired
    private SafetyEscortManager safetyEscortManager;

    @Autowired
    private UserAttendanceMapper userAttendanceMapper;
    @Autowired
    private SafetyEscortMapper safetyEscortMapper;
    @Autowired
    private EscortAttendanceMapper escortAttendanceMapper;

    /**
     * 模糊查询用户
     *
     * @param request  模糊查询用户请求
     * @param passport 用户护照
     * @return 模糊查询用户应答
     */
    @Override
    @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
    public UserAttendanceSearchResponse search(UserAttendanceSearchRequest request, Passport passport) {
        UserAttendanceSearchResponse response = new UserAttendanceSearchResponse();
        List<UserAttendance> modelList = new ArrayList<>();
        Long count = userAttendanceMapper.findCount(request, passport);

        if (count > 0) {
            // 处理分页参数
            if (request.getPageSize() > 0) {
                //如果输入的页码大于实际的分页数,将页码设置为最后一页的页码
                int lastPageNumber = (int) ((count - 1) / request.getPageSize() + 1);
                if (request.getPageNumber() > lastPageNumber) {
                    request.setRequestIndex((long)(lastPageNumber -1)  * 10);
                } else {
                    if (request.getPageNumber() == 1) {
                        request.setRequestIndex((long)0);
                    } else {
                        request.setRequestIndex((long)(request.getPageNumber() - 1) * 10);
                    }
                }
            }

            //通过关键字查询出用户集合
            List<UserAttendancePO> entityList = userAttendanceMapper.find(request, passport);

            for (UserAttendancePO entity : entityList) {
                UserAttendance userAttendance = this.getMapper().map(entity, UserAttendance.class);
                modelList.add(userAttendance);
            }
        }

        response.setTotalCount(count);
        response.setResult(modelList);
        return response;
    }

}