From b5893f1bb3ce307ac1133138cb085d361cb2394b Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期一, 22 五月 2023 23:56:42 +0800 Subject: [PATCH] 新增订单添加功能 --- management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderService.java | 9 + management/guns-admin/src/main/resources/application.yml | 10 management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder_add.html | 136 +++++++++++++++++----- management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder.html | 16 -- management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrder_info.js | 39 +---- management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrder.java | 24 ++++ management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java | 87 +++++++++++++ management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrder.js | 4 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java | 5 management/guns-admin/src/main/resources/redis.properties | 21 +- 10 files changed, 259 insertions(+), 92 deletions(-) diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java index 5887e8b..37469de 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java @@ -2,10 +2,13 @@ import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.stylefeng.guns.core.base.controller.BaseController; import com.stylefeng.guns.core.base.tips.SuccessTip; import com.stylefeng.guns.core.log.LogObjectHolder; +import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.system.controller.resp.TAppUserDetailOrderResp; import com.stylefeng.guns.modular.system.controller.resp.TDriverCommissionResp; import com.stylefeng.guns.modular.system.controller.resp.TOrderResp; @@ -242,7 +245,7 @@ @RequestMapping(value = "/add") @ResponseBody public Object add(TOrder tOrder) { - tOrderService.insert(tOrder); + return SUCCESS_TIP; } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrder.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrder.java index 06bd233..e9f32b1 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrder.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrder.java @@ -38,6 +38,14 @@ */ private Integer userId; /** + * 乘车人电话 + */ + private String userPhone; + /** + * 乘车人姓名 + */ + private String userName; + /** * 司机id */ private Integer driverId; @@ -192,6 +200,22 @@ @ApiModelProperty(value = "是否已开票 1是 0否") private Integer isInvoice; + public String getUserPhone() { + return userPhone; + } + + public void setUserPhone(String userPhone) { + this.userPhone = userPhone; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + public Integer getIsInvoice() { return isInvoice; } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderService.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderService.java index ae9138f..dedc60e 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderService.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderService.java @@ -5,6 +5,7 @@ import com.stylefeng.guns.modular.system.controller.resp.TOrderServerResp; import com.stylefeng.guns.modular.system.model.TOrder; import com.baomidou.mybatisplus.service.IService; +import com.stylefeng.guns.modular.system.util.ResultUtil; import org.springframework.ui.Model; import java.math.BigDecimal; @@ -165,4 +166,12 @@ * @return */ Integer getValidOrderCount(Integer driverId, BigDecimal orderMoney, String month); + + + /** + * 添加订单 + * @param tOrder + * @return + */ + ResultUtil add(TOrder tOrder); } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java index dd68d6a..f86cfce 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java @@ -1,11 +1,16 @@ package com.stylefeng.guns.modular.system.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.stylefeng.guns.core.shiro.ShiroKit; +import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.system.controller.resp.DataStatisticsOrderYearResp; import com.stylefeng.guns.modular.system.controller.resp.PerformanceTableResp; import com.stylefeng.guns.modular.system.controller.resp.TOrderResp; import com.stylefeng.guns.modular.system.controller.resp.TOrderServerResp; +import com.stylefeng.guns.modular.system.controller.util.UUIDUtil; import com.stylefeng.guns.modular.system.dao.TAppUserMapper; import com.stylefeng.guns.modular.system.dao.TBranchOfficeMapper; import com.stylefeng.guns.modular.system.dao.TDriverMapper; @@ -15,14 +20,17 @@ import com.stylefeng.guns.modular.system.model.TBranchOffice; import com.stylefeng.guns.modular.system.model.TDriver; import com.stylefeng.guns.modular.system.model.TOrder; +import com.stylefeng.guns.modular.system.service.ITAppUserService; import com.stylefeng.guns.modular.system.service.ITOrderService; import com.stylefeng.guns.modular.system.util.DateUtil; +import com.stylefeng.guns.modular.system.util.ResultUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.ui.Model; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; +import javax.annotation.Resource; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDate; @@ -39,14 +47,20 @@ @Service public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> implements ITOrderService { - @Autowired + @Resource private TOrderMapper tOrderMapper; - @Autowired + + @Resource private TAppUserMapper tAppUserMapper; - @Autowired + + @Resource private TDriverMapper tDriverMapper; - @Autowired + + @Resource private TBranchOfficeMapper tBranchOfficeMapper; + + @Autowired + private ITAppUserService appUserService; @Override public List<TOrderResp> getOrderList(String createTime, String code, Integer source, String userName, String userPhone, Integer state, String driverName,Integer isException) { @@ -351,4 +365,69 @@ // 查询司机当月有效订单数量 return tOrderMapper.getValidOrderCount(driverId,orderMoney,month); } + + + @Override + public ResultUtil add(TOrder tOrder) { + String startAddress = tOrder.getStartAddress(); + String endAddress = tOrder.getEndAddress(); + String userPhone = tOrder.getUserPhone(); + int count = this.selectCount(new EntityWrapper<TOrder>().eq("userPhone", userPhone).eq("status", 1).in("state", Arrays.asList(101, 102, 103, 104, 105, 106, 201))); + if(count > 0){ + return ResultUtil.error("该用户还有未完成的订单", ""); + } + TAppUser tAppUser = appUserService.selectOne(new EntityWrapper<TAppUser>().eq("phone", userPhone).eq("status", 1)); + if(null != tAppUser){ + tOrder.setUserId(tAppUser.getId()); + } + JSONObject jsonObject = JSON.parseObject(startAddress); + tOrder.setStartAddress(jsonObject.getString("address")); + tOrder.setStartLat(jsonObject.getString("lat")); + tOrder.setStartLng(jsonObject.getString("lon")); + tOrder.setSource(3); + if(ToolUtil.isNotEmpty(endAddress)){ + jsonObject = JSON.parseObject(endAddress); + tOrder.setEndAddress(jsonObject.getString("address")); + tOrder.setEndLat(jsonObject.getString("lat")); + tOrder.setEndLng(jsonObject.getString("lon")); + } + tOrder.setCode(UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(3)); + Double d = 0D; + if(ToolUtil.isNotEmpty(endAddress)){ + Map<String, String> distance = MapUtil.getDistance(tOrder.getStartLng() + "," + tOrder.getStartLat(), tOrder.getEndLng() + "," + tOrder.getEndLat(), 1); + if(null == distance){ + return ResultUtil.error("获取预估距离出错", ""); + } + d = Double.valueOf(distance.get("distance")) / 1000; + order.setEstimatedMileage(d); + order.setEstimatedTime(Integer.valueOf(distance.get("duration")) / 60); + } + String city = ""; + District geocode = MapUtil.geocode(order.getStartLng(), order.getStartLat()); + if(null != geocode){ + WeatherCity weatherCity = weatherCityService.selectOne(new EntityWrapper<WeatherCity>() + .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') ")); + city = null != weatherCity ? weatherCity.getId().toString() : ""; + } + order = getOrderPrice(1, d, 0, order, city); + order.setState(null == order.getDriverId() ? 101 : 102); + order.setStatus(1); + order.setCreateTime(new Date()); + this.insert(order); + driverService.updateById(driver); + //推送状态 + if(null != order.getDriverId()){ + pushUtil.pushOrderStatus(uid, 2, order.getId(), order.getStatus()); + }else{ + //开始推单 + Order finalOrder = order; + new Thread(new Runnable() { + @Override + public void run() { + pushOrder(finalOrder); + } + }).start(); + } + return ResultUtil.success(order.getState() == 102 ? order.getId() : null); + } } diff --git a/management/guns-admin/src/main/resources/application.yml b/management/guns-admin/src/main/resources/application.yml index 02adf0d..05d8180 100644 --- a/management/guns-admin/src/main/resources/application.yml +++ b/management/guns-admin/src/main/resources/application.yml @@ -2,8 +2,8 @@ port: 8011 guns: - swagger-open: true #是否开启swagger (true/false) - kaptcha-open: true #是否开启登录时验证码 (true/false) + swagger-open: false #是否开启swagger (true/false) + kaptcha-open: false #是否开启登录时验证码 (true/false) spring-session-open: false #是否开启spring session,如果是多机环境需要开启(true/false) session-invalidate-time: 1800 #session失效时间(只在单机环境下生效,多机环境在SpringSessionConfig类中配置) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 @@ -15,7 +15,7 @@ spring: profiles: - active: dev + active: local mvc: static-path-pattern: /static/** view: @@ -57,11 +57,11 @@ spring: datasource: - url: jdbc:mysql://192.168.110.80:3306/fh_agent_driving?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8 + url: jdbc:mysql://127.0.0.1:3306/fh_agent_driving?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8 username: root # password: PI_v6J5@dvHwGTqc password: 123456 - db-name: super_save_driving #用来搜集数据库的所有表 + db-name: fh_agent_driving #用来搜集数据库的所有表 filters: wall,mergeStat diff --git a/management/guns-admin/src/main/resources/redis.properties b/management/guns-admin/src/main/resources/redis.properties index 9bd4556..fb10637 100644 --- a/management/guns-admin/src/main/resources/redis.properties +++ b/management/guns-admin/src/main/resources/redis.properties @@ -1,19 +1,20 @@ #redis���ÿ�ʼ # Redis���ݿ�������Ĭ��Ϊ0�� spring.redis.database=0 -# Redis��������ַ -spring.redis.host=127.0.0.1 -## Redis���������Ӷ˿� -spring.redis.port=16379 -## Redis�������������루Ĭ��Ϊ�գ� -spring.redis.password=wuOT@8NLdZ*V09Jt ## Redis��������ַ #spring.redis.host=127.0.0.1 -## Redis���������Ӷ˿� -#spring.redis.port=6379 -## Redis�������������루Ĭ��Ϊ�գ� -#spring.redis.password=123456 +### Redis���������Ӷ˿� +#spring.redis.port=16379 +### Redis�������������루Ĭ��Ϊ�գ� +#spring.redis.password=wuOT@8NLdZ*V09Jt + +# Redis��������ַ +spring.redis.host=127.0.0.1 +# Redis���������Ӷ˿� +spring.redis.port=6379 +# Redis�������������루Ĭ��Ϊ�գ� +spring.redis.password=123456 # ���ӳ������������ʹ�ø�ֵ��ʾû�����ƣ� spring.redis.jedis.pool.max-active=1024 diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder.html index 10132af..08fbb98 100644 --- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder.html +++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder.html @@ -53,7 +53,10 @@ <#button name="查询" icon="fa-search" clickFun="TOrder.search()"/> <#button name="重置" icon="fa-trash" clickFun="TOrder.resetSearch()" space="true"/> </div> - <div class="col-sm-12"> + <div class="hidden-xs" id="TOrderTableToolbar" role="group"> + @if(shiro.hasPermission("/tOrder/add")){ + <#button name="添加" icon="fa-plus" clickFun="TOrder.openAddTOrder()"/> + @} @if(shiro.hasPermission("/tOrder/cancelOrder")){ <#button name="取消订单" icon="" clickFun="TOrder.cancelOrder()"/> @} @@ -62,17 +65,6 @@ @} @if(shiro.hasPermission("/tOrder/export")){ <#button name="导出" icon="" clickFun="TOrder.export()"/> - @} - </div> - <div class="hidden-xs" id="TOrderTableToolbar" role="group"> - @if(shiro.hasPermission("/tOrder/add")){ - <#button name="添加" icon="fa-plus" clickFun="TOrder.openAddTOrder()"/> - @} - @if(shiro.hasPermission("/tOrder/update")){ - <#button name="修改" icon="fa-edit" clickFun="TOrder.openTOrderDetail()" space="true"/> - @} - @if(shiro.hasPermission("/tOrder/delete")){ - <#button name="删除" icon="fa-remove" clickFun="TOrder.delete()" space="true"/> @} </div> <#table id="TOrderTable"/> diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder_add.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder_add.html index e974cb9..c3dfea9 100644 --- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder_add.html +++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder_add.html @@ -4,36 +4,43 @@ <div class="form-horizontal"> <div class="row"> - <div class="col-sm-6 b-r"> - <#input id="id" name="主键" underline="true"/> - <#input id="code" name="编号" underline="true"/> - <#input id="userId" name="用户id" underline="true"/> - <#input id="driverId" name="司机id" underline="true"/> - <#input id="source" name="订单来源(1=小程序)" underline="true"/> - <#input id="agentId" name="代理商id" underline="true"/> - <#input id="branchOfficeId" name="分公司id" underline="true"/> - <#input id="startTime" name="开始服务时间" underline="true"/> - <#input id="startAddress" name="起点地址" underline="true"/> - <#input id="startLat" name="起点纬度" underline="true"/> - <#input id="startLng" name="起点经度" underline="true"/> - <#input id="endAddress" name="终点地址" underline="true"/> - <#input id="endLat" name="终点纬度"/> - </div> - - <div class="col-sm-6"> - <#input id="endLng" name="终点经度" underline="true"/> - <#input id="boardingTime" name="上车时间" underline="true"/> - <#input id="getoffTime" name="下车时间" underline="true"/> - <#input id="estimatedPrice" name="预估价" underline="true"/> - <#input id="orderMoney" name="订单金额" underline="true"/> - <#input id="payMoney" name="支付金额" underline="true"/> - <#input id="discountedPrice" name="优惠金额" underline="true"/> - <#input id="couponId" name="优惠券id" underline="true"/> - <#input id="payType" name="支付类型(1=线上)" underline="true"/> - <#input id="payTime" name="支付时间" underline="true"/> - <#input id="state" name="订单状态(1=待接单,2=已接单,3=)" underline="true"/> - <#input id="status" name="状态(1=正常,2=冻结,3=删除)" underline="true"/> - <#input id="createTime" name="添加时间" underline="true"/> + <div class="col-sm-12"> + <div class="form-group"> + <label class="col-sm-2 control-label">*乘客姓名:</label> + <div class="col-sm-6"> + <input type="text" class="form-control" id="userName" name="userName" placeholder="请输入"> + </div> + </div> + <div class="form-group"> + <label class="col-sm-2 control-label">*乘客手机号:</label> + <div class="col-sm-6"> + <input type="text" class="form-control" id="userPhone" name="userPhone" placeholder="请输入"> + </div> + </div> + <div class="form-group"> + <label class="col-sm-2 control-label">*起始地点:</label> + <div class="col-sm-6"> + <input type="text" id="tipinput1" class="form-control" id="startAddress" name="startAddress" placeholder="请输入"> + </div> + </div> + <div class="form-group"> + <label class="col-sm-2 control-label"></label> + <div class="col-sm-6"> + <div id="container1" style="width: 100%;height: 300px;"></div> + </div> + </div> + <div class="form-group"> + <label class="col-sm-2 control-label">目的地:</label> + <div class="col-sm-6"> + <input type="text" id="tipinput2" class="form-control" id="endAddress" name="endAddress"> + </div> + </div> + <div class="form-group"> + <label class="col-sm-2 control-label"></label> + <div class="col-sm-6"> + <div id="container2" style="width: 100%;height: 300px;"></div> + </div> + </div> </div> </div> @@ -47,5 +54,74 @@ </div> </div> +<script type="text/javascript"> + window._AMapSecurityConfig = { + securityJsCode:'0e712f129051b8df19a7f81484009f28', + } +</script> <script src="${ctxPath}/static/modular/system/tOrder/tOrder_info.js"></script> +<script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=99b1546635dac9d51440c9d5b1fde512"></script> +<script type="text/javascript"> + //地图加载 + var map1 = new AMap.Map("container1", { + zoom: 13, + center: [104.064, 30.6576], + resizeEnable: true + }); + //输入提示 + var autoOptions1 = { + input: "tipinput1" + }; + + AMap.plugin(['AMap.PlaceSearch','AMap.AutoComplete'], function(){ + var auto = new AMap.AutoComplete(autoOptions1); + var placeSearch = new AMap.PlaceSearch({ + map: map1 + }); //构造地点查询类 + auto.on("select", select);//注册监听,当选中某条记录时会触发 + function select(e) { + placeSearch.setCity(e.poi.adcode); + placeSearch.search(e.poi.name); //关键字查询查询 + TOrderInfoDlg.position = e.poi; + console.log(e.poi); + TOrderInfoDlg.startAddress = { + name:e.poi.name, + address: e.poi.district + e.poi.address, + lat: e.poi.location.lat, + lon: e.poi.location.lng, + }; + } + }); + + + var map2 = new AMap.Map("container2", { + zoom: 13, + center: [104.064, 30.6576], + resizeEnable: true + }); + //输入提示 + var autoOptions2 = { + input: "tipinput2" + }; + + AMap.plugin(['AMap.PlaceSearch','AMap.AutoComplete'], function(){ + var auto = new AMap.AutoComplete(autoOptions2); + var placeSearch = new AMap.PlaceSearch({ + map: map2 + }); //构造地点查询类 + auto.on("select", select);//注册监听,当选中某条记录时会触发 + function select(e) { + placeSearch.setCity(e.poi.adcode); + placeSearch.search(e.poi.name); //关键字查询查询 + TOrderInfoDlg.position = e.poi; + console.log(e.poi); + TOrderInfoDlg.endAddress = { + name:e.poi.name, + address: e.poi.district + e.poi.address, + lat: e.poi.location.lat, + lon: e.poi.location.lng, + }; + } + }); +</script> @} diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrder.js b/management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrder.js index 165e28f..92ac2fb 100644 --- a/management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrder.js +++ b/management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrder.js @@ -107,8 +107,8 @@ TOrder.openAddTOrder = function () { var index = layer.open({ type: 2, - title: '添加', - area: ['800px', '420px'], //宽高 + title: '添加订单', + area: ['100%', '100%'], //宽高 fix: false, //不固定 maxmin: true, content: Feng.ctxPath + '/tOrder/tOrder_add' diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrder_info.js b/management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrder_info.js index 9117794..4c98860 100644 --- a/management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrder_info.js +++ b/management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrder_info.js @@ -2,7 +2,9 @@ * 初始化详情对话框 */ var TOrderInfoDlg = { - tOrderInfoData : {} + tOrderInfoData : {}, + startAddress:null, + endAddress:null }; /** @@ -53,41 +55,20 @@ TOrderInfoDlg.collectData = function() { this .set('id') - .set('code') - .set('userId') - .set('driverId') - .set('source') - .set('agentId') - .set('branchOfficeId') - .set('startTime') - .set('startAddress') - .set('startLat') - .set('startLng') - .set('endAddress') - .set('endLat') - .set('endLng') - .set('boardingTime') - .set('getoffTime') - .set('estimatedPrice') - .set('orderMoney') - .set('payMoney') - .set('discountedPrice') - .set('couponId') - .set('payType') - .set('payTime') - .set('state') - .set('status') - .set('createTime'); + .set('userName') + .set('userPhone') } /** * 提交添加 */ TOrderInfoDlg.addSubmit = function() { - this.clearData(); this.collectData(); - + if(null == this.startAddress){ + Feng.info("请填写有效的起点"); + return + } //提交信息 var ajax = new $ax(Feng.ctxPath + "/tOrder/add", function(data){ Feng.success("添加成功!"); @@ -97,6 +78,8 @@ Feng.error("添加失败!" + data.responseJSON.message + "!"); }); ajax.set(this.tOrderInfoData); + ajax.set('startAddress', JSON.stringify(TOrderInfoDlg.startAddress)); + ajax.set('endAddress', null == endAddress ? "" : JSON.stringify(TOrderInfoDlg.endAddress)); ajax.start(); } -- Gitblit v1.7.1