package com.hzs.sale.util;

import com.hzs.common.core.enums.ESpecialArea;
import com.hzs.common.core.utils.StringUtils;
import com.hzs.common.core.utils.reflect.ReflectUtils;
import com.hzs.common.domain.member.base.CuMember;

import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;

/**
 * @Description: 订单工具
 * @Author: jiang chao
 * @Time: 2023/3/10 15:13
 * @Classname: OrderUtil
 * @PackageName: com.hzs.sale.util
 */
public class OrderUtil {

    /**
     * 处理地址（省、市、县）
     *
     * @param areaMap 地址map
     * @param data    处理实体
     * @param <T>
     */
    public static <T> void handleOrderAddress(Map<Integer, String> areaMap, T data) {
        String recProvince = areaMap.get(ReflectUtils.invokeGetter(data, "recProvince"));
        if (StringUtils.isNotEmpty(recProvince)) {
            ReflectUtils.invokeSetter(data, "recProvinceVal", recProvince);
        }
        String recCity = areaMap.get(ReflectUtils.invokeGetter(data, "recCity"));
        if (StringUtils.isNotEmpty(recCity)) {
            ReflectUtils.invokeSetter(data, "recCityVal", recCity);
        }
        String recCounty = areaMap.get(ReflectUtils.invokeGetter(data, "recCounty"));
        if (StringUtils.isNotEmpty(recCounty)) {
            ReflectUtils.invokeSetter(data, "recCountyVal", recCounty);
        }
    }

    /**
     * 折扣价格
     *
     * @param cuMember    会员信息
     * @param specialArea 所属专区
     * @param price       价格
     * @return
     */
    public static BigDecimal discountPrice(CuMember cuMember, Integer specialArea, BigDecimal price) {
//        if (null != specialArea && ESpecialArea.UPGRADE_CONSUMPTION.getValue() == specialArea) {
//            // 2025.01.21 新需求，年包会员指定专区购买商品打5折
//            // 年包日期大于等于当前时间，为有效会员需要商品打5折
//            if (null != cuMember
//                    && null != cuMember.getExpireDate()
//                    && cuMember.getExpireDate().compareTo(new Date()) >= 0) {
//                // 2025.01.21 新需求，续约会员指定专区购买商品打5折
//                return price.multiply(new BigDecimal("0.5")).setScale(2, BigDecimal.ROUND_HALF_UP);
//            }
//        }
        return price;
    }

}
