package cn.ey.biz.module.external.api.fd.feign.reqdto;

import java.util.Date;

import com.alibaba.fastjson.annotation.JSONField;

import cn.ey.biz.module.external.api.fd.feign.config.FdConfig;
import cn.ey.biz.module.external.utils.DateUtils;
import cn.ey.biz.module.external.utils.MD5Utils;
import cn.ey.biz.module.external.utils.SpringUtils;
import lombok.Data;

/**
 * fd系统接口请求参数中公共不变的部分
 * @author 86182
 *
 */
@Data
public class CommonRequest {
	private OperationInfo operationinfo;		  
	private PageInfo pageInfo;
	private Header header;
	
	@Data
	public static class Header{
		/**
		 * 系统标识（由OA分配）
		 */
	    String systemid;
	    /**
	             * 当前时间字符串，格式：yyyyMMddHHmmss（调用时生成）
	     */
	    String currentDateTime;
	    /**
	     * systemid+password+currentDateTime字符串用md5加密（password密码由OA提供)
	     */
	    @JSONField(name = "Md5")
	    String md5;
	    /**
	            * 返回多语言参数：默认值为7 枚举：7：中文 8：英文 9：繁体中文
	     */
	    String feedbackLanguage;
	    
		public Header(String systemId,String systemEncryptionFactor) {
			this.systemid = systemId;
			this.currentDateTime = DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN2);
			this.md5 = MD5Utils.encrypt(this.systemid+systemEncryptionFactor+this.currentDateTime);
		}
	}
	
	@Data
	public static class OperationInfo{
		
		private String operator;	//传入人员id
		
		private String operationDate;
		
		private String operationTime;

		public OperationInfo() {
			FdConfig fdConfig = SpringUtils.getObject(FdConfig.class);
			this.operator = fdConfig.getFdOperatorId();
		}	
		
	}
	    
	@Data
	public static class PageInfo{
		
		Long pageNo = 1l;		  
	    
		Long pageSize = 10l;
	}
}
