UserAddressAction.java 7.58 KB
package com.cjs.site.action.user.account;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.cjs.site.dao.user.account.UserAddressDao;
import com.cjs.site.dao.user.account.UserAreaDao;
import com.cjs.site.dao.user.account.UserCityDao;
import com.cjs.site.dao.user.account.UserProvinceDao;
import com.cjs.site.model.user.account.UserAddressInfo;
import com.cjs.site.model.user.account.UserInfo;
import com.cjs.site.util.lang.JsonUtil;
import com.cjs.site.util.web.ActionUtil;

/**
 * 用户地址管理
 * 
 * @author kongmingke
 *
 */
@Controller
@RequestMapping("/user/address")
public class UserAddressAction {

    @Autowired
    private UserAddressDao  addressDao;
    @Autowired
    private UserProvinceDao upd;
    @Autowired
    private UserCityDao     ucd;
    @Autowired
    private UserAreaDao     uad;

    /**添加或者修改地址*/
    @RequestMapping("/insertAndUpdateAddress")
    public String insertAndUpdateAddress(UserAddressInfo userAddress, Model model) {
        UserInfo user = ActionUtil.getUser();
        userAddress.setUserId(user.getUserId());
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("userId", user.getUserId());

        if (userAddress.getIsDefault() == null) {
            userAddress.setIsDefault(0);
        } else {
            UserAddressInfo ad = addressDao.getDefaultId(map);
            if (ad != null) {
                map.put("id", ad.getId());
                map.put("isDefault", 0);
                addressDao.updateIsDefault(map);
            }
        }

        //获取省市县详细地址
        String province = upd.queryByProvinceId(userAddress.getProvince()).getProvince();
        String city = ucd.queryByCityId(userAddress.getCity()).getCity();
        String area = uad.queryByAreaId(userAddress.getArea()).getArea();
        String address = province + city + area + userAddress.getDetailAddress();
        userAddress.setAddress(address);
        //添加用户地址并设置第一个为默认地址
        if (userAddress.getId() == null) {
            List<UserAddressInfo> list = addressDao.queryByUserId(user.getUserId());
            if (userAddress.getIsDefault() != 1) {
                if (list.size() == 0) {
                    userAddress.setIsDefault(1);
                } else {
                    if (getIsDefault(list) == false) {
                        map.put("id", list.get(0).getId());
                        map.put("isDefault", 1);
                        addressDao.updateIsDefault(map);
                    }
                }
            }

            addressDao.insertAddress(userAddress);
        } else {
            addressDao.updateAddress(userAddress);
            List<UserAddressInfo> list = addressDao.queryByUserId(user.getUserId());
            if (getIsDefault(list) == false) {
                map.put("id", list.get(0).getId());
                map.put("isDefault", 1);
                addressDao.updateIsDefault(map);
            }

        }
        return "redirect:/user/address/search";
    }

    /**获取地址列表*/
    @RequestMapping("/search")
    public String search(Model model) {
        UserInfo user = ActionUtil.getUser();
        model.addAttribute("userAddress", addressDao.queryByUserId(user.getUserId()));
        return "/user/account/userAddress.jsp";
    }

    /**修改默认地址*/
    @RequestMapping("/updateIsDefault")
    public String updateIsDefault(@RequestParam Map<String, Object> params) {
        UserInfo user = ActionUtil.getUser();
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("userId", user.getUserId());
        UserAddressInfo userAddress = addressDao.getDefaultId(map);
        if (userAddress != null) {
            map.put("id", userAddress.getId());
            map.put("isDefault", 0);
            addressDao.updateIsDefault(map);
        }
        params.put("isDefault", 1);
        addressDao.updateIsDefault(params);
        if (Integer.parseInt(params.get("temp").toString()) == 1) {
            return "forward:/user/entrust?" + params.get("stockId");
        }
        return "redirect:/user/address/search";
    }

    /**删除地址*/
    @RequestMapping("/delAddress")
    public String delAddress(Integer id) {
        UserInfo user = ActionUtil.getUser();

        addressDao.delAddress(id);
        List<UserAddressInfo> list = addressDao.queryByUserId(user.getUserId());
        if (list.size() > 0 && getIsDefault(list) == false) {
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("userId", user.getUserId());
            map.put("id", list.get(0).getId());
            map.put("isDefault", 1);
            addressDao.updateIsDefault(map);
        }
        return "redirect:/user/address/search";
    }

    /**获取地址详细信息*/
    @RequestMapping("/queryById")
    public String queryById(Integer id, Model model) {
        model.addAttribute("addr", addressDao.queryById(id));
        return "forward:/user/address/search";
    }

    /**判断是否有默认地址*/
    public boolean getIsDefault(List<UserAddressInfo> list) {
        boolean flag = false;
        for (UserAddressInfo addressInfo : list) {
            if (addressInfo.getIsDefault() == 1) {
                flag = true;
                break;
            }
        }
        return flag;
    }

    /**ajax方式添加地址*/
    @RequestMapping(value = "/addressToEntrust")
    public @ResponseBody String addressToEntrust(UserAddressInfo userAddress) {
        UserInfo user = ActionUtil.getUser();
        userAddress.setUserId(user.getUserId());
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("userId", user.getUserId());

        if (userAddress.getIsDefault() == null) {
            userAddress.setIsDefault(0);
        } else {
            UserAddressInfo ad = addressDao.getDefaultId(map);
            if (ad != null) {
                map.put("id", ad.getId());
                map.put("isDefault", 0);
                addressDao.updateIsDefault(map);
            }
        }

        //获取省市县详细地址
        String province = upd.queryByProvinceId(userAddress.getProvince()).getProvince();
        String city = ucd.queryByCityId(userAddress.getCity()).getCity();
        String area = uad.queryByAreaId(userAddress.getArea()).getArea();
        String address = province + city + area + userAddress.getDetailAddress();
        userAddress.setAddress(address);
        //添加用户地址并设置第一个为默认地址
        List<UserAddressInfo> list = addressDao.queryByUserId(user.getUserId());
        if (userAddress.getIsDefault() != 1) {
            if (list.size() == 0) {
                userAddress.setIsDefault(1);
            } else {
                if (getIsDefault(list) == false) {
                    map.put("id", list.get(0).getId());
                    map.put("isDefault", 1);
                    addressDao.updateIsDefault(map);
                }
            }
        }

        addressDao.insertAddress(userAddress);
        return JsonUtil.toJson("resultCode", 0);
    }

    /**ajax获取地址列表*/
    @RequestMapping("/searchList")
    public @ResponseBody List<UserAddressInfo> searchList(Model model) {
        UserInfo user = ActionUtil.getUser();
        return addressDao.queryByUserId(user.getUserId());
    }

}