`
javashop
  • 浏览: 48323 次
  • 性别: 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的开发源码-...

    Rhino脚本引擎技术介绍

    Rhino脚本引擎是JavaScript的一个开源实现,它能够运行JavaScript风格的脚本代码,并且可以通过这个引擎调用Java语言编写的方法。Rhino脚本引擎可以嵌入Java应用程序中执行,其最大的特点是脚本的修改不需要重启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,正是一个专注...

    基于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

    《SnakeScript Java游戏脚本引擎 v1.1》是一个基于Java技术实现的游戏脚本引擎,专为游戏开发设计。这个实例源码集提供了一个全面的框架,让开发者能够使用简单的脚本语言控制游戏逻辑,而无需深入底层的Java代码。...

    Java 8 Nashorn 脚本引擎

    Java 8 Nashorn 脚本引擎是Java平台上的一个内置JavaScript引擎,它引入于Java 8版本,目的是为了提供更高效、更便捷地在Java应用程序中执行JavaScript代码的能力。Nashorn引擎允许开发者利用JavaScript的灵活性来...

    基于web的商城系统(java源码+数据库脚本).zip

    此商城系统属于B2C电商,系统包括管理后台和网站前台。技术架构:项目采用传统的静态网页和动态网页相结合的技术架构,后端采用 servlet、jsp、JDBC等,前端采用div css、bootstrap、Javascript、jQuery和Ajax等。...

    java开发基于SSM开发的人力资源管理系统源码.zip

    java开发基于SSM开发的人力资源管理系统源码。项目所具备的功能:账号登录退出,对员工的增删改查,对部门的增删改查 项目架构基于Maven 项目运行基于Tomcat服务器 项目语言基于Java 项目数据库基于MySQL 项目...

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

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

    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学习者。 包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接作为毕设使用。 项目都经过...

Global site tag (gtag.js) - Google Analytics