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. Get URL parameters & values with jQuery

    原文: http://jquery-howto.blogspot.jp/2009/09/get-url-parameters-values-with-jquery.html In this post, ...

  2. .net截取指定长度汉字超出部分以指定的字符代替

    下面是我在网上搜索,然后加以整理的关于在.net中截取指定长度汉字超出部分以指定的字符代替,来拓展一下自己的思路. 方法一 :在后台的select语句中直接操作或是在数据库中写一个存储过程 Selec ...

  3. PL/SQL设置关键字大写

    Tools->Preferences->User Interface->Keyword case = Uppercase,就设置为大写了.

  4. jquery easy ui 学习 (8)basic treegrid

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. thinkphp G方法的华丽升级

    ThinkPHP长期以来需要通过debug_start.debug_end方法甚至Debug类才能完成的功能,3.1版本中被一个简单的G方法取代了,不可不谓是一次华丽升级. G方法的作用包括标记位置和 ...

  6. HTML5做手机站页面字体显示很小的解决方法

    HTML5做手机站需要加上一部分代码,不然字体会显示很小的,经历了很久的不解才发现的,希望给大家一些帮助 <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD ...

  7. UVA1152 4Values whose Sum is 0

    Description The SUM problem can be formulated as follows: given four lists A, B, C, D of integer val ...

  8. jquery.metadata.js使用分析

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

  9. GFF 和 OGS 这两种触摸屏谁更好?

    我将从成本分析.制程分析.用户体验三个方面来回答楼主的问题.GFF的触摸屏从字面上翻译过来,就是一层玻璃cover,两层film构成的触摸屏.其中,玻璃cover作为整个手机的coverlens,从外 ...

  10. android sudio 记录

    1. KVM is not installed on this machine (/dev/kvm is missing) 原文网址:http://askubuntu.com/questions/56 ...