/*
 *      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.modules.guosen.userPointsGoods.wrapper;

import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.modules.guosen.loginUser.entity.LoginUser;
import org.springblade.modules.guosen.loginUser.service.ILoginUserService;
import org.springblade.modules.guosen.pointsGoods.entity.PointsGoods;
import org.springblade.modules.guosen.pointsGoods.service.IPointsGoodsService;
import org.springblade.modules.guosen.userAddress.entity.UserAddress;
import org.springblade.modules.guosen.userAddress.service.IUserAddressService;
import org.springblade.modules.guosen.userPointsGoods.entity.UserPointsGoods;
import org.springblade.modules.guosen.userPointsGoods.vo.UserPointsGoodsVO;
import java.util.Objects;

/**
 * 包装类,返回视图层所需的字段
 *
 * @author BladeX
 * @since 2021-06-28
 */
public class UserPointsGoodsWrapper extends BaseEntityWrapper<UserPointsGoods, UserPointsGoodsVO>  {

	private  ILoginUserService loginUserService;

	private  IUserAddressService userAddressService;

	private IPointsGoodsService pointsGoodsService;

	private UserPointsGoodsWrapper(ILoginUserService loginUserService,IUserAddressService userAddressService,IPointsGoodsService pointsGoodsService){
		this.loginUserService = loginUserService;
		this.userAddressService = userAddressService;
		this.pointsGoodsService = pointsGoodsService;
	}
	public static UserPointsGoodsWrapper build(ILoginUserService loginUserService, IUserAddressService userAddressService, IPointsGoodsService pointsGoodsService) {
		return new UserPointsGoodsWrapper(loginUserService,userAddressService,pointsGoodsService);
 	}

	@Override
	public UserPointsGoodsVO entityVO(UserPointsGoods userPointsGoods) {
		UserPointsGoodsVO userPointsGoodsVO = Objects.requireNonNull(BeanUtil.copy(userPointsGoods, UserPointsGoodsVO.class));
		//用户信息
		if(userPointsGoods.getUserId() != null){
			LoginUser loginUser = loginUserService.getById(userPointsGoods.getUserId());
			if(loginUser != null){
				userPointsGoodsVO.setUserPhone(loginUser.getPhone());
				userPointsGoodsVO.setUserNickName(loginUser.getNickName());
			}
		}
		//收件信息
		if(userPointsGoods.getAddressId()!=null){
			UserAddress userAddress = userAddressService.getById(userPointsGoods.getAddressId());
			if(userAddress != null){
				userPointsGoodsVO.setRecivierName(userAddress.getConsignee());
				userPointsGoodsVO.setRecivierPhone(userAddress.getPhone());
				userPointsGoodsVO.setArea(userAddress.getArea());
				userPointsGoodsVO.setAddress(userAddress.getDetail());
			}
		}

		//商品详情

		return userPointsGoodsVO;
	}

}
