address-service.js 5.05 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 headerModel = require('../../../doraemon/models/header');
 const addressApi = require('./address-api');

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

        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' : ''//默认地址
                });
            }
        }

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

        resq.headerData = yield headerModel.requestHeaderData(channel);

        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: '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 = (req, uid) => {
    return co(function*() {
        let id = req.body.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.areaCode || ''),
            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 || '')
        }
        if (query.uid === '' || query.address === '' || 
            query.area_code === '' || query.consignee === '' ||
            query.email === '' || query.zip_code === '') {

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