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. centos 用户切换

    在系统的/etc/.bash_profile中已经配置了各种环境变量. 用账户a登陆,ldd xxx.so查看一切链接正常. 用账户root登陆,ldd xxx.so查看一切链接正常. 用账户a登陆, ...

  2. linux makefle学习

    学习材料取之这个网址:http://blog.chinaunix.net/uid-27717694-id-3696246.html 学习环境:ubuntu10.04-64bit-desktop版,gc ...

  3. PHP添加、更新solr索引

    <?php $options = array ( 'hostname' => 'localhost', 'port' => '8080', 'path'=>'solr/help ...

  4. grails&groovy的IllegalArgument异常

    我在开发的过程中遇到了这样一个异常,总是提示IllegalArgument异常,代码大致如下: if(haomgl.save(flush:true)){ //更新库存:状态为2的位置存煤 def cu ...

  5. jQuery图片提示示例

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. type和instance

    获取对象类型 type(object) >>> test_data = [1, 2, 3] >>> type(test_data) <type 'list'& ...

  7. django 内建标签和过滤器参考

    下面的标签和过滤器参考就是为那些没有 admin 站点的可用的人准备的.由于 Django 是高度可定制的,你的 admin 里的关于标签和过滤器的参考可以认为是最可信的. 内建标签参考 block ...

  8. TCP回射客户程序:str_cli函数

    str_cli函数完成客户处理循环: 从标准输入读入一行文本,写到服务器上,读回服务器对该行的回射,并把回射行写到标准输出上 读入一行,写到服务器 fgets读入一行文本,writen把该行发送给服务 ...

  9. LINUX搭建SVN客户端和多个项目的权限分组管理

    搭建SVN服务,有效的管理代码,以下三步可以快速搞定.1.安装 #yum install subversion 判断是否安装成功 1 #subversion -v svnserve, version ...

  10. Intention Locks 意向锁

    Intention Locks 意向锁 InnoDB 支持多颗粒度锁定允许row-level locks和锁整个表共存. 为了使锁在多个颗粒级别实现, 额外类型的锁被称为意向锁是被使用. . Inte ...