/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.business.service.impl;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.springblade.business.entity.UserOpinionFlow;
import org.springblade.business.vo.UserOpinionFlowVO;
import org.springblade.business.mapper.UserOpinionFlowMapper;
import org.springblade.business.service.IUserOpinionFlowService;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.List;

/**
 * 用户意见处理流程表 服务实现类
 *
 * @author BladeX
 * @since 2022-05-25
 */
@Service
public class UserOpinionFlowServiceImpl extends BaseServiceImpl<UserOpinionFlowMapper, UserOpinionFlow> implements IUserOpinionFlowService {

	@Override
	public UserOpinionFlow queryLeftFlowManageUser(Integer number, String userOpinionId) {
		return this.baseMapper.queryLeftFlowManageUser(number, userOpinionId);
	}

	@Override
	public List<UserOpinionFlowVO> queryCurrentUserOpinionFlowByUserOpinionId(String userOpinionId, Integer number) {
		List<UserOpinionFlow> result = this.baseMapper.queryCurrentUserOpinionFlowByUserOpinionId(userOpinionId, number);
		List<UserOpinionFlowVO> resultVo = JSONArray.parseArray(JSONObject.toJSONString(result), UserOpinionFlowVO.class);
		resultVo.forEach(vo -> {
			vo.setCurrentBol(new Integer("2").equals(vo.getIsCurrent()));
		});
		return resultVo;
	}

	@Override
	public Integer selectIsSolveByUserOpinionKey(Long userOpinionKey) {
		return this.baseMapper.selectIsSolveByUserOpinionKey(userOpinionKey);
	}

	@Override
	public IPage<UserOpinionFlowVO> selectUserOpinionFlowPage(IPage<UserOpinionFlowVO> page, UserOpinionFlowVO userOpinionFlow) {
		return page.setRecords(this.baseMapper.selectUserOpinionFlowPage(page, userOpinionFlow));
	}

}
