address-service.js 5.92 KB
/**
 * 个人中心---地址管理
 * @author gaohongwei <hongwei.gao@yoho.cn>
 * @date: 2016/9/5
 */
 'use strict';
 const Promise = require('bluebird');
 const co = Promise.coroutine;
 const _ = require('lodash');
 const addressApi = require('./address-api');

 /*
 * 个人中心-地址管理列表
 *
 * @param int $uid 用户ID
 * @return array|mixed 处理之后的返回数据
 *
 */
 const getAddressList = (uid, limit) => {
     return co(function*() {
         let result = [],
             addressData = yield addressApi.addressData(uid, limit);

         if (addressData.data) {
             let addressList = addressData.data;

             for (let i = 0; i < addressList.length; i++) {
                 result.push({
                     id: addressList[i].address_id || '',
                     addressee: addressList[i].consignee || '',
                     address: addressList[i].area + addressList[i].address + (addressList[i].zip_code || ''),
                     phone: (addressList[i].mobile || '') + (addressList[i].phone || ''),
                     isPreferred: addressList[i].is_default === 'Y' ? 'true' : ''// 默认地址
                 });
             }
         }
         return result;
     })();
 };

 /**
 * 地址管理列表
 */
 exports.getAddressInfo = (uid) => {
     return co(function*() {
         let resq = {},
             addressList = yield getAddressList(uid);

         resq.address = {
             submitId: 'address-info',
             addressList: addressList,
             data: [{
                 key: 'addressName',
                 labelText: '收货人姓名:',
                 value: '',
                 tips: '请输入收货人姓名'
             }, {
                 isSelect: true,
                 labelText: '省份:',
                 tips: '注:标"*"的为支持货到付款的地区',
                 tipsUrl: '/help/?category_id=48',
                 selects: [{
                     key: 'province'
                 },
                 {
                     key: 'city'
                 },
                 {
                     key: 'areaCode'
                 },
                 {
                     key: 'streets'
                 }
                ]
             }, {
                 key: 'address',
                 labelText: '地址:',
                 value: '',
                 tips: '请填写详细地址'
             }, {
                 key: 'zipCode',
                 labelText: '邮编:',
                 value: '',
                 tips: '请输入收货人所在地邮编号'
             }, {
                 key: 'phone',
                 labelText: '固定电话:',
                 value: '',
                 tips: '请输入你的联系电话,可以为空哦'
             }, {
                 key: 'mobile',
                 labelText: '手机号码:',
                 value: '',
                 tips: '填写手机号便于接收发货和收货通知'
             }, {
                 key: 'email',
                 labelText: '电子邮件:',
                 value: '',
                 tips: '用来接收订单提醒邮件,便于您及时了解订单状态'
             }]
         };

         return resq;
     })();
 };

/**
 * 编辑修改地址
 */
 exports.editAddress = (params, uid) => {
     return co(function*() {
         let id = params.id || null,
             respData = {code: 400};

         if (id === null) {
             return respData;
         }
         let data = yield addressApi.addressData(uid);

         respData.code = data.code;

        // 获取该用户对应的地址id数据
         if (data.data) {
             let addressList = data.data;

             for (let i = 0; i < addressList.length; i++) {
                 if (addressList[i].address_id === id) {
                     respData.data = addressList[i];
                     break;
                 }
             }
         }
         if (!('data' in respData)) {
             respData.message = '无数据返回';
         }

         return respData;
     })();
 };

/**
 * 添加保存地址
 */
 exports.saveAddress = (params, uid) => {
     return co(function*() {
         let query = {
             uid: uid,
             address: _.trim(params.address || ''),
             area_code: _.trim(params.streets || ''),
             consignee: _.trim(params.addressName || ''),
             email: _.trim(params.email || ''),
             id: params.addrId === '0' ? null : params.addrId,
             mobile: _.trim(params.mobile || ''),
             phone: _.trim(params.phone || ''),
             zip_code: _.trim(params.zipCode || '')
         };

         let streets = _.trim(params.streets || '');
         query.area_code = streets === 'all' ? _.trim(params.areaCode || '') : streets;
         
         if (query.uid === '' || query.address === '' ||
            query.area_code.length < 6 || query.consignee === '' ||
            query.email === '' || query.zip_code === '') {

             return {
                 code: 400,
                 message: '缺失必填项'
             };
         }
         let respData = yield addressApi.saveAddressData(query);

         return respData;
     })();
 };

/**
 * 删除地址
 */
 exports.delAddress = (params, uid) => {
     return co(function*() {
         let id = params.id || null,
             respData = {code: 400};

         if (id === null) {
             respData.message = '缺失必填项';
             return respData;
         }

         respData = yield addressApi.deleteAddress(uid, id);
         return respData;
     })();
 };

/**
 * 设置默认地址
 */
 exports.defaultAddress = (params, uid) => {
     return co(function*() {
         let id = params.id || null,
             respData = {code: 400};

         if (id === null) {
             respData.message = '缺失必填项';
             return respData;
         }

         respData = yield addressApi.setDefaultAddress(uid, id);
         return respData;
     })();
 };