`
javashop
  • 浏览: 47461 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 商城系统基于脚本引擎的运费架构分享

阅读更多

脚本的生成过程

 

 
添加模板的时候生成script,商家添加商品的时候拷贝相应的script到sku中。
 
 
更新运费模板的时候,发消息到消费者,批量更新相关sku的模板信息。
 

计算过程

缓存数据结构

 
script和模板id作为sku的一部分存储是为了计算使用相同模板的sku的总价。

 

 

脚本示例

 

function getShipPrice(){
  var firstWeight=1;            //首重
  var firstPrice=1;            //首重
  var continuedWeight=1;    //续重
  var continuedPrice=1;        //续重续费
  var shipPrice=firstPrice;
  //校验是否超出首重
  if(firstWeight < $goodsWeight){
    //续重 = 总重/续重
     var count = ($goodsWeight - firstWeight)/ continuedWeight;
    //总价 = 首重 + (续重*价格)
     shipPrice = firstPrice + count*continuedPrice;
  }
  return shipPrice; 

}

 

参数 类型 详细
$goodsWeight double 商品总重量
$goodsNum Integer 商品总数
 
返回值示例 2

 

领域模型

伪代码

 public Map<Integer, Double> setShippingPrice() {
        //获取购物车信息
        Cart cart = cache.get();
        //获取购物车中的所有的sku
        List<Sku> skuList = cart.getSkuList();
        //获取所有sku中的key集合,用来批量的从缓存中读取脚本信息
        List<String> keyList = getKeyList(skuList);
        //批量从缓存中读取所有的运费模板
        List<TemplateScript> templateScripts = getCache(keyList);
        //根据模板id进行分组,查询出所有用到相同模板的sku
        Map<Integer, List<Sku>> maps = group(templateScripts);
        Iterator iter = maps.entrySet().iterator();
        //用来存储每一个商家的运费
        Map<Integer, Double> shipPriceMap = new HashMap<>();
        Integer sellerId = 0;
        Double price = 0.0;
        while (iter.hasNext()) {
            List<Sku> sList = (List<Sku>) iter.next();
            TemplateScript script = sList.get(0).getScript();
            //计算总重量
            Double goodsWeigth = countWeight(sList);
            //计算总数量
            int goodsNum = countNum(sList);
            //调用脚本引擎计算价格
            ScriptEngineManager manager = new ScriptEngineManager();
            ScriptEngine engine = manager.getEngineByName("javascript");
            engine.put("$weight", goodsWeigth);
            engine.put("$num", goodsNum);
            String jsFunc = script;
            engine.eval(jsFunc);
            Invocable invocable = (Invocable) engine;
            double shipPrice = (Double) invocable.invokeFunction("price");
            price += shipPrice;
            Integer newselelrid = getSellerId(sList);
            if (!sellerId.equals(newselelrid)) {
                //记录这个sellerid的运费价格
                shipPriceMap.put(newselelrid, price);
                sellerId = newselelrid;
                price = 0.0;
            }
        }
        return shipPriceMap;


    }

 

易族智汇(javashop)原创文章

 

分享到:
评论

相关推荐

    基于java的开发源码-SnakeScript Java游戏脚本引擎 v1.1.zip

    基于java的开发源码-SnakeScript Java游戏脚本引擎 v1.1.zip 基于java的开发源码-SnakeScript Java游戏脚本引擎 v1.1.zip 基于java的开发源码-SnakeScript Java游戏脚本引擎 v1.1.zip 基于java的开发源码-...

    Java 8 Nashorn 脚本引擎

    总的来说,Java 8的Nashorn脚本引擎为Java开发者打开了一扇通向动态脚本世界的大门,使得他们能够在Java平台上便捷地利用JavaScript进行开发,同时也为JavaScript开发者提供了与Java生态系统深度融合的可能性。...

    基于java的SnakeScript Java游戏脚本引擎 v1.1.zip

    《基于Java的SnakeScript Java游戏脚本引擎 v1.1》 在计算机编程领域,游戏开发是一项技术密集型的工作,而脚本引擎是其中的关键组件之一。SnakeScript Java游戏脚本引擎v1.1,正如其名,是一个专门用于Java平台的...

    JAVA源码SnakeScriptJava游戏脚本引擎v1.1

    5. **跨平台支持**:由于基于Java开发,因此SnakeScript Java游戏脚本引擎能够很好地支持Windows、Mac OS、Linux等多种操作系统,方便多平台游戏开发。 #### 三、SnakeScript Java游戏脚本引擎应用场景 - **游戏...

    基于Java的SnakeScript Java游戏脚本引擎 v1.1.zip

    《基于Java的SnakeScript Java游戏脚本引擎 v1.1》 在当今的软件开发领域,游戏引擎扮演着至关重要的角色,它们为开发者提供了一种高效、便捷的方式来创建游戏。而SnakeScript Java游戏脚本引擎v1.1,正是一个专注...

    Jill——Java编写的Lua脚本引擎

    **Jill:Java中的Lua脚本引擎** Jill是一个用Java语言实现的Lua脚本引擎,它为Java应用程序提供了一种高效且灵活的方式来运行Lua代码。Lua是一种轻量级的、解释型的脚本语言,因其简洁的语法和强大的功能在游戏开发...

    基于Java+Swing+Mysql商城购物系统源码+数据库脚本.zip

    基于Java+Swing+Mysql商城购物系统源码+数据库脚本.zip基于Java+Swing+Mysql商城购物系统源码+数据库脚本.zip基于Java+Swing+Mysql商城购物系统源码+数据库脚本.zip基于Java+Swing+Mysql商城购物系统源码+数据库脚本...

    java毕业设计基于Springboot+Vue前后端分离的在线购物商城管理系统+数据库脚本.zip

    java毕业设计基于Springboot+Vue前后端分离的在线购物商城管理系统+数据库脚本.zip本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足...

    基于Java的实例开发源码-SnakeScript Java游戏脚本引擎 v1.1.zip

    【标题】: "基于Java的SnakeScript游戏脚本引擎 v1.1实例开发源码" 在编程领域,游戏脚本引擎是游戏开发中不可或缺的一部分,它允许开发者使用特定的脚本语言来控制游戏逻辑和行为,而不必深入到底层代码中。本实例...

    游戏引擎架构中英文完整版

    游戏引擎架构是开发电子游戏的核心工具,它涵盖了游戏设计、图形渲染、物理模拟、音频处理、脚本系统、网络通信等多个关键领域。本资源提供的"游戏引擎架构中英文完整版"是一个全面的学习资料,由知名腾讯游戏引擎...

    SnakeScript Java游戏脚本引擎 v1.1

    SnakeScript是一款JAVA游戏模拟脚本引擎,程序代码类似于C。  本版新增功能及特性:  1.动态优先级设定;  2.动态实现脚本的加载、释放、暂停、恢复、结束等控制;  3.自动堆栈平衡;  4.无限级别函数调用...

    Java毕业设计基于springboot+vue的养老院管理系统源码+数据库脚本

    Java毕业设计基于springboot+vue的养老院管理系统源码+数据库脚本Java毕业设计基于springboot+vue的养老院管理系统源码+数据库脚本Java毕业设计基于springboot+vue的养老院管理系统源码+数据库脚本Java毕业设计基于...

    Java毕业设计基于springboot+vue的电脑售后维修管理系统源码+数据库脚本

    Java毕业设计基于springboot+vue的电脑售后维修管理系统源码+数据库脚本Java毕业设计基于springboot+vue的电脑售后维修管理系统源码+数据库脚本Java毕业设计基于springboot+vue的电脑售后维修管理系统源码+数据库...

    【毕业设计】基于Java的批发商城后台管理系统【前后端源码+SQL脚本】.zip

    【毕业设计】基于Java的批发商城后台管理系统【前后端源码+SQL脚本】.zip 【毕业设计】基于Java的批发商城后台管理系统【前后端源码+SQL脚本】.zip 【毕业设计】基于Java的批发商城后台管理系统【前后端源码+SQL脚本...

    基于Java的大数据系统基础B六边形架构设计源码

    本项目为Java语言编写的基于B六边形架构的大数据系统基础B设计源码,包含148个文件,涵盖30个JSON配置文件、24个Java源文件、23个JavaScript脚本文件、20个JPG图片文件、10个DS_Store文件、9个JSP页面文件、8个PNG...

    java脚本引擎.pdf

    Java脚本引擎是Java平台提供的一种机制,使得Java程序能够与各种脚本语言交互。自JDK 6.0起,Java脚本引擎成为Java SE的一部分,它的出现极大地扩展了Java语言的功能,使之不再局限于编译型语言的范畴,而是能够在...

    基于Java的房产中介系统【项目源码+数据库脚本】(毕设)

    本项目是一套基于SSM的房产中介系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接作为毕设使用。 项目都经过...

    基于SpringBoot的校园网上订餐系统源码+数据库脚本(毕业设计) .zip

    基于SpringBoot的校园网上订餐系统源码+数据库脚本(毕业设计) 、已获导师指导并通过的高分项目。 项目简介 本项目是一套基于SpringBoot的校园网上订餐系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战...

    JDK13-java-scripting-programmers-guide.pdf

    Java脚本引擎架构主要包括三个组件:ScriptEngine、ScriptEngineFactory和ScriptEngineManager。 * ScriptEngine:负责执行脚本代码,提供了脚本执行的核心功能。 * ScriptEngineFactory:负责创建ScriptEngine实例...

Global site tag (gtag.js) - Google Analytics