/**
 * Vuex Price Module - 价格配置状态管理
 * @module store/modules/price
 * 
 * 用于管理图书上传/克隆时的价格调整配置
 */

// 从本地存储获取初始状态
const getPriceInitialState = () => {
  return {
    // 价格调整模式
    // 1: 折扣模式（按百分比调整）
    // 2: 加减值模式（按固定金额调整）
    // 3: 指定金额模式（直接设置价格）
    priceMode: parseInt(uni.getStorageSync('current1') || '1'),
    
    // 价格类型（用于不同场景的价格策略）
    priceType: parseInt(uni.getStorageSync('current2') || '1'),
    
    // 均价范围（用于计算参考价格时的范围）
    averageRange: parseInt(uni.getStorageSync('averageRange') || '3'),
    
    // 运费设置
    freight: parseFloat(uni.getStorageSync('value3') || '0'),
    
    // 最低价格限制
    minValue: parseFloat(uni.getStorageSync('value4') || '0.01')
  }
}

const state = getPriceInitialState()

const mutations = {
  /**
   * 更新价格模式
   * @param {Number} mode - 价格模式 (1=折扣, 2=加减值, 3=指定金额)
   */
  updatePriceMode(state, mode) {
    state.priceMode = mode
    uni.setStorageSync('current1', mode)
  },

  /**
   * 更新价格类型
   * @param {Number} type - 价格类型
   */
  updatePriceType(state, type) {
    state.priceType = type
    uni.setStorageSync('current2', type)
  },

  /**
   * 更新均价范围
   * @param {Number} range - 均价范围
   */
  updateAverageRange(state, range) {
    state.averageRange = range
    uni.setStorageSync('averageRange', range)
  },

  /**
   * 更新运费
   * @param {Number} value - 运费金额
   */
  updateFreight(state, value) {
    state.freight = value
    uni.setStorageSync('value3', value)
  },

  /**
   * 更新最低价格
   * @param {Number} value - 最低价格
   */
  updateMinValue(state, value) {
    state.minValue = value
    uni.setStorageSync('value4', value)
  },

  /**
   * 重置所有价格配置
   */
  resetPriceConfig(state) {
    state.priceMode = 1
    state.priceType = 1
    state.averageRange = 3
    state.freight = 0
    state.minValue = 0.01
    uni.removeStorageSync('current1')
    uni.removeStorageSync('current2')
    uni.removeStorageSync('averageRange')
    uni.removeStorageSync('value3')
    uni.removeStorageSync('value4')
  }
}

const getters = {
  /**
   * 获取当前价格模式
   */
  priceMode: state => state.priceMode,
  
  /**
   * 获取当前价格类型
   */
  priceType: state => state.priceType,
  
  /**
   * 获取均价范围
   */
  averageRange: state => state.averageRange,
  
  /**
   * 获取运费设置
   */
  freight: state => state.freight,
  
  /**
   * 获取最低价格限制
   */
  minValue: state => state.minValue,
  
  /**
   * 获取完整价格配置对象
   */
  priceConfig: state => ({
    mode: state.priceMode,
    type: state.priceType,
    averageRange: state.averageRange,
    freight: state.freight,
    minValue: state.minValue
  })
}

export default {
  namespaced: true,
  state,
  mutations,
  getters
}