@源码地址来源: https://minglisoft.cn/honghu/business.html
package com.honghu.cloud.controller;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONException;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.honghu.cloud.bean.DaDaAppConfig;
import com.honghu.cloud.bean.DaDaService;
import com.honghu.cloud.bean.DadaApiResponse;
import com.honghu.cloud.bean.ShopAddModel;
import com.honghu.cloud.bean.Store;
import com.honghu.cloud.code.ResponseCode;
import com.honghu.cloud.dto.AreaDto;
import com.honghu.cloud.dto.CouponInfoDto;
import com.honghu.cloud.dto.EvaluateDto;
import com.honghu.cloud.dto.ExpressCompanyCommonDto;
import com.honghu.cloud.dto.ExpressCompanyDto;
import com.honghu.cloud.dto.ExpressInfoDto;
import com.honghu.cloud.dto.GoodsDto;
import com.honghu.cloud.dto.MessageDto;
import com.honghu.cloud.dto.OrderFormDto;
import com.honghu.cloud.dto.OrderFormLogDto;
import com.honghu.cloud.dto.RefundApplyFormDto;
import com.honghu.cloud.dto.ReturnGoodsLogDto;
import com.honghu.cloud.dto.ShipAddressDto;
import com.honghu.cloud.dto.SysConfigDto;
import com.honghu.cloud.dto.TransInfoDto;
import com.honghu.cloud.dto.UserDto;
import com.honghu.cloud.feign.AreaFeignClient;
import com.honghu.cloud.feign.CouponInfoFeignClient;
import com.honghu.cloud.feign.EvaluateFeignClient;
import com.honghu.cloud.feign.ExpressCompanyCommonFeignClient;
import com.honghu.cloud.feign.ExpressCompanyFeignClient;
import com.honghu.cloud.feign.ExpressInfoFeignClient;
import com.honghu.cloud.feign.GoodsFeignClient;
import com.honghu.cloud.feign.MessageFeignClient;
import com.honghu.cloud.feign.ModularClassFeignClient;
import com.honghu.cloud.feign.MsgToolsFeignClient;
import com.honghu.cloud.feign.OrderFormFeignClient;
import com.honghu.cloud.feign.OrderFormLogFeignClient;
import com.honghu.cloud.feign.OrderFormToolsFeignClient;
import com.honghu.cloud.feign.RefundApplyFormFeignClient;
import com.honghu.cloud.feign.ReturnGoodsLogFeignClient;
import com.honghu.cloud.feign.ShipAddressFeignClient;
import com.honghu.cloud.feign.ShipToolsFeignClient;
import com.honghu.cloud.feign.SysConfigFeignClient;
import com.honghu.cloud.feign.UserFeignClient;
import com.honghu.cloud.service.IStoreService;
import com.honghu.cloud.tools.DadaRequestClient;
import com.honghu.cloud.tools.JSONUtil;
import com.honghu.cloud.tools.QueryTools;
import com.honghu.cloud.tools.SecurityUserHolder;
import com.honghu.cloud.utils.CommUtil;
import com.honghu.cloud.utils.StringUtils;
import com.honghu.cloud.utils.tools.Md5Encrypt;

import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONObject;

@CrossOrigin(origins = "*", maxAge = 3600)
@Slf4j
@RestController
@RequestMapping(value = "/applet/storeOrder")
public class AppletStoreOrderController {
	
	private final Logger logger = LoggerFactory.getLogger(AppletStoreOrderController.class);
	
	@Autowired
	private IStoreService storeService;
	
	@Autowired
	private OrderFormFeignClient orderFormFeignClient;
	
	@Autowired
	private UserFeignClient userFeignClient;
	
	@Autowired
	private GoodsFeignClient goodsFeignClient;
	
	@Autowired
	private QueryTools queryTools;
	
	@Autowired
	private RefundApplyFormFeignClient refundapplyformfeignclient;
	
	@Autowired
	private MessageFeignClient messagefeignclient;
	
	@Autowired
	private ReturnGoodsLogFeignClient returnGoodsLogFeignClient;
	
	@Autowired
	private ShipToolsFeignClient shipToolsFeignClient;
	
	@Autowired
	private OrderFormToolsFeignClient orderFormToolsFeignClient;
	
	@Autowired
	private OrderFormLogFeignClient orderFormLogFeignClient;
	
	@Autowired
	private MsgToolsFeignClient msgToolsFeignClient;
	
	@Autowired
	private ExpressCompanyCommonFeignClient companyCommonFeignClient;
	
	@Autowired
	private ShipAddressFeignClient shipAddressFeignClient;
	
	@Autowired
	private SysConfigFeignClient sysConfigFeignClient;
	
	@Autowired
	private ExpressInfoFeignClient expressInfoFeignClient;
	
	@Autowired
	private EvaluateFeignClient evaluateFeignClient;
	
	@Autowired
	private ExpressCompanyFeignClient expressCompanyFeignClient;
	
	@Autowired
	private ExpressCompanyCommonFeignClient expressCompanyCommonFeignClient;
	
	@Autowired
	private AreaFeignClient areaFeignClient;
	
	@Autowired
	private ModularClassFeignClient modularClassFeignClient;
	@Autowired
	private CouponInfoFeignClient couponInfoFeignClient;
	
	
	/**
	 * 卖家订单列表
	 * @param request
	 * @param response
	 * @param currentPage
	 * @param order_status
	 * @param order_id
	 * @param beginTime
	 * @param endTime
	 * @param buyer_userName
	 * @return
	 */
	@RequestMapping( value = { "/order" } , method = RequestMethod.POST)
	public Map<String,Object> order(HttpServletRequest request,
			@RequestBody JSONObject json) {
		
		String currentPage = json.optString("currentPage");
		String order_status = json.optString("order_status");
		String order_id = json.optString("order_id");
		/*String beginTime = json.optString("beginTime");
		String endTime = json.optString("endTime");*/
		String order_id_userName = json.optString("order_id_userName");
		
		Map<String,Object> maps= this.queryTools.getParams(currentPage,"addTime", "desc");
		
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		if(user.getStore_id() == null){
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		if(store != null){
			maps.put("store_id", store.getId());
		}else{
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		
/*		maps.put("order_cat_no", 2);
*/		Map<String, Object> map = Maps.newHashMap();
		
		if (!CommUtil.null2String(order_status).equals("")) {
			if (order_status.equals("order_submit")) {//代付款
				maps.put("order_status1", Integer.valueOf(10));
				maps.put("order_status2", Integer.valueOf(16));
			}
			if (order_status.equals("order_pay")) {     //代发货
				maps.put("order_status1", Integer.valueOf(20));
				maps.put("order_status2", Integer.valueOf(14));
			}
			if (order_status.equals("order_shipping")) {//待收货   已发货  
				//maps.put("order_status", Integer.valueOf(30));
				maps.put("order_status_0", Integer.valueOf(30));
				maps.put("order_status_1", Integer.valueOf(31));
				maps.put("order_status_2", Integer.valueOf(32));
				
			}
			if (order_status.equals("order_evaluate")) {// 已收货  待评价
				maps.put("order_status", Integer.valueOf(40));
			}
			if (order_status.equals("order_finish")) { //评论完
				maps.put("order_status", Integer.valueOf(50));
			}
			if (order_status.equals("order_cancel")) {//订单取消
				maps.put("order_status", Integer.valueOf(0));
			}
			if (order_status.equals("order_refund")) {//退款中
				maps.put("order_status", Integer.valueOf(21));
			}
		}
		if (!CommUtil.null2String(order_id).equals("")) {
			maps.put("order_id_like", order_id);
		}
		/*if (!CommUtil.null2String(beginTime).equals("")) {
			maps.put("add_Time_more_than_equal", CommUtil.formatDate(beginTime));
			map.put("beginTime", beginTime);
		}
		if (!CommUtil.null2String(endTime).equals("")) {
			String ends = endTime + " 23:59:59";
			maps.put("add_Time_less_than_equal", CommUtil.formatDate(ends,"yyyy-MM-dd hh:mm:ss"));
			map.put("endTime", endTime);
		}*/
		if (!CommUtil.null2String(order_id_userName).equals("")) {
			maps.put("order_id_userName", order_id_userName);
		}
		
		Map<String, Object> list = this.orderFormFeignClient.list(maps);
		map.putAll(list);
		/*map.put("list", list);*/
		map.put("order_id", order_id);
		map.put("order_status", order_status == null ? "all" : order_status);
		return ResponseCode.buildSuccessMap(map);
	}

	/**
	 * 卖家订单
	 * @param request
	 * @param response
	 * @param currentPage
	 * @param order_status
	 * @param order_id
	 * @param beginTime
	 * @param endTime
	 * @param buyer_userName
	 * @return
	 */
	@RequestMapping( value = { "/orderHome" } , method = RequestMethod.POST)
	public Map<String,Object> orderHome(HttpServletRequest request) {
		
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		if(user.getStore_id() == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		if(store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		Map<String, Object> map = Maps.newHashMap();
		map.put("store_id", store.getId());
		//代付款1
		  	map.put("order_status1", Integer.valueOf(10));
		  	map.put("order_status2", Integer.valueOf(16));
			Integer order_submit = this.orderFormFeignClient.selectCount(map);
		//代发货1
			map.clear();
			map.put("store_id", store.getId());
			map.put("order_status", Integer.valueOf(20));
			Integer order_pay = this.orderFormFeignClient.selectCount(map);
		//待收货   已发货  1
			map.clear();
			map.put("store_id", store.getId());
			map.put("order_status", Integer.valueOf(30));
			Integer order_shipping = this.orderFormFeignClient.selectCount(map);
		// 已收货  待评价1
			map.clear();
			map.put("store_id", store.getId());
			map.put("order_status", Integer.valueOf(40));
			Integer order_evaluate = this.orderFormFeignClient.selectCount(map);
		//退款中1
			map.clear();
			map.put("store_id", store.getId());
			map.put("refundStatus", 1);
			Integer order_refund = this.orderFormFeignClient.selectCount(map);
			map.put("selectCount_refund", order_refund);
			map.clear();
			map.put("store_id", user.getStore_id());
			int selectCount = this.returnGoodsLogFeignClient.selectCount(map);
			if(order_refund == null){
				order_refund = 0;
			}
			order_refund = order_refund + selectCount;
			map.clear();
			map.put("order_submit", order_submit);
			map.put("order_pay", order_pay);
			map.put("order_shipping", order_shipping);
			map.put("order_evaluate", order_evaluate);
			map.put("order_refund", order_refund);
		return ResponseCode.buildSuccessMap(map);
	}
	/**订单详情
	 * @param request
	 * @param json
	 * @return
	 */
	@RequestMapping(value = { "/order_view" } , method = RequestMethod.POST)
	public Map<String , Object> order_view(HttpServletRequest request,
			@RequestBody JSONObject json) {
		String id = json.optString("id");
		OrderFormDto obj = this.orderFormFeignClient
				.selectByPrimaryKey(CommUtil.null2Long(id));
		
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder
				.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(obj
				.getStore_id()));
		if(store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		if(user.getStore_id() == null){
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
		if (user.getStore_id().equals(store.getId())) {
			Map<String , Object> maps = Maps.newHashMap();
			if(obj.getOrder_status() == 10){
				SysConfigDto sys = this.sysConfigFeignClient.getSysConfig();
				Integer auto_order_cancel = sys.getAuto_order_cancel();
				Date addTime = obj.getAddTime();
				Date date = new Date();
				/*System.out.println(((addTime.getTime() - date.getTime()) / (24 * 60 * 60 * 1000))/ 365 + "年");
		        System.out.println((addTime.getTime() - date.getTime()) / (24 * 60 * 60 * 1000) + "天");
		        System.out.println((((addTime.getTime() - date.getTime()) / (60 * 60 * 1000)) % 24) + "小时");
		        System.out.println((((addTime.getTime() - date.getTime()) / 1000) % 60) + "分钟");
		        System.out.println(((addTime.getTime() - date.getTime()) / (60 * 1000)) % 60 + "秒");*/
				maps.put("obj", obj);
				maps.put("second", (((addTime.getTime() - date.getTime()) / 1000)) + auto_order_cancel*60*60);
				
			}
			maps.put("obj", obj);
			return ResponseCode.buildSuccessMap(maps);
		} else {
			return ResponseCode.buildEnumMap(ResponseCode.FAILURE, null);
		}
	}
	/**
	 * 卖家取消订单
	 * @param request
	 * @param response
	 * @param id
	 * @param currentPage
	 * @return
	 */
	@RequestMapping(value ={ "/order_cancel" } ,method = RequestMethod.POST)
	public   Map<String , Object>  order_cancel(HttpServletRequest request , @RequestBody JSONObject jsonv) {
		String id = jsonv.optString("id");
		 
		if (SecurityUserHolder.getCurrentUserId(request)==null) {
			return ResponseCode.buildCodeMap("1111", "userid为空", null);
		}
		
		UserDto seller = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder.getCurrentUser(request).getId());
		OrderFormDto obj = this.orderFormFeignClient.selectByPrimaryKey(CommUtil.null2Long(id));
		if(seller == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		if (seller.getParent_id()!=null) {
			seller = this.userFeignClient.selectByPrimaryKey(seller.getParent_id());
		}
		
		//user = user.getParent_id() == null ? user : user.getParent();    
		if(seller.getStore_id() == null){
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
		//System.out.println("---------user--getStore_id-------------"+seller
				//.getStore_id());
		Store store = this.storeService.selectByPrimaryKey(seller
				.getStore_id());
		//System.out.println("---------user---------------"+seller.getId());
		//System.out.println("------------obj-------------"+obj.getId());
		//System.out.println("---------seller---------------"+seller.getStore_id());
		if(store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		System.out.println("-----------store--------------"+store.getId());
		if ((seller.getStore_id() != null)&& (CommUtil.null2String(obj.getStore_id()).equals(seller.getStore_id().toString()))) {
			return ResponseCode.buildSuccessMap(obj);
		} else {
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		
	}
	/**
	 * 卖家取消订单保存
	 * @param request
	 * @param response
	 * @param id
	 * @param currentPage
	 * @return
	 */
	@RequestMapping(value ={ "/order_cancel_save" } ,method = RequestMethod.POST)
	public Map<String , Object> order_cancel_save(HttpServletRequest request , @RequestBody JSONObject jsonv) {
		String id = jsonv.optString("id");
		String state_info = jsonv.optString("state_info");
		String other_state_info = jsonv.optString("other_state_info");
		UserDto seller = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder.getCurrentUser(request).getId());
		OrderFormDto obj = this.orderFormFeignClient.selectByPrimaryKey(CommUtil.null2Long(id));
		if(seller == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		if (seller.getParent_id()!=null) {
			seller = this.userFeignClient.selectByPrimaryKey(seller.getParent_id());
		}
		
		//user = user.getParent_id() == null ? user : user.getParent();    
		if(seller.getStore_id() == null){
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(seller
				.getStore_id()));
		if(store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		Date nowDate = new Date();
		if ((seller.getStore_id() != null)&& (CommUtil.null2String(obj.getStore_id()).equals(seller.getStore_id().toString()))) {
		
			obj.setOrder_status(0);
			if ((obj.getCoupon_info() != null)
					&& (!"".equals(obj.getCoupon_info()))) {
				Map m = JSON.parseObject(obj.getCoupon_info());
				CouponInfoDto cpInfo = this.couponInfoFeignClient.selectByPrimaryKey(CommUtil
						.null2Long(m.get("couponinfo_id")));
				if (cpInfo != null) {
					if (nowDate.before(cpInfo.getEndDate())) {
						cpInfo.setStatus(0);
					} else {
						cpInfo.setStatus(-1);
					}
				}
			}
			orderFormFeignClient.updateById(obj);
			OrderFormLogDto ofl = new OrderFormLogDto();
			ofl.setAddTime(new Date());
			ofl.setLog_info("取消订单");
			ofl.setLog_user_id(seller.getId());
			ofl.setLog_user_name(seller.getUserName());
			ofl.setOf_id(obj.getId());
			if (state_info.equals("其他原因")) {
				ofl.setState_info(other_state_info);
			} else {
				ofl.setState_info(state_info);
			}
			this.orderFormLogFeignClient.saveEntity(ofl);
		/*	UserDto buyer = this.userFeignClient.selectByPrimaryKey(CommUtil.null2Long(obj
					.getUser_id()));
			Map<String, Object> map = Maps.newHashMap();
			map.put("buyer_id", buyer.getId().toString());
			map.put("seller_id", store.getUser_id());
			map.put("order_id", obj.getId());
			String json = JSON.toJSONString(map);*/
			/*if (obj.getOrder_form() == 0) {
				try {
					this.msgToolsFeignClient.sendEmailCharge(CommUtil.getURL(request),
							"email_tobuyer_order_cancel_notify", buyer.getEmail(),
							json, null, obj.getStore_id());
					this.msgToolsFeignClient.sendSmsCharge(CommUtil.getURL(request),
							"sms_tobuyer_order_cancel_notify", buyer.getMobile(),
							json, null, obj.getStore_id());
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			} else {
				try {
					this.msgToolsFeignClient.sendEmailFree(CommUtil.getURL(request),
							"email_tobuyer_order_cancel_notify", buyer.getEmail(),
							json, null);
					this.msgToolsFeignClient.sendSmsFree(CommUtil.getURL(request),
							"sms_tobuyer_order_cancel_notify", buyer.getMobile(),
							json, null);
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
			}*/
			return ResponseCode.buildSuccessMap(null);
		} else {
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		
	}
	/**
	 * 订单退款申请单
	 * @param request
	 * @param response
	 * @param currentPage
	 * @param orderBy
	 * @param orderType
	 * @param status
	 * @return
	 */
	@RequestMapping(value = { "/refund_apply_form" } , method = RequestMethod.POST)
	public Map<String,Object> refund_apply_form(HttpServletRequest request,
		 @RequestBody JSONObject json) {
		
		String currentPage = json.optString("currentPage");
		String orderType = json.optString("orderType");
		String orderBy = json.optString("orderBy");
		//状态 0:待审核 5:审核拒绝  10:审核通过待退款 15:已退款
		String refundStatus = json.optString("refundStatus");   
		
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		if(user.getStore_id() == null){
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		Map<String,Object> maps= this.queryTools.getParams(currentPage, orderBy, orderType);
		if ((refundStatus == null) || (refundStatus.equals(""))) {
			maps.put("refundStatus", CommUtil.null2Int(Integer.valueOf(0)));
		} else {
			maps.put("refundStatus", CommUtil.null2Int(Integer.valueOf(refundStatus)));
		}
		if(store != null){
			maps.put("store_id", store.getId());
		}else{
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		
		
		Map<String, Object> data = this.orderFormFeignClient.refundApplyFormList(maps);
		data.put("refundStatus", refundStatus);
		return ResponseCode.buildSuccessMap(data);
	}
	/**
	 * 订单退款申请单详情
	 * @param request
	 * @param response
	 * @param order_id
	 * @return
	 */
	@RequestMapping(value = { "/refund_orderform_view" } , method = RequestMethod.POST)
	public Map<String,Object> refund_orderform_view(HttpServletRequest request, @RequestBody JSONObject json) {
		Map<Object, Object> map = Maps.newHashMap();
		map.put("reason","");
		if (StringUtils.isBlank(json.optString("order_id"))) {
			return ResponseCode.buildReturnMap(ResponseCode.PARAM_ERROR, null);
		}
		String apply_from_id = json.optString("apply_from_id");
		if (StringUtils.isBlank(apply_from_id)) {
			return ResponseCode.buildReturnMap(ResponseCode.PARAM_ERROR, null);
		}
		OrderFormDto obj = this.orderFormFeignClient.selectByPrimaryKey(CommUtil.null2Long(json.optString("order_id")));
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(obj.getStore_id()));
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		
		RefundApplyFormDto RefundApplyFormDto = refundapplyformfeignclient.selectByPrimaryKey(CommUtil.null2Long(apply_from_id));
		if(RefundApplyFormDto!=null){
			map.put("reason",RefundApplyFormDto.getReturn_content());  //退款原因
		}
		
		//user = user.getParent_id() == null ? user : user.getParent();    
		if(user.getStore_id() == null){
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
		if(store == null){
			return ResponseCode.buildReturnMap(ResponseCode.REQUEST_FORBIDDEN, null);
		}
		if(!user.getStore_id().equals(store.getId()) ||store.getStore_status()!=15){     //验证是否是当前商家  , 并且正常营业
			return ResponseCode.buildReturnMap(ResponseCode.REQUEST_FORBIDDEN, null);
		}
		
		
		if (obj != null) {
			String temp = obj.getSpecial_invoice();
			if ((temp != null) && (!"".equals(temp))) {
				Map of_va = JSON.parseObject(temp);
				map.put("of_va", of_va);
			}
		}
		map.put("obj", obj);
		String queryExInfo = this.queryExInfo(obj.getExpress_info(), "express_company_name");
		map.put("store", store); 
		map.put("express_company_name", queryExInfo);
		//map.put("express_company_name", this.orderFormTools.queryExInfo(obj.getExpress_info(), "express_company_name"));
		ReturnGoodsLogDto returnGoodsLogDto = returnGoodsLogFeignClient.selectByOrderId(obj.getId());
		
		map.put("returnGoodsLogDto", returnGoodsLogDto); 
		return ResponseCode.buildSuccessMap(map);
	}
	public String queryExInfo(String json, String key) {
		Map<String, Object> map = Maps.newHashMap();
		if ((json != null) && (!json.equals(""))) {
			map = JSON.parseObject(json);
		}
		return CommUtil.null2String(map.get(key));
	}
	
	/**
	 * 订单退款申请单审核
	 * @param request
	 * @param result
	 * @param apply_form_id
	 * @param currentPage
	 * @return
	 */
	@RequestMapping({ "/refund_audit" })
	public Map<String, Object> refund_audit(HttpServletRequest request, @RequestBody JSONObject json) {

		UserDto user = SecurityUserHolder.getCurrentUser(request);
		Store store = null ;
		
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
	   store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		if(store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		RefundApplyFormDto refundApplyForm = this.refundapplyformfeignclient
				.selectByPrimaryKey(CommUtil.null2Long(json.optString("apply_from_id")));
		//TODO
		//Store store = (user.getParent() == null ? user : user.getParent()).getStore();
		if ((store != null) && (store.getId().toString().equals(refundApplyForm.getStore_id()))&&refundApplyForm.getOrder_form_id()!=null) {
			OrderFormDto orderForm = this.orderFormFeignClient.selectByPrimaryKey(refundApplyForm.getOrder_form_id());
			refundApplyForm.setAudit_date(new Date());
			refundApplyForm.setAudit_user_name(user.getUserName());
			if (StringUtils.isNotBlank(json.optString("result"))) {   
				refundApplyForm.setStatus(10);
				this.refundapplyformfeignclient.updateById(refundApplyForm);
				orderForm.setOrder_status(22);
				this.orderFormFeignClient.updateById(orderForm);
				MessageDto msg = new MessageDto();
				String msg_content = "您订单号为:" + orderForm.getOrder_id() + "的订单退款申请已通过,我们会尽快将" + "退款金额打入您的预存款中。";
				msg.setAddTime(new Date());
				msg.setStatus(0);
				msg.setType(0);
				msg.setContent(msg_content);
				//msg.setFromu(user);
				//msg.setToUser(this.userFeignClient.selectByPrimaryKey(CommUtil.null2Long(orderForm.getUser_id())));
				msg.setFromUser_id(user.getId());
				msg.setToUser_id(CommUtil.null2Long(orderForm.getUser_id()));
				this.messagefeignclient.saveEntity(msg);
			} else {
				refundApplyForm.setStatus(5);
				this.refundapplyformfeignclient.updateById(refundApplyForm);
				orderForm.setOrder_status(20);
				this.orderFormFeignClient.updateById(orderForm);
				MessageDto msg = new MessageDto();
				String msg_content = "您订单号为:" + orderForm.getOrder_id() + "的订单退款申请未通过。";
				msg.setAddTime(new Date());
				msg.setStatus(0);
				msg.setType(0);
				msg.setContent(msg_content);
				msg.setFromUser(user);
				msg.setToUser_id(CommUtil.null2Long(orderForm.getUser_id()));
				this.messagefeignclient.saveEntity(msg);
			}
		}else {
			//店铺不存在, 或者登录用户不为该订单商铺
			return ResponseCode.buildReturnMap(ResponseCode.REQUEST_FORBIDDEN, null);
		}
		return ResponseCode.buildSuccessMap(null);
		
	}
	
	/**
	 * 退货列表
	 * @param request
	 * @param response
	 * @param currentPage
	 * @param orderBy
	 * @param orderType
	 * @param name
	 * @param user_name
	 * @param return_service_id
	 * @return
	 */
	@RequestMapping(value = { "/return" } , method = RequestMethod.POST)
	public Map<String, Object> seller_return(HttpServletRequest request,@RequestBody JSONObject json) {
		String currentPage = json.optString("currentPage");
		String orderBy = json.optString("orderBy");
		String orderType = json.optString("orderType");
		String name = json.optString("name");
		String user_name = json.optString("user_name");
		String return_service_id = json.optString("return_service_id");
		Map<String,Object> maps= this.queryTools.getParams(currentPage, "addTime", "desc");
		maps.put("goods_type", 1);
		 
		if ((user_name != null) && (!user_name.equals(""))) {
			maps.put("user_name", user_name);
		}
		
		if ((name != null) && (!name.equals(""))) {
			maps.put("goods_name_like", name);
		}
		
		if ((return_service_id != null) && (!return_service_id.equals(""))) {
			maps.put("return_service_id", return_service_id);
		}
		
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		
		//user = user.getParent_id() == null ? user : user.getParent();    
		if(user.getStore_id() == null){
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		if(store != null){
			maps.put("store_id", store.getId());
		}else{
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		maps.put("store_id", user.getStore_id());
		
		Map<String , Object> data = this.returnGoodsLogFeignClient.list(maps);
		data.put("name", name);
		data.put("user_name", user_name);
		data.put("return_service_id", return_service_id);
		data.put("store", store);
		return ResponseCode.buildSuccessMap(data);
	}
	/**
	 * 退货详情数据
	 * @param request
	 * @param response
	 * @param currentPage
	 * @param id
	 * @return
	 */
	@RequestMapping(value = { "/return_check" } , method = RequestMethod.POST)
	public Map<String, Object> return_check(HttpServletRequest request,
			@RequestBody JSONObject json) {
		String id = json.optString("id");
		ReturnGoodsLogDto obj = this.returnGoodsLogFeignClient.selectByPrimaryKey(CommUtil
				.null2Long(id));
		Map<String, Object> map = Maps.newHashMap();
		if (obj.getGoods_return_status().equals("7")) {
			TransInfoDto transInfo = this.shipToolsFeignClient.query_Ordership_getData(CommUtil.null2String(obj.getId()));
			map.put("transInfo", transInfo);
			Map<String, Object> mapa = JSON.parseObject(obj
					.getReturn_express_info());
			//物流名称
			map.put("express_company_name",mapa.get("express_company_name"));
		}
		map.put("obj", obj);
		return ResponseCode.buildSuccessMap(map);
	}
	/**
	 * 退货订单  审核or拒绝
	 * @param request
	 * @param id
	 * @param goods_return_status
	 * @param self_address
	 */
	@RequestMapping( value = { "/return_check_save" } , method = RequestMethod.POST)
	public Map<String , Object> return_check_saveEntity(HttpServletRequest request,@RequestBody JSONObject jsonv) {
		String id = jsonv.optString("id");
		/*String currentPage = jsonv.optString("currentPage");*/
		/*String cmd = jsonv.optString("cmd");*/
		// 退货商品状态 -2为超过退货时间未能输入退货物流 -1为申请被拒绝  1为可以退货 5为退货申请中 6为审核通过可进行退货 7为退货中  10为退货完成,等待退款,11为平台退款完成
		String goods_return_status = jsonv.optString("goods_return_status");
		// 收货时向买家发送的收货地址,买家通过此将货物发送给卖家
		String self_address = jsonv.optString("self_address");
		UserDto seller = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder.getCurrentUser(request).getId());
//		UserDto seller = this.userFeignClient.selectByPrimaryKey(445L);
		if(seller == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		if (seller.getParent_id()!=null) {
			seller = this.userFeignClient.selectByPrimaryKey(seller.getParent_id());
		}
		
		//user = user.getParent_id() == null ? user : user.getParent();    
		if(seller.getStore_id() == null){
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(seller
				.getStore_id()));
		
//		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(62));
		
		if(store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		ReturnGoodsLogDto obj = this.returnGoodsLogFeignClient.selectByPrimaryKey(Long.valueOf(Long.parseLong(id)));
		String message = "审核为未通过";
		String code = "10001";
		if ((seller.getStore_id() != null)&& (CommUtil.null2String(obj.getStore_id()).equals(seller.getStore_id().toString()))) {
			obj.setGoods_return_status(goods_return_status);
			obj.setSelf_address(self_address);
			obj.setRefund_time(new Date()); //审核时间
			this.returnGoodsLogFeignClient.updateById(obj);
			UserDto user = this.userFeignClient.selectByPrimaryKey(obj.getUser_id());
			String msg_content =null; 

			if (goods_return_status.equals("6")) {
				message = "审核通过";
				code = "10000";
				msg_content = "退货申请审核通过,请在'退货/退款'-'查看返修/退换记录'中提交退货物流信息。";

			} else {
			/*	OrderFormDto of = this.orderFormFeignClient.selectByPrimaryKey(Long.valueOf(obj.getReturn_order_id()));
				of.setOrder_status(18);        //申请未通过, 用户取消退款确认收货/人工仲裁
				this.orderFormFeignClient.updateById(of);*/
				message = "提交成功";
				code = "10000";
				msg_content = "订单号:" + obj.getReturn_service_id()
				+ "退货申请审核未通过,请在'退货/退款'-'查看返修/退换记录'中提交退货物流信息。";
			}

			MessageDto msg = new MessageDto();
			msg.setAddTime(new Date());
			msg.setStatus(0);
			msg.setType(0);
			msg.setContent(msg_content);
			msg.setFromUser(SecurityUserHolder.getCurrentUser(request));
			msg.setToUser(user);
			this.messagefeignclient.saveEntity(msg);
		} else {
			message = "信息有误";
			code = "10001";
			
		}
		return ResponseCode.buildCodeMap(code,message, null);
	}
	
	/**
	 * 确认退货收货
	 * @param request
	 * @param response
	 * @param id
	 * @return
	 */
	@RequestMapping( value = { "/return_confirm" } , method = RequestMethod.POST)
	public Map<String , Object> return_confirm(HttpServletRequest request , @RequestBody JSONObject jsonv) {
		String id = jsonv.optString("id");
		UserDto seller = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder.getCurrentUser(request).getId());
		ReturnGoodsLogDto obj = this.returnGoodsLogFeignClient.selectByPrimaryKey(Long.valueOf(Long.parseLong(id)));
		if(seller == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		if (seller.getParent_id()!=null) {
			seller = this.userFeignClient.selectByPrimaryKey(seller.getParent_id());
		}
		
		//user = user.getParent_id() == null ? user : user.getParent();    
		if(seller.getStore_id() == null){
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
//		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(seller
//				.getStore_id()));
		Store store = this.storeService.selectByPrimaryKey(seller.getStore_id());
		if(store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		if ((seller.getStore_id() != null)&& (CommUtil.null2String(obj.getStore_id()).equals(seller.getStore_id().toString()))) {
			obj.setGoods_return_status("10");
			this.returnGoodsLogFeignClient.updateById(obj);

		}
		return ResponseCode.buildSuccessMap(null);
	}
	/**
	 * 卖家调整订单费用
	 * @param request
	 * @param response
	 * @param id
	 * @param currentPage
	 * @return
	 */
	@RequestMapping(value = { "/order_fee" } , method = RequestMethod.POST)
	public Map<String , Object> order_fee(HttpServletRequest request,
			@RequestBody JSONObject json) {
		String id = json.optString("id");
		OrderFormDto obj = this.orderFormFeignClient
				.selectByPrimaryKey(CommUtil.null2Long(id));
		
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder
				.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(obj
				.getStore_id()));
		if(store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		//user = user.getParent_id() == null ? user : user.getParent();    
		if(user.getStore_id() == null){
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
		if (user.getStore_id().equals(store.getId())) {
			return ResponseCode.buildSuccessMap(obj);
		} else {
			return ResponseCode.buildEnumMap(ResponseCode.FAILURE, null);
		}
	}
	
	/**
	 * 卖家调整订单费用保存
	 * @param request
	 * @param response
	 * @param id
	 * @param currentPage
	 * @param goods_amount
	 * @param ship_price
	 * @param totalPrice
	 * @return
	 * @throws Exception
	 */
	@RequestMapping( value = { "/order_fee_save" } , method = RequestMethod.POST)
	public Map<String, Object> order_fee_saveEntity(HttpServletRequest request,@RequestBody JSONObject jsonv)
		{
		 String id = jsonv.optString("id");
		 String goods_amount = jsonv.optString("goods_amount"); //商品总价格
		 String ship_price = jsonv.optString("ship_price"); // 配送价格
		 String totalPrice = jsonv.optString("totalPrice"); // 订单总价格
		OrderFormDto obj = this.orderFormFeignClient
				.selectByPrimaryKey(CommUtil.null2Long(id));
		if (CommUtil.null2Double(obj.getCommission_amount()) <= CommUtil
				.null2Double(goods_amount)) {
			UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder
					.getCurrentUser(request).getId());
			if(user == null){
				return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
			}
			if (user.getParent_id()!=null) {
				user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
			}
			if(user.getStore_id() == null){
				return ResponseCode.buildReturnMap(ResponseCode.FAILURE,null);
			}
			Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
					.getStore_id()));
			if(store == null){
				return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE,null);
			}
			//user = user.getParent_id() == null ? user : user.getParent();    
			if (user.getStore_id().toString().equals(store.getId().toString())) {
				obj.setGoods_amount(BigDecimal.valueOf(CommUtil
						.null2Double(goods_amount)));
				obj.setShip_price(BigDecimal.valueOf(CommUtil
						.null2Double(ship_price)));
				obj.setTotalPrice(BigDecimal.valueOf(CommUtil
						.null2Double(totalPrice)));
				obj.setOperation_price_count(obj.getOperation_price_count() + 1);
				this.orderFormFeignClient.updateById(obj);
				OrderFormLogDto ofl = new OrderFormLogDto();
				ofl.setAddTime(new Date());
				ofl.setLog_info("调整订单费用");
				ofl.setState_info("调整订单总金额为:" + totalPrice + ",调整运费金额为:"
						+ ship_price);
				ofl.setLog_user_id(SecurityUserHolder.getCurrentUser(request).getId());
				ofl.setLog_user_name(SecurityUserHolder.getCurrentUser(request)
						.getUserName());
				ofl.setOf_id(obj.getId());
				this.orderFormLogFeignClient.saveEntity(ofl);
			/*	UserDto buyer = this.userFeignClient.selectByPrimaryKey(CommUtil.null2Long(obj
						.getUser_id()));
				Map<String, Object> map = Maps.newHashMap();
				map.put("buyer_id", buyer.getId().toString());
				map.put("seller_id", store.getUser_id());
				map.put("order_id", obj.getId());
				String json = JSON.toJSONString(map);
				if (obj.getOrder_form() == 0) {
					this.msgToolsFeignClient.sendEmailCharge(CommUtil.getURL(request),
							"email_tobuyer_order_update_fee_notify",
							buyer.getEmail(), json, null, obj.getStore_id());
					this.msgToolsFeignClient.sendSmsCharge(CommUtil.getURL(request),
							"sms_tobuyer_order_fee_notify", buyer.getMobile(),
							json, null, obj.getStore_id());
				} else {
					this.msgToolsFeignClient.sendEmailFree(CommUtil.getURL(request),
							"email_tobuyer_order_update_fee_notify",
							buyer.getEmail(), json, null);
					this.msgToolsFeignClient.sendSmsFree(CommUtil.getURL(request),
							"sms_tobuyer_order_fee_notify", buyer.getMobile(),
							json, null);
				}*/
			}else{
				return ResponseCode.buildReturnMap(ResponseCode.FAILURE,null);
			}
		}else{
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE,null);
		}
		return ResponseCode.buildSuccessMap(null);
	}
	/**
	 * 卖家发货
	 * @param request
	 * @param response
	 * @param id
	 * @param currentPage
	 * @param page_status
	 * @return
	 */
	@RequestMapping(value = { "/order_shipping" } , method = RequestMethod.POST)
	public Map<String, Object> order_shipping(HttpServletRequest request,@RequestBody JSONObject json) {
		String id = json.optString("id");
		String page_status = json.optString("page_status");
		OrderFormDto obj = this.orderFormFeignClient
				.selectByPrimaryKey(CommUtil.null2Long(id));
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder
				.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(obj
				.getStore_id()));
		
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		Store store1 = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		if(store1 == null ||store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		//user = user.getParent_id() == null ? user : user.getParent();    
		if(user.getStore_id() == null){
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
		Map<String, Object> map = Maps.newHashMap();
		if (user.getStore_id().equals(store.getId())) {
			map.put("obj", obj);

			List<GoodsDto> list_goods = queryOfGoods(obj);
			List<GoodsDto> deliveryGoods = Lists.newArrayList();
			boolean physicalGoods = false;
			for (GoodsDto g : list_goods) {
				if (g.getGoods_choice_type() == 1) {
					deliveryGoods.add(g);
				} else {
					physicalGoods = true;
				}
			}
			Map<String, Object> params = Maps.newHashMap();
			params.put("ecc_type", Integer.valueOf(0));
			params.put("ecc_store_id", store.getId());
			List<ExpressCompanyCommonDto> eccs = this.companyCommonFeignClient.queryPages(params);
			
			params.clear();
			params.put("sa_type", Integer.valueOf(0));
			params.put("sa_user_id", user.getId());
			params.put("orderBy", "obj.sa_default desc,obj.sa_sequence");
			params.put("orderType", "asc");
			List<ShipAddressDto> shipAddrs = this.shipAddressFeignClient.queryPages(params);
			
			map.put("eccs", eccs);
			map.put("shipAddrs", shipAddrs);
			map.put("physicalGoods", Boolean.valueOf(physicalGoods));
			map.put("deliveryGoods", deliveryGoods);
			map.put("page_status", page_status);
			//用改方法查询虚拟商品的数量
			/*map.put("queryOfGoodsCount", this.queryOfGoodsCount);*/
			
		} else {
			return ResponseCode.buildEnumMap(ResponseCode.PARAM_ERROR, null);
		}
		return ResponseCode.buildSuccessMap(map);
	}
	/**
	 * 根据订单id和商品id查询该商品在该订单中的数量          
	 * @param order_id
	 * @param goods_id
	 * @return
	 */
	public int queryOfGoodsCount(String order_id, String goods_id) {
		int count = 0;
		OrderFormDto of = this.orderFormFeignClient.selectByPrimaryKey(CommUtil
				.null2Long(order_id));
		List<Map> map_list = this.orderFormToolsFeignClient.queryGoodsInfo(of.getGoods_info());
		for (Map map : map_list) {
			if (CommUtil.null2String(map.get("goods_id")).equals(goods_id)) {
				count = CommUtil.null2Int(map.get("goods_count"));
				break;
			}
		}
		if ((count == 0)
				&& (!CommUtil.null2String(of.getChild_order_detail())
						.equals(""))) { // 主订单无数量信息,继续从子订单中查询
			List<Map> maps = this.orderFormToolsFeignClient.queryGoodsInfo(of.getChild_order_detail());
			for (Map map : maps) {
				OrderFormDto child_order = this.orderFormFeignClient
						.selectByPrimaryKey(CommUtil.null2Long(map
								.get("order_id")));
				map_list.clear();
				map_list = this.orderFormToolsFeignClient.queryGoodsInfo(child_order.getGoods_info());
				for (Map map1 : map_list) {
					if (CommUtil.null2String(map1.get("goods_id")).equals(
							goods_id)) {
						count = CommUtil.null2Int(map1.get("goods_count"));
						break;
					}
				}
			}
		}
		return count;
	}
	/**
	 * 根据订单id查询该订单中所有商品,包括子订单中的商品
	 * @param main_order
	 * @return
	 */
	public List<GoodsDto> queryOfGoods(OrderFormDto main_order) {
		List<Map> map_list =this.orderFormToolsFeignClient.queryGoodsInfo(main_order.getGoods_info());
		List<GoodsDto> goods_list = Lists.newArrayList();
		for (Map map : map_list) {
			GoodsDto goods = this.goodsFeignClient.selectByPrimaryKey(CommUtil
					.null2Long(map.get("goods_id")));
			if(goods != null){
				goods_list.add(goods);
			}
		}
		if (!CommUtil.null2String(main_order.getChild_order_detail())
				.equals("")) {
			List<Map> maps = this.orderFormToolsFeignClient.queryGoodsInfo(main_order.getChild_order_detail());

			for (Map<String, Object> map : maps) {
				OrderFormDto child_order = this.orderFormFeignClient
						.selectByPrimaryKey(CommUtil.null2Long(map
								.get("order_id")));
				map_list.clear();
				map_list =this.orderFormToolsFeignClient.queryGoodsInfo(child_order.getGoods_info());
				for (Map map1 : map_list) {
					GoodsDto good = this.goodsFeignClient.selectByPrimaryKey(CommUtil
							.null2Long(map1.get("goods_id")));
					goods_list.add(good);
				}
			}
		}
		return goods_list;
	}
	/**
	 * 卖家修改物流
	 * @param request
	 * @param response
	 * @param id
	 * @param currentPage
	 * @return
	 */
	@RequestMapping(value = { "/order_shipping_code" } , method = RequestMethod.POST)
	public Map<String , Object> order_shipping_code(HttpServletRequest request,@RequestBody JSONObject json) {
		String id = json.optString("id");
		OrderFormDto obj = this.orderFormFeignClient
				.selectByPrimaryKey(CommUtil.null2Long(id));
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder
				.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(obj
				.getStore_id()));
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		
		//user = user.getParent_id() == null ? user : user.getParent();    
		if(user.getStore_id() == null){
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
		Store store1 = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		if(store1 == null || store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		if (user.getStore_id().equals(store.getId())) {
			return ResponseCode.buildSuccessMap(obj);
		} else {
			return ResponseCode.buildEnumMap(ResponseCode.FAILURE, null);
		}
	}
	/**
	 * 卖家修改物流保存
	 * @param request
	 * @param response
	 * @param id
	 * @param currentPage
	 * @param shipCode
	 * @param state_info
	 * @return
	 */
	@RequestMapping(value = { "/order_shipping_code_save" } , method = RequestMethod.POST)
	public Map<String , Object> order_shipping_code_saveEntity(HttpServletRequest request,@RequestBody JSONObject json) {
		String id = json.optString("id");
		String shipCode = json.optString("shipCode");
		String state_info = json.optString("state_info");
		
		OrderFormDto obj = this.orderFormFeignClient
				.selectByPrimaryKey(CommUtil.null2Long(id));
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder
				.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(obj
				.getStore_id()));
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		Store store1 = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		if(store1 == null || store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		//user = user.getParent_id() == null ? user : user.getParent();    
		if(user.getStore_id() == null){
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
		Map<String, Object> map = Maps.newHashMap();
		if (user.getStore_id().equals(store.getId())) {
			obj.setShipCode(shipCode);
			this.orderFormFeignClient.updateById(obj);
			OrderFormLogDto ofl = new OrderFormLogDto();
			ofl.setAddTime(new Date());
			ofl.setLog_info("修改物流信息");
			ofl.setState_info(state_info);
			ofl.setLog_user_id(SecurityUserHolder.getCurrentUser(request).getId());
			ofl.setLog_user_name(SecurityUserHolder.getCurrentUser(request)
					.getUserName());
			ofl.setOf(obj);
			this.orderFormLogFeignClient.saveEntity(ofl);
			if (this.sysConfigFeignClient.getSysConfig().getKuaidi_type() == 1) {
				JSONObject info = new JSONObject();
				Map express_map = JSON.parseObject(obj.getExpress_info());
				info.put("company", CommUtil.null2String(express_map
						.get("express_company_mark")));
				info.put("number", obj.getShipCode());
				info.put("from", CommUtil.null2String(obj.getShip_addr()));
				info.put("to", obj.getReceiver_area());
				info.put("key", this.sysConfigFeignClient.getSysConfig()
						.getKuaidi_id2());
				JSONObject param_info = new JSONObject();
				param_info.put("callbackurl", CommUtil.getURL(request)
						+ "/kuaidi_callback?order_id=" + obj.getId()
						+ "&orderType=0");
				param_info.put("salt",
						Md5Encrypt.md5(CommUtil.null2String(obj.getId()))
								.substring(0, 16));
				info.put("parameters", param_info);
				try {
					String result = Post(
							"http://highapi.kuaidi.com/openapi-receive.html",
							info.toString());
					Map remap = JSON.parseObject(result);
					if ("success".equals(CommUtil.null2String(remap
							.get("message")))) {
						ExpressInfoDto ei = new ExpressInfoDto();
						ei.setAddTime(new Date());
						ei.setOrder_id(obj.getId());
						ei.setOrder_express_id(obj.getShipCode());
						ei.setOrder_type(0);
						Map ec_map = JSON.parseObject(CommUtil.null2String(obj
								.getExpress_info()));
						if (ec_map != null) {
							ei.setOrder_express_name(CommUtil
									.null2String(ec_map
											.get("express_company_name")));
						}
						this.expressInfoFeignClient.saveEntity(ei);
						System.out.println("订阅成功");
					} else {
						System.out.println("订阅失败");
					}
				} catch (JSONException e) {
					e.printStackTrace(); 
				}
			}
		}
		return ResponseCode.buildSuccessMap(null);
	}
	/**
	 * 快递Post请求
	 * @param url
	 * @param param
	 * @return
	 */
	@SuppressWarnings("resource")
	public static String Post(String url, String param) {

		try {
			DefaultHttpClient httpClient = new DefaultHttpClient();
			HttpPost method = new HttpPost(url);
			StringEntity entity = new StringEntity(param, "utf-8");// 解决中文乱码问题
			entity.setContentEncoding("UTF-8");
			entity.setContentType("application/json");
			method.setEntity(entity);
			HttpResponse result = httpClient.execute(method);
			// 请求结束,返回结果
			return EntityUtils.toString(result.getEntity());
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException(e.getMessage());
		}

	}
	/**
	 * 卖家物流详情
	 * @param request
	 * @param response
	 * @param id
	 * @return
	 */
	@RequestMapping( value = { "/ship_view" } , method = RequestMethod.POST)
	public Map<String , Object> order_ship_view(HttpServletRequest request,@RequestBody JSONObject json) {
		
		String id = json.optString("id");
		
		OrderFormDto obj = this.orderFormFeignClient
				.selectByPrimaryKey(CommUtil.null2Long(id));
		
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder
				.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(obj
				.getStore_id()));
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		Store store1 = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		if(store1 == null || store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		//user = user.getParent_id() == null ? user : user.getParent();    
		if(user.getStore_id() == null){
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
		Map<String, Object> map = Maps.newHashMap();
		if (user.getStore_id().equals(store.getId())) {
			map.put("obj", obj);
			TransInfoDto transInfo = this.shipToolsFeignClient
					.query_Ordership_getData(CommUtil.null2String(obj.getId()));
			map.put("transInfo", transInfo);
			return ResponseCode.buildSuccessMap(map);
		} else {
			return ResponseCode.buildEnumMap(ResponseCode.FAILURE, null);
		}
	}
	/**
	 * 商品评价列表
	 * @param request
	 * @param response
	 * @param currentPage
	 * @param orderBy
	 * @param orderType
	 * @param status
	 * @return
	 */
	@RequestMapping({ "/evaluate_list" })
	public Map<String ,  Object> evaluate_list(HttpServletRequest request,@RequestBody JSONObject json) {
		
		String currentPage = json.getString("currentPage");
		String orderBy = json.getString("orderBy");
		String orderType = json.getString("orderType");
		String status = json.getString("status");
		String evaluate_buyer_val = json.getString("evaluate_buyer_val");
		Map<String,Object> maps= this.queryTools.getParams(currentPage, orderBy, orderType);
		
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		if(store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		
		maps.put("evaluate_goods_goods_store_id", store.getId());
		maps.put("evaluate_status", 0);
		maps.put("evaluate_type", "goods");
		
		if ("yes".equals(status)) {
			maps.put("reply_status", 1);
			maps.put("status", status);
		}
		
		if ("no".equals(status)) {
			maps.put("reply_status", 0);
			maps.put("status", status);
		}
		//买家评价,评价类型,1为好评,0为中评,-1为差评
		if(StringUtils.isNotBlank(evaluate_buyer_val)){
			maps.put("evaluate_buyer_val", evaluate_buyer_val);
		}
		
		 Map<String, Object> map = this.evaluateFeignClient.list(maps);
		 map.put("status", status);
		return ResponseCode.buildSuccessMap(map);
	}
	/**
	 * 商品评价内容查看
	 * @param request
	 * @param response
	 * @param id
	 * @return
	 */
	@RequestMapping( value = { "/evaluate_info" } ,method = RequestMethod.POST)
	public Map<String , Object> evaluate_info(HttpServletRequest request,@RequestBody JSONObject json) {
		String id = json.optString("id");
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder
				.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		if(store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		EvaluateDto evl = this.evaluateFeignClient.selectByPrimaryKey(CommUtil.null2Long(id));
		//TODO
		if (evl != null){
			OrderFormDto of = this.orderFormFeignClient.selectByPrimaryKey(evl.getOf_id());
			UserDto euser = userFeignClient.selectByPrimaryKey(evl.getEvaluate_user_id());
			if((of.getStore_id().equals(user.getStore_id()+""))) {
				/*mv.addObject("evl", evl);*/
				/*mv.addObject("imageTools", this.imageTools);*/
				Map<String , Object> maps = Maps.newHashMap();
				maps.put("evl", evl);
				maps.put("euser", euser);
				return ResponseCode.buildSuccessMap(maps);
			} else {
				return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
			}
		}else{
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
	}
	
	
	/**
	 * 商品评价内容回复
	 * @param request
	 * @param response
	 * @param id
	 * @param reply
	 */
	@RequestMapping( value = { "/evaluate_reply_save" } , method = RequestMethod.POST)
	public Map<String, Object> evaluate_reply_saveEntity(HttpServletRequest request,@RequestBody JSONObject json) {
		String id = json.optString("id");
		String reply = json.optString("reply");
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		if(store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		EvaluateDto evl = this.evaluateFeignClient.selectByPrimaryKey(CommUtil.null2Long(id));
		if (evl != null){
			OrderFormDto of = this.orderFormFeignClient.selectByPrimaryKey(evl.getOf_id());
			if((of.getStore_id().equals(user.getStore_id()+""))) {
				/*mv.addObject("evl", evl);*/
				/*mv.addObject("imageTools", this.imageTools);*/
				evl.setReply(reply);
				evl.setReply_status(1);
				this.evaluateFeignClient.updateById(evl);
				return ResponseCode.buildSuccessMap(evl);
			} else {
				return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
			}
		}else{
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
		
	}
	
	/**
	 * 常用快递公司
	 * @param request
	 * @param response
	 * @param currentPage
	 * @param orderBy
	 * @param orderType
	 * @return
	 */
	@RequestMapping(value = { "/ecc_set" } ,method = RequestMethod.POST)
	public Map<String , Object> ecc_set(HttpServletRequest request) {
		Map<String, Object> params = Maps.newHashMap();
		
		/*List<ExpressCompanyDto> ecs = this.expressCompanyFeignClient.queryPageList(params);*/
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder
				.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildEnumMap(ResponseCode.TOKEN_EXPIRE, null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		if(store == null){
			return ResponseCode.buildEnumMap(ResponseCode.NOTSTORE, null);
		}
		List<ExpressCompanyCommonDto> eccs = Lists.newArrayList();
		if ((store != null) && (user.getUserRole().indexOf("SELLER") >= 0)) {
			params.put("ecc_type", Integer.valueOf(0));
			params.put("ecc_store_id", store.getId());
			eccs = this.expressCompanyCommonFeignClient.queryPages(params);
		}
		/*mv.addObject("ecs", ecs);
		mv.addObject("transportTools", this.transportTools);*/
		return ResponseCode.buildSuccessMap(eccs);
	}
//	public int query_common_ec(HttpServletRequest request,String id) {
//		int ret = 0;
//		if (!CommUtil.null2String(id).equals("")) {
//			Map<String, Object> params = Maps.newHashMap();
//			UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder
//					.getCurrentUser(request).getId());
//			if(user == null){
//				return ret;
//			}
//			if (user.getParent_id()!=null) {
//				user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
//			}
//			Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
//					.getStore_id()));
//			if(store == null){
//				return ret;
//			}
//			List<ExpressCompanyCommonDto> eccs = Lists.newArrayList();
//			if ((store != null) && (user.getUserRole().indexOf("SELLER") >= 0)) {
//				params.put("ecc_type", Integer.valueOf(0));
//				params.put("ecc_store_id", store.getId());
//				eccs = this.expressCompanyCommon.queryPageList(params);
// 
//				for (ExpressCompanyCommonDto ecc : eccs) {
//					if (ecc.getEcc_ec_id().equals(CommUtil.null2Long(id))) {
//						ret = 1;
//					}
//				}
//			} else {
//				params.put("ecc_type", Integer.valueOf(1));
//				eccs = this.expressCompanyCommon.queryPageList(params);
//
//				for (ExpressCompanyCommonDto ecc : eccs) {
//					if (ecc.getEcc_ec_id().equals(CommUtil.null2Long(id))) {
//						ret = 1;
//					}
//				}
//			}
//		}
//		return ret;
//	}
	
	/**
	 * 常用快递公司删除
	 * @param request
	 * @param response
	 * @param id
	 * @param currentPage
	 * @return
	 */
	@RequestMapping(value = { "/ecc_delete" } , method = RequestMethod.POST)
	public Map<String, Object> ecc_deleteById(HttpServletRequest request,@RequestBody JSONObject json) {
		
		String id = json.optString("id");
		
		ExpressCompanyCommonDto ecc = this.expressCompanyCommonFeignClient
				.selectByPrimaryKey(CommUtil.null2Long(id));
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder
				.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.TOKEN_EXPIRE, null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		if(store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		if (ecc.getEcc_store_id().equals(store.getId())) {
			this.expressCompanyCommonFeignClient.deleteById(CommUtil.null2Long(id));
			return ResponseCode.buildSuccessMap(null);
		}else{
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
	}
	/**
	 * 所有未选择的常用快递公司
	 * @param request
	 * @param response
	 * @param id
	 * @param currentPage
	 * @return
	 */
	@RequestMapping(value = { "/ecc_saveEntityView" } , method = RequestMethod.POST)
	public Map<String, Object> ecc_saveEntityView(HttpServletRequest request,@RequestBody JSONObject json) {
		
		
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder
				.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildEnumMap( ResponseCode.TOKEN_EXPIRE, null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		if(store == null){
			 return ResponseCode.buildEnumMap(ResponseCode.NOTSTORE,null);
		}
		Map<String, Object> params = Maps.newHashMap();
		params.put("company_status", Integer.valueOf(0));
		params.put("orderBy", "company_sequence");
		params.put("orderType", "asc");
		List<ExpressCompanyDto> excs = this.expressCompanyFeignClient.queryPages(params);
		List<ExpressCompanyCommonDto> eccs = Lists.newArrayList();
		List<ExpressCompanyDto> execs = Lists.newArrayList();
		if ((store != null) && (user.getUserRole().indexOf("SELLER") >= 0)) {
			params.clear();
			params.put("ecc_type", Integer.valueOf(0));
			params.put("ecc_store_id", store.getId());
			eccs = this.expressCompanyCommonFeignClient.queryPages(params);
			
			for (ExpressCompanyDto exc : excs) {
				int i= 0;
				for (ExpressCompanyCommonDto ecc : eccs) {
					if (ecc.getEcc_ec_id().equals(CommUtil.null2Long(exc.getId()))) {
						i=1;
						break;
					}
				}
				if(i == 0){
					execs.add(exc);
				}
				
			}
			
		} 
		return ResponseCode.buildSuccessMap(execs);
	}

	/**
	 * 常用快递公司添加
	 * @param request
	 * @param response
	 * @param id
	 * @param currentPage
	 * @return
	 */
	@RequestMapping(value = { "/ecc_saveEntity" } , method = RequestMethod.POST)
	public Map<String, Object> ecc_saveEntity(HttpServletRequest request,@RequestBody JSONObject json) {
		
		String ids = json.optString("ids");
		String[] ec_ids= null;
		if(ids != null){
			ec_ids = ids.split(",");
		}
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder
				.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.TOKEN_EXPIRE, null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		if(store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		
		for (String ec_id : ec_ids) {
			if (!CommUtil.null2String(ec_id).equals("")) {
					ExpressCompanyDto ec = this.expressCompanyFeignClient.selectByPrimaryKey(CommUtil.null2Long(ec_id));
					ExpressCompanyCommonDto ecc = new ExpressCompanyCommonDto();
					ecc.setAddTime(new Date());
					ecc.setEcc_code(ec.getCompany_mark());
					ecc.setEcc_ec_id(ec.getId());
					ecc.setEcc_name(ec.getCompany_name());
					ecc.setEcc_store_id(store.getId());
					ecc.setEcc_template(ec.getCompany_template());
					ecc.setEcc_template_heigh(ec.getCompany_template_heigh());
					ecc.setEcc_template_width(ec.getCompany_template_width());
					ecc.setEcc_template_offset(ec.getCompany_template_offset());
					ecc.setEcc_type(0);
					ecc.setEcc_ec_type(ec.getCompany_type());
					this.expressCompanyCommonFeignClient.saveEntity(ecc);
			}
		}
		return ResponseCode.buildSuccessMap(null);
	}
	
	/**
	 * 发货地址列表
	 * @param request
	 * @param response
	 * @param currentPage
	 * @param orderBy
	 * @param orderType
	 * @return
	 */
	@RequestMapping(value = { "/ship_address" } ,method = RequestMethod.POST)
	public Map<String,Object> ship_address(HttpServletRequest request,@RequestBody JSONObject json) {
		String currentPage = json.optString("currentPage");
		 String orderBy = json.optString("orderBy");
		 String orderType = json.optString("orderType");
		Map<String,Object> maps= this.queryTools.getParams(currentPage, orderBy, orderType);
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder.getCurrentUser(request).getId());
		List<Long> sa_user_ids = Lists.newArrayList();
		sa_user_ids.add(user.getId());
		if(user!=null && user.getParent_id()!=null){
			UserDto userParent = this.userFeignClient.selectByPrimaryKey(user.getParent().getId());
			sa_user_ids.add(userParent.getId());
			List<UserDto> childs = userParent.getChilds();
			for (UserDto uc : childs) {
				sa_user_ids.add(uc.getId());
			}
		}
		
		if(user!=null && user.getChilds()!=null && user.getChilds().size()>0){
			List<UserDto> childs = user.getChilds();
			for (UserDto uc : childs) {
				sa_user_ids.add(uc.getId());
			}
		}
		
		maps.put("sa_type", 0);
		maps.put("sa_user_ids", sa_user_ids);
		
		Map<String, Object> data = this.shipAddressFeignClient.list(maps);
		HashMap<Object, Object> result = new HashMap<>();
		result.put("data", data);
		Store store = storeService.selectByPrimaryKey(user.getStore_id());
		if (store!=null) {
			List<Map> ms_list = Lists.newArrayList();
			if (store.getStore_service_info() != null) {
				ms_list = JSON.parseArray(store.getStore_service_info(),Map.class);
			}
			result.put("ms_list", ms_list);
			if (store.getMc_id()!=null&&store.getMc_id()==22) {
				result.put("scenic", 1); //为景点商品
			}else{
				result.put("scenic", 0); //普通商品
			}
			
		}
		
		return ResponseCode.buildSuccessMap(result);
	}
	
	/**
	 * 新增发货地址的地区
	 * @param request
	 * @param response
	 * @param currentPage
	 * @return
	 */
	@RequestMapping(value = { "/ship_address_add" } , method = RequestMethod.POST)
	public Map<String , Object> ship_address_add(HttpServletRequest request, @RequestBody JSONObject json) {
		String parent_id = json.optString("parent_id");
		Map<String, Object> maps = Maps.newHashMap();
		if(StringUtils.isNotBlank(parent_id)){
			maps.put("parent_id", parent_id);
		}else{
			maps.put("parent_id", -1);
		}
		/*List<AreaDto> areas = this.areaFeignClient.queryPageList(maps);*/
		List<AreaDto> areas = this.areaFeignClient.queryPages(maps);
		return ResponseCode.buildSuccessMap(areas);
	}
	
	/**
	 * 编辑发货地址
	 * @param request
	 * @param response
	 * @param id
	 * @param currentPage
	 * @return
	 */
	@RequestMapping(value = { "/ship_address_edit" } , method = RequestMethod.POST)
	public Map<String , Object> ship_address_edit(HttpServletRequest request,@RequestBody JSONObject json) {
		
		String id = json.optString("id");
		
		ShipAddressDto obj = this.shipAddressFeignClient.selectByPrimaryKey(CommUtil
				.null2Long(id));
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder
				.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildEnumMap(ResponseCode.TOKEN_EXPIRE,null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		if(store == null){
			return ResponseCode.buildEnumMap(ResponseCode.NOTSTORE,null);
		}
		if ((obj != null) && (obj.getSa_user_id().equals(user.getId()))) {
			Map<String, Object> maps = Maps.newHashMap();
			AreaDto sa_area = this.areaFeignClient.selectByPrimaryKeyFullParent(obj.getSa_area_id());
			obj.setSa_area_name(sa_area.getParent().getParent().getAreaName()+sa_area.getParent().getAreaName()+sa_area.getAreaName());
			maps.put("obj", obj);
			return ResponseCode.buildSuccessMap(maps);
		} else {
			return ResponseCode.buildEnumMap(ResponseCode.PARAM_ERROR, null);
		}
	}
	/**
	 * 保存发货地址
	 * @param request
	 * @param response
	 * @param id
	 * @param currentPage
	 */
	@RequestMapping( value = { "/ship_address_save" } ,method = RequestMethod.POST)
	public Map<String , Object> ship_address_saveEntity(HttpServletRequest request,@RequestBody ShipAddressDto shipaddress) {
		
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder
				.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildEnumMap(ResponseCode.TOKEN_EXPIRE,null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		if(store == null){
			return ResponseCode.buildEnumMap(ResponseCode.NOTSTORE,null);
		}
		if(shipaddress == null){
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
		if (StringUtils.isBlank(shipaddress.getId()+"")) {
			shipaddress.setAddTime(new Date());
			shipaddress.setDeleteStatus(0);
		} else {
			ShipAddressDto obj = this.shipAddressFeignClient.selectByPrimaryKey(shipaddress.getId());
			shipaddress.setAddTime(obj.getAddTime());
			shipaddress.setDeleteStatus(obj.getDeleteStatus());
		}
		//判断是不是第一个发货地址   如果是则设置成默认的
		Map< String , Object> maps = Maps.newHashMap();
		List<Long> sa_user_ids = Lists.newArrayList();
		sa_user_ids.add(user.getId());
		if(user!=null && user.getParent_id()!=null){
			UserDto userParent = this.userFeignClient.selectByPrimaryKey(user.getParent().getId());
			sa_user_ids.add(userParent.getId());
			List<UserDto> childs = userParent.getChilds();
			for (UserDto uc : childs) {
				sa_user_ids.add(uc.getId());
			}
		}
		
		if(user!=null && user.getChilds()!=null && user.getChilds().size()>0){
			List<UserDto> childs = user.getChilds();
			for (UserDto uc : childs) {
				sa_user_ids.add(uc.getId());
			}
		}
		
		maps.put("sa_type", 0);
		maps.put("sa_user_ids", sa_user_ids);
		
		List<ShipAddressDto> queryPages = this.shipAddressFeignClient.queryPages(maps);
		if(queryPages.size()>0){
			shipaddress.setSa_default(0);
		}else{
			shipaddress.setSa_default(1);
		}
		shipaddress.setStore_id(store.getId());
		shipaddress.setSa_type(0);
		shipaddress.setSa_user_id(SecurityUserHolder.getCurrentUser(request).getId());
		shipaddress.setSa_user_name(SecurityUserHolder.getCurrentUser(request)
				.getUsername());
		
		//  根据行业 决定是否需要创建达达门店
		  if (modularClassFeignClient.selectByPrimaryKey(store.getMc_id()).isTimely()) {  // 若为附近配送,
			  	SysConfigDto sysConfig = sysConfigFeignClient.getSysConfig();
			  	if (sysConfig.getDada_appkey()!=null&& sysConfig.getDada_appsecret()!=null) {
				// 1.初始化配置(isOnline表示是否测试环境)
				DaDaAppConfig appConfig = new DaDaAppConfig(store.getSource_id() + "", sysConfig.getDada_appkey(), sysConfig.getDada_appsecret());

				// 2.初始化model
				ShopAddModel shopAddModel = new ShopAddModel();
				if (StringUtils.isBlank(shipaddress.getId()+"")) {    //不存在走更新
				// 根据实际信息来填写门店地址
				String order_suffix = CommUtil.formatTime("yyyyMMddHHmmss", new Date());
				shopAddModel.setOriginShopId(order_suffix + store.getId()); // 门店编码,可自定义,但必须唯一;若不填写,则系统自动生成
				shipaddress.setShop_no(order_suffix + store.getId()); // 保存门店编码
				}else{
					shopAddModel.setOriginShopId(shipaddress.getShop_no());
				}
				shopAddModel.setStationName(shipaddress.getSa_name()); // 门店名称
				shopAddModel.setBusiness(13); // 业务类型, 13 水果生鲜
				AreaDto area = areaFeignClient.selectByPrimaryKeyFullParent(shipaddress.getSa_area_id());
				// shipaddress
				shopAddModel.setCityName(area.getParent().getAreaName()); // 城市名称
				shopAddModel.setAreaName(area.getAreaName()); // 区域名称
				shopAddModel.setStationAddress(shipaddress.getSa_addr()); // 详细地址
				shopAddModel.setLng(BigDecimal.valueOf(shipaddress.getSa_lng())); // 经纬度
				shopAddModel.setLat(BigDecimal.valueOf(shipaddress.getSa_lat()));
				shopAddModel.setContactName(shipaddress.getSa_user());
				shopAddModel.setPhone(shipaddress.getSa_telephone());

				// 3.初始化service (门店新增比较特殊,是一个批量新增接口)
				List<ShopAddModel> shopAddList = new ArrayList<ShopAddModel>();
				shopAddList.add(shopAddModel);
				String dadaUrl = null;
				if (StringUtils.isBlank(shipaddress.getId()+"")) {
					dadaUrl = "/api/shop/add";
				} else {
					// 更新门店信息
					dadaUrl = "/api/shop/update";
				}
				DaDaService shopAddService = new DaDaService(dadaUrl, JSONUtil.toJson(shopAddList));

				// 4.初始化客户端
				DadaRequestClient dadaClient = new DadaRequestClient(shopAddService, appConfig);
				DadaApiResponse callRpc = dadaClient.callRpc();
				if (callRpc.getCode() != 0) { // 不成功 ,返回错误信息
					return ResponseCode.buildCodeMap("100", callRpc.getMsg(), null);
				}

			}
		  }
		
		if (StringUtils.isBlank(shipaddress.getId()+"")) {
			this.shipAddressFeignClient.saveEntity(shipaddress);
		} else {
			this.shipAddressFeignClient.updateById(shipaddress);
		}
		return ResponseCode.buildSuccessMap(null);
	}
	/**
	 * 发货地址删除
	 * @param request
	 * @param response
	 * @param mulitId
	 * @param currentPage
	 * @return
	 */
	@RequestMapping(value = { "/ship_address_del" } , method = RequestMethod.POST)
	public Map<String , Object> ship_address_del(HttpServletRequest request,@RequestBody JSONObject json) {
		String id = json.optString("id");
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder
				.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.TOKEN_EXPIRE, null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		if(store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}

		if (StringUtils.isNotBlank(id)) {
			ShipAddressDto obj = this.shipAddressFeignClient.selectByPrimaryKey(CommUtil
					.null2Long(id));
			if ((obj != null) && (obj.getSa_type() == 0)
					&& (obj.getSa_user_id().equals(user.getId()))) {
				this.shipAddressFeignClient.deleteById(obj.getId());
			}
		}
		return ResponseCode.buildSuccessMap(null);
	}
	
	
	/**
	 * 设置默认发货地址
	 * @param request
	 * @param response
	 * @param id
	 * @param currentPage
	 * @return
	 */
	
	@RequestMapping( value = { "/ship_address_default" } , method = RequestMethod.POST)
	public Map<String , Object> ship_address_default(HttpServletRequest request, @RequestBody JSONObject json) {
		
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder
				.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.TOKEN_EXPIRE, null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(user
				.getStore_id()));
		if(store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		
		Map<String, Object> params = Maps.newHashMap();
		params.put("sa_default", Integer.valueOf(1));
		params.put("sa_user_id", user.getId());
		
		List<ShipAddressDto> sa_list = this.shipAddressFeignClient.queryPages(params);
		
		for (ShipAddressDto sa : sa_list) {
			sa.setSa_default(0);
			this.shipAddressFeignClient.updateById(sa);
		}
		String id = json.optString("id");
		ShipAddressDto obj = this.shipAddressFeignClient.selectByPrimaryKey(CommUtil
				.null2Long(id));
		if (obj.getSa_user_id().equals(user.getId())) {
			obj.setSa_default(1);
			this.shipAddressFeignClient.updateById(obj);
		}
		return ResponseCode.buildSuccessMap(null);
	}
	/**
	 * 设置修改收货地址
	 * @param request
	 * @param response
	 * @param id
	 * @param currentPage
	 * @return
	 */
	@RequestMapping(value = { "/upShippingAddress" } , method = RequestMethod.POST)
	public Map<String , Object> upShippingAddress(HttpServletRequest request,
			@RequestBody JSONObject json) {
		String id = json.optString("id");
		OrderFormDto obj = this.orderFormFeignClient
				.selectByPrimaryKey(CommUtil.null2Long(id));
		
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder
				.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(obj
				.getStore_id()));
		if(store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		//user = user.getParent_id() == null ? user : user.getParent();    
		if(user.getStore_id() == null){
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
		if (user.getStore_id().equals(store.getId())) {
			return ResponseCode.buildSuccessMap(obj);
		} else {
			return ResponseCode.buildEnumMap(ResponseCode.FAILURE, null);
		}
	}
	/**
	 * 设置修改收货地址保存
	 * @param request
	 * @param response
	 * @param id
	 * @param currentPage
	 * @return
	 */
	@RequestMapping(value = { "/upShippingAddress_save" } , method = RequestMethod.POST)
	public Map<String , Object> upShippingAddress_save(HttpServletRequest request,
			@RequestBody JSONObject json) {
		String id = json.optString("id");
		String receiver_name = json.optString("receiver_name");// 收货人姓名,确认订单后,将买家的收货地址所有信息添加到订单中,该订单与买家收货地址没有任何关联
		String receiver_area = json.optString("receiver_area");// 收货人地区,例如:福建省厦门市海沧区
		String receiver_area_info = json.optString("receiver_area_info");// 收货人详细地址,例如:凌空二街56-1号,4单元2楼1号
		//String receiver_zip = json.optString("receiver_zip");// 收货人邮政编码
		String receiver_telephone = json.optString("receiver_telephone");// 收货人联系电话
		String receiver_mobile = json.optString("receiver_mobile");// 收货人手机号码
		String lat = json.optString("lat");// 经纬度
		String lng = json.optString("lng");// 
		
		OrderFormDto obj = this.orderFormFeignClient
				.selectByPrimaryKey(CommUtil.null2Long(id));
		if(obj == null){
			return ResponseCode.buildReturnMap(ResponseCode.PARAM_ERROR, null);
		}
		
		UserDto user = this.userFeignClient.selectByPrimaryKey(SecurityUserHolder
				.getCurrentUser(request).getId());
		if(user == null){
			return ResponseCode.buildReturnMap(ResponseCode.USER_DOES_NOT_EXIST, null);
		}
		if (user.getParent_id()!=null) {
			user = this.userFeignClient.selectByPrimaryKey(user.getParent_id());
		}
		
		Store store = this.storeService.selectByPrimaryKey(CommUtil.null2Long(obj
				.getStore_id()));
		if(store == null){
			return ResponseCode.buildReturnMap(ResponseCode.NOTSTORE, null);
		}
		//user = user.getParent_id() == null ? user : user.getParent();    
		if(user.getStore_id() == null){
			return ResponseCode.buildReturnMap(ResponseCode.FAILURE, null);
		}
		if (CommUtil.null2String(user.getStore_id()).equals(CommUtil.null2String(store.getId()))) {
			obj.setReceiver_Name(receiver_name);
			obj.setReceiver_area(receiver_area);
			obj.setReceiver_area_info(receiver_area_info);
			//obj.setReceiver_zip(receiver_zip);
			obj.setReceiver_telephone(receiver_telephone);
			obj.setReceiver_mobile(receiver_mobile);
			if (StringUtils.isNotBlank(lat)&&StringUtils.isNotBlank(lng)) {
				obj.setUser_lat(CommUtil.null2Double(lat));
				obj.setUser_lng(CommUtil.null2Double(lng));
			}
			orderFormFeignClient.updateById(obj);
			return ResponseCode.buildSuccessMap(obj);
		} else {
			return ResponseCode.buildEnumMap(ResponseCode.FAILURE, null);
		}
	}
	
	
}
@源码地址来源: https://minglisoft.cn/honghu/business.html

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐