package com.founder.ec.dec.action;

import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.simple.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.founder.ec.cms.model.Channel;
import com.founder.ec.cms.model.Website;
import com.founder.ec.dec.service.ChannelService;

@Controller
public class ChannelAction {

    @Autowired
    private ChannelService channelService;

    /**
     * 根据渠道id获取渠道详情
     * @param channelId 渠道id
     * @return
     */
    @SuppressWarnings("unchecked")
    @RequestMapping("/getChannelInfo")
    public void getChannelInfo(HttpServletRequest request,
            HttpServletResponse response) throws Exception{
        JSONObject json=new JSONObject();
        try{
            request.setCharacterEncoding("utf-8");
            Long channelId=Long.parseLong(request.getParameter("channelId"));

            if(channelId==null){
                json.put("code", -1);
                json.put("result", "请求参数为空");
                response.getWriter().write(URLEncoder.encode(json.toJSONString(),"UTF-8"));
                return ;
            }
            Channel channel = channelService.getChannelDetail(channelId);
            if(channel==null){
                json.put("code", -1);
                json.put("result", "找不到对应数据对象");
                response.getWriter().write(URLEncoder.encode(json.toJSONString(),"UTF-8"));
                return;
            }
            Map<String,Object> map=new HashMap<String,Object>();
            map.put("groupId", Long.parseLong(channel.getAlternateField2()));
            map.put("groupName", channel.getGroupName());
            map.put("channelName", channel.getChannelName());
            json.put("code", 0);
            json.put("result",map);
            response.getWriter().write(URLEncoder.encode(json.toJSONString(),"UTF-8"));
        }catch(Exception e){
                json.put("code", -1);
                json.put("result", "inner error");
                response.getWriter().write(URLEncoder.encode(json.toJSONString(),"UTF-8"));
            e.printStackTrace();
        }

    }

    /**
     * 根据站点id获取站点名
     * @param websiteId 站点id
     * @return
     */
    @SuppressWarnings("unchecked")
    @RequestMapping("/getWebsiteName")
    public void getWebsiteName(HttpServletRequest request,
            HttpServletResponse response) throws Exception{
        JSONObject json=new JSONObject();
        try{
            request.setCharacterEncoding("utf-8");
            Long websiteId=Long.parseLong(request.getParameter("websiteId"));

            if(websiteId==null){
                json.put("code", -1);
                json.put("result", "请求参数为空");
                response.getWriter().write(URLEncoder.encode(json.toJSONString(),"UTF-8"));
                return;
            }
            Website website = channelService.getWebsiteName(websiteId);
            if(website==null){
                json.put("code", -2);
                json.put("result", "找不到对应数据对象");
                response.getWriter().write(URLEncoder.encode(json.toJSONString(),"UTF-8"));
                return;
            }
            Map<String,Object> map=new HashMap<String,Object>();
            map.put("websiteName", website.getAlternateField1());
            json.put("code", 0);
            json.put("result",map);
            response.getWriter().write(URLEncoder.encode(json.toJSONString(),"UTF-8"));
        }catch(Exception e){
            json.put("code", -3);
            json.put("result", "inner error");
            response.getWriter().write(URLEncoder.encode(json.toJSONString(),"UTF-8"));
            e.printStackTrace();
        }
    }

}
package com.founder.ec.dec.action;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.founder.ec.base.action.BaseClassAction;
import com.founder.ec.dec.service.GoodsQueryService;

/**
 * 商品查询接口
 * @author lurongyu
 *
 */
@Controller
public class GoodsQueryAction   extends BaseClassAction {

    @Autowired
    private GoodsQueryService service;

    @RequestMapping("/goodsQuery")
    public  void sendGoodsQuery (HttpServletRequest request, HttpServletResponse response ) throws Exception  {

        response.setContentType("text/html;charset=utf-8");
        String productCodes = request.getParameter("code").toString();
        String imageType = request.getParameter("imageType");
        if (null== request.getParameter("imageType") || "".equals(request.getParameter("imageType").toString())){
            imageType ="thumb";
        }
        String paracode ="";

        Map para = new HashMap ();
        List<Map<String,Object>>  resultList = new ArrayList <Map<String,Object>> ();
        if(request.getParameter("code")!=null && productCodes.length() >0) {
             String[] temps = productCodes.split(",");
             if (temps.length > 10 ){
                 response.getWriter().write("{code:-2,msg:'error ,code最多只能10个!'}");
             }
             for (int i =0; i< temps.length ; i++) {
                 paracode =paracode+ "'"+temps[i]+"',";
             }
            paracode=paracode.substring(0,paracode.length()-1);
            para.put("goodsNos", paracode);
            para.put("imageType", imageType);
            resultList = service.getGoodsQueryMap(para);
            JSONArray jsonArray =  JSONArray.fromObject(resultList);
            response.getWriter().write(jsonArray.toString());
        }else {
            response.getWriter().write("{code:-2,msg:'error ,code未传!'}");
        }

    }

}
// 解析json字符串,转成Model对象
                OrderInfo orderInfo = JSON.parseObject(orderInfoStr,OrderInfo.class);
package com.j1.mai.action;

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

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.j1.base.dto.ServiceMessage;
import com.j1.base.order.model.ShopcartGoods;
import com.j1.base.order.model.ShopcartModel;
import com.j1.base.type.MsgStatus;
import com.j1.item.model.Goods;
import com.j1.mai.common.Const;
import com.j1.mai.model.common.SoaApiBaseAction;
import com.j1.mai.util.NumericUtil;
import com.j1.mai.util.StringUtil;
import com.j1.soa.common.ResultMsg;
import com.j1.soa.resource.order.api.ShopcartGoodsService;
import com.j1.soa.resource.order.api.ShopcartService;

/**
 * 促销相关Action
 *
 * @author qiaoyu
 */
@Controller
@Scope("request")
@RequestMapping("/promote")
public class PromoteAction extends SoaApiBaseAction {
    static Logger LOG = Logger.getLogger(PromoteAction.class);

    @Autowired
    private ShopcartService shopcartService;
    @Autowired
    private ShopcartGoodsService shopcartGoodsService;

    @RequestMapping("/promoteList")
    public void promoteList(
            HttpServletRequest request,
            HttpServletResponse response,
            @RequestParam(value = "contentNo", required = false) String contentNo,
            @RequestParam(value = "memberKey", required = false) String memberKey,
            @RequestParam(value = "mul", required = false) String mul) {
        ShopcartModel shopcartParam = new ShopcartModel();
        shopcartParam.setContentNo(contentNo);
        shopcartParam.setMemberKey(memberKey);
        shopcartParam.setMul(mul);
        JSONObject resultObj = new JSONObject();
        try {
            // 获取购物车信息
            ServiceMessage<ShopcartModel> shopcartResult = shopcartService
                    .shopcartIndex(shopcartParam);
            if (shopcartResult.getStatus() != MsgStatus.NORMAL) {
                setResultInfo(shopcartResult.getStatus().getCode(),
                        shopcartResult.getMessage());
                return;
            }

            ShopcartModel shopcartModel = shopcartResult.getResult();

            if (shopcartModel == null) {
                setResultInfo(MsgStatus.NO_RESULT.getCode(),
                        ResultMsg.Common.QUERY_NO_RESULT);
                return;
            }

            List<Map<String, Object>> groups = shopcartModel.getShopcartGroup();

            List<Map<String, Object>> giftGroups = new ArrayList<Map<String, Object>>(), hgGroups = new ArrayList<Map<String, Object>>();

            for (Map<String, Object> group : groups) {
                if (group.get("groupType") == null)
                    continue;
                // 促销不满足条件, 前端不进行展示
                if (group.get("isTrue") != null && !group.get("isTrue").equals("Y"))
                    continue;
                if (group.get("groupType").equals(Const.GroupType.GIFT)) {
                    if (group.get("goodsGiftList") == null)
                        continue;
                    if (!group.get("goodsGiftList").getClass()
                            .isAssignableFrom(ArrayList.class))
                        continue;
                    // 过滤掉赠品列表为空的group, 为空时表示赠优惠券, 暂时不展示
                    if (((ArrayList<?>) group.get("goodsGiftList")).size() == 0)
                        continue;
                    giftGroups.add(group);
                } else if (group.get("groupType").equals(Const.GroupType.HG)) {
                    hgGroups.add(group);
                }
            }
            resultObj.put("giftList", giftGroups);
            resultObj.put("hgList", hgGroups);
            setResultInfo(MsgStatus.NORMAL.getCode(), ResultMsg.Common.OK);
        } catch (Exception e) {
            LOG.error(e.getMessage(), e);
            setResultInfo(MsgStatus.EXCEPTION.getCode(),
                    ResultMsg.PromoteAction.PROMOTE_LIST_FAILURE);
        } finally {
            _result.setObjData(resultObj);
            write(request, response);
        }
    }

    /**
     * 获取加价购选项
     *
     * @param request
     * @param response
     * @param contentNo   识别码
     * @param memberKey   会员识别码
     * @param mul         来源
     * @param promoteType 促销类型
     * @param promoteId   根据 promoteType对应促销ID或商品ID
     * @date 02/12/14
     * @author qiaoyu
     * @version 1.0
     */
    @RequestMapping("/hgOption")
    public void hgOption(
            HttpServletRequest request,
            HttpServletResponse response,
            @RequestParam(value = "contentNo", required = false) String contentNo,
            @RequestParam(value = "memberKey", required = false) String memberKey,
            @RequestParam(value = "mul", required = false) String mul,
            @RequestParam(value = "promoteType", required = false) String promoteType,
            @RequestParam(value = "promoteId", required = false) String promoteId) {
        // START PARAMETER VALIDATION
        if (StringUtil.isEmpty(promoteType)) {
            this.setResultInfo(MsgStatus.PARAMS_ERROR.getCode(),
                    ResultMsg.PromoteAction.PROMOTE_TYPE_EMPTY).write(request,
                    response);
            return;
        }

        if (!promoteType.equals(Const.Promote.HG_GOODS_TYPE)
                && !promoteType.equals(Const.Promote.HG_RULE_TYPE)) {
            this.setResultInfo(MsgStatus.PARAMS_ERROR.getCode(),
                    ResultMsg.PromoteAction.PROMOTE_TYPE_WRONG).write(request,
                    response);
            return;
        }

        Long itemId = NumericUtil.parseLong(promoteId);

        if (itemId == null) {
            this.setResultInfo(MsgStatus.PARAMS_ERROR.getCode(),
                    ResultMsg.PromoteAction.PROMOTE_ID_WRONG).write(request,
                    response);
            return;
        }
        // END PARAMETER VALIDATION

        ShopcartModel shopcartParam = new ShopcartModel();
        shopcartParam.setContentNo(contentNo);
        shopcartParam.setMemberKey(memberKey);
        shopcartParam.setMul(mul);

        JSONObject resultObj = new JSONObject();
        try {
            // 获取购物车信息
            ServiceMessage<ShopcartModel> shopcartResult = shopcartService
                    .shopcartIndex(shopcartParam);
            if (shopcartResult.getStatus() != MsgStatus.NORMAL) {
                setResultInfo(shopcartResult.getStatus().getCode(),
                        shopcartResult.getMessage());
                return;
            }

            ShopcartModel shopcartModel = shopcartResult.getResult();

            if (shopcartModel == null) {
                setResultInfo(MsgStatus.NO_RESULT.getCode(),
                        ResultMsg.Common.QUERY_NO_RESULT);
                return;
            }

            // Goods promote
            if (promoteType.equals(Const.Promote.HG_GOODS_TYPE)) {
                for (Goods goods : shopcartModel.getGoodsList()) {
                    if (goods.getGoodsId().longValue() != itemId.longValue())
                        continue;

                    resultObj.put(Const.ResultKey.PROMOTE_ITEM_LIST,
                            goods.getItemNameList());
                    resultObj.put(
                            Const.ResultKey.RULE_ITEM_ID,
                            goods.getRuleItemId() == null ? "0" : goods
                                    .getRuleItemId());
                    setResultInfo(MsgStatus.NORMAL.getCode(),
                            ResultMsg.Common.OK);
                    return;
                }
            } else { // Combination promote
                for (Map<String, Object> promoteItem : shopcartModel
                        .getShopcartGroup()) {
                    if (Long.valueOf(
                            String.valueOf(promoteItem.get("promoteRuleId")))
                            .longValue() != itemId.longValue())
                        continue;

                    resultObj.put(Const.ResultKey.PROMOTE_ITEM_LIST,
                            promoteItem.get("promoteItemList"));
                    resultObj.put(Const.ResultKey.RULE_ITEM_ID,
                            promoteItem.get("ruleItemId") == null ? "0"
                                    : promoteItem.get("ruleItemId"));
                    setResultInfo(MsgStatus.NORMAL.getCode(),
                            ResultMsg.Common.OK);
                    return;
                }
            }

            setResultInfo(MsgStatus.NO_RESULT.getCode(),
                    ResultMsg.PromoteAction.HG_NOT_FOUND);
        } catch (Exception e) {
            LOG.error(e.getMessage(), e);
            setResultInfo(MsgStatus.EXCEPTION.getCode(),
                    ResultMsg.PromoteAction.HG_LIST_FAILURE);
        } finally {
            _result.setObjData(resultObj);
            write(request, response);
        }
    }

    /**
     * 获取加价购/赠品商品列表
     *
     * @param request
     * @param response
     * @param contentNo
     * @param memberKey
     * @param mul
     * @param promoteType
     * @param promoteId
     * @param promoteItemId
     * @date 02/12/14
     * @author qiaoyu
     * @version 1.0
     */
    @RequestMapping("/hgGoods")
    public void hgGoods(
            HttpServletRequest request,
            HttpServletResponse response,
            @RequestParam(value = "contentNo", required = false) String contentNo,
            @RequestParam(value = "memberKey", required = false) String memberKey,
            @RequestParam(value = "mul", required = false) String mul,
            @RequestParam(value = "promoteType", required = false) String promoteType,
            @RequestParam(value = "promoteId", required = false) String promoteId,
            @RequestParam(value = "promoteItemId", required = false) String promoteItemId) {
        // START PARAMETER VALIDATION
        if (StringUtil.isEmpty(promoteType)) {
            this.setResultInfo(MsgStatus.PARAMS_ERROR.getCode(),
                    ResultMsg.PromoteAction.PROMOTE_TYPE_EMPTY).write(request,
                    response);
            return;
        }

        if (!promoteType.equals(Const.Promote.HG_GOODS_TYPE)
                && !promoteType.equals(Const.Promote.HG_RULE_TYPE)) {
            this.setResultInfo(MsgStatus.PARAMS_ERROR.getCode(),
                    ResultMsg.PromoteAction.PROMOTE_TYPE_WRONG).write(request,
                    response);
            return;
        }

        Long itemId = NumericUtil.parseLong(promoteId);

        if (itemId == null) {
            this.setResultInfo(MsgStatus.PARAMS_ERROR.getCode(),
                    ResultMsg.PromoteAction.PROMOTE_ID_WRONG).write(request,
                    response);
            return;
        }
        // END PARAMETER VALIDATION

        ShopcartModel shopcartParam = new ShopcartModel();
        shopcartParam.setContentNo(contentNo);
        shopcartParam.setMemberKey(memberKey);
        shopcartParam.setMul(mul);

        JSONObject resultObj = new JSONObject();
        try {
            // 获取购物车信息
            ServiceMessage<ShopcartModel> shopcartResult = shopcartService
                    .shopcartIndex(shopcartParam);
            if (shopcartResult.getStatus() != MsgStatus.NORMAL) {
                setResultInfo(shopcartResult.getStatus().getCode(),
                        shopcartResult.getMessage());
                return;
            }

            ShopcartModel shopcartModel = shopcartResult.getResult();
            // Goods promote
            if (promoteType.equals(Const.Promote.HG_GOODS_TYPE)) {
                for (Goods goods : shopcartModel.getGoodsList()) {
                    if (goods.getGoodsId().longValue() != itemId.longValue())
                        continue;

                    // promoteItemId 不为空,加价购选项商品
                    if (StringUtil.isNotEmpty(promoteItemId)) {
                        List<Map<String, Object>> itemList = goods
                                .getItemNameList();
                        for (Map<String, Object> item : itemList) {
                            if (!item.get("itemId").toString()
                                    .equals(promoteItemId))
                                continue;

                            resultObj.put("goodstList", item.get("goodstList"));
                            resultObj.put("maxCount", item.get("hgCount") == null ? 0 : item.get("hgCount"));
                            setResultInfo(MsgStatus.NORMAL.getCode(),
                                    ResultMsg.Common.OK);
                            return;
                        }
                    } else { // promoteItemId 为空,赠品商品
                        resultObj.put("goodstList", goods.getGoodsGiftList());
                        resultObj.put("maxCount", goods.getGiftMaxCount() == null ? 0 : goods.getGiftMaxCount());
                        setResultInfo(MsgStatus.NORMAL.getCode(),
                                ResultMsg.Common.OK);
                        return;
                    }
                }
            } else { // Combination promote
                for (Map<String, Object> promoteItem : shopcartModel
                        .getShopcartGroup()) {
                    if (Long.valueOf(
                            String.valueOf(promoteItem.get("promoteRuleId")))
                            .longValue() != itemId.longValue())
                        continue;
                    // promoteItemId 不为空,加价购选项商品
                    if (StringUtil.isNotEmpty(promoteItemId)) {
                        @SuppressWarnings("unchecked")
                        List<Map<String, Object>> itemList = (List<Map<String, Object>>) promoteItem
                                .get("promoteItemList");
                        for (Map<String, Object> item : itemList) {
                            if (!item.get("itemId").toString()
                                    .equals(promoteItemId))
                                continue;

                            resultObj.put("goodstList", item.get("goodstList"));
                            resultObj.put("maxCount", item.get("hgCount") == null ? 0 : item.get("hgCount"));
                            setResultInfo(MsgStatus.NORMAL.getCode(),
                                    ResultMsg.Common.OK);
                            return;
                        }
                    } else { // promoteItemId 为空,赠品商品
                        resultObj.put("goodstList",
                                promoteItem.get("goodsGiftList"));
                        resultObj.put("maxCount", promoteItem.get("giftCount") == null ? 0 : promoteItem.get("giftCount"));
                        setResultInfo(MsgStatus.NORMAL.getCode(),
                                ResultMsg.Common.OK);
                        return;
                    }
                }
            }

            setResultInfo(MsgStatus.NO_RESULT.getCode(),
                    ResultMsg.PromoteAction.HG_NOT_FOUND);
        } catch (Exception e) {
            LOG.error(e.getMessage(), e);
            setResultInfo(MsgStatus.EXCEPTION.getCode(),
                    ResultMsg.PromoteAction.HG_LIST_FAILURE);
        } finally {
            _result.setObjData(resultObj);
            write(request, response);
        }
    }

    /**
     * 选择加价购/赠品商品
     *
     * @param request
     * @param response
     * @param contentNo
     * @param memberKey
     * @param mul
     * @param promoteType
     * @param promoteId
     * @param promoteItemId
     * @param goodsIds
     * @date 02/12/14
     * @author qiaoyu
     * @version 1.0
     */
    @RequestMapping("/choose")
    public void choose(
            HttpServletRequest request,
            HttpServletResponse response,
            @RequestParam(value = "contentNo", required = false) String contentNo,
            @RequestParam(value = "memberKey", required = false) String memberKey,
            @RequestParam(value = "mul", required = false) String mul,
            @RequestParam(value = "promoteType", required = false) String promoteType,
            @RequestParam(value = "promoteId", required = false) String promoteId,
            @RequestParam(value = "promoteItemId", required = false) String promoteItemId,
            @RequestParam(value = "goodsIds", required = false) String goodsIds) {
        ShopcartGoods shopcartGoods = new ShopcartGoods();
        shopcartGoods.setMul(mul);
        shopcartGoods.setContentNo(contentNo);
        shopcartGoods.setMemberKey(memberKey);
        shopcartGoods.setPromoteType(promoteType);
        if (promoteId != null && !"0".equals(promoteId)) {
            shopcartGoods.setPromoteId(NumericUtil.parseLong(promoteId));
        }
        shopcartGoods.setPromoteItemId(NumericUtil.parseLong(promoteItemId));
        shopcartGoods.setGoodsIds(goodsIds);

        ServiceMessage<String> chooseResult = null;
        try {
            chooseResult = shopcartGoodsService
                    .promoteUpdateGoods(shopcartGoods);
        } catch (Exception e) {
            LOG.error(e.getMessage(), e);
        } finally {
            this.setResultInfo(chooseResult,
                    ResultMsg.PromoteAction.CHOOSE_FAILURE).write(request,
                    response);
        }
    }

    /**
     * 删除加价购/赠品选项
     *
     * @param request
     * @param response
     * @param contentNo
     * @param memberKey
     * @param mul
     * @param promoteType
     * @param promoteItemId
     * @param promoteId
     */
    @RequestMapping("/del")
    public void del(
            HttpServletRequest request,
            HttpServletResponse response,
            @RequestParam(value = "contentNo", required = false) String contentNo,
            @RequestParam(value = "memberKey", required = false) String memberKey,
            @RequestParam(value = "mul", required = false) String mul,
            @RequestParam(value = "promoteType", required = false) String promoteType,
            @RequestParam(value = "promoteItemId", required = false) String promoteItemId,
            @RequestParam(value = "promoteId", required = false) String promoteId) {
        ShopcartGoods shopcartGoods = new ShopcartGoods();
        shopcartGoods.setContentNo(contentNo);
        shopcartGoods.setMemberKey(memberKey);
        shopcartGoods.setMul(mul);
        shopcartGoods.setPromoteType(promoteType);
        shopcartGoods.setPromoteId(NumericUtil.parseLong(promoteId));
        shopcartGoods.setPromoteItemId(NumericUtil.parseLong(promoteItemId));

        ServiceMessage<String> delResult = null;
        try {
            delResult = shopcartGoodsService.promoteRemoveGoods(shopcartGoods);
        } catch (Exception e) {
            LOG.error(e.getMessage(), e);
        } finally {
            this.setResult(delResult, ResultMsg.PromoteAction.DEL_FAILURE)
                    .write(request, response);
        }
    }

    /**
     * 根据促销id、促销详情id以及商品id获取赠品
     *
     * @param request
     * @param response
     * @param promoteRuleId
     * @param ruleItemId
     * @param goodsId
     */
    @RequestMapping("/hgGoodsNew")
    public void giftGoods(
            HttpServletRequest request,
            HttpServletResponse response,
            @RequestParam(value = "contentNo", required = false) String contentNo,
            @RequestParam(value = "memberKey", required = false) String memberKey,
            @RequestParam(value = "mul", required = false) String mul,
            @RequestParam(value = "promoteRuleId", required = false) String promoteRuleId,
            @RequestParam(value = "ruleItemId", required = false) String ruleItemId,
            @RequestParam(value = "promoteGiftType", required = false) String promoteGiftType,
            @RequestParam(value = "goodsIdAndProductId", required = false) String goodsIdAndProductId){

        ShopcartModel shopcartParam = new ShopcartModel();
        shopcartParam.setContentNo(contentNo);
        shopcartParam.setMemberKey(memberKey);
        shopcartParam.setMul(mul);

        JSONObject resultData = new JSONObject();

        ServiceMessage<ShopcartModel> initResult = null;

        try {
            initResult = shopcartService.shopcartIndex(shopcartParam);

             if (initResult.getStatus() != MsgStatus.NORMAL) {
                 setResultInfo(initResult.getStatus().getCode(),
                         initResult.getMessage());
                 return;
             }

             if(initResult==null||"".equals(initResult)){
                 setResultInfo("-1","购物车为空");
                 return;
             }

             ShopcartModel shopcartModel= initResult.getResult();
             JSONObject shopcartJson = JSONObject.fromObject(shopcartModel);
             Object shopcartGroup = shopcartJson.get("shopcartGroup");
             if(shopcartGroup==null||"".equals(shopcartGroup)){
                 setResultInfo("-1","未查询到促销信息");
                 return;
             }

             //1 : 非单品 正品,组赠品
             JSONArray shopcartArray = JSONArray.fromObject(shopcartGroup);
             if(promoteGiftType.equals("1")){ //1 : 非单品 正品,组赠品
                 Map<String,String> returnMap = new HashMap<String,String>();
                 for (Object shopcart : shopcartArray) {
                    JSONObject shopcartGroupJson = JSONObject.fromObject(shopcart);
                    String _promoteRuleId = StringUtil.getTrimString(shopcartGroupJson.get("promoteRuleId"));
                    String itemId = StringUtil.getTrimString(shopcartGroupJson.get("ruleItemId"));
                    if(_promoteRuleId.equals(promoteRuleId)){
                        Object goodsGiftList = shopcartGroupJson.get("goodsGiftList");//赠品
                        Object promoteItemList = shopcartGroupJson.get("promoteItemList");//加价购
                        if(goodsGiftList!=null&&!"".equals(goodsGiftList)){
                            if(itemId.equals(ruleItemId)){
                                JSONArray goodsGiftArray = JSONArray.fromObject(goodsGiftList);
                                resultData.put("shopcart", shopcart);
                            }
                        }else if(promoteItemList!=null&&!"".equals(promoteItemList)){
                            JSONArray promoteItemArray = JSONArray.fromObject(promoteItemList);
                            for (Object promoteItem : promoteItemArray) {
                                JSONObject promoteItemJson = JSONObject.fromObject(promoteItem);
                                String itemId2 = StringUtil.getTrimString(promoteItemJson.get("itemId"));
                                if(itemId2.equals(ruleItemId)){
                                    resultData.put("promoteItem", promoteItem);
                                }
                            }
                        }
                    }
                 }
             }else{ //1 : 单品 正品
                for (Object shopcart : shopcartArray) {
                    JSONObject shopcartOne = JSONObject.fromObject(shopcart);
                    Object goodList = shopcartOne.get("goodsList");
                    JSONArray goodsArray = JSONArray.fromObject(goodList);
                    for (Object good : goodsArray) {
                        JSONObject goodJson = JSONObject.fromObject(good);
                        String goodsId = goodJson.getString("goodsId");
                        String productId = goodJson.getString("productId");
                        String str = goodsId+","+productId;
                        if(goodsIdAndProductId.equals(str)){
                            if(promoteGiftType.equals("2")){
                                Object goodsGiftList =goodJson.get("goodsGiftList");
                                if(goodsGiftList!=null&&!"".equals(goodsGiftList)){
                                    JSONArray goodsGiftArray = JSONArray.fromObject(goodsGiftList);
                                    resultData.put("goodsGiftList", goodsGiftArray);
                                }
                            }else if(promoteGiftType.equals("3")){
                                Object goodsList =goodJson.get("goodstList");
                                if(goodsList!=null&&!"".equals(goodsList)){
                                    JSONArray goodArray = JSONArray.fromObject(goodsList);
                                    resultData.put("goodsList", goodArray);
                                }
                            }
                        }
                    }
                }
             }

        } catch (Exception e) {
            LOG.error(e.getMessage(), e);
        } finally {
            this._result.setObjData(resultData);
            this.write(request, response);
        }
    }

}
package com.j1.mai.action;

import java.math.BigDecimal;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.j1.base.dto.ServiceMessage;
import com.j1.base.order.dto.CouponsAssignParam;
import com.j1.base.order.model.EcCoupons;
import com.j1.base.order.model.FreeCoupon;
import com.j1.base.order.model.FreePromoteGoods;
import com.j1.base.order.model.ShopcartGoods;
import com.j1.base.page.Page;
import com.j1.base.page.PageRequest;
import com.j1.base.page.Pageable;
import com.j1.base.type.MsgStatus;
import com.j1.mai.model.common.SoaApiBaseAction;
import com.j1.mai.service.CheckMemberKeyService;
import com.j1.mai.util.NumericUtil;
import com.j1.mai.util.StringUtil;
import com.j1.member.model.Member;
import com.j1.member.model.MemberPointsHis;
import com.j1.member.model.MemberPointsSetting;
import com.j1.soa.common.ResultMsg;
import com.j1.soa.resource.member.api.MemberPointHisService;
import com.j1.soa.resource.member.api.MemberService;
import com.j1.soa.resource.order.api.EcCouponsService;
import com.j1.soa.resource.order.api.FreeCouponService;
import com.j1.soa.resource.order.api.FreePromoteGoodsService;
import com.j1.soa.resource.order.api.ShopcartGoodsService;

/**
 * 上海健一网大药房连锁经营有限公司
 *
 * @Title: ShakeAction.java
 * @Package com.j1.mai.action
 * @Description: 摇一摇
 * @author guguangming
 * @date 2015年11月24日 上午11:25:27
 * @version V1.0
 */
@Controller
@Scope("request")
@RequestMapping("/mall")
public class PointsMall extends SoaApiBaseAction {

    static final Logger           LOG = Logger.getLogger(PointsMall.class);
    @Autowired
    private CheckMemberKeyService checkMemberKeyService;
    @Autowired
    private MemberService         memberService;
    @Autowired
    FreeCouponService             freeCouponService;
    @Autowired
    FreePromoteGoodsService       freePromoteGoodsService;
    @Autowired
    private EcCouponsService      ecCouponsService;
    @Autowired
    private MemberPointHisService memberPointHisService;
    @Autowired
    private ShopcartGoodsService  shopcartGoodsService;

    /**
     * @author guguangming
     * @date 2016年1月11日 下午4:07:08
     * @Title: toFreeCouponMain
     * @Description: 积分兑换优惠券界面
     * @param request
     * @param response
     * @param memberKey
     * @param currentPage
     * @throws
     */
    @RequestMapping("/toFreeCouponMain")
    public void toFreeCouponMain(HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "memberKey", required = false) String memberKey, @RequestParam(value = "currentPage", required = false) String currentPage) {
        // 1、判断参数
        if (StringUtil.isEmpty(memberKey) || StringUtil.isEmpty(currentPage)) {
            logger.error(":" + request.getRequestURL() + "?" + request.getQueryString());
            this.setResultInfo(MsgStatus.PARAMS_ERROR.getCode(), "缺少参数!").write(request, response);
            return;
        }
        // 2、获取会员信息
        try {
            Member queryParam = new Member();
            queryParam.setMemberKey(memberKey);
            ServiceMessage<Member> memberResult = memberService.selectByPrimaryKey(queryParam);
            if (memberResult.getStatus() != MsgStatus.NORMAL) {
                logger.error(memberResult.getStatus().getCode() + ":" + memberResult.getMessage());
                this.setResultInfo(memberResult.getStatus().getCode(), "请登录");
                return;
            }
            _result.put("loginName", memberResult.getResult().getLoginName());
            _result.put("currentPoints", memberResult.getResult().getCurrentPoints());// 可用积分
            // 3、获取可用的积分兑换优惠券活动
            Pageable<FreeCoupon> pageable = new PageRequest<FreeCoupon>(StringUtil.toInt(currentPage, 1), 20, new FreeCoupon());
            ServiceMessage<Page<FreeCoupon>> resultFreeCoupon = freeCouponService.queryEnableFreeCouponPage(pageable);
            if (resultFreeCoupon.getStatus() != MsgStatus.NORMAL) {
                this.setResultInfo(resultFreeCoupon.getStatus().getCode(), resultFreeCoupon.getMessage());
                return;
            }
            _result.put("totalPage", resultFreeCoupon.getResult().getTotalPage());
            _result.put("listFreeCoupon", resultFreeCoupon.getResult().getData());// 可用积分
        } catch (Exception e) {
            LOG.error(e.getMessage(), e);
            setResultInfo(MsgStatus.EXCEPTION.getCode(), ResultMsg.PointsMall.TO_FREE_COUPON_MAIN_FAILURE);
        } finally {
            write(request, response);
        }

    }
/**
 *
 * @author guguangming
 * @date 2016年1月19日 下午4:42:41
 * @Title: toFreePromoteMain
 * @Description:
 * @param request
 * @param response
 * @param memberKey
 * @param currentPage
 * @throws
 */
    @RequestMapping("/toFreePromoteMain")
    public void toFreePromoteMain(HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "memberKey", required = false) String memberKey, @RequestParam(value = "currentPage", required = false) String currentPage) {
        // 1、判断参数
        if (StringUtil.isEmpty(memberKey) || StringUtil.isEmpty(currentPage)) {
            logger.error("积分兑换商品:" + request.getRequestURL() + "?" + request.getQueryString());
            this.setResultInfo(MsgStatus.PARAMS_ERROR.getCode(), "缺少参数").write(request, response);
            return;
        }
        try {
            // 2、获取会员信息
            Member queryParam = new Member();
            queryParam.setMemberKey(memberKey);
            ServiceMessage<Member> memberResult = memberService.selectByPrimaryKey(queryParam);
            if (memberResult.getStatus() != MsgStatus.NORMAL) {
                logger.error(memberResult.getStatus().getCode() + ":" + memberResult.getMessage());
                this.setResultInfo(memberResult.getStatus().getCode(), "请登录!");
                return;
            }
            _result.put("loginName", memberResult.getResult().getLoginName());
            _result.put("currentPoints", memberResult.getResult().getCurrentPoints());// 可用积分
            // 3、获取可用的积分兑换优惠券活动
            Pageable<FreePromoteGoods> pageable = new PageRequest<FreePromoteGoods>(StringUtil.toInt(currentPage, 1), 20, new FreePromoteGoods());
            ServiceMessage<Page<FreePromoteGoods>> resultFreePromoteGoods = freePromoteGoodsService.queryFreePromoteGoodsPage(pageable);
            if (resultFreePromoteGoods.getStatus() != MsgStatus.NORMAL) {
                logger.error("toFreePromoteMain:" + resultFreePromoteGoods.getStatus().getCode() + ":" + resultFreePromoteGoods.getMessage());
                this.setResultInfo(resultFreePromoteGoods.getStatus().getCode(), resultFreePromoteGoods.getMessage());
                return;
            }
            _result.put("totalPage", resultFreePromoteGoods.getResult().getTotalPage());
            _result.put("listresultFreePromoteGoods", resultFreePromoteGoods.getResult().getData());// 可用积分
        } catch (Exception e) {
            LOG.error(e.getMessage(), e);
            setResultInfo(MsgStatus.EXCEPTION.getCode(), ResultMsg.PointsMall.TO_FREE_PROMOTE_MAIN_FAILURE);
        } finally {
            write(request, response);
        }

    }
/**
 *
 * @author guguangming
 * @date 2016年1月19日 下午4:02:04
 * @Title: pointsBuyCoupon
 * @Description: 积分兑换优惠券
 * @param request
 * @param response
 * @param memberKey
 * @param freeCouponId
 * @throws
 */
    @RequestMapping("/pointsBuyCoupon")
    public void pointsBuyCoupon(HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "memberKey", required = false) String memberKey, @RequestParam(value = "freeCouponId", required = false) String freeCouponId) {
        // 1、判断参数
        if (StringUtil.isEmpty(memberKey) || StringUtil.isEmpty(freeCouponId)) {
            logger.error("积分兑换优惠券:" + request.getRequestURL() + "?" + request.getQueryString());
            this.setResultInfo(MsgStatus.PARAMS_ERROR.getCode(), "缺少参数").write(request, response);
            return;
        }
        try {
            // 2、获取会员信息
            Member queryParam = new Member();
            queryParam.setMemberKey(memberKey);
            ServiceMessage<Member> memberResult = memberService.selectByPrimaryKey(queryParam);
            if (memberResult.getStatus() != MsgStatus.NORMAL) {
                logger.error(memberResult.getStatus().getCode() + ":" + memberResult.getMessage());
                this.setResultInfo(memberResult.getStatus().getCode(), "请登录!");
                return;
            }
            Member member = memberResult.getResult();
            Long memberId = member.getMemberId();
            // 2、获取当前活动信息
            ServiceMessage<FreeCoupon> freeCouponResult = freeCouponService.queryEnableFreeCouponByFreeCouponId(NumericUtil.parseLong(freeCouponId));
            if (!freeCouponResult.getStatus().equals(MsgStatus.NORMAL)) {
                logger.error("查询活动信息失败:" + freeCouponResult.getMessage());
                if (freeCouponResult.getStatus().equals(MsgStatus.NO_RESULT)) {
                    this.setResultInfo(freeCouponResult.getStatus().getCode(), "没有找到相应的活动,请联系客服!");// 重新定义返回语句用于前台显示
                    return;
                } else {
                    this.setResultInfo(freeCouponResult.getStatus().getCode(), freeCouponResult.getMessage());
                    return;
                }
            }
            FreeCoupon freeCoupon = freeCouponResult.getResult();
            if (member.getCurrentPoints().intValue() >= freeCoupon.getCouponPoints().intValue()) {
                CouponsAssignParam param = new CouponsAssignParam();
                /* 会员id */
                param.setMemberId(memberId);
                /* 批次号 */
                param.setPublishId(freeCoupon.getPublishId());
                /* 领取数量 */
                param.setAssignCouponsCount(1);
                ServiceMessage<List<EcCoupons>> EcCouponsMsg = ecCouponsService.saveCouponsByMemberToPublishId(param);
                if (!EcCouponsMsg.getStatus().equals(MsgStatus.NORMAL)) {
                    logger.error("添加优惠券到用户接口异常:" + EcCouponsMsg.getMessage());
                    if (EcCouponsMsg.getStatus().equals(MsgStatus.NO_RESULT)) {
                        this.setResultInfo(EcCouponsMsg.getStatus().getCode(), "优惠卷已兑换完,请下次再来!");
                        return;
                    } else {
                        this.setResultInfo(EcCouponsMsg.getStatus().getCode(), EcCouponsMsg.getMessage());
                        return;
                    }
                } else {
                    MemberPointsHis memberPointsHis = new MemberPointsHis();
                    memberPointsHis.setMemberId(memberId);
                    memberPointsHis.setPoints(-freeCoupon.getCouponPoints().intValue());
                    memberPointsHis.setChangeNotes("兑换优惠劵");
                    MemberPointsSetting memberPointsSetting = new MemberPointsSetting();
                    memberPointsSetting.setPointsType("coupon_points");// 积分兑换使用
                    ServiceMessage<MemberPointsHis> msg = memberPointHisService.changePointsNoRankId(memberPointsHis, memberPointsSetting);
                    if (!msg.getStatus().equals(MsgStatus.NORMAL)) {
                        logger.error("调取扣除积分接口失败 getMessage():" + msg.getMessage() + "memberId:" + memberId);
                        this.setResultInfo(EcCouponsMsg.getStatus().getCode(), EcCouponsMsg.getMessage());
                        return;
                    } else {
                        _result.put("currentPoints", member.getCurrentPoints() - freeCoupon.getCouponPoints().intValue());
                        return;
                    }
                }
            } else {
                this.setResultInfo("4", "剩余积分不足");
                return;
            }

        } catch (Exception e) {
            LOG.error(e.getMessage(), e);
            setResultInfo(MsgStatus.EXCEPTION.getCode(), ResultMsg.PointsMall.POINTS_BUY_COUPON__FAILURE);
        } finally {
            write(request, response);
        }

    }

    /**
     * @author guguangming
     * @date 2016年1月13日 下午1:56:20
     * @Title: pointsBuyFreePromoteGoods
     * @Description: 积分兑换商品
     * @param request
     * @param response
     * @param memberKey
     * @param multiId 43--app免费频道,44--M站免费频道
     * @param mul
     * @param contentNo
     * @throws
     */
    @RequestMapping("/pointsBuyFreePromoteGoods")
    public void pointsBuyFreePromoteGoods(HttpServletRequest request, HttpServletResponse response,
                                          @RequestParam(value = "memberKey", required = false) String memberKey,
                                          @RequestParam(value = "freeGoodsId", required = false) String freeGoodsId,
                                          @RequestParam(value = "multiId", required = false) String multiId,
                                          @RequestParam(value = "mul", required = false) String mul,
                                          @RequestParam(value = "contentNo", required = false) String contentNo) {
        // 1、判断参数
        if (StringUtil.isEmpty(memberKey) || StringUtil.isEmpty(freeGoodsId) || StringUtil.isEmpty(multiId) || StringUtil.isEmpty(mul) || StringUtil.isEmpty(contentNo)) {
            logger.error("积分兑换商品:" + request.getRequestURL() + "?" + request.getQueryString());
            this.setResultInfo(MsgStatus.PARAMS_ERROR.getCode(), "缺少参数").write(request, response);
            return;
        }
        try {
            // 1、获取会员信息
            // 2、获取会员信息
            FreePromoteGoods freePromoteGoods = new FreePromoteGoods();
            Member queryParam = new Member();
            queryParam.setMemberKey(memberKey);
            ServiceMessage<Member> memberResult = memberService.selectByPrimaryKey(queryParam);
            if (memberResult.getStatus() != MsgStatus.NORMAL) {
                logger.error(memberResult.getStatus().getCode() + ":" + memberResult.getMessage());
                this.setResultInfo(memberResult.getStatus().getCode(), "请登录!");
                return;
            }
            Member member = memberResult.getResult();
            Long memberId = member.getMemberId();

            ServiceMessage<FreePromoteGoods> resFreePromoteGoods = freePromoteGoodsService.queryEnableFreeGoodsByFreeGoodsId(NumericUtil.parseLong(freeGoodsId));
            if (!resFreePromoteGoods.getStatus().equals(MsgStatus.NORMAL)) {
                logger.error("根据id查询在活动日期内的商品:" + resFreePromoteGoods.getMessage());
                if (resFreePromoteGoods.getStatus().equals(MsgStatus.NO_RESULT)) {
                    this.setResultInfo(resFreePromoteGoods.getStatus().getCode(), "该商品兑换活动已结束");
                    return;
                } else {
                    this.setResultInfo(resFreePromoteGoods.getStatus().getCode(), resFreePromoteGoods.getMessage());
                    return;
                }
            } else {
                freePromoteGoods = resFreePromoteGoods.getResult();
                if (freePromoteGoods.getFreeAmount().compareTo(new BigDecimal(1)) == -1) {
                    this.setResultInfo("4", "该商品已兑换完");
                    return;
                }
            }
            int goodsPoints= Integer.parseInt(freePromoteGoods.getGoodsPoints());
            if(goodsPoints>member.getCurrentPoints()){
                this.setResultInfo("5", "当前积分不足");
                return;
            }
            // 2、获取当前活动信息
            ShopcartGoods shopcartGoodsParam = new ShopcartGoods();
            shopcartGoodsParam.setMemberKey(member.getMemberKey());
            shopcartGoodsParam.setContentNo(contentNo);
            shopcartGoodsParam.setGoodsId(NumericUtil.parseLong(freeGoodsId));
            // 来源渠道
            shopcartGoodsParam.setMultiId(Integer.parseInt(multiId));
            shopcartGoodsParam.setMul(mul);
            // 多规格ID
            shopcartGoodsParam.setSkuId(0L);
            // 数量
            shopcartGoodsParam.setAmount(new BigDecimal(1));
            // add加/sub减/update修改/select修改选中
            shopcartGoodsParam.setType("add");
            // 是否选中Y/N
            shopcartGoodsParam.setIsSelected("Y");

            ServiceMessage<String> shopCartMsg = shopcartGoodsService.shopcartUpdateGoods(shopcartGoodsParam);
            if (!shopCartMsg.getStatus().equals(MsgStatus.NORMAL)) {
                this.setResultInfo(shopCartMsg.getStatus().getCode(), shopCartMsg.getMessage());
            } else {
                this.setResultInfo("0", "成功加入购物车");
            }

        } catch (Exception e) {
            LOG.error(e.getMessage(), e);
            setResultInfo(MsgStatus.EXCEPTION.getCode(), ResultMsg.PointsMall.POINTS_BUY_COUPON__FAILURE);
        } finally {
            write(request, response);
        }

    }

}

json 项目应用的更多相关文章

  1. 将 project.json 项目转换为 Visual Studio 2015 解决方案

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  2. Maven搭建SpringMVC+MyBatis+Json项目(多模块项目)

    一.开发环境 Eclipse:eclipse-jee-luna-SR1a-win32; JDK:jdk-8u121-windows-i586.exe; MySql:MySQL Server 5.5; ...

  3. .NET Core系列 : 2 、project.json 这葫芦里卖的什么药

    .NET Core系列 : 1..NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境,本文介绍.NET Core中最重要的一个配置文件project.json的相关内容.我们可 ...

  4. Vue.js——60分钟webpack项目模板快速入门

    概述 browserify是一个 CommonJS风格的模块管理和打包工具,上一篇我们简单地介绍了Vue.js官方基于browserify构筑的一套开发模板.webpack提供了和browserify ...

  5. Vue.js——60分钟browserify项目模板快速入门

    概述 在之前的一系列vue.js文章,我们都是用传统模式引用vue.js以及其他的js文件的,这在开发时会产生一些问题. 首先,这限定了我们的开发模式是基于页面的,而不是基于组件的,组件的所有代码都直 ...

  6. Asp.Net Core 项目实战之权限管理系统(0) 无中生有

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  7. .Net Core Linux centos7行—.net core json 配置文件

    .net core 对配置系统做出了大幅度更新,不在局限于之前的*.xml配置方式.现在支持json,xml,ini,in memory,环境变量等等.毫无疑问的是,现在的json配置文件是.net ...

  8. Asp.Net Core 项目搭建 基础配置 和MySql 的使用

    一.开发环境准备 1.安装Visual Studio 2015,我这里安装的是专业版. 2.安装.NET Core SDK相关 需要安装  Visual Studio 2015 update3和NET ...

  9. XML和JSON数据格式对比

    概念 XML 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语 ...

随机推荐

  1. 你好,C++(10)这次的C++考试你过了没有?C++中表示逻辑判断的布尔数据类型

    3.4  布尔类型 在日常生活中,我们除了需要使用int类型的变量表示216路公交车:需要使用float类型的变量表示西红柿3.5元一斤,有时候还需要表示一种数据,那就是逻辑状态: “这次的C++考试 ...

  2. JavaScript中instanceof与typeof运算符的用法及区别详细解析

    JavaScript中的instanceof和typeof常被用来判断一个变量是什么类型的(实例),但它们的使用还是有区别的: typeof 运算符 返回一个用来表示表达式的数据类型的字符串. typ ...

  3. Fedora21源配置与显卡安装

    1. 安装fastestmirror Fedora的源速度很慢,令人很烦恼,不过它有个自动选最快的源包. yum install yum-fastestmirror yum-presto 它会判断你的 ...

  4. 9 Palindrome Number(判断是否为回文数Easy)

    题目意思:判断是否为回文数,不许使用额外空间 ps:一直不理解额外空间的意思,int能用吗 思路:1.比较头尾 2.翻转,越界问题需考虑 class Solution { public: bool i ...

  5. Html5 Canvas学习

    canvas: 首先在html页面中加入canvas标签 <canvas id="canvas" width="1024" height="74 ...

  6. bootstrap瀑布流代码

    <extend name="Base/common" /> <block name="search-cate"> <include ...

  7. C++ 性能剖析 (一)

    C++ 性能剖析 (一) 性能问题也不是仅仅用“技术”可以解决的,它往往是架构,测试,假设等综合难题.不过,对于一个工程师来说,必须从小做起,把一些“明显”的小问题解决.否则的话积小成多,千里堤坝,溃 ...

  8. Scut:Redis 资源管理器

    核心文件是:RedisConnectionPool.cs 对象池类的通用泛型封装:ObjectPoolWithExpire<T> 1. 主要变量 private static ICache ...

  9. 关于 从别人电脑上 高版本的 Xcode上拷贝过来的项目的 不能运行模拟器的 解决方法

    如图 从别人电脑上 拷贝过来的  工程  打开后  点击 iOS  Device  只有  一个选项  没有模拟器.这说明 自己的 Xcode 的版本比 创建这个工程所用的版本低.所以 要睇啊你tar ...

  10. Javascript 获取dom的宽度 随笔一

    javascript 中 offsetWidth 获得的并不是 真实的宽度 不等于 style.width ;offetWidth 实际上获得的是物体的盒模型尺寸. 包括 border padding ...