TdCPushMsgDaoImpl.java 5.93 KB
package com.zteits.pay.dao.impl;

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

import com.alipay.api.domain.DataEnumValue;
import com.zteits.clouds.api.apibase.constants.DataStatusEnum;
import com.zteits.clouds.api.dto.owner.param.QueryMessageRequest;
import com.zteits.clouds.api.dto.pay.JPushMessageDTO;
import com.zteits.clouds.api.dto.pay.JPushMsgQueryRequest;
import com.zteits.clouds.api.dto.pay.NewMessagePushDTO;
import com.zteits.pay.biz.ParkCardServiceImpl;
import com.zteits.pay.domain.TdCPushMsgExample;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zteits.clouds.api.dto.pay.TdCCustInvoiceHisDTO;
import com.zteits.clouds.api.dto.pay.param.JPushMessageRequest;
import com.zteits.pay.dao.TdCPushMsgDao;
import com.zteits.pay.domain.JPushMessageDO;
import com.zteits.pay.domain.TdCPushMsg;
import com.zteits.pay.mapper.TdCPushMsgMapper;
import com.zteits.pay.mapper.smapper.TdCPushMsgSMapper;

@Component
public class TdCPushMsgDaoImpl implements TdCPushMsgDao {
	/**
	 * self-defined
	 */
	private static final Logger logger = LoggerFactory.getLogger(TdCPushMsgDaoImpl.class);

	@Autowired
	private TdCPushMsgSMapper tdCPushMsgSMapper;
	
	@Autowired
	private TdCPushMsgMapper tdCPushMsgMapper;
	
	@Override
	public int insertSelective(TdCPushMsg record) {
		return tdCPushMsgMapper.insert(record);
	}

	@Override
	public Boolean isExistsByOutMsgNo(Integer msgType, String outMsgNo) {
		TdCPushMsgExample example  = new TdCPushMsgExample();
		example.createCriteria().andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value())
				.andMsgTypeEqualTo(msgType)
				.andOutMsgNoEqualTo(outMsgNo);
		long count = tdCPushMsgMapper.countByExample(example);
		return count>0?true:false;
	}

    @Override
    public PageInfo<TdCPushMsg> queryPageJPushMsgByCondition(JPushMsgQueryRequest request) {
		PageHelper.startPage(request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize());
		List<TdCPushMsg> resultList = tdCPushMsgSMapper.queryParkOrderByCondition(request);
		PageInfo<TdCPushMsg> pageInfo = new PageInfo<>(resultList);
		if(pageInfo.getPages()<request.getBaseRequest().getPageNum()){
			if(!CollectionUtils.isEmpty(resultList)){
				resultList.removeAll(resultList);
			}
		}
		return new PageInfo<>(resultList);
    }

	@Override
	public PageInfo<TdCPushMsg> selectMessageByMessageType(QueryMessageRequest req) {
		PageHelper.startPage(req.getBaseRequest().getPageNum(), req.getBaseRequest().getPageSize());
		TdCPushMsgExample example = new TdCPushMsgExample();
		TdCPushMsgExample.Criteria criteria = example.createCriteria();
		criteria.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());
		criteria.andCustIdEqualTo(req.getCustId());
		Integer[] arr = {2,3,4,5,7};
		/**根据消息类型查询*/
		switch (req.getMessageType()){
			case "1" : criteria.andMsgTypeEqualTo(1);
			break;
			case "2" : criteria.andMsgTypeEqualTo(6);
			break;
			case "3" : criteria.andMsgTypeIn(Arrays.asList(arr));
			break;
			case "4" : criteria.andMsgTypeEqualTo(9);
			break;
		}
		example.setOrderByClause("create_date desc");
		List<TdCPushMsg> tdCPushMsgs = tdCPushMsgMapper.selectByExample(example);
		PageInfo<TdCPushMsg> pageInfo = new PageInfo<>(tdCPushMsgs);
		logger.info("返回数据:"+JSONObject.toJSONString(tdCPushMsgs)+"分页数据:"+JSONObject.toJSONString(pageInfo)+"入参:"+JSONObject.toJSONString(req));
		if(pageInfo.getPages()<req.getBaseRequest().getPageNum()){
			if(!CollectionUtils.isEmpty(tdCPushMsgs)){
				tdCPushMsgs.removeAll(tdCPushMsgs);
			}
		}
		return new PageInfo<>(tdCPushMsgs);
	}

    @Override
    public NewMessagePushDTO countUnreadMessage(QueryMessageRequest req) {
        return tdCPushMsgSMapper.countUnreadMessage(req);
    }

    @Override
    public int updateUnreadMessage(QueryMessageRequest messageRequest) {
        return tdCPushMsgSMapper.updateUnreadMessage(messageRequest);
    }

	@Override
	public Long countUnreadTotal(QueryMessageRequest messageRequest) {
		TdCPushMsgExample example = new TdCPushMsgExample();
		TdCPushMsgExample.Criteria criteria = example.createCriteria();
		criteria.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());
		criteria.andCustIdEqualTo(messageRequest.getCustId());
		criteria.andReadTypeEqualTo(0);
		return tdCPushMsgMapper.countByExample(example);
	}

	/**
	 * 消息中心首页,查询各消息类型的最新一条
	 */
	@Override
	public List<JPushMessageDO> getLatestPushedMessages(JPushMessageRequest request) {
		return tdCPushMsgSMapper.getLatestPushedMessages(request);
	}

	/**
	 * 消息中心-消息详情,查询某一消息的详情
	 */
	@Override
	public List<JPushMessageDO> getPushedMessageDetails(JPushMessageRequest request) {
		
		PageHelper.startPage(request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize());
		List<JPushMessageDO> dtos =tdCPushMsgSMapper.getPushedMessageDetails(request);
		PageInfo<JPushMessageDO> pageInfo = new PageInfo<>(dtos);
		if(pageInfo.getPages()<request.getBaseRequest().getPageNum()){
			if(!CollectionUtils.isEmpty(dtos)){
				dtos.removeAll(dtos);		
			}
		}
		return dtos;
	}

	/**
     * 消息中心-删除消息,删除某一指定类型消息的详情
     * @param request
     */
	@Override
    public void deletePushedMessageDetails(JPushMessageRequest request) {
            tdCPushMsgSMapper.deletePushedMessageDetails(request);
    }

	@Override
	public PageInfo<JPushMessageDO> getPushedMessageDetailsForPage(JPushMessageRequest request) {
		PageHelper.startPage(request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize());
		List<JPushMessageDO> dtos =tdCPushMsgSMapper.getPushedMessageDetails(request);
		return new PageInfo<>(dtos);// TODO Auto-generated method stub
	}


}