1个文件已删除
124个文件已修改
9个文件已添加
| | |
| | | <version>1.0.0</version> |
| | | <relativePath>../pom.xml</relativePath> |
| | | </parent> |
| | | <packaging>jar</packaging> |
| | | <packaging>war</packaging> |
| | | |
| | | <dependencies> |
| | | <!--<dependency> |
| | |
| | | <version>2.5.0</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.huaweicloud</groupId> |
| | | <artifactId>esdk-obs-java-bundle</artifactId> |
| | | <version>[3.21.11,)</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.google.code.gson</groupId> |
| | | <artifactId>gson</artifactId> |
| | | </dependency> |
| | |
| | | <artifactId>spring-boot-starter-quartz</artifactId> |
| | | </dependency> |
| | | |
| | | <!--引入本地工行支付jar start--> |
| | | <!--<dependency> |
| | | <groupId>com.icbc</groupId> |
| | | <artifactId>icbc</artifactId> |
| | | <version>v2</version> |
| | | <scope>system</scope> |
| | | <systemPath>${project.basedir}/lib/icbc-api-sdk-cop.jar</systemPath> |
| | | <!--谷歌地图依赖--> |
| | | <dependency> |
| | | <groupId>com.google.maps</groupId> |
| | | <artifactId>google-maps-services</artifactId> |
| | | <version>2.0.0</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.icbc.api</groupId> |
| | | <artifactId>icbc</artifactId> |
| | | <version>v2</version> |
| | | <scope>system</scope> |
| | | <systemPath>${project.basedir}/lib/icbc-api-sdk-cop-io.jar</systemPath> |
| | | <groupId>org.slf4j</groupId> |
| | | <artifactId>slf4j-simple</artifactId> |
| | | <version>1.7.25</version> |
| | | </dependency> |
| | | <!--邮件发送依赖--> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-mail</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.com.infosec</groupId> |
| | | <artifactId>icbc</artifactId> |
| | | <version>v2</version> |
| | | <scope>system</scope> |
| | | <systemPath>${project.basedir}/lib/icbc-ca.jar</systemPath> |
| | | <groupId>org.jsoup</groupId> |
| | | <artifactId>jsoup</artifactId> |
| | | <version>1.13.1</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.com.infosecCrypto</groupId> |
| | | <artifactId>icbc</artifactId> |
| | | <version>v2</version> |
| | | <scope>system</scope> |
| | | <systemPath>${project.basedir}/lib/InfosecCrypto_Java1_02_JDK14+.jar</systemPath> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>proguard</groupId> |
| | | <artifactId>icbc</artifactId> |
| | | <version>v2</version> |
| | | <scope>system</scope> |
| | | <systemPath>${project.basedir}/lib/proguard.jar</systemPath> |
| | | </dependency>--> |
| | | <!--引入本地工行支付jar end--> |
| | | </dependencies> |
| | | |
| | | |
| | | |
| | | |
| | | <build> |
| | | <plugins> |
| | | <plugin> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-maven-plugin</artifactId> |
| | | <configuration> |
| | | <fork>true</fork><!-- 如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart --> |
| | | </configuration> |
| | | </plugin> |
| | | <plugin> |
| | | <groupId>org.apache.maven.plugins</groupId> |
| | | <artifactId>maven-surefire-plugin</artifactId> |
| | | <configuration> |
| | | <skip>true</skip> |
| | | </configuration> |
| | | </plugin> |
| | | </plugins> |
| | | |
| | | <!--打包war包引入本地jar的打包方式--> |
| | | <!--<plugins>--> |
| | | <!--<plugin>--> |
| | | <!--<groupId>org.apache.maven.plugins</groupId>--> |
| | | <!--<artifactId>maven-war-plugin</artifactId>--> |
| | | <!--<groupId>org.springframework.boot</groupId>--> |
| | | <!--<artifactId>spring-boot-maven-plugin</artifactId>--> |
| | | <!--<configuration>--> |
| | | <!--<!– 设置成false,否则检查web.xml是否存在。因为springboot是没有web.xml的 –>--> |
| | | <!--<failOnMissingWebXml>false</failOnMissingWebXml>--> |
| | | <!--<!–打包后的项目名–>--> |
| | | <!--<!–<warName>example</warName>–>--> |
| | | <!--<fork>true</fork><!– 如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart –>--> |
| | | <!--</configuration>--> |
| | | <!--</plugin>--> |
| | | <!--<plugin>--> |
| | | <!--<groupId>org.apache.maven.plugins</groupId>--> |
| | | <!--<artifactId>maven-surefire-plugin</artifactId>--> |
| | | <!--<configuration>--> |
| | | <!--<skip>true</skip>--> |
| | | <!--</configuration>--> |
| | | <!--</plugin>--> |
| | | <!--</plugins>--> |
| | | |
| | | <!--打包war包引入本地jar的打包方式--> |
| | | <plugins> |
| | | <plugin> |
| | | <groupId>org.apache.maven.plugins</groupId> |
| | | <artifactId>maven-war-plugin</artifactId> |
| | | <configuration> |
| | | <!-- 设置成false,否则检查web.xml是否存在。因为springboot是没有web.xml的 --> |
| | | <failOnMissingWebXml>false</failOnMissingWebXml> |
| | | <!--打包后的项目名--> |
| | | <!--<warName>example</warName>--> |
| | | <!--<webResources>--> |
| | | <!--<resource>--> |
| | | <!--<!–把本地lib里面的jar复制到lib–>--> |
| | |
| | | <!--</includes>--> |
| | | <!--</resource>--> |
| | | <!--</webResources>--> |
| | | <!--</configuration>--> |
| | | <!--</plugin>--> |
| | | <!--</plugins>--> |
| | | </configuration> |
| | | </plugin> |
| | | </plugins> |
| | | |
| | | <resources> |
| | | <resource> |
| | |
| | | public Object driverWorkList() { |
| | | Page<Map<String,Object>> page = new PageFactory<Map<String,Object>>().defaultPage(); |
| | | List<Map<String,Object>> list = tIncomeService.getList1(page); |
| | | for (Map<String,Object> map:list){ |
| | | List<Map<String,Object>> list1 = tIncomeService.getTotal(map.get("times").toString()); |
| | | map.put("driverNum",list1.get(0).get("driverNum")); |
| | | map.put("timeNumber",list1.get(0).get("timeNumber")); |
| | | } |
| | | page.setRecords(list); |
| | | return super.packForBT(page); |
| | | } |
| | |
| | | import com.stylefeng.guns.core.common.constant.factory.PageFactory; |
| | | import com.stylefeng.guns.core.shiro.ShiroKit; |
| | | import com.stylefeng.guns.core.util.SinataUtil; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.system.model.TUser; |
| | | import com.stylefeng.guns.modular.system.service.ITUserService; |
| | | import com.stylefeng.guns.modular.system.util.EmailUtil; |
| | | import org.jsoup.Jsoup; |
| | | import org.jsoup.nodes.Document; |
| | | import org.jsoup.nodes.Element; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | |
| | | import com.stylefeng.guns.modular.system.model.TReportLoss; |
| | | import com.stylefeng.guns.modular.system.service.ITReportLossService; |
| | | |
| | | import java.io.File; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | |
| | | |
| | | @Autowired |
| | | private ITReportLossService tReportLossService; |
| | | |
| | | @Autowired |
| | | private ITUserService userService; |
| | | |
| | | @Value("${spring.mail.template-path}") |
| | | private String templatePath; |
| | | |
| | | /** |
| | | * 跳转到首页 |
| | |
| | | tReportLoss.setHandleUserId(ShiroKit.getUser().getObjectId()); |
| | | boolean b = tReportLossService.updateById(tReportLoss); |
| | | if(b){ |
| | | try { |
| | | TUser userInfo = userService.selectById(tReportLoss.getUserId()); |
| | | if(ToolUtil.isNotEmpty(userInfo.getEmail())){ |
| | | String path = templatePath + "user/reportLossResult.html"; |
| | | Document document = Jsoup.parse(new File(path), "UTF-8"); |
| | | document.getElementById("chinese").attr("style", "display: none;"); |
| | | document.getElementById("french").attr("style", "display: none;"); |
| | | Element english_user = document.getElementById("english_user"); |
| | | english_user.text("Hello " + userInfo.getNickName() + ","); |
| | | Element english_content = document.getElementById("english_content"); |
| | | english_content.text(info); |
| | | EmailUtil.send(userInfo.getEmail(), "Notification of the result of the loss report", document.html()); |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | return SUCCESS_TIP; |
| | | } |
| | | return ERROR; |
| | |
| | | } |
| | | List<TDriver> tDrivers = tDriverService.selectList(ne); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | List<Object> list = new ArrayList<>(); |
| | | List<Object> list1 = new ArrayList<>(); |
| | | List<Object> list2 = new ArrayList<>(); |
| | | for(TDriver tDriver : tDrivers){ |
| | | Map<String, Object> d = new HashMap<>(); |
| | | String value = redisUtil.getValue("DRIVER" + tDriver.getId()); |
| | |
| | | d.put("driver", tDriver); |
| | | d.put("lon", value.split(",")[0]); |
| | | d.put("lat", value.split(",")[1]); |
| | | list.add(d); |
| | | if(tDriver.getState() == 2){ |
| | | list1.add(d); |
| | | }else{ |
| | | list2.add(d); |
| | | } |
| | | } |
| | | map.put("driver", list); |
| | | map.put("driver1", list1); |
| | | map.put("driver2", list2); |
| | | |
| | | Map<String, Object> map2 = new HashMap<>(); |
| | | String today = DateUtil.format(new Date(), "yyyy-MM-dd"); |
| | | Wrapper<TOrderPrivateCar> eq = new EntityWrapper<TOrderPrivateCar>().eq("state", 1).eq("isDelete", 1).ge("insertTime",DateUtil.parse(today,"yyyy-MM-dd")); |
| | | if(companyId != null){ |
| | | eq.eq("companyId", companyId); |
| | | } |
| | | Wrapper<TOrderLogistics> eq1 = new EntityWrapper<TOrderLogistics>().eq("state", 1).eq("isDelete", 1).ge("insertTime",DateUtil.parse(today,"yyyy-MM-dd")); |
| | | if(companyId != null){ |
| | | eq1.eq("companyId", companyId); |
| | | } |
| | | List<TOrderPrivateCar> tOrderPrivateCars=tOrderPrivateCarService.selectList(eq); |
| | | list = new ArrayList<>(); |
| | | List<TOrderLogistics> orderLogistics=itOrderLogisticsService.selectList(eq1); |
| | | List<Map<String, Object>> privateCarOrderList = new ArrayList<>(); |
| | | List<Map<String, Object>> logisticsOrderList = new ArrayList<>(); |
| | | for(TOrderPrivateCar t : tOrderPrivateCars){ |
| | | Map<String, Object> map1 = new HashMap<>(); |
| | | map1.put("start", t.getStartAddress()); |
| | |
| | | map1.put("travelTime", t.getTravelTime()); |
| | | map1.put("carModel", ""); |
| | | map1.put("num", 1); |
| | | list.add(map1); |
| | | privateCarOrderList.add(map1); |
| | | } |
| | | map2.put("privateCar", list); |
| | | map.put("order", map2); |
| | | for(TOrderLogistics t : orderLogistics){ |
| | | Map<String, Object> map1 = new HashMap<>(); |
| | | map1.put("start", t.getStartAddress()); |
| | | map1.put("end", t.getEndAddress()); |
| | | map1.put("travelTime", t.getTravelTime()); |
| | | map1.put("carModel", ""); |
| | | map1.put("num", 1); |
| | | logisticsOrderList.add(map1); |
| | | } |
| | | Map<String, Object> map1 = new HashMap<>(); |
| | | map1.put("zhuanche", privateCarOrderList); |
| | | map1.put("kuacheng", logisticsOrderList); |
| | | map.put("order", map1); |
| | | |
| | | return map; |
| | | } |
| | |
| | | @ResponseBody |
| | | @PostMapping("/getAllOrder") |
| | | public Object getAllOrder(){ |
| | | List<TOrderTaxi> tOrderTaxis = tOrderTaxiService.selectList(new EntityWrapper<TOrderTaxi>().eq("isDelete", 1)); |
| | | List<TOrderPrivateCar> orderPrivateCars = tOrderPrivateCarService.selectList(new EntityWrapper<TOrderPrivateCar>().eq("isDelete", 1)); |
| | | List<TOrderLogistics> orderLogistics = itOrderLogisticsService.selectList(new EntityWrapper<TOrderLogistics>().eq("isDelete", 1)); |
| | | List list = new ArrayList<>(); |
| | | for(TOrderTaxi t : tOrderTaxis){ |
| | | for(TOrderPrivateCar t : orderPrivateCars){ |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("lon", t.getStartLon()); |
| | | map.put("lat", t.getStartLat()); |
| | | list.add(map); |
| | | } |
| | | for(TOrderLogistics t : orderLogistics){ |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("lon", t.getStartLon()); |
| | | map.put("lat", t.getStartLat()); |
| | |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.system.model.*; |
| | | import com.stylefeng.guns.modular.system.service.*; |
| | | import com.stylefeng.guns.modular.system.util.EmailUtil; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | |
| | | |
| | | @Autowired |
| | | private ITAdvertisementUserService itAdvertisementUserService; |
| | | @Autowired |
| | | private ITAdvertisementInformService itAdvertisementInformService; |
| | | @Autowired |
| | | private ITUserService userService; |
| | | @Autowired |
| | |
| | | tAdvertisement.setName(name); |
| | | tAdvertisement.setInsertTime(new Date()); |
| | | tAdvertisement.setInsertUser(ShiroKit.getUser().getId()); |
| | | |
| | | content = content.replaceAll("& lt;", "<"); |
| | | content = content.replaceAll("& gt;", ">"); |
| | | content = content.replaceAll("& #40;", "("); |
| | | content = content.replaceAll("& #41;", ")"); |
| | | |
| | | tAdvertisement.setContent(content); |
| | | boolean insert = tAdvertisementService.insert(tAdvertisement); |
| | | if(insert){ |
| | | TAdvertisementInform tAdvertisementUser = new TAdvertisementInform(); |
| | | TAdvertisementUser tAdvertisementUser = new TAdvertisementUser(); |
| | | tAdvertisementUser.setAdvertisementId(tAdvertisement.getId()); |
| | | tAdvertisementUser.setDriverId(driverId); |
| | | tAdvertisementUser.setUserId(userId); |
| | | boolean insert1 = itAdvertisementInformService.insert(tAdvertisementUser); |
| | | boolean insert1 = itAdvertisementUserService.insert(tAdvertisementUser); |
| | | // TODO 发送邮件 |
| | | if(insert1){ |
| | | Timer timer = new Timer(); |
| | |
| | | } |
| | | @Override |
| | | public void run() { |
| | | TAdvertisementInform tAdvertisementUser = itAdvertisementInformService.selectById(id); |
| | | TAdvertisementUser tAdvertisementUser = itAdvertisementUserService.selectById(id); |
| | | TAdvertisement tAdvertisement = tAdvertisementService.selectById(tAdvertisementUser.getAdvertisementId()); |
| | | // 司机所有 TODO |
| | | if("[]".equals(tAdvertisementUser.getDriverId())){ |
| | | System.out.println(1111111111); |
| | |
| | | String email = tDriver.getEmail(); |
| | | if(ToolUtil.isNotEmpty(email)){ |
| | | // TODO 发送邮件 |
| | | try { |
| | | EmailUtil.send(email, tAdvertisement.getName(), tAdvertisement.getContent()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | }else { |
| | |
| | | String email = tDriver.getEmail(); |
| | | if(ToolUtil.isNotEmpty(email)){ |
| | | // TODO 发送邮件 |
| | | try { |
| | | EmailUtil.send(email, tAdvertisement.getName(), tAdvertisement.getContent()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | String email = user.getEmail(); |
| | | if(ToolUtil.isNotEmpty(email)){ |
| | | // TODO 发送邮件 |
| | | try { |
| | | EmailUtil.send(email, tAdvertisement.getName(), tAdvertisement.getContent()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | }else { |
| | |
| | | String email = tUser.getEmail(); |
| | | if(ToolUtil.isNotEmpty(email)){ |
| | | // TODO 发送邮件 |
| | | try { |
| | | EmailUtil.send(email, tAdvertisement.getName(), tAdvertisement.getContent()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | tAdvertisement.setName(name); |
| | | tAdvertisement.setInsertTime(new Date()); |
| | | tAdvertisement.setInsertUser(ShiroKit.getUser().getId()); |
| | | content = content.replaceAll("& lt;", "<"); |
| | | content = content.replaceAll("& gt;", ">"); |
| | | content = content.replaceAll("& #40;", "("); |
| | | content = content.replaceAll("& #41;", ")"); |
| | | tAdvertisement.setContent(content); |
| | | boolean insert = tAdvertisementService.insert(tAdvertisement); |
| | | if(insert){ |
| | |
| | | @Override |
| | | public void run() { |
| | | TAdvertisementUser tAdvertisementUser = itAdvertisementUserService.selectById(id); |
| | | TAdvertisement tAdvertisement = tAdvertisementService.selectById(tAdvertisementUser.getAdvertisementId()); |
| | | // 司机所有 TODO |
| | | if("[]".equals(tAdvertisementUser.getDriverId())){ |
| | | List<TDriver> list = driverService.selectList(null); |
| | |
| | | String email = tDriver.getEmail(); |
| | | if(ToolUtil.isNotEmpty(email)){ |
| | | // TODO 发送邮件 |
| | | try { |
| | | EmailUtil.send(email, tAdvertisement.getName(), tAdvertisement.getContent()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | }else { |
| | |
| | | String email = tDriver.getEmail(); |
| | | if(ToolUtil.isNotEmpty(email)){ |
| | | // TODO 发送邮件 |
| | | try { |
| | | EmailUtil.send(email, tAdvertisement.getName(), tAdvertisement.getContent()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | String email = user.getEmail(); |
| | | if(ToolUtil.isNotEmpty(email)){ |
| | | // TODO 发送邮件 |
| | | try { |
| | | EmailUtil.send(email, tAdvertisement.getName(), tAdvertisement.getContent()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | }else { |
| | |
| | | String email = tUser.getEmail(); |
| | | if(ToolUtil.isNotEmpty(email)){ |
| | | // TODO 发送邮件 |
| | | try { |
| | | EmailUtil.send(email, tAdvertisement.getName(), tAdvertisement.getContent()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | @RequestMapping(value = "/update") |
| | | @ResponseBody |
| | | public Object update(TAdvertisement tAdvertisement) { |
| | | String content = tAdvertisement.getContent(); |
| | | content = content.replaceAll("& lt;", "<"); |
| | | content = content.replaceAll("& gt;", ">"); |
| | | content = content.replaceAll("& #40;", "("); |
| | | content = content.replaceAll("& #41;", ")"); |
| | | tAdvertisement.setContent(content); |
| | | tAdvertisement.setUpdateTime(new Date()); |
| | | tAdvertisement.setUpdateUser(ShiroKit.getUser().getId()); |
| | | tAdvertisementService.updateById(tAdvertisement); |
| | |
| | | import com.stylefeng.guns.modular.system.dao.CarInsuranceMapper; |
| | | import com.stylefeng.guns.modular.system.model.*; |
| | | import com.stylefeng.guns.modular.system.service.*; |
| | | import com.stylefeng.guns.modular.system.util.EmailUtil; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import org.apache.commons.lang.time.DateUtils; |
| | | import org.apache.poi.ss.usermodel.Cell; |
| | | import org.apache.poi.ss.usermodel.Row; |
| | | import org.apache.poi.ss.usermodel.Sheet; |
| | | import org.apache.poi.ss.usermodel.Workbook; |
| | | import org.jsoup.Jsoup; |
| | | import org.jsoup.nodes.Document; |
| | | import org.jsoup.nodes.Element; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.web.bind.annotation.*; |
| | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.File; |
| | | import java.text.DateFormat; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | |
| | | @Autowired |
| | | private ITCarColorService carColorService; |
| | | |
| | | @Value("${pushMinistryOfTransport}") |
| | | private boolean pushMinistryOfTransport; |
| | | @Value("${spring.mail.template-path}") |
| | | private String templatePath; |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 跳转到车辆管理首页 |
| | |
| | | one = 2; |
| | | zcModel = obj.getServerCarModelId(); |
| | | } |
| | | if (obj.getType() == 1){ |
| | | four = 2; |
| | | zcModel = obj.getServerCarModelId(); |
| | | } |
| | | } |
| | | model.addAttribute("one",one); |
| | | model.addAttribute("four",four); |
| | | model.addAttribute("zcModel",zcModel); |
| | | List<TServerCarmodel> zcModelList = itServerCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 1).eq("state", 1)); |
| | | model.addAttribute("zcModelList",zcModelList); |
| | |
| | | } |
| | | tCar.setInsertTime(new Date()); |
| | | tCar.setState(1); |
| | | tCar.setAuthState(1); |
| | | tCarService.insert(tCar); |
| | | |
| | | //添加经营业务 |
| | |
| | | if(tCar.getAuthState()==2){ |
| | | String[] serverArray = serverBox.split(","); |
| | | for (int i=0;i<serverArray.length;i++){ |
| | | TCarService service = new TCarService(); |
| | | service.setCarId(tCar.getId()); |
| | | service.setType(Integer.valueOf(serverArray[i])); |
| | | if (1 == service.getType()){ |
| | | service.setServerCarModelId(Integer.valueOf(zcModel)); |
| | | TCarService tCarService = tCarServiceService.selectOne(new EntityWrapper<TCarService>().eq("carId", tCar.getId()).eq("type", Integer.valueOf(serverArray[i]))); |
| | | if(null == tCarService){ |
| | | tCarService = new TCarService(); |
| | | tCarService.setCarId(tCar.getId()); |
| | | tCarService.setType(Integer.valueOf(serverArray[i])); |
| | | if (1 == tCarService.getType()){ |
| | | tCarService.setServerCarModelId(Integer.valueOf(zcModel)); |
| | | } |
| | | tCarServiceService.insert(tCarService); |
| | | }else{ |
| | | if (1 == tCarService.getType()){ |
| | | tCarService.setServerCarModelId(Integer.valueOf(zcModel)); |
| | | } |
| | | tCarServiceService.updateById(tCarService); |
| | | } |
| | | tCarServiceService.insert(service); |
| | | |
| | | |
| | | } |
| | | } |
| | | tCarService.updateById(tCar); |
| | | tCar = tCarService.selectById(tCar.getId()); |
| | | TDriver tDriver = tDriverService.selectById(tCar.getDriverId()); |
| | | |
| | | TCar finalTCar = tCar; |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | String path = templatePath + "driver/index.html"; |
| | | Document document = Jsoup.parse(new File(path), "UTF-8"); |
| | | document.getElementById("chinese").attr("style", "display: none;"); |
| | | document.getElementById("french").attr("style", "display: none;"); |
| | | document.getElementById("invite1").attr("style", "display: none;"); |
| | | document.getElementById("user1").attr("style", "display: none;"); |
| | | document.getElementById("settle1").attr("style", "display: none;"); |
| | | document.getElementById("pass1").attr("style", "display: none;"); |
| | | document.getElementById("email1").attr("style", "display: none;"); |
| | | document.getElementById("bill1").attr("style", "display: none;"); |
| | | document.getElementById("reward1").attr("style", "display: none;"); |
| | | document.getElementById("rewardToday1").attr("style", "display: none;"); |
| | | document.getElementById("driverAudit1").attr("style", "display: none;"); |
| | | Element car_audit1_user = document.getElementById("car_audit1_user"); |
| | | car_audit1_user.text("Hello " + tDriver.getName() + ","); |
| | | Element car_audit1_content = document.getElementById("car_audit1_content"); |
| | | if(2 == finalTCar.getAuthState()){ |
| | | car_audit1_content.text("You vehicle application has been approved. See the I-GO platform for details."); |
| | | }else{ |
| | | car_audit1_content.text("Sorry, your vehicle application was not approved. The reason for the failure is: incomplete filling of vehicle information."); |
| | | } |
| | | EmailUtil.send(tDriver.getEmail(), "Vehicle audit notice", document.html()); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | }).start(); |
| | | |
| | | return SUCCESS_TIP; |
| | | } |
| | | |
| | |
| | | // } |
| | | //判断服务模式【小件同城物流】 |
| | | if (!six.equals("是") && !six.equals("否")){ |
| | | return new ErrorTip(500, "服务模式【小件同城物流】内容不正确"); |
| | | return new ErrorTip(500, "服务模式【小件市内物流】内容不正确"); |
| | | } |
| | | // //判断服务模式【小件跨城物流】 |
| | | // if (!seven.equals("是") && !seven.equals("否")){ |
| | |
| | | import com.stylefeng.guns.core.util.DateUtil; |
| | | import com.stylefeng.guns.core.util.SinataUtil; |
| | | import com.stylefeng.guns.modular.system.model.*; |
| | | import com.stylefeng.guns.modular.system.service.ITCompanyCityService; |
| | | import com.stylefeng.guns.modular.system.service.ITRegionService; |
| | | import com.stylefeng.guns.modular.system.service.IUserService; |
| | | import com.stylefeng.guns.modular.system.service.*; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import com.stylefeng.guns.core.log.LogObjectHolder; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | import com.stylefeng.guns.modular.system.service.ITCompanyService; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | |
| | | @Autowired |
| | | private ITCompanyCityService tCompanyCityService; |
| | | |
| | | @Value("${pushMinistryOfTransport}") |
| | | private boolean pushMinistryOfTransport; |
| | | @Autowired |
| | | private ICityService cityService; |
| | | |
| | | /** |
| | | * 跳转到修改平台信息 |
| | |
| | | LogObjectHolder.me().set(tCompany); |
| | | |
| | | //省 |
| | | List<TRegion> provinceList = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0)); |
| | | model.addAttribute("provinceList",provinceList); |
| | | List<City> cities = cityService.selectList(null); |
| | | // List<TRegion> provinceList = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0)); |
| | | model.addAttribute("city",cities); |
| | | |
| | | //系统用户对象 |
| | | User user = userService.selectOne(new EntityWrapper<User>().eq("roleType", 1).eq("objectId", tCompany.getId())); |
| | |
| | | */ |
| | | @RequestMapping("/tCompany_add") |
| | | public String tCompanyAdd(Model model) { |
| | | List<TRegion> provinceList = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0)); |
| | | model.addAttribute("provinceList",provinceList); |
| | | List<City> cities = cityService.selectList(null); |
| | | model.addAttribute("city",cities); |
| | | return PREFIX + "tCompany_add.html"; |
| | | } |
| | | |
| | |
| | | LogObjectHolder.me().set(tCompany); |
| | | |
| | | //省 |
| | | List<TRegion> provinceList = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0)); |
| | | model.addAttribute("provinceList",provinceList); |
| | | List<City> cities = cityService.selectList(null); |
| | | model.addAttribute("city",cities); |
| | | |
| | | //系统用户对象 |
| | | User user = userService.selectOne(new EntityWrapper<User>().eq("roleType", 2).eq("objectId", tCompanyId)); |
| | |
| | | LogObjectHolder.me().set(tCompany); |
| | | |
| | | //省 |
| | | List<TRegion> provinceList = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0)); |
| | | model.addAttribute("provinceList",provinceList); |
| | | List<City> cities = cityService.selectList(null); |
| | | model.addAttribute("city",cities); |
| | | |
| | | //系统用户对象 |
| | | User user = userService.selectOne(new EntityWrapper<User>().eq("roleType", 2).eq("objectId", tCompanyId)); |
| | |
| | | TCompanyCity tCompanyCity = tCompanyCityService.selectOne(new EntityWrapper<TCompanyCity>().eq("id", jsonObject.getInteger("recordId")).eq("companyId", id)); |
| | | if (SinataUtil.isEmpty(tCompanyCity)){ |
| | | tCompanyCity = new TCompanyCity(); |
| | | tCompanyCity.setProvinceCode(jsonObject.getInteger("provinceCode")); |
| | | tCompanyCity.setCityCode(jsonObject.getInteger("cityCode")); |
| | | tCompanyCity.setAreaCode(jsonObject.getInteger("areaCode")); |
| | | tCompanyCity.setCityId(jsonObject.getInteger("cityId")); |
| | | tCompanyCity.setCompanyId(id); |
| | | tCompanyCity.setState(1); |
| | | tCompanyCityService.insert(tCompanyCity); |
| | |
| | | import com.stylefeng.guns.core.shiro.ShiroKit; |
| | | import com.stylefeng.guns.core.util.SinataUtil; |
| | | import com.stylefeng.guns.modular.system.model.TSystemNotice; |
| | | import com.stylefeng.guns.modular.system.model.TUser; |
| | | import com.stylefeng.guns.modular.system.service.ITSystemNoticeService; |
| | | import com.stylefeng.guns.modular.system.service.ITUserService; |
| | | import com.stylefeng.guns.modular.system.util.EmailUtil; |
| | | import org.jsoup.Jsoup; |
| | | import org.jsoup.nodes.Document; |
| | | import org.jsoup.nodes.Element; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | |
| | | import com.stylefeng.guns.modular.system.model.TComplaint; |
| | | import com.stylefeng.guns.modular.system.service.ITComplaintService; |
| | | |
| | | import java.io.File; |
| | | import java.util.Date; |
| | | import java.util.Map; |
| | | |
| | |
| | | @Autowired |
| | | private ITSystemNoticeService tSystemNoticeService; |
| | | |
| | | @Value("${pushMinistryOfTransport}") |
| | | private boolean pushMinistryOfTransport; |
| | | @Autowired |
| | | private ITUserService userService; |
| | | |
| | | @Value("${spring.mail.template-path}") |
| | | private String templatePath; |
| | | |
| | | |
| | | |
| | |
| | | tComplaint.setHandleTime(new Date()); |
| | | tComplaintService.updateById(tComplaint); |
| | | |
| | | try { |
| | | TUser userInfo = userService.selectById(tComplaint.getUserId()); |
| | | String path = templatePath + "user/complaint.html"; |
| | | Document document = Jsoup.parse(new File(path), "UTF-8"); |
| | | document.getElementById("chinese").attr("style", "display: none;"); |
| | | Element english_user = document.getElementById("english_user"); |
| | | english_user.text("Hello " + userInfo.getNickName() + ","); |
| | | Element english_content = document.getElementById("english_content"); |
| | | english_content.text(handleResult); |
| | | EmailUtil.send(userInfo.getEmail(), "Complaint driver handling result notification", document.html()); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | //增加系统消息 |
| | | TSystemNotice notice = new TSystemNotice(); |
| | | notice.setType(2); |
| | |
| | | import com.stylefeng.guns.modular.system.dao.DriverTrainMapper; |
| | | import com.stylefeng.guns.modular.system.model.*; |
| | | import com.stylefeng.guns.modular.system.service.*; |
| | | import com.stylefeng.guns.modular.system.util.EmailUtil; |
| | | import com.stylefeng.guns.modular.system.util.HttpRequestUtil; |
| | | import com.stylefeng.guns.modular.system.util.PushURL; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | |
| | | import org.apache.poi.ss.usermodel.Row; |
| | | import org.apache.poi.ss.usermodel.Sheet; |
| | | import org.apache.poi.ss.usermodel.Workbook; |
| | | import org.jsoup.Jsoup; |
| | | import org.jsoup.nodes.Document; |
| | | import org.jsoup.nodes.Element; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Controller; |
| | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.File; |
| | | import java.math.BigDecimal; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | |
| | | @Resource |
| | | private DriverPunishMapper driverPunishMapper; |
| | | |
| | | @Value("${pushMinistryOfTransport}") |
| | | private boolean pushMinistryOfTransport; |
| | | @Value("${spring.mail.template-path}") |
| | | private String templatePath; |
| | | |
| | | |
| | | |
| | |
| | | tDriver.setAuthState(4); |
| | | } |
| | | |
| | | Map<String,String> map = new HashMap<>(); |
| | | map.put("uid", String.valueOf(tDriver.getId())); |
| | | map.put("type", String.valueOf(type)); |
| | | String result = HttpRequestUtil.postRequest(PushURL.driver_auth_url, map); |
| | | System.out.println("司机注册审核发送短信 :【driverId="+tDriver.getId().toString()+"】,调用接口:"+result); |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | String path = templatePath + "driver/index.html"; |
| | | Document document = Jsoup.parse(new File(path), "UTF-8"); |
| | | document.getElementById("chinese").attr("style", "display: none;"); |
| | | document.getElementById("french").attr("style", "display: none;"); |
| | | document.getElementById("invite1").attr("style", "display: none;"); |
| | | document.getElementById("user1").attr("style", "display: none;"); |
| | | document.getElementById("settle1").attr("style", "display: none;"); |
| | | document.getElementById("pass1").attr("style", "display: none;"); |
| | | document.getElementById("email1").attr("style", "display: none;"); |
| | | document.getElementById("bill1").attr("style", "display: none;"); |
| | | document.getElementById("reward1").attr("style", "display: none;"); |
| | | document.getElementById("rewardToday1").attr("style", "display: none;"); |
| | | document.getElementById("carAudit1").attr("style", "display: none;"); |
| | | |
| | | Element driver_audit1_user = document.getElementById("driver_audit1_user"); |
| | | driver_audit1_user.text("Hello " + tDriver.getName() + ","); |
| | | Element driver_audit1_content = document.getElementById("driver_audit1_content"); |
| | | if(1 == authState){ |
| | | driver_audit1_content.text("You application has been approved."); |
| | | }else{ |
| | | driver_audit1_content.text("I'm sorry, your application was rejected. Reason for rejection: Incomplete filling in personal information."); |
| | | } |
| | | EmailUtil.send(tDriver.getEmail(), "Notice of driver registration application", document.html()); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | }).start(); |
| | | |
| | | tDriverService.updateById(tDriver); |
| | | } |
| | |
| | | import com.stylefeng.guns.core.common.constant.factory.PageFactory; |
| | | import com.stylefeng.guns.core.shiro.ShiroKit; |
| | | import com.stylefeng.guns.core.util.SinataUtil; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.system.model.TSystemNotice; |
| | | import com.stylefeng.guns.modular.system.model.TUser; |
| | | import com.stylefeng.guns.modular.system.service.ITSystemNoticeService; |
| | | import com.stylefeng.guns.modular.system.service.ITUserService; |
| | | import com.stylefeng.guns.modular.system.util.EmailUtil; |
| | | import org.jsoup.Jsoup; |
| | | import org.jsoup.nodes.Document; |
| | | import org.jsoup.nodes.Element; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | |
| | | import com.stylefeng.guns.modular.system.model.TFeedback; |
| | | import com.stylefeng.guns.modular.system.service.ITFeedbackService; |
| | | |
| | | import java.io.File; |
| | | import java.util.Date; |
| | | import java.util.Map; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private ITSystemNoticeService tSystemNoticeService; |
| | | |
| | | @Autowired |
| | | private ITUserService userService; |
| | | |
| | | @Value("${spring.mail.template-path}") |
| | | private String templatePath; |
| | | |
| | | /** |
| | | * 跳转到司机反馈管理首页 |
| | |
| | | tFeedback.setState(2); |
| | | tFeedbackService.updateById(tFeedback); |
| | | |
| | | try { |
| | | TUser userInfo = userService.selectById(tFeedback.getUserId()); |
| | | if(ToolUtil.isNotEmpty(userInfo.getEmail())){ |
| | | String path = templatePath + "user/feedbackResult.html"; |
| | | Document document = Jsoup.parse(new File(path), "UTF-8"); |
| | | document.getElementById("chinese").attr("style", "display: none;"); |
| | | document.getElementById("french").attr("style", "display: none;"); |
| | | Element english_user = document.getElementById("english_user"); |
| | | english_user.text("Hello " + userInfo.getNickName() + ","); |
| | | Element english_content = document.getElementById("english_content"); |
| | | english_content.text(remark); |
| | | EmailUtil.send(userInfo.getEmail(), "Feedback Processing Results", document.html()); |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | //增加系统消息 |
| | | TSystemNotice notice = new TSystemNotice(); |
| | | notice.setType(2); |
| | |
| | | import com.stylefeng.guns.core.shiro.ShiroKit; |
| | | import com.stylefeng.guns.core.util.DateUtil; |
| | | import com.stylefeng.guns.core.util.SinataUtil; |
| | | import com.stylefeng.guns.modular.system.model.City; |
| | | import com.stylefeng.guns.modular.system.model.TOpenCityBusiness; |
| | | import com.stylefeng.guns.modular.system.model.TRegion; |
| | | import com.stylefeng.guns.modular.system.service.ICityService; |
| | | import com.stylefeng.guns.modular.system.service.ITOpenCityBusinessService; |
| | | import com.stylefeng.guns.modular.system.service.ITRegionService; |
| | | import com.stylefeng.guns.modular.system.util.GaoDeMapUtil; |
| | | import com.stylefeng.guns.modular.system.util.GoogleMap.FindPlaceFromTextVo; |
| | | import com.stylefeng.guns.modular.system.util.GoogleMap.GoogleMapUtil; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | |
| | | @Autowired |
| | | private ITOpenCityBusinessService tOpenCityBusinessService; |
| | | |
| | | @Autowired |
| | | private ICityService cityService; |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 跳转到城市管理首页 |
| | | */ |
| | |
| | | */ |
| | | @RequestMapping("/tOpenCity_add") |
| | | public String tOpenCityAdd(Model model) { |
| | | List<TRegion> provinceList = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0)); |
| | | model.addAttribute("provinceList",provinceList); |
| | | List<City> city = cityService.selectList(new EntityWrapper<City>().orderBy("id")); |
| | | model.addAttribute("city", city); |
| | | return PREFIX + "tOpenCity_add.html"; |
| | | } |
| | | |
| | |
| | | model.addAttribute("item",tOpenCity); |
| | | LogObjectHolder.me().set(tOpenCity); |
| | | |
| | | //省 |
| | | List<TRegion> provinceList = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0)); |
| | | model.addAttribute("provinceList",provinceList); |
| | | //市 |
| | | List<TRegion> cityList = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", tOpenCity.getAreaId())); |
| | | model.addAttribute("cityList",cityList); |
| | | //区 |
| | | List<TRegion> areaList = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", tOpenCity.getCityId())); |
| | | model.addAttribute("areaList",areaList); |
| | | List<City> city = cityService.selectList(new EntityWrapper<City>().orderBy("id")); |
| | | model.addAttribute("city", city); |
| | | //经营业务 |
| | | List<Map<String,Object>> businessList = tOpenCityService.getBusinessByCityId(tOpenCityId); |
| | | model.addAttribute("businessList",businessList); |
| | |
| | | @ResponseBody |
| | | public Object add(TOpenCity tOpenCity,@RequestParam String businessTypeStr,Integer areaId,Integer cityId,Integer provinceId) { |
| | | //获取code |
| | | if (SinataUtil.isNotEmpty(areaId)){ |
| | | TRegion area = tRegionService.selectById(areaId); |
| | | tOpenCity.setCode(area.getCode()); |
| | | } |
| | | if (SinataUtil.isNotEmpty(cityId)){ |
| | | TRegion city = tRegionService.selectById(cityId); |
| | | tOpenCity.setCode(city.getCode()); |
| | | } |
| | | if (SinataUtil.isNotEmpty(provinceId)){ |
| | | TRegion province = tRegionService.selectById(provinceId); |
| | | tOpenCity.setCode(province.getCode()); |
| | | } |
| | | tOpenCity.setAreaId(areaId); |
| | | tOpenCity.setCityId(cityId); |
| | | tOpenCity.setProvinceId(provinceId); |
| | | //获取经纬度 |
| | | String address = tOpenCity.getAreaName(); |
| | | if (SinataUtil.isNotEmpty(tOpenCity.getCityName())){ |
| | | address+=tOpenCity.getCityName(); |
| | | City city = cityService.selectById(cityId); |
| | | FindPlaceFromTextVo textsearch = null; |
| | | try { |
| | | textsearch = GoogleMapUtil.textsearch(city.getEnglishName()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if (SinataUtil.isNotEmpty(tOpenCity.getProvinceName())){ |
| | | address+=tOpenCity.getProvinceName(); |
| | | if(null == textsearch){ |
| | | return "查询地图异常"; |
| | | } |
| | | JSONObject positionObj = GaoDeMapUtil.getLngAndLat(address); |
| | | String longitude = positionObj.getString("longitude"); |
| | | String latitude = positionObj.getString("latitude"); |
| | | tOpenCity.setLon(Double.valueOf(longitude)); |
| | | tOpenCity.setLat(Double.valueOf(latitude)); |
| | | tOpenCity.setLat(textsearch.getLat()); |
| | | tOpenCity.setLon(textsearch.getLng()); |
| | | tOpenCity.setInsertTime(new Date()); |
| | | tOpenCity.setInsertUser(ShiroKit.getUser().getId()); |
| | | tOpenCityService.insert(tOpenCity); |
| | |
| | | Integer businessType = 0; |
| | | if ("专车".equals(type)){ |
| | | businessType = 1; |
| | | }else if ("出租车".equals(type)){ |
| | | businessType = 2; |
| | | }else if ("跨城出行".equals(type)){ |
| | | businessType = 3; |
| | | }else if ("跨城小件物流".equals(type)){ |
| | | }else if ("市内小件物流".equals(type)){ |
| | | businessType = 4; |
| | | }else if ("同城小件物流".equals(type)){ |
| | | businessType = 5; |
| | | }else if ("包车".equals(type)){ |
| | | businessType = 6; |
| | | } |
| | | business.setBusinessType(businessType); |
| | | business.setSort(jsonObject.getInteger("sort")); |
| | |
| | | @RequestMapping(value = "/update") |
| | | @ResponseBody |
| | | public Object update(TOpenCity tOpenCity,@RequestParam String businessTypeStr,Integer areaId,Integer cityId,Integer provinceId) { |
| | | if (SinataUtil.isNotEmpty(areaId)){ |
| | | TRegion area = tRegionService.selectById(areaId); |
| | | tOpenCity.setCode(area.getCode()); |
| | | //获取code |
| | | tOpenCity.setCityId(cityId); |
| | | City city = cityService.selectById(cityId); |
| | | FindPlaceFromTextVo textsearch = null; |
| | | try { |
| | | textsearch = GoogleMapUtil.textsearch(city.getEnglishName()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if (SinataUtil.isNotEmpty(cityId)){ |
| | | TRegion city = tRegionService.selectById(cityId); |
| | | tOpenCity.setCode(city.getCode()); |
| | | if(null == textsearch){ |
| | | return "查询地图异常"; |
| | | } |
| | | if (SinataUtil.isNotEmpty(provinceId)){ |
| | | TRegion province = tRegionService.selectById(provinceId); |
| | | tOpenCity.setCode(province.getCode()); |
| | | } |
| | | if (SinataUtil.isEmpty(areaId)){ |
| | | tOpenCity.setAreaId(0); |
| | | tOpenCity.setAreaName(""); |
| | | }else{ |
| | | tOpenCity.setAreaId(areaId); |
| | | } |
| | | if (SinataUtil.isEmpty(cityId)){ |
| | | tOpenCity.setCityId(0); |
| | | tOpenCity.setCityName(""); |
| | | }else{ |
| | | tOpenCity.setCityId(cityId); |
| | | } |
| | | if (SinataUtil.isEmpty(provinceId)){ |
| | | tOpenCity.setProvinceId(0); |
| | | tOpenCity.setProvinceName(""); |
| | | }else{ |
| | | tOpenCity.setProvinceId(provinceId); |
| | | } |
| | | |
| | | //获取经纬度 |
| | | String address = tOpenCity.getAreaName(); |
| | | if (SinataUtil.isNotEmpty(tOpenCity.getCityName())){ |
| | | address+=tOpenCity.getCityName(); |
| | | } |
| | | if (SinataUtil.isNotEmpty(tOpenCity.getProvinceName())){ |
| | | address+=tOpenCity.getProvinceName(); |
| | | } |
| | | JSONObject positionObj = GaoDeMapUtil.getLngAndLat(address); |
| | | String longitude = positionObj.getString("longitude"); |
| | | String latitude = positionObj.getString("latitude"); |
| | | tOpenCity.setLon(Double.valueOf(longitude)); |
| | | tOpenCity.setLat(Double.valueOf(latitude)); |
| | | tOpenCity.setLat(textsearch.getLat()); |
| | | tOpenCity.setLon(textsearch.getLng()); |
| | | tOpenCity.setUpdateTime(new Date()); |
| | | tOpenCity.setUpdateUser(ShiroKit.getUser().getId()); |
| | | tOpenCityService.updateById(tOpenCity); |
| | |
| | | |
| | | /** |
| | | * 提现列表控制器 |
| | | * |
| | | * @author fengshuonan |
| | | * @Date 2020-06-09 09:30:59 |
| | | */ |
| | |
| | | }else if ("否".equals(isAuth)){ |
| | | user.setIsAuth(1); |
| | | } |
| | | user.setName(name); |
| | | user.setFirstName(name); |
| | | user.setIdCard(idCard); |
| | | user.setBalance(new BigDecimal(balance)); |
| | | user.setPassWord(ShiroKit.md5(passWord, "&a.s")); |
| | |
| | | import com.stylefeng.guns.core.util.SinataUtil; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.system.model.TPubWithdrawal; |
| | | import com.stylefeng.guns.modular.system.util.OBSUploadUtil; |
| | | import com.stylefeng.guns.modular.system.util.OssUploadUtil; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Controller; |
| | |
| | | |
| | | @Autowired |
| | | private ITVersionManagementService tVersionManagementService; |
| | | |
| | | @Value("${pushMinistryOfTransport}") |
| | | private boolean pushMinistryOfTransport; |
| | | |
| | | /** |
| | | * 跳转到版本管理首页 |
| | |
| | | MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; |
| | | MultipartFile file = (MultipartFile) myfile; |
| | | |
| | | String pictureName = OssUploadUtil.ossUpload(request, file); |
| | | String pictureName = OBSUploadUtil.inputStreamUpload(file); |
| | | m.put("imgUrl", pictureName); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | |
| | | @Resource |
| | | private OrderCancelMapper orderCancelMapper; |
| | | |
| | | @Value("${pushMinistryOfTransport}") |
| | | private boolean pushMinistryOfTransport; |
| | | |
| | | @Value("${filePath}") |
| | | private String filePath; |
| | | |
| | |
| | | } |
| | | |
| | | //返回驾驶员处罚金 |
| | | TDriver originalDriver = itDriverService.selectById(tReassign.getOriginalDriverId()); |
| | | originalDriver.setBalance(originalDriver.getBalance().add(new BigDecimal(tReassign.getMoney()))); |
| | | itDriverService.updateById(originalDriver); |
| | | // TDriver originalDriver = itDriverService.selectById(tReassign.getOriginalDriverId()); |
| | | // originalDriver.setBalance(originalDriver.getBalance().add(new BigDecimal(tReassign.getMoney()))); |
| | | // itDriverService.updateById(originalDriver); |
| | | |
| | | //增加交易明细 |
| | | TPubTransactionDetails details = new TPubTransactionDetails(); |
| | | details.setUserId(originalDriver.getId()); |
| | | details.setInsertTime(new Date()); |
| | | details.setRemark("【专车改派】:改派失败或订单取消"); |
| | | details.setMoney(new BigDecimal(tReassign.getMoney())); |
| | | details.setState(1); |
| | | details.setType(1); |
| | | details.setUserType(2); |
| | | details.setOrderType(3); |
| | | details.setOrderId(tReassign.getOrderId()); |
| | | itPubTransactionDetailsService.insert(details); |
| | | // TPubTransactionDetails details = new TPubTransactionDetails(); |
| | | // details.setUserId(originalDriver.getId()); |
| | | // details.setInsertTime(new Date()); |
| | | // details.setRemark("【专车改派】:改派失败或订单取消"); |
| | | // details.setMoney(new BigDecimal(tReassign.getMoney())); |
| | | // details.setState(1); |
| | | // details.setType(1); |
| | | // details.setUserType(2); |
| | | // details.setOrderType(3); |
| | | // details.setOrderId(tReassign.getOrderId()); |
| | | // itPubTransactionDetailsService.insert(details); |
| | | return SUCCESS_TIP; |
| | | } |
| | | |
| | |
| | | @Autowired |
| | | private ITServerCarmodelService tServerCarmodelService; |
| | | |
| | | @Value("${pushMinistryOfTransport}") |
| | | private boolean pushMinistryOfTransport; |
| | | |
| | | |
| | | |
| | | |
| | |
| | | @RequestMapping("/tSystemPrice_add") |
| | | public String tSystemPriceAdd(Model model) { |
| | | //查询所有专车车型 |
| | | List<TSystemPrice> tSystemPrices = tSystemPriceService.selectList(new EntityWrapper<TSystemPrice>().eq("type", 1).ne("state", 3)); |
| | | Integer objectId = ShiroKit.getUser().getObjectId(); |
| | | List<TSystemPrice> tSystemPrices = tSystemPriceService.selectList(new EntityWrapper<TSystemPrice>().eq("type", 1).eq("companyId", objectId).ne("state", 3)); |
| | | List<TServerCarmodel> modelList = tServerCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 1).eq("state", 1)); |
| | | List<TServerCarmodel> serverCarmodels = new ArrayList<>(); |
| | | for(TServerCarmodel tsc : modelList){ |
| | |
| | | |
| | | //查询所有专车车型 |
| | | List<TSystemPrice> tSystemPrices = tSystemPriceService.selectList(new EntityWrapper<TSystemPrice>().eq("type", 1).ne("state", 3)); |
| | | List<TServerCarmodel> modelList = tServerCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 1).eq("state", 1)); |
| | | // List<TServerCarmodel> modelList = tServerCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 1).eq("state", 1)); |
| | | List<TServerCarmodel> serverCarmodels = new ArrayList<>(); |
| | | for(TServerCarmodel tsc : modelList){ |
| | | boolean b = true; |
| | | for(TSystemPrice tsp : tSystemPrices){ |
| | | if(tsc.getId() == tsp.getServerCarModelId() && tsc.getId() != tSystemPriceId){ |
| | | b = false; |
| | | break; |
| | | } |
| | | } |
| | | if(b){ |
| | | serverCarmodels.add(tsc); |
| | | } |
| | | } |
| | | model.addAttribute("modelList",serverCarmodels); |
| | | // for(TServerCarmodel tsc : modelList){ |
| | | // boolean b = true; |
| | | // for(TSystemPrice tsp : tSystemPrices){ |
| | | // if(tsc.getId() == tsp.getServerCarModelId() && tsc.getId() != tSystemPriceId){ |
| | | // b = false; |
| | | // break; |
| | | // } |
| | | // } |
| | | // if(b){ |
| | | // serverCarmodels.add(tsc); |
| | | // } |
| | | // } |
| | | TServerCarmodel tSystemPrice1 = tServerCarmodelService.selectById(tSystemPrice.getServerCarModelId()); |
| | | serverCarmodels.add(tSystemPrice1); |
| | | model.addAttribute("modelList", serverCarmodels); |
| | | |
| | | return PREFIX + "tSystemPrice_edit.html"; |
| | | } |
| | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | import com.stylefeng.guns.modular.system.util.OBSUploadUtil; |
| | | import com.stylefeng.guns.modular.system.util.OssUploadUtil ; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | |
| | | String pictureName = ""; |
| | | try { |
| | | //文件上传,具体根据实际替换 |
| | | pictureName = OssUploadUtil.ossUpload(request, picture); |
| | | pictureName = OBSUploadUtil.inputStreamUpload(picture); |
| | | |
| | | String result = "{'original': '" + picture.getOriginalFilename() + "', 'state': 'SUCCESS', 'url': '" + pictureName + "'}"; |
| | | if (callback == null) { |
| | |
| | | import com.stylefeng.guns.core.common.exception.BizExceptionEnum; |
| | | import com.stylefeng.guns.core.exception.GunsException; |
| | | import com.stylefeng.guns.core.util.ObsUploadUtil; |
| | | import com.stylefeng.guns.modular.system.util.OBSUploadUtil; |
| | | import com.stylefeng.guns.modular.system.util.OssUploadUtil; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | |
| | | MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; |
| | | MultipartFile file = (MultipartFile) multipartRequest.getFile("myfile"); |
| | | if (file.getSize() != 0) { |
| | | ossUpload = OssUploadUtil.ossUpload(request, file); |
| | | ossUpload = OBSUploadUtil.inputStreamUpload(file); |
| | | // ossUpload = ObsUploadUtil.obsUpload(super.getHttpServletRequest(), file); |
| | | m.put("imgUrl", ossUpload); |
| | | } |
| | |
| | | MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; |
| | | MultipartFile file = (MultipartFile) picture; |
| | | |
| | | String pictureName = OssUploadUtil.ossUpload(request, file); |
| | | String pictureName = OBSUploadUtil.inputStreamUpload(file); |
| | | // String pictureName = ObsUploadUtil.obsUpload(super.getHttpServletRequest(), picture); |
| | | return pictureName; |
| | | } catch (IOException e1) { |
| | |
| | | // 文件全路径 |
| | | //pictureName = gunsProperties.getPictureServerAddress() + pictureName; |
| | | // pictureName = ObsUploadUtil.obsUpload(super.getHttpServletRequest(), picture); |
| | | pictureName = OssUploadUtil.ossUpload(super.getHttpServletRequest(), picture); |
| | | pictureName = OBSUploadUtil.inputStreamUpload(picture); |
| | | |
| | | String result = "{'original': '" + picture.getOriginalFilename() + "', 'state': 'SUCCESS', 'url': '" + pictureName + "'}"; |
| | | if (callback == null) { |
| | |
| | | List<Map<String,Object>> getList2(@Param("page") Page<Map<String, Object>> page, |
| | | @Param("times") String times); |
| | | |
| | | List<Map<String,Object>> getTotal( |
| | | @Param("times") String times); |
| | | List<Map<String,Object>> getTotal(@Param("times") String times); |
| | | } |
| | |
| | | * @param limit |
| | | * @return |
| | | */ |
| | | List<Map<String, Object>> list(@Param("createTime") String createTime, @Param("name") String name, |
| | | List<Map<String, Object>> list(@Param("start") String start, @Param("end") String end, @Param("name") String name, |
| | | @Param("offset") Integer offset, @Param("limit") Integer limit); |
| | | |
| | | int listCount(@Param("createTime") String createTime, @Param("name") String name); |
| | | int listCount(@Param("start") String start, @Param("end") String end, @Param("name") String name); |
| | | } |
| | |
| | | ORDER BY date_format(insertTime, '%Y-%m-%d') DESC |
| | | </select> |
| | | <select id="getList1" resultType="map" parameterType="com.baomidou.mybatisplus.plugins.Page"> |
| | | SELECT |
| | | date_format(startTime, '%Y-%m-%d') times |
| | | FROM |
| | | t_driver_work |
| | | GROUP BY |
| | | date_format(startTime, '%Y-%m-%d') |
| | | ORDER BY |
| | | date_format(startTime, '%Y-%m-%d') DESC |
| | | select |
| | | a.date as times, |
| | | a.driverNum, |
| | | b.duration as timeNumber |
| | | from ( |
| | | select date, count(driverId) as driverNum from t_driver_online where assessment = 0 group by date |
| | | ) as a |
| | | left join ( |
| | | select date, sum(duration) as duration from t_driver_online where assessment = 0 group by date |
| | | ) as b on (a.date = b.date) |
| | | </select> |
| | | <select id="getList2" resultType="map" parameterType="com.baomidou.mybatisplus.plugins.Page"> |
| | | SELECT |
| | | w.driverId, |
| | | d. NAME, |
| | | o.timeNumber |
| | | FROM |
| | | t_driver_work w |
| | | LEFT JOIN t_driver d ON d.id = w.driverId |
| | | LEFT JOIN ( |
| | | SELECT |
| | | IFNULL(SUM(o.timeNumber), 0) timeNumber, |
| | | driverId |
| | | FROM |
| | | ( |
| | | SELECT |
| | | TIMESTAMPDIFF( |
| | | MINUTE, |
| | | startTime, |
| | | CASE |
| | | WHEN endTime IS NULL THEN |
| | | NOW() |
| | | ELSE |
| | | endTime |
| | | END |
| | | ) timeNumber, |
| | | driverId |
| | | FROM |
| | | t_driver_work |
| | | WHERE |
| | | date_format(startTime, '%Y-%m-%d') = #{times} |
| | | |
| | | ) o GROUP BY |
| | | driverId |
| | | ) o ON o.driverId = d.id |
| | | WHERE |
| | | date_format(startTime, '%Y-%m-%d') = #{times} |
| | | GROUP BY |
| | | w.driverId |
| | | select |
| | | b.`name`, |
| | | a.duration as timeNumber |
| | | from t_driver_online a |
| | | left join t_driver b on (a.driverId = b.id) |
| | | where assessment = 0 and DATE_FORMAT(date, '%Y-%m-%d') = '2022-12-29' |
| | | </select> |
| | | <select id="getTotal" resultType="map"> |
| | | SELECT COUNT(o.driverId) driverNum,SUM(o.timeNumber) timeNumber from (SELECT |
| | |
| | | SELECT * FROM (SELECT rr.chineseName as provinceName,aa.* FROM t_advertisement as aa |
| | | LEFT JOIN t_city as rr on rr.id = aa.cityId) as o |
| | | <where> |
| | | 1=1 |
| | | type in (1, 2) |
| | | <if test="beginTime != null and beginTime != '' and endTime != null and endTime != ''"> |
| | | AND (o.insertTime between CONCAT(#{beginTime},' 00:00:00') and CONCAT(#{endTime},' 23:59:59')) |
| | | </if> |
| | |
| | | select * from t_advertisement_user where advertisementId =#{id} |
| | | </select> |
| | | <select id="selectTAdvertisementInform" resultMap="BaseResultMap"> |
| | | select * from t_advertisement_inform where advertisementId =#{id} |
| | | select * from t_advertisement_user where advertisementId =#{id} |
| | | </select> |
| | | </mapper> |
| | |
| | | name as name, |
| | | DATE_FORMAT(insertTime, '%Y-%m-%d %H:%i:%s') as insertTime |
| | | from t_car_color where state = 1 |
| | | <if test="null != createTime and '' != createTime"> |
| | | and insertTime between CONCAT(#{createTime}, ' 00:00:00') and CONCAT(#{createTime}, ' 23:59:59') |
| | | <if test="null != start and '' != start and null != end and '' != end"> |
| | | and insertTime between CONCAT(#{start}, ' 00:00:00') and CONCAT(#{end}, ' 23:59:59') |
| | | </if> |
| | | <if test="null != name and '' != name"> |
| | | and name like CONCAT('%', #{name}, '%') |
| | |
| | | select |
| | | count(1) |
| | | from t_car_color where state = 1 |
| | | <if test="null != createTime and '' != createTime"> |
| | | and insertTime between CONCAT(#{createTime}, ' 00:00:00') and CONCAT(#{createTime}, ' 23:59:59') |
| | | <if test="null != start and '' != start and null != end and '' != end"> |
| | | and insertTime between CONCAT(#{start}, ' 00:00:00') and CONCAT(#{end}, ' 23:59:59') |
| | | </if> |
| | | <if test="null != name and '' != name"> |
| | | and name like CONCAT('%', #{name}, '%') |
| | |
| | | <result column="GPSInstallDate" property="GPSInstallDate"/> |
| | | <result column="registerDate" property="registerDate"/> |
| | | <result column="commercialType" property="commercialType"/> |
| | | <result column="driverId" property="driverId"/> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | |
| | | LEFT JOIN ( |
| | | SELECT |
| | | GROUP_CONCAT(case when type = 1 then '专车' |
| | | when type = 2 then '出租车' |
| | | when type = 3 then '跨城出行' |
| | | when type = 4 then '小件物流-同城' |
| | | when type = 5 then '小件物流-跨城' |
| | | when type = 6 then '包车' |
| | | when type = 4 then '市内小件物流' |
| | | else '' end ) as serverStr,carId from t_car_service GROUP BY carId) as ds on ds.carId = cc.id |
| | | LEFT JOIN (select * from t_driver where flag != 3) AS dd on dd.carId = cc.id) as o |
| | | <where> |
| | |
| | | LEFT JOIN ( |
| | | SELECT |
| | | GROUP_CONCAT(case when type = 1 then '专车' |
| | | when type = 2 then '出租车' |
| | | when type = 3 then '跨城出行' |
| | | when type = 4 then '小件物流-同城' |
| | | when type = 5 then '小件物流-跨城' |
| | | when type = 6 then '包车' |
| | | when type = 4 then '市内小件物流' |
| | | else '' end ) as serverStr,carId from t_car_service GROUP BY carId) as ds on ds.carId = cc.id |
| | | LEFT JOIN (select * from t_driver where flag != 3) AS dd on dd.carId = cc.id) as o |
| | | <where> |
| | |
| | | LEFT JOIN ( |
| | | SELECT |
| | | GROUP_CONCAT(case when type = 1 then '专车' |
| | | when type = 2 then '出租车' |
| | | when type = 3 then '跨城出行' |
| | | when type = 4 then '小件物流-同城' |
| | | when type = 5 then '小件物流-跨城' |
| | | when type = 6 then '包车' |
| | | when type = 4 then '市内小件物流' |
| | | else '' end ) as serverStr,carId from t_car_service GROUP BY carId) as ds on ds.carId = cc.id |
| | | LEFT JOIN (select * from t_driver where flag != 3) AS dd on dd.carId = cc.id) as o |
| | | <where> |
| | |
| | | <select id="getCompanyList" resultType="map" parameterType="com.baomidou.mybatisplus.plugins.Page"> |
| | | SELECT * FROM (SELECT ui.account,IFNULL(ci.num,0) as franchiseeNum,IFNULL(ca.num,0) as carNumber,IFNULL(di.num,0) as driverNumber, |
| | | CONCAT(case when cc.isSpe = 1 then '专车,' else '' end, |
| | | case when cc.isTaxi = 1 then '出租车,' else '' end, |
| | | case when cc.isCross = 1 then '跨城出行,' else '' end, |
| | | case when cc.isCrossLogistics = 1 then '跨城小件物流,' else '' end, |
| | | case when cc.isSameLogistics = 1 then '同城小件物流,' else '' end, |
| | | case when cc.isCharter = 1 then '包车,' else '' end) as serverStr, |
| | | case when cc.isSameLogistics = 1 then '市内小件物流,' else '' end, |
| | | cc.* FROM t_company as cc |
| | | LEFT JOIN (SELECT * FROM sys_user where roleType = 2) as ui on ui.objectId = cc.id |
| | | LEFT JOIN (SELECT COUNT(id) as num,superiorId FROM t_company where type = 3 and flag != 3 GROUP BY superiorId) as ci on ci.superiorId = cc.id |
| | |
| | | |
| | | <!--根据公司ID获取公司经营区域--> |
| | | <select id="getCompanyScopeById" resultType="map"> |
| | | SELECT CONCAT(case when r1.`name` is not null then r1.`name` else '' end, |
| | | case when r2.`name` is not null then r2.`name` else '' end, |
| | | case when r3.`name` is not null then r3.`name` else '' end) as value,cc.* FROM t_company_city as cc |
| | | LEFT JOIN t_region as r1 on r1.code = cc.provinceCode |
| | | LEFT JOIN t_region as r2 on r2.code = cc.cityCode |
| | | LEFT JOIN t_region as r3 on r3.code = cc.areaCode |
| | | SELECT r1.chineseName as value,cc.* FROM t_company_city as cc |
| | | LEFT JOIN t_city as r1 on r1.id = cc.cityId |
| | | where cc.companyId = #{id} and cc.state = 1 order by id asc |
| | | </select> |
| | | |
| | |
| | | <select id="getFranchiseeList" resultType="map" parameterType="com.baomidou.mybatisplus.plugins.Page"> |
| | | SELECT * FROM (SELECT ui.account,ci.`name` as companyName,IFNULL(ca.num,0) as carNumber,IFNULL(di.num,0) as driverNumber, |
| | | CONCAT(case when cc.isSpe = 1 then '专车,' else '' end, |
| | | case when cc.isTaxi = 1 then '出租车,' else '' end, |
| | | case when cc.isCross = 1 then '跨城出行,' else '' end, |
| | | case when cc.isCrossLogistics = 1 then '跨城小件物流,' else '' end, |
| | | case when cc.isSameLogistics = 1 then '同城小件物流,' else '' end, |
| | | case when cc.isCharter = 1 then '包车,' else '' end) as serverStr, |
| | | case when cc.isSameLogistics = 1 then '市内小件物流,' else '' end, |
| | | cc.* FROM t_company as cc |
| | | LEFT JOIN (SELECT * FROM sys_user where roleType = 3) as ui on ui.objectId = cc.id |
| | | LEFT JOIN (select * from t_company where type = 2 and flag != 3) as ci on ci.id = cc.superiorId |
| | |
| | | </if> |
| | | group by DATE_FORMAT(insertTime, '%Y-%m-%d') |
| | | union all |
| | | select DATE_FORMAT(a.insertTime, '%Y-%m-%d') as time, 0, count(a.id) as `online`, 0 as orderNum, 0 as cancelNum, 0 as onlinePay, 0 as offlinePay, 0 as money, 0 as complaint |
| | | select DATE_FORMAT(a.date, '%Y-%m-%d') as time, 0, count(a.id) as `online`, 0 as orderNum, 0 as cancelNum, 0 as onlinePay, 0 as offlinePay, 0 as money, 0 as complaint |
| | | from t_driver_online a |
| | | left join t_driver b on (a.driverId = b.id) |
| | | where 1 = 1 |
| | | where assessment = 0 |
| | | <if test="null != companyId"> |
| | | and if(b.franchiseeId is null or b.franchiseeId = 0, b.companyId = #{companyId}, b.franchiseeId = #{companyId}) |
| | | </if> |
| | | <if test="null != start and '' != start and null != end and '' != end"> |
| | | and DATE_FORMAT(a.insertTime, '%Y-%m-%d') between #{start} and #{end} |
| | | and DATE_FORMAT(a.date, '%Y-%m-%d') between #{start} and #{end} |
| | | </if> |
| | | group by DATE_FORMAT(a.insertTime, '%Y-%m-%d') |
| | | group by DATE_FORMAT(a.date, '%Y-%m-%d') |
| | | union all |
| | | <if test="1 == type"> |
| | | select DATE_FORMAT(travelTime, '%Y-%m-%d'), 0, 0, count(id), 0, 0, 0, 0, 0 from t_order_private_car where isDelete = 1 |
| | |
| | | LEFT JOIN ( |
| | | SELECT |
| | | GROUP_CONCAT(case when type = 1 then '专车' |
| | | when type = 2 then '出租车' |
| | | when type = 3 then '跨城出行' |
| | | when type = 4 then '小件物流-同城' |
| | | when type = 5 then '小件物流-跨城' |
| | | when type = 6 then '包车' |
| | | when type = 4 then '市内小件物流' |
| | | else '' end ) as serverStr,driverId from t_driver_service GROUP BY driverId) as ds on ds.driverId = dd.id |
| | | ) as o |
| | | <where> |
| | |
| | | LEFT JOIN ( |
| | | SELECT |
| | | GROUP_CONCAT(case when type = 1 then '专车' |
| | | when type = 2 then '出租车' |
| | | when type = 3 then '跨城出行' |
| | | when type = 4 then '小件物流-同城' |
| | | when type = 5 then '小件物流-跨城' |
| | | when type = 6 then '包车' |
| | | when type = 4 then '市内小件物流' |
| | | else '' end SEPARATOR '、') as serverStr,driverId from t_driver_service GROUP BY driverId) as ds on ds.driverId = dd.id |
| | | where dd.id = #{driverId} |
| | | </select> |
| | |
| | | LEFT JOIN ( |
| | | SELECT |
| | | GROUP_CONCAT(case when type = 1 then '专车' |
| | | when type = 2 then '出租车' |
| | | when type = 3 then '跨城出行' |
| | | when type = 4 then '小件物流-同城' |
| | | when type = 5 then '小件物流-跨城' |
| | | when type = 6 then '包车' |
| | | when type = 4 then '市内小件物流' |
| | | else '' end ) as serverStr,driverId from t_driver_service GROUP BY driverId) as ds on ds.driverId = dd.id |
| | | LEFT JOIN (SELECT IFNULL(SUM(fraction)/COUNT(id),0) as evaluateNum,driverId FROM t_order_evaluate GROUP BY driverId) as oe on oe.driverId = dd.id |
| | | LEFT JOIN (SELECT COUNT(id) as taxiNum,driverId FROM t_order_taxi where FIND_IN_SET(state,'7,8,9') GROUP BY driverId) as ot1 on ot1.driverId = dd.id |
| | |
| | | LEFT JOIN ( |
| | | SELECT |
| | | GROUP_CONCAT(case when type = 1 then '专车' |
| | | when type = 2 then '出租车' |
| | | when type = 3 then '跨城出行' |
| | | when type = 4 then '小件物流-同城' |
| | | when type = 5 then '小件物流-跨城' |
| | | when type = 6 then '包车' |
| | | when type = 4 then '市内小件物流' |
| | | else '' end ) as serverStr,carId from t_car_service GROUP BY carId) as ds on ds.carId = ci.id) as o |
| | | <where> |
| | | o.state = 1 |
| | |
| | | LEFT JOIN ( |
| | | SELECT |
| | | GROUP_CONCAT(case when type = 1 then '专车' |
| | | when type = 2 then '出租车' |
| | | when type = 3 then '跨城出行' |
| | | when type = 4 then '小件物流-同城' |
| | | when type = 5 then '小件物流-跨城' |
| | | when type = 6 then '包车' |
| | | when type = 4 then '市内小件物流' |
| | | else '' end ) as serverStr,driverId from t_driver_service GROUP BY driverId) as ds on ds.driverId = dd.id |
| | | LEFT JOIN (SELECT IFNULL(SUM(fraction)/COUNT(id),0) as evaluateNum,driverId FROM t_order_evaluate GROUP BY driverId) as oe on oe.driverId = dd.id |
| | | LEFT JOIN (SELECT COUNT(id) as taxiNum,driverId FROM t_order_taxi where FIND_IN_SET(state,'7,8,9') GROUP BY driverId) as ot1 on ot1.driverId = dd.id |
| | |
| | | |
| | | <!--根据条件查询用反馈记录列表--> |
| | | <select id="getFeedbackList" resultType="map" parameterType="com.baomidou.mybatisplus.plugins.Page"> |
| | | SELECT * FROM (SELECT dd.`name` as driverName,dd.phone as driverPhone,uu.`name` as userName,uu.phone as userPhone,su.`name` as handleUserName, |
| | | SELECT * FROM (SELECT dd.`name` as driverName,dd.phone as driverPhone,uu.nickName as userName,uu.phone as userPhone,su.`name` as handleUserName, |
| | | fb.* FROM t_feedback as fb |
| | | LEFT JOIN t_driver as dd on dd.id = fb.userId |
| | | LEFT JOIN t_user as uu on uu.id = fb.userId |
| | |
| | | <!-- 通用查询映射结果 --> |
| | | <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TOpenCity"> |
| | | <id column="id" property="id" /> |
| | | <result column="code" property="code" /> |
| | | <result column="cityId" property="cityId" /> |
| | | <result column="lon" property="lon" /> |
| | | <result column="lat" property="lat" /> |
| | | <result column="isQualifications" property="isQualifications" /> |
| | |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, code, lon, lat, isQualifications, areaName, cityName, provinceName, flag, insertTime, insertUser, updateTime, updateUser |
| | | id, cityId, lon, lat, isQualifications, areaName, cityName, provinceName, flag, insertTime, insertUser, updateTime, updateUser |
| | | </sql> |
| | | |
| | | <!--根据条件查询开通城市列表--> |
| | | <select id="getOpenCityList" resultType="map" parameterType="com.baomidou.mybatisplus.plugins.Page"> |
| | | SELECT * FROM (SELECT ocb.str as business,oc.* FROM t_open_city as oc |
| | | SELECT * FROM (SELECT ocb.str as business,oc.*,b.chineseName FROM t_open_city as oc |
| | | left join t_city b on (oc.cityId = b.id) |
| | | LEFT JOIN ( |
| | | SELECT GROUP_CONCAT( |
| | | CONCAT((case when businessType = 1 then '专车' |
| | | when businessType = 2 then '出租车' |
| | | when businessType = 3 then '跨城出行' |
| | | when businessType = 4 then '同城小件物流' |
| | | when businessType = 5 then '跨城小件物流' |
| | | when businessType = 6 then '包车' |
| | | when businessType = 4 then '市内小件物流' |
| | | else '' end),' :',sort)) as str,openCityId from t_open_city_business where flag != 3 GROUP BY openCityId |
| | | ) as ocb on ocb.openCityId = oc.id) as o |
| | | <where> |
| | |
| | | AND (o.insertTime between CONCAT(#{beginTime},' 00:00:00') and CONCAT(#{endTime},' 23:59:59')) |
| | | </if> |
| | | <if test="condition != null and condition != ''"> |
| | | and (o.areaName LIKE CONCAT('%',#{condition},'%') or o.cityName LIKE CONCAT('%',#{condition},'%') or o.provinceName LIKE CONCAT('%',#{condition},'%')) |
| | | and (b.chineseName LIKE CONCAT('%',#{condition},'%') or b.englishName LIKE CONCAT('%',#{condition},'%') or b.frenchName LIKE CONCAT('%',#{condition},'%')) |
| | | </if> |
| | | </where> |
| | | order by o.id desc |
| | |
| | | <select id="getBusinessByCityId" resultType="map"> |
| | | SELECT DATE_FORMAT(bb.insertTime,'%Y-%m-%d') as insertTimeStr, |
| | | case when bb.businessType = 1 then '专车' |
| | | when bb.businessType = 2 then '出租车' |
| | | when bb.businessType = 3 then '跨城出行' |
| | | when bb.businessType = 4 then '同城小件物流' |
| | | when bb.businessType = 5 then '跨城小件物流' |
| | | when bb.businessType = 6 then '包车' |
| | | when bb.businessType = 4 then '市内小件物流' |
| | | else '' end as businessTypeStr,bb.* |
| | | FROM t_open_city_business as bb where bb.openCityId = #{openCityId} and bb.flag != 3 |
| | | </select> |
| | |
| | | when ot.payType = 3 then '余额' else '' end as payTypeStr, |
| | | ui.nickName as userName,ui.phone as userPhone, |
| | | CONCAT(di.`name`,'-',di.phone) as driver,CONCAT(cb.`name`,'-',ci.carLicensePlate) as car, |
| | | '市内小件物流' as typeStr, |
| | | dd.name as companyName, |
| | | ot.* FROM t_order_logistics as ot |
| | | LEFT JOIN t_user as ui on ui.id = ot.userId |
| | | LEFT JOIN t_driver as di on di.id = ot.driverId |
| | | LEFT JOIN t_car as ci on ci.id= ot.carId |
| | | LEFT JOIN t_car_brand as cb on cb.id = ci.carBrandId |
| | | LEFT JOIN t_company as cc on cc.id = ot.companyId |
| | | LEFT JOIN t_company as dd on dd.id = ci.companyId |
| | | where ot.id = #{orderId} |
| | | </select> |
| | | |
| | |
| | | LEFT JOIN t_server_carmodel as sc on sc.id = ot.serverCarModelId |
| | | LEFT JOIN (SELECT ii.money,ii.incomeId,cc.type FROM t_income as ii |
| | | LEFT JOIN t_company as cc on ii.objectId = cc.id |
| | | where ii.userType = 1 and ii.type = 2 and ii.orderType = 1 GROUP BY ii.incomeId) as income1 on income1.incomeId = ot.id |
| | | LEFT JOIN (SELECT * FROM t_income where userType = 2 and type = 2 and orderType = 1 GROUP BY incomeId) as income2 on income2.incomeId = ot.id |
| | | where ii.userType = 1 and ii.type = 2 and ii.orderType = 1) as income1 on income1.incomeId = ot.id |
| | | LEFT JOIN (SELECT incomeId, money FROM t_income where userType = 2 and type = 2 and orderType = 1) as income2 on income2.incomeId = ot.id |
| | | where ot.id = #{orderId} |
| | | </select> |
| | | |
| | |
| | | a.orderType as orderType, |
| | | a.orderId as orderId, |
| | | b.phone as phone, |
| | | b.nickName as nickName, |
| | | b.name as name |
| | | b.nickName as nickName |
| | | from |
| | | t_pub_transaction_details a |
| | | inner join |
| | |
| | | <result column="emergencyContact" property="emergencyContact" /> |
| | | <result column="emergencyContactNumber" property="emergencyContactNumber" /> |
| | | <result column="isAuth" property="isAuth" /> |
| | | <result column="name" property="name" /> |
| | | <result column="lastName" property="lastName" /> |
| | | <result column="firstName" property="firstName" /> |
| | | <result column="idCard" property="idCard" /> |
| | | <result column="idCardFront" property="idCardFront" /> |
| | | <result column="idCardReverse" property="idCardReverse" /> |
| | |
| | | @TableField("orderId") |
| | | private Integer orderId; |
| | | /** |
| | | * 订单类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城,6=包车) |
| | | * 订单类型(1=专车,4=市内小件物流) |
| | | */ |
| | | @TableField("orderType") |
| | | private Integer orderType; |
| | |
| | | package com.stylefeng.guns.modular.system.model; |
| | | |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | import java.util.Date; |
| | | import com.baomidou.mybatisplus.annotations.TableId; |
| | |
| | | private Integer addObjectId; |
| | | |
| | | private Integer authState; |
| | | /** |
| | | * 上传司机id |
| | | */ |
| | | @TableField("driverId") |
| | | private Integer driverId; |
| | | |
| | | public Integer getAuthState() { |
| | | return authState; |
| | |
| | | this.commercialType = commercialType; |
| | | } |
| | | |
| | | public Integer getDriverId() { |
| | | return driverId; |
| | | } |
| | | |
| | | public void setDriverId(Integer driverId) { |
| | | this.driverId = driverId; |
| | | } |
| | | |
| | | @Override |
| | | protected Serializable pkVal() { |
| | | return this.id; |
| | |
| | | */ |
| | | private Integer carId; |
| | | /** |
| | | * 类型(1=专车,2=出租车,3=城际(跨城出行),4=小件物流-同城,5=小件物流-跨城,6=包车) |
| | | * 类型(1=专车,4=市内小件物流) |
| | | */ |
| | | private Integer type; |
| | | /** |
| | |
| | | */ |
| | | private Integer areaCode; |
| | | /** |
| | | * 城市id |
| | | */ |
| | | private Integer cityId; |
| | | /** |
| | | * 1=正常,2=删除 |
| | | */ |
| | | private Integer state; |
| | |
| | | this.state = state; |
| | | } |
| | | |
| | | public Integer getCityId() { |
| | | return cityId; |
| | | } |
| | | |
| | | public void setCityId(Integer cityId) { |
| | | this.cityId = cityId; |
| | | } |
| | | |
| | | @Override |
| | | protected Serializable pkVal() { |
| | | return this.id; |
| | |
| | | */ |
| | | private Integer driverId; |
| | | /** |
| | | * 类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城,6=包车) |
| | | * 类型(1=专车,4=市内小件物流) |
| | | */ |
| | | private Integer type; |
| | | |
| | |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | /** |
| | | * 城市code(6位) |
| | | */ |
| | | private String code; |
| | | /** |
| | | * 经度 |
| | | */ |
| | | private Double lon; |
| | |
| | | */ |
| | | private Integer isQualifications; |
| | | /** |
| | | * 省份名称 |
| | | */ |
| | | private Integer areaId; |
| | | private String areaName; |
| | | /** |
| | | * 市名称 |
| | | */ |
| | | private Integer cityId; |
| | | private String cityName; |
| | | /** |
| | | * 区县名称 |
| | | */ |
| | | private Integer provinceId; |
| | | private String provinceName; |
| | | /** |
| | | * 1:创建,2:修改,3:删除 |
| | | */ |
| | |
| | | private Date updateTime; |
| | | private Integer updateUser; |
| | | |
| | | public Integer getAreaId() { |
| | | return areaId; |
| | | } |
| | | |
| | | public void setAreaId(Integer areaId) { |
| | | this.areaId = areaId; |
| | | } |
| | | |
| | | public Integer getCityId() { |
| | | return cityId; |
| | | } |
| | |
| | | this.cityId = cityId; |
| | | } |
| | | |
| | | public Integer getProvinceId() { |
| | | return provinceId; |
| | | } |
| | | |
| | | public void setProvinceId(Integer provinceId) { |
| | | this.provinceId = provinceId; |
| | | } |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public String getCode() { |
| | | return code; |
| | | } |
| | | |
| | | public void setCode(String code) { |
| | | this.code = code; |
| | | } |
| | | |
| | | public Double getLon() { |
| | |
| | | |
| | | public void setIsQualifications(Integer isQualifications) { |
| | | this.isQualifications = isQualifications; |
| | | } |
| | | |
| | | public String getAreaName() { |
| | | return areaName; |
| | | } |
| | | |
| | | public void setAreaName(String areaName) { |
| | | this.areaName = areaName; |
| | | } |
| | | |
| | | public String getCityName() { |
| | | return cityName; |
| | | } |
| | | |
| | | public void setCityName(String cityName) { |
| | | this.cityName = cityName; |
| | | } |
| | | |
| | | public String getProvinceName() { |
| | | return provinceName; |
| | | } |
| | | |
| | | public void setProvinceName(String provinceName) { |
| | | this.provinceName = provinceName; |
| | | } |
| | | |
| | | public String getFlag() { |
| | |
| | | public String toString() { |
| | | return "TOpenCity{" + |
| | | "id=" + id + |
| | | ", code=" + code + |
| | | ", lon=" + lon + |
| | | ", lat=" + lat + |
| | | ", isQualifications=" + isQualifications + |
| | | ", areaName=" + areaName + |
| | | ", cityName=" + cityName + |
| | | ", provinceName=" + provinceName + |
| | | ", flag=" + flag + |
| | | ", insertTime=" + insertTime + |
| | | ", insertUser=" + insertUser + |
| | |
| | | */ |
| | | private Integer openCityId; |
| | | /** |
| | | * 业务类型(1=专车,2=出租车,3=跨城出行,4=同城小件物流,5=跨城小件物流,6=包车) |
| | | * 业务类型(1=专车,4=市内小件物流) |
| | | */ |
| | | private Integer businessType; |
| | | /** |
| | |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | /** |
| | | * 订单类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城,6=包车) |
| | | * 订单类型(1=专车,4=市内小件物流) |
| | | */ |
| | | private Integer orderType; |
| | | /** |
| | |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | /** |
| | | * 订单类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城,6=包车) |
| | | * 订单类型(1=专车,4=市内小件物流) |
| | | */ |
| | | private Integer orderType; |
| | | /** |
| | |
| | | */ |
| | | private Integer userId; |
| | | /** |
| | | * 业务类型(1=专车,2=出租车,3=跨城出行,4=同城小件物流,5=跨城小件物流,6=包车) |
| | | * 业务类型(1=专车,4=市内小件物流) |
| | | */ |
| | | private Integer orderType; |
| | | /** |
| | |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | /** |
| | | * 业务类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城,6=包车) |
| | | * 业务类型(1=专车,4=市内小件物流) |
| | | */ |
| | | private Integer type; |
| | | /** |
| | |
| | | */ |
| | | private Integer isAuth; |
| | | /** |
| | | * 真实姓名 |
| | | * 姓氏 |
| | | */ |
| | | private String name; |
| | | private String lastName; |
| | | /** |
| | | * 名字 |
| | | */ |
| | | private String firstName; |
| | | /** |
| | | * 身份证号 |
| | | */ |
| | |
| | | this.isAuth = isAuth; |
| | | } |
| | | |
| | | public String getName() { |
| | | return name; |
| | | public String getLastName() { |
| | | return lastName; |
| | | } |
| | | |
| | | public void setName(String name) { |
| | | this.name = name; |
| | | public void setLastName(String lastName) { |
| | | this.lastName = lastName; |
| | | } |
| | | |
| | | public String getFirstName() { |
| | | return firstName; |
| | | } |
| | | |
| | | public void setFirstName(String firstName) { |
| | | this.firstName = firstName; |
| | | } |
| | | |
| | | public String getIdCard() { |
| | |
| | | ", emergencyContact='" + emergencyContact + '\'' + |
| | | ", emergencyContactNumber='" + emergencyContactNumber + '\'' + |
| | | ", isAuth=" + isAuth + |
| | | ", name='" + name + '\'' + |
| | | ", idCard='" + idCard + '\'' + |
| | | ", idCardFront='" + idCardFront + '\'' + |
| | | ", idCardReverse='" + idCardReverse + '\'' + |
| | |
| | | package com.stylefeng.guns.modular.system.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.system.dao.TCarColorMapper; |
| | | import com.stylefeng.guns.modular.system.model.TCarColor; |
| | | import com.stylefeng.guns.modular.system.service.ITCarColorService; |
| | |
| | | @Override |
| | | public Map<String, Object> list(String createTime, String name, Integer offset, Integer limit) throws Exception { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | List<Map<String, Object>> list = tCarColorMapper.list(createTime, name, offset, limit); |
| | | int i = tCarColorMapper.listCount(createTime, name); |
| | | String start = ""; |
| | | String end = ""; |
| | | if(ToolUtil.isNotEmpty(createTime)){ |
| | | start = createTime.split(" - ")[0]; |
| | | end = createTime.split(" - ")[1]; |
| | | } |
| | | List<Map<String, Object>> list = tCarColorMapper.list(start, end, name, offset, limit); |
| | | int i = tCarColorMapper.listCount(start, end, name); |
| | | map.put("rows", list); |
| | | map.put("total", i); |
| | | return map; |
New file |
| | |
| | | package com.stylefeng.guns.modular.system.util; |
| | | |
| | | import javax.mail.*; |
| | | import javax.mail.internet.InternetAddress; |
| | | import javax.mail.internet.MimeBodyPart; |
| | | import javax.mail.internet.MimeMessage; |
| | | import javax.mail.internet.MimeMultipart; |
| | | import java.util.Date; |
| | | import java.util.Properties; |
| | | |
| | | /** |
| | | * 邮件工具类 |
| | | */ |
| | | public class EmailUtil { |
| | | |
| | | /* |
| | | * gmail邮箱SSL方式 |
| | | */ |
| | | private static void gmailssl(Properties props) { |
| | | final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; |
| | | props.put("mail.debug", "true"); |
| | | props.put("mail.smtp.host", "smtp.gmail.com"); |
| | | props.put("mail.smtp.ssl.enable", "true"); |
| | | props.put("mail.smtp.socketFactory.class", SSL_FACTORY); |
| | | props.put("mail.smtp.port", "465"); |
| | | props.put("mail.smtp.socketFactory.port", "465"); |
| | | props.put("mail.smtp.auth", "true"); |
| | | } |
| | | |
| | | |
| | | //gmail邮箱的TLS方式 |
| | | private static void gmailtls(Properties props) { |
| | | props.put("mail.smtp.auth", "true"); |
| | | props.put("mail.smtp.starttls.enable", "true"); |
| | | props.put("mail.smtp.host", "smtp.gmail.com"); |
| | | props.put("mail.smtp.port", "587"); |
| | | } |
| | | |
| | | /** |
| | | * 创建邮件内容 |
| | | * |
| | | * @param sentToEmail 接收人邮箱 |
| | | * @param subject 设置邮件主题 |
| | | * @param content 内容 |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public static boolean send(String sentToEmail, String subject, String content) throws Exception { |
| | | //1.创建一封邮件的实例对象 |
| | | Properties props = new Properties(); |
| | | //选择ssl方式 |
| | | gmailssl(props); |
| | | |
| | | final String username = "southwindservice@gmail.com";// gmail 邮箱 |
| | | final String password = "ogsntijmguisoiuk";// Google应用专用密码 |
| | | // 当做多商户的时候需要使用getInstance, 如果只是一个邮箱发送的话就用getDefaultInstance |
| | | // Session.getDefaultInstance 会将username,password保存在session会话中 |
| | | // Session.getInstance 不进行保存 |
| | | Session session = Session.getInstance(props, |
| | | new Authenticator() { |
| | | protected PasswordAuthentication getPasswordAuthentication() { |
| | | return new PasswordAuthentication(username, password); |
| | | } |
| | | }); |
| | | MimeMessage msg = new MimeMessage(session); |
| | | //2.设置发件人地址 |
| | | msg.setFrom(new InternetAddress(sentToEmail)); |
| | | /** |
| | | * 3.设置收件人地址(可以增加多个收件人、抄送、密送),即下面这一行代码书写多行 |
| | | * MimeMessage.RecipientType.TO:发送 |
| | | * MimeMessage.RecipientType.CC:抄送 |
| | | * MimeMessage.RecipientType.BCC:密送 |
| | | */ |
| | | msg.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(sentToEmail)); |
| | | //4.设置邮件主题 |
| | | msg.setSubject(subject, "UTF-8"); |
| | | // 6. 创建文本"节点" |
| | | MimeBodyPart text = new MimeBodyPart(); |
| | | // 这里添加图片的方式是将整个图片包含到邮件内容中, 实际上也可以以 http 链接的形式添加网络图片 |
| | | text.setContent(content, "text/html;charset=UTF-8"); |
| | | // 7. (文本+图片)设置 文本 和 图片"节点"的关系(将 文本 和 图片"节点"合成一个混合"节点") |
| | | MimeMultipart mm_text_image = new MimeMultipart(); |
| | | mm_text_image.addBodyPart(text); |
| | | mm_text_image.setSubType("related"); // 关联关系 |
| | | // 11. 设置整个邮件的关系(将最终的混合"节点"作为邮件的内容添加到邮件对象) |
| | | msg.setContent(mm_text_image); |
| | | //设置邮件的发送时间,默认立即发送 |
| | | msg.setSentDate(new Date()); |
| | | |
| | | Transport.send(msg); |
| | | return true; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.system.util.GoogleMap; |
| | | |
| | | public class AddressComponentsVo { |
| | | /** |
| | | * 长名称 |
| | | */ |
| | | private String longName; |
| | | /** |
| | | * 短名称 |
| | | */ |
| | | private String shortName; |
| | | |
| | | public String getLongName() { |
| | | return longName; |
| | | } |
| | | |
| | | public void setLongName(String longName) { |
| | | this.longName = longName; |
| | | } |
| | | |
| | | public String getShortName() { |
| | | return shortName; |
| | | } |
| | | |
| | | public void setShortName(String shortName) { |
| | | this.shortName = shortName; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.system.util.GoogleMap; |
| | | |
| | | public class DistancematrixVo { |
| | | /** |
| | | * 预估时间(秒) |
| | | */ |
| | | private Long duration; |
| | | |
| | | /** |
| | | * 预估里程(米) |
| | | */ |
| | | private Long distance; |
| | | |
| | | public Long getDuration() { |
| | | return duration; |
| | | } |
| | | |
| | | public void setDuration(Long duration) { |
| | | this.duration = duration; |
| | | } |
| | | |
| | | public Long getDistance() { |
| | | return distance; |
| | | } |
| | | |
| | | public void setDistance(Long distance) { |
| | | this.distance = distance; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.system.util.GoogleMap; |
| | | |
| | | public class FindPlaceFromTextVo { |
| | | /** |
| | | * 名称 |
| | | */ |
| | | private String name; |
| | | /** |
| | | * 详细地址 |
| | | */ |
| | | private String address; |
| | | /** |
| | | * 纬度 |
| | | */ |
| | | private Double lat; |
| | | /** |
| | | * 经度 |
| | | */ |
| | | private Double lng; |
| | | |
| | | public String getName() { |
| | | return name; |
| | | } |
| | | |
| | | public void setName(String name) { |
| | | this.name = name; |
| | | } |
| | | |
| | | public String getAddress() { |
| | | return address; |
| | | } |
| | | |
| | | public void setAddress(String address) { |
| | | this.address = address; |
| | | } |
| | | |
| | | public Double getLat() { |
| | | return lat; |
| | | } |
| | | |
| | | public void setLat(Double lat) { |
| | | this.lat = lat; |
| | | } |
| | | |
| | | public Double getLng() { |
| | | return lng; |
| | | } |
| | | |
| | | public void setLng(Double lng) { |
| | | this.lng = lng; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.system.util.GoogleMap; |
| | | |
| | | public class GeocodeVo { |
| | | /** |
| | | * 纬度 |
| | | */ |
| | | private double lat; |
| | | /** |
| | | * 经度 |
| | | */ |
| | | private double lng; |
| | | |
| | | public double getLat() { |
| | | return lat; |
| | | } |
| | | |
| | | public void setLat(double lat) { |
| | | this.lat = lat; |
| | | } |
| | | |
| | | public double getLng() { |
| | | return lng; |
| | | } |
| | | |
| | | public void setLng(double lng) { |
| | | this.lng = lng; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.system.util.GoogleMap; |
| | | |
| | | import com.google.gson.Gson; |
| | | import com.google.gson.GsonBuilder; |
| | | import com.google.maps.*; |
| | | import com.google.maps.model.*; |
| | | |
| | | /** |
| | | * 谷歌地图工具类 |
| | | */ |
| | | public class GoogleMapUtil { |
| | | |
| | | private final static String key = "AIzaSyA_FEliOkbkL1IAHQsnBpbpo9MlIp729H0"; |
| | | |
| | | |
| | | /** |
| | | * 地理编码(地址获取位置坐标) |
| | | * @param address 地址信息 |
| | | * @throws Exception |
| | | */ |
| | | public static GeocodeVo getGeocode(String address) throws Exception{ |
| | | GeoApiContext context = new GeoApiContext.Builder() |
| | | .apiKey(key) |
| | | .build(); |
| | | GeocodingResult[] results = GeocodingApi.geocode(context, address).await(); |
| | | GeocodeVo vo = null; |
| | | if(results.length > 0){ |
| | | Gson gson = new GsonBuilder().setPrettyPrinting().create(); |
| | | System.out.println(gson.toJson(results[0].addressComponents)); |
| | | |
| | | Geometry geometry = results[0].geometry; |
| | | LatLng location = geometry.location; |
| | | vo = new GeocodeVo(); |
| | | vo.setLat(location.lat); |
| | | vo.setLng(location.lng); |
| | | } |
| | | context.shutdown(); |
| | | return vo; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 逆地理编码获取地址信息 |
| | | * @param lat 纬度 |
| | | * @param lng 经度 |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public static ReverseGeocodeVo getReverseGeocode(double lat, double lng) throws Exception{ |
| | | GeoApiContext context = new GeoApiContext.Builder() |
| | | .apiKey(key) |
| | | .build(); |
| | | GeocodingApiRequest request = GeocodingApi.reverseGeocode(context, new LatLng(lat, lng)); |
| | | GeocodingResult[] results = request.await(); |
| | | ReverseGeocodeVo vo = null; |
| | | if(results.length > 0){ |
| | | Gson gson = new GsonBuilder().setPrettyPrinting().create(); |
| | | System.out.println(gson.toJson(results[0].addressComponents)); |
| | | |
| | | |
| | | vo = new ReverseGeocodeVo(); |
| | | AddressComponent[] addressComponents = results[0].addressComponents; |
| | | AddressComponentsVo[] addressComponentsVos = new AddressComponentsVo[addressComponents.length]; |
| | | for (int i = 0; i < addressComponents.length; i++) { |
| | | AddressComponentsVo addressComponentsVo = new AddressComponentsVo(); |
| | | addressComponentsVo.setLongName(addressComponents[i].longName); |
| | | addressComponentsVo.setShortName(addressComponents[i].shortName); |
| | | addressComponentsVos[i] = addressComponentsVo; |
| | | } |
| | | String address = results[0].formattedAddress; |
| | | vo.setAddressComponentsVos(addressComponentsVos); |
| | | vo.setAddress(address); |
| | | } |
| | | context.shutdown(); |
| | | return vo; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 搜索地图获取地图结果 |
| | | * @param input |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public static FindPlaceFromTextVo findplacefromtext(String input) throws Exception{ |
| | | GeoApiContext context = new GeoApiContext.Builder() |
| | | .apiKey(key) |
| | | .build(); |
| | | FindPlaceFromTextRequest request = new FindPlaceFromTextRequest(context); |
| | | request.input(input); |
| | | request.inputType(FindPlaceFromTextRequest.InputType.TEXT_QUERY); |
| | | FindPlaceFromText findPlaceFromText = request.await(); |
| | | PlacesSearchResult[] candidates = findPlaceFromText.candidates; |
| | | FindPlaceFromTextVo vo = null; |
| | | if(candidates.length > 0){ |
| | | vo = new FindPlaceFromTextVo(); |
| | | String formattedAddress = candidates[0].formattedAddress; |
| | | String name = candidates[0].name; |
| | | Geometry geometry = candidates[0].geometry; |
| | | LatLng location = geometry.location; |
| | | double lat = location.lat; |
| | | double lng = location.lng; |
| | | |
| | | vo.setName(name); |
| | | vo.setAddress(formattedAddress); |
| | | vo.setLat(lat); |
| | | vo.setLng(lng); |
| | | } |
| | | return vo; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 模糊搜索地图内容 |
| | | * @param query |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public static FindPlaceFromTextVo textsearch(String query) throws Exception{ |
| | | GeoApiContext context = new GeoApiContext.Builder() |
| | | .apiKey(key) |
| | | .build(); |
| | | TextSearchRequest request = new TextSearchRequest(context); |
| | | request.query(query); |
| | | PlacesSearchResponse placesSearchResponse = request.await(); |
| | | PlacesSearchResult[] results = placesSearchResponse.results; |
| | | FindPlaceFromTextVo vo = null; |
| | | if(results.length > 0){ |
| | | vo = new FindPlaceFromTextVo(); |
| | | String formattedAddress = results[0].formattedAddress; |
| | | String name = results[0].name; |
| | | Geometry geometry = results[0].geometry; |
| | | LatLng location = geometry.location; |
| | | double lat = location.lat; |
| | | double lng = location.lng; |
| | | |
| | | vo.setName(name); |
| | | vo.setAddress(formattedAddress); |
| | | vo.setLat(lat); |
| | | vo.setLng(lng); |
| | | } |
| | | return vo; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取两个地点之间的预估里程和预估时间 |
| | | * @param origin 起点 |
| | | * @param destination 终点 |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public static DistancematrixVo getDistancematrix(String origin, String destination) throws Exception{ |
| | | GeoApiContext context = new GeoApiContext.Builder() |
| | | .apiKey(key) |
| | | .build(); |
| | | DistanceMatrixApiRequest request = DistanceMatrixApi.getDistanceMatrix(context, new String[]{origin}, new String[]{destination}); |
| | | request.mode(TravelMode.DRIVING);//出行方式(驾车) |
| | | DistanceMatrix distanceMatrix = request.await(); |
| | | Gson gson = new GsonBuilder().setPrettyPrinting().create(); |
| | | System.out.println(gson.toJson(distanceMatrix)); |
| | | context.shutdown(); |
| | | |
| | | DistanceMatrixElement elements = distanceMatrix.rows[0].elements[0]; |
| | | DistancematrixVo vo = new DistancematrixVo(); |
| | | vo.setDistance(elements.distance.inMeters); |
| | | vo.setDuration(elements.duration.inSeconds); |
| | | return vo; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取两点之间的距离 |
| | | * @param sLat |
| | | * @param sLnt |
| | | * @param eLat |
| | | * @param eLnt |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public static DistancematrixVo getDistancematrix(Double sLat, Double sLnt, Double eLat, Double eLnt) throws Exception{ |
| | | ReverseGeocodeVo reverseGeocode = getReverseGeocode(sLat, sLnt); |
| | | ReverseGeocodeVo reverseGeocode1 = getReverseGeocode(eLat, eLnt); |
| | | if(null != reverseGeocode && null != reverseGeocode1){ |
| | | String origin = reverseGeocode.getAddress(); |
| | | String destination = reverseGeocode1.getAddress(); |
| | | return getDistancematrix(origin, destination); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取两地点之间的线路规划 |
| | | * @param origin 起点 要计算方向的位置ID、地址或文本纬度/经度值。目标参数的选项与原点参数的相同。 |
| | | * @param destination 终点 要计算方向的位置ID、地址或文本纬度/经度值。目标参数的选项与原点参数的相同。 |
| | | * |
| | | */ |
| | | public static void getDirections(String origin, String destination) throws Exception{ |
| | | GeoApiContext context = new GeoApiContext.Builder() |
| | | .apiKey(key) |
| | | .build(); |
| | | DirectionsApiRequest directions = DirectionsApi.getDirections(context, origin, destination); |
| | | directions.mode(TravelMode.DRIVING);//出行方式(驾车) |
| | | DirectionsResult result = directions.await(); |
| | | |
| | | Gson gson = new GsonBuilder().setPrettyPrinting().create(); |
| | | System.out.println(gson.toJson(result)); |
| | | context.shutdown(); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | public static void main(String[] ages){ |
| | | try { |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.system.util.GoogleMap; |
| | | |
| | | public class ReverseGeocodeVo { |
| | | /** |
| | | * 完整地址名称 |
| | | */ |
| | | private String address; |
| | | /** |
| | | * 分段地址名称数组 |
| | | */ |
| | | private AddressComponentsVo[] addressComponentsVos; |
| | | |
| | | |
| | | public String getAddress() { |
| | | return address; |
| | | } |
| | | |
| | | public void setAddress(String address) { |
| | | this.address = address; |
| | | } |
| | | |
| | | public AddressComponentsVo[] getAddressComponentsVos() { |
| | | return addressComponentsVos; |
| | | } |
| | | |
| | | public void setAddressComponentsVos(AddressComponentsVo[] addressComponentsVos) { |
| | | this.addressComponentsVos = addressComponentsVos; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.system.util; |
| | | |
| | | import com.obs.services.ObsClient; |
| | | import com.obs.services.model.PutObjectResult; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.util.UUID; |
| | | |
| | | public class OBSUploadUtil { |
| | | |
| | | //OSS图片访问域名 |
| | | public static String endPoint = "https://obs.af-south-1.myhuaweicloud.com"; |
| | | public static String accessKey = "RGQE7AADCGJB1TINX14N"; |
| | | public static String accessKeySecret = "oCaIH0CzUB02mTt2gDinMP5SybdrzuBP78UPZd3X"; |
| | | public static String bucketName="i-go"; |
| | | |
| | | |
| | | /** |
| | | * 流式上传 |
| | | * @param file |
| | | * @return |
| | | * @throws IOException |
| | | */ |
| | | public static String inputStreamUpload(MultipartFile file) throws IOException { |
| | | // 创建ObsClient实例 |
| | | ObsClient obsClient = new ObsClient(accessKey, accessKeySecret, endPoint); |
| | | String originalFilename = file.getOriginalFilename(); |
| | | String fileName = UUID.randomUUID().toString().replaceAll("-","") + originalFilename.subSequence(originalFilename.lastIndexOf("."), originalFilename.length()); |
| | | // 待上传的本地文件路径,需要指定到具体的文件名 |
| | | InputStream content = file.getInputStream();//获得指定文件的输入流 |
| | | PutObjectResult putObjectResult = obsClient.putObject(bucketName, fileName, content); |
| | | String objectUrl = putObjectResult.getObjectUrl(); |
| | | return objectUrl; |
| | | } |
| | | } |
| | |
| | | package com.stylefeng.guns.modular.system.util; |
| | | |
| | | public class PushURL { |
| | | public static String order_push_url = "http://116.63.168.184:8081/driver/base/order/pushOrderState"; |
| | | public static String driver_auth_url = "http://116.63.168.184:8081/driver/base/driver/sendsms"; |
| | | public static String withdraw_auth_url = "http://116.63.168.184:8081/driver/base/withdrawal/withdrawalAudit"; |
| | | public static String cancel_order_url = "http://116.63.168.184:8081/user/base/order/sendOrderState"; |
| | | public static String freeze_user_url = "http://116.63.168.184:8081/user/base/user/freeze"; |
| | | public static String zull_user_url = "http://116.63.168.184:8081"; |
| | | public static String order_push_url = "http://182.160.16.251:80/driver/base/order/pushOrderState"; |
| | | public static String driver_auth_url = "http://182.160.16.251:80/driver/base/driver/sendsms"; |
| | | public static String withdraw_auth_url = "http://182.160.16.251:80/driver/base/withdrawal/withdrawalAudit"; |
| | | public static String cancel_order_url = "http://182.160.16.251:80/user/base/order/sendOrderState"; |
| | | public static String freeze_user_url = "http://182.160.16.251:80/user/base/user/freeze"; |
| | | public static String zull_user_url = "http://182.160.16.251:80"; |
| | | |
| | | // public static String order_push_url = "http://express.feimadache.com:80/driver/base/order/pushOrderState"; |
| | | // public static String driver_auth_url = "http://express.feimadache.com:80/driver/base/driver/sendsms"; |
| | |
| | | @Autowired |
| | | private ITLocationService locationService; |
| | | |
| | | @Value("${pushMinistryOfTransport}") |
| | | private boolean pushMinistryOfTransport; |
| | | |
| | | @Autowired |
| | | private ITDriverService driverService; |
| | | |
| | |
| | | notice.setInsertTime(new Date()); |
| | | notice.setRead(1); |
| | | tSystemNoticeService.insert(notice); |
| | | |
| | | /*Map<String,Object> map = new HashMap<String,Object>(); |
| | | map.put("sound", userInfo.getIsVoice()); //是否有声音 1=否 2=是 |
| | | map.put("vibrate", userInfo.getIsShake()); //是否有震动 1=否 2=是 |
| | | map.put("type", 2); //消息类型 1=互动 2=公告 |
| | | map.put("id", record.getId()); //对象ID |
| | | JpushUtil.SendPushWithCustomForTransmission(String.valueOf(userInfo.getId()),"【超级过客】提醒您,您有一条新的公告消息。","通知消息",map);*/ |
| | | } |
| | | } |
| | | if (tNotices.getIsDriver() == 2){ |
| | |
| | | notice.setInsertTime(new Date()); |
| | | notice.setRead(1); |
| | | tSystemNoticeService.insert(notice); |
| | | |
| | | /*Map<String,Object> map = new HashMap<String,Object>(); |
| | | map.put("sound", userInfo.getIsVoice()); //是否有声音 1=否 2=是 |
| | | map.put("vibrate", userInfo.getIsShake()); //是否有震动 1=否 2=是 |
| | | map.put("type", 2); //消息类型 1=互动 2=公告 |
| | | map.put("id", record.getId()); //对象ID |
| | | JpushUtil.SendPushWithCustomForTransmission(String.valueOf(userInfo.getId()),"【超级过客】提醒您,您有一条新的公告消息。","通知消息",map);*/ |
| | | |
| | | if (tNotices.getIsBroadcast() == 1){ |
| | | //增加极光推送 |
| | |
| | | |
| | | spring: |
| | | profiles: |
| | | active: local |
| | | # active: dev |
| | | active: produce |
| | | mvc: |
| | | static-path-pattern: /static/** |
| | | view: |
| | |
| | | configuration.map-underscore-to-camel-case: true #是否开启自动驼峰命名规则(camel case)映射 |
| | | log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl #输出Sql,如需打印Sql注释该配置 |
| | | |
| | | logging: |
| | | level.root: error |
| | | level.com.stylefeng: debug |
| | | path: logs/ |
| | | file: guns.log |
| | | |
| | | |
| | | #eureka: |
| | | # client: |
| | |
| | | |
| | | --- |
| | | |
| | | #spring: |
| | | # profiles: local |
| | | # datasource: |
| | | # url: jdbc:mysql://Rm-wz9rpe0t74ys3b1h8go.mysql.rds.aliyuncs.com:3306/oktravel?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8 |
| | | # username: root |
| | | # password: Root2020! |
| | | # db-name: oktravel #用来搜集数据库的所有表 |
| | | # filters: wall,mergeStat |
| | | spring: |
| | | datasource: |
| | | url: jdbc:mysql://127.0.0.1:3306/igotravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai |
| | | username: root |
| | | password: HjKbXilb9zajmXbl |
| | | db-name: guns #用来搜集数据库的所有表 |
| | | filters: wall,mergeStat |
| | | |
| | | ################# 测试环境 ################### |
| | | spring: |
| | | profiles: local |
| | | datasource: |
| | | url: jdbc:mysql://192.168.0.80:3306/igotravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai |
| | | username: root |
| | | password: 123456 |
| | | db-name: igotravel #用来搜集数据库的所有表 |
| | | filters: wall,mergeStat |
| | | #spring: |
| | | # datasource: |
| | | # url: jdbc:mysql://127.0.0.1:3306/igotravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai |
| | | # username: root |
| | | # password: 123456 |
| | | # db-name: igotravel #用来搜集数据库的所有表 |
| | | # filters: wall,mergeStat |
| | | |
| | | |
| | | #多数据源情况的配置 |
| | |
| | | - dataSourceGuns |
| | | - dataSourceBiz |
| | | |
| | | --- |
| | | |
| | | spring: |
| | | profiles: produce |
| | | datasource: |
| | | url: jdbc:mysql://120.24.34.190:3306/mask?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: Root2020! |
| | | db-name: mask #用来搜集数据库的所有表 |
| | | filters: wall,mergeStat |
| | | |
| | | --- |
| | | |
| | | #filePath: /usr/local/server/orderPostionFile/ #存储订单轨迹文件路径 |
| | | filePath: C:/orderPostionFile/ #存储订单轨迹文件路径 |
| | | |
| | | |
| | | #交通部推送数据功能开关 |
| | | pushMinistryOfTransport: false |
| | | filePath: /usr/local/server/orderPostionFile/ #存储订单轨迹文件路径 |
| | | #filePath: d:/orderPostionFile/ #存储订单轨迹文件路径 |
| | | |
| | | #quartz配置 |
| | | spring: |
| | |
| | | threadsInheritContextClassLoaderOfInitializingThread: true |
| | | job-store-type: jdbc |
| | | |
| | | --- |
| | | |
| | | spring: |
| | | mail: |
| | | host: smtp.gmail.com # 配置 smtp 服务器地址 |
| | | port: 465 # smtp 服务器的端口 |
| | | username: southwindservice@gmail.com # 配置邮箱用户名(你的邮箱地址) |
| | | password: ogsntijmguisoiuk # 配置申请到的授权码(刚让复制的授权码) |
| | | default-encoding: UTF-8 # 配置邮件编码 |
| | | properties: |
| | | mail: |
| | | smtp: |
| | | socketFactoryClass: javax.net.ssl.SSLSocketFactory # 配饰 SSL 加密工厂 |
| | | debug: true |
| | | from: southwindservice@gmail.com # 发送方邮件,配在yml中可方便更改 |
| | | template-path: /usr/local/nginx/html/mailbox/ |
| | | |
| | | --- |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <configuration> |
| | | <!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,比如: 如果设置为WARN,则低于WARN的信息都不会输出 --> |
| | | <!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true --> |
| | | <!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 --> |
| | | <!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 --> |
| | | <configuration scan="true" scanPeriod="10 seconds"> |
| | | <contextName>logback</contextName> |
| | | |
| | | <!--定义日志存放的位置--> |
| | | <springProperty scope="context" name="gunsLogPath" source="log.path" defaultValue="guns-logs"/> |
| | | <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 --> |
| | | <property name="log.path" value="/usr/local/server/logs/admin"/> |
| | | |
| | | <!-- ****************************************************************************************** --> |
| | | <!-- ****************************** 本地开发只在控制台打印日志 ******************************** --> |
| | | <!-- ****************************************************************************************** --> |
| | | <springProfile name="local"> |
| | | <!--0. 日志格式和颜色渲染 --> |
| | | <!-- 彩色日志依赖的渲染类 --> |
| | | <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /> |
| | | <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /> |
| | | <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /> |
| | | <!-- 彩色日志格式 --> |
| | | <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> |
| | | |
| | | <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> |
| | | <!--encoder 默认配置为PatternLayoutEncoder--> |
| | | <encoder> |
| | | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %logger Line:%-3L - %msg%n</pattern> |
| | | <charset>utf-8</charset> |
| | | </encoder> |
| | | </appender> |
| | | <!--1. 输出到控制台--> |
| | | <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> |
| | | <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--> |
| | | <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> |
| | | <level>debug</level> |
| | | </filter> |
| | | <encoder> |
| | | <Pattern>${CONSOLE_LOG_PATTERN}</Pattern> |
| | | <!-- 设置字符集 --> |
| | | <charset>UTF-8</charset> |
| | | </encoder> |
| | | </appender> |
| | | |
| | | <!-- 日志记录器,日期滚动记录 --> |
| | | <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <!-- 正在记录的日志文件的路径及文件名 --> |
| | | <file>${gunsLogPath}/log_error.log</file> |
| | | <!-- 日志记录器的滚动策略,按日期,按大小记录 --> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| | | <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。 |
| | | 而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 --> |
| | | <fileNamePattern>${gunsLogPath}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
| | | <!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始, |
| | | 命名日志文件,例如log-error-2013-12-21.0.log --> |
| | | <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
| | | <maxFileSize>2MB</maxFileSize> |
| | | </timeBasedFileNamingAndTriggeringPolicy> |
| | | </rollingPolicy> |
| | | <!-- 追加方式记录日志 --> |
| | | <append>true</append> |
| | | <!-- 日志文件的格式 --> |
| | | <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> |
| | | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern> |
| | | <charset>utf-8</charset> |
| | | </encoder> |
| | | <!-- 日志文件记录级别配置。 |
| | | 日志级别:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF |
| | | onMatch="ACCEPT" 表示匹配该级别及以上 |
| | | onMatch="DENY" 表示不匹配该级别及以上 |
| | | onMatch="NEUTRAL" 表示该级别及以上的,由下一个filter处理,如果当前是最后一个,则表示匹配该级别及以上 |
| | | onMismatch="ACCEPT" 表示匹配该级别以下 |
| | | onMismatch="NEUTRAL" 表示该级别及以下的,由下一个filter处理,如果当前是最后一个,则不匹配该级别以下的 |
| | | onMismatch="DENY" 表示不匹配该级别以下的 |
| | | --> |
| | | <filter class="ch.qos.logback.classic.filter.LevelFilter"> |
| | | <level>ERROR</level> |
| | | <onMatch>ACCEPT</onMatch> |
| | | <onMismatch>DENY</onMismatch> |
| | | </filter> |
| | | </appender> |
| | | <!--2. 输出到文档--> |
| | | <!-- 2.1 level为 DEBUG 日志,时间滚动输出 --> |
| | | <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <!-- 正在记录的日志文档的路径及文档名 --> |
| | | <file>${log.path}/debug.log</file> |
| | | <!--日志文档输出格式--> |
| | | <encoder> |
| | | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
| | | <charset>UTF-8</charset> <!-- 设置字符集 --> |
| | | </encoder> |
| | | <!-- 日志记录器的滚动策略,按日期,按大小记录 --> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| | | <!-- 日志归档 --> |
| | | <fileNamePattern>${log.path}/%d{yyyy-MM-dd}/debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
| | | <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
| | | <maxFileSize>100MB</maxFileSize> |
| | | </timeBasedFileNamingAndTriggeringPolicy> |
| | | <!--日志文档保留天数--> |
| | | <maxHistory>15</maxHistory> |
| | | </rollingPolicy> |
| | | <!-- 此日志文档只记录debug级别的 --> |
| | | <filter class="ch.qos.logback.classic.filter.LevelFilter"> |
| | | <level>debug</level> |
| | | <onMatch>ACCEPT</onMatch> |
| | | <onMismatch>DENY</onMismatch> |
| | | </filter> |
| | | </appender> |
| | | |
| | | <root level="INFO"> |
| | | <appender-ref ref="STDOUT"/> |
| | | <appender-ref ref="FILE"/> |
| | | <!-- 2.2 level为 INFO 日志,时间滚动输出 --> |
| | | <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <!-- 正在记录的日志文档的路径及文档名 --> |
| | | <file>${log.path}/info.log</file> |
| | | <!--日志文档输出格式--> |
| | | <encoder> |
| | | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
| | | <charset>UTF-8</charset> |
| | | </encoder> |
| | | <!-- 日志记录器的滚动策略,按日期,按大小记录 --> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| | | <!-- 每天日志归档路径以及格式 --> |
| | | <fileNamePattern>${log.path}/%d{yyyy-MM-dd}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
| | | <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
| | | <maxFileSize>100MB</maxFileSize> |
| | | </timeBasedFileNamingAndTriggeringPolicy> |
| | | <!--日志文档保留天数--> |
| | | <maxHistory>15</maxHistory> |
| | | </rollingPolicy> |
| | | <!-- 此日志文档只记录info级别的 --> |
| | | <filter class="ch.qos.logback.classic.filter.LevelFilter"> |
| | | <level>info</level> |
| | | <onMatch>ACCEPT</onMatch> |
| | | <onMismatch>DENY</onMismatch> |
| | | </filter> |
| | | </appender> |
| | | |
| | | <!-- 2.3 level为 WARN 日志,时间滚动输出 --> |
| | | <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <!-- 正在记录的日志文档的路径及文档名 --> |
| | | <file>${log.path}/warn.log</file> |
| | | <!--日志文档输出格式--> |
| | | <encoder> |
| | | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
| | | <charset>UTF-8</charset> <!-- 此处设置字符集 --> |
| | | </encoder> |
| | | <!-- 日志记录器的滚动策略,按日期,按大小记录 --> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| | | <fileNamePattern>${log.path}/%d{yyyy-MM-dd}/warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
| | | <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
| | | <maxFileSize>100MB</maxFileSize> |
| | | </timeBasedFileNamingAndTriggeringPolicy> |
| | | <!--日志文档保留天数--> |
| | | <maxHistory>15</maxHistory> |
| | | </rollingPolicy> |
| | | <!-- 此日志文档只记录warn级别的 --> |
| | | <filter class="ch.qos.logback.classic.filter.LevelFilter"> |
| | | <level>warn</level> |
| | | <onMatch>ACCEPT</onMatch> |
| | | <onMismatch>DENY</onMismatch> |
| | | </filter> |
| | | </appender> |
| | | |
| | | <!-- 2.4 level为 ERROR 日志,时间滚动输出 --> |
| | | <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <!-- 正在记录的日志文档的路径及文档名 --> |
| | | <file>${log.path}/error.log</file> |
| | | <!--日志文档输出格式--> |
| | | <encoder> |
| | | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
| | | <charset>UTF-8</charset> <!-- 此处设置字符集 --> |
| | | </encoder> |
| | | <!-- 日志记录器的滚动策略,按日期,按大小记录 --> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| | | <fileNamePattern>${log.path}/%d{yyyy-MM-dd}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
| | | <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
| | | <maxFileSize>100MB</maxFileSize> |
| | | </timeBasedFileNamingAndTriggeringPolicy> |
| | | <!--日志文档保留天数--> |
| | | <maxHistory>15</maxHistory> |
| | | </rollingPolicy> |
| | | <!-- 此日志文档只记录ERROR级别的 --> |
| | | <filter class="ch.qos.logback.classic.filter.LevelFilter"> |
| | | <level>ERROR</level> |
| | | <onMatch>ACCEPT</onMatch> |
| | | <onMismatch>DENY</onMismatch> |
| | | </filter> |
| | | </appender> |
| | | |
| | | <!-- 2.5 所有 除了DEBUG级别的其它高于DEBUG的 日志,记录到一个文件 --> |
| | | <appender name="ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <!-- 正在记录的日志文档的路径及文档名 --> |
| | | <file>${log.path}/all.log</file> |
| | | <!--日志文档输出格式--> |
| | | <encoder> |
| | | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
| | | <charset>UTF-8</charset> <!-- 此处设置字符集 --> |
| | | </encoder> |
| | | <!-- 日志记录器的滚动策略,按日期,按大小记录 --> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| | | <fileNamePattern>${log.path}/%d{yyyy-MM-dd}/all-%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
| | | <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
| | | <maxFileSize>100MB</maxFileSize> |
| | | </timeBasedFileNamingAndTriggeringPolicy> |
| | | <!--日志文档保留天数--> |
| | | <maxHistory>15</maxHistory> |
| | | </rollingPolicy> |
| | | <!-- 此日志文档记录除了DEBUG级别的其它高于DEBUG的 --> |
| | | <filter class="ch.qos.logback.classic.filter.LevelFilter"> |
| | | <level>DEBUG</level> |
| | | <onMatch>DENY</onMatch> |
| | | <onMismatch>ACCEPT</onMismatch> |
| | | </filter> |
| | | </appender> |
| | | |
| | | <!-- |
| | | <logger>用来设置某一个包或者具体的某一个类的日志打印级别、 |
| | | 以及指定<appender>。<logger>仅有一个name属性, |
| | | 一个可选的level和一个可选的addtivity属性。 |
| | | name:用来指定受此logger约束的某一个包或者具体的某一个类。 |
| | | level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, |
| | | 还有一个特殊值INHERITED或者同义词NULL,代表强制执行上级的级别。 |
| | | 如果未设置此属性,那么当前logger将会继承上级的级别。 |
| | | addtivity:是否向上级logger传递打印信息。默认是true。 |
| | | <logger name="org.springframework.web" level="info"/> |
| | | <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/> |
| | | --> |
| | | |
| | | <!-- |
| | | root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性 |
| | | level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, |
| | | 不能设置为INHERITED或者同义词NULL。默认是DEBUG |
| | | 可以包含零个或多个元素,标识这个appender将会添加到这个logger。 |
| | | --> |
| | | |
| | | <!-- 4 最终的策略: |
| | | 基本策略(root级) + 根据profile在启动时, logger标签中定制化package日志级别(优先级高于上面的root级)--> |
| | | <springProfile name="dev"> |
| | | <root level="info"> |
| | | <appender-ref ref="CONSOLE" /> |
| | | <appender-ref ref="DEBUG_FILE" /> |
| | | <appender-ref ref="INFO_FILE" /> |
| | | <appender-ref ref="WARN_FILE" /> |
| | | <appender-ref ref="ERROR_FILE" /> |
| | | <appender-ref ref="ALL_FILE" /> |
| | | </root> |
| | | <logger name="com.stylefeng.guns.modular.system.dao" level="debug"/> |
| | | <logger name="business-log" level="warn"/> |
| | | </springProfile> |
| | | |
| | | <!-- ****************************************************************************************** --> |
| | | <!-- ********************** 放到服务器上不管在什么环境都只在文件记录日志 ********************** --> |
| | | <!-- ****************************************************************************************** --> |
| | | <springProfile name="!local"> |
| | | |
| | | <!-- 日志记录器,日期滚动记录 --> |
| | | <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <!-- 正在记录的日志文件的路径及文件名 --> |
| | | <file>${gunsLogPath}/log_error.log</file> |
| | | <!-- 日志记录器的滚动策略,按日期,按大小记录 --> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| | | <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。 |
| | | 而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 --> |
| | | <fileNamePattern>${gunsLogPath}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
| | | <!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始, |
| | | 命名日志文件,例如log-error-2013-12-21.0.log --> |
| | | <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
| | | <maxFileSize>2MB</maxFileSize> |
| | | </timeBasedFileNamingAndTriggeringPolicy> |
| | | </rollingPolicy> |
| | | <!-- 追加方式记录日志 --> |
| | | <append>true</append> |
| | | <!-- 日志文件的格式 --> |
| | | <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> |
| | | <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern> |
| | | <charset>utf-8</charset> |
| | | </encoder> |
| | | <!-- 此日志文件只记录error级别的 --> |
| | | <filter class="ch.qos.logback.classic.filter.LevelFilter"> |
| | | <level>error</level> |
| | | <onMatch>ACCEPT</onMatch> |
| | | <onMismatch>DENY</onMismatch> |
| | | </filter> |
| | | </appender> |
| | | |
| | | <!-- 日志记录器,日期滚动记录 --> |
| | | <appender name="FILE_ALL" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <!-- 正在记录的日志文件的路径及文件名 --> |
| | | <file>${gunsLogPath}/log_total.log</file> |
| | | <!-- 日志记录器的滚动策略,按日期,按大小记录 --> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| | | <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。 |
| | | 而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 --> |
| | | <fileNamePattern>${gunsLogPath}/total/log-total-%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
| | | <!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始, |
| | | 命名日志文件,例如log-error-2013-12-21.0.log --> |
| | | <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
| | | <maxFileSize>2MB</maxFileSize> |
| | | </timeBasedFileNamingAndTriggeringPolicy> |
| | | </rollingPolicy> |
| | | <!-- 追加方式记录日志 --> |
| | | <append>true</append> |
| | | <!-- 日志文件的格式 --> |
| | | <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> |
| | | <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern> |
| | | <charset>utf-8</charset> |
| | | </encoder> |
| | | </appender> |
| | | |
| | | <root level="INFO"> |
| | | <appender-ref ref="FILE_ERROR"/> |
| | | <appender-ref ref="FILE_ALL"/> |
| | | <springProfile name="fat"> |
| | | <root level="info"> |
| | | <appender-ref ref="CONSOLE" /> |
| | | <appender-ref ref="DEBUG_FILE" /> |
| | | <appender-ref ref="INFO_FILE" /> |
| | | <appender-ref ref="WARN_FILE" /> |
| | | <appender-ref ref="ERROR_FILE" /> |
| | | <appender-ref ref="ALL_FILE" /> |
| | | </root> |
| | | |
| | | <logger name="com.stylefeng.guns.modular.system.dao" level="debug"/> |
| | | <logger name="business-log" level="warn"/> |
| | | </springProfile> |
| | | |
| | | </configuration> |
| | | <springProfile name="produce"> |
| | | <root level="warn"> |
| | | <!-- 生产环境最好不配置console写文件 --> |
| | | <appender-ref ref="DEBUG_FILE" /> |
| | | <appender-ref ref="INFO_FILE" /> |
| | | <appender-ref ref="WARN_FILE" /> |
| | | <appender-ref ref="ERROR_FILE" /> |
| | | <appender-ref ref="ALL_FILE" /> |
| | | </root> |
| | | <logger name="com.stylefeng.guns.modular.system.dao" level="debug"/> |
| | | <logger name="business-log" level="warn"/> |
| | | </springProfile> |
| | | |
| | | |
| | | </configuration> |
| | |
| | | <small>专车订单数</small> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <h1 class="no-margins" id="orderDetail2">0</h1> |
| | | <small>出租车订单</small> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <h1 class="no-margins" id="orderDetail3">0</h1> |
| | | <small>跨城出行订单</small> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <h1 class="no-margins" id="orderDetail4">0</h1> |
| | | <small>同城小件物流订单</small> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <h1 class="no-margins" id="orderDetail5">0</h1> |
| | | <small>跨城小件物流订单</small> |
| | | <small>市内小件物流订单</small> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <small>专车订单数</small> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <h1 class="no-margins" id="orderDetail21">0</h1> |
| | | <small>出租车订单数</small> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <h1 class="no-margins" id="orderDetail31">0</h1> |
| | | <small>跨城出行订单数</small> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <h1 class="no-margins" id="orderDetail41">0</h1> |
| | | <small>同城小件物流订单数</small> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <h1 class="no-margins" id="orderDetail51">0</h1> |
| | | <small>跨城小件物流订单数</small> |
| | | <small>市内小件物流订单数</small> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <h1 class="no-margins" id="paiceSum1">0</h1> |
| | |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <h1 class="no-margins"> |
| | | <span class="dynamicsparkline" id="orderDetail22">Loading..</span> |
| | | </h1> |
| | | <small>出租车订单趋势图</small> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <h1 class="no-margins"> |
| | | <span class="dynamicsparkline" id="orderDetail32">Loading..</span> |
| | | </h1> |
| | | <small>跨城出行订单趋势图</small> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <h1 class="no-margins"> |
| | | <span class="dynamicsparkline" id="orderDetail42">Loading..</span> |
| | | </h1> |
| | | <small>同城小件物流订单趋势图</small> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <h1 class="no-margins"> |
| | | <span class="dynamicsparkline" id="orderDetail52">Loading..</span> |
| | | </h1> |
| | | <small>跨城小件物流订单趋势图</small> |
| | | <small>市内小件物流订单趋势图</small> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | <div class="col-sm-8" style="padding: 0px;"> |
| | | <div class="form-group" style="padding: 0px 5px;"> |
| | | <div id="container" style="height: 47em;"></div> |
| | | <div id="map" style="height: 47em;"></div> |
| | | </div> |
| | | </div> |
| | | <div class="col-sm-2" style="padding: 0px; height: 47em; overflow: auto"> |
| | |
| | | </div> |
| | | |
| | | <div class="row content" id="orderDiv"> |
| | | <div class="col-sm-8" style="padding: 0px;"> |
| | | <div class="form-group" style="padding: 0px 5px;"> |
| | | <div id="map1" style="height: 47em;width: 1800px;"></div> |
| | | </div> |
| | | </div> |
| | | <div class="form-group" style="height: 80px; padding-top: 20px; background-color: #FFFFFF;margin-bottom: 8px;"> |
| | | <div class="col-sm-12"> |
| | | <div id="container_" style="height: 47em;"></div> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=c59c0ec8058a8305009eb315584e07d1"></script> |
| | | <script src="https://webapi.amap.com/maps?v=1.4.15&key=c59c0ec8058a8305009eb315584e07d1&plugin=AMap.MouseTool"></script> |
| | | <script type="text/javascript" src='https://a.amap.com/jsapi_demos/static/citys.js'></script> |
| | | <script async src="https://maps.googleapis.com/maps/api/js?key=AIzaSyA_FEliOkbkL1IAHQsnBpbpo9MlIp729H0&callback=initMap&v=weekly"></script> |
| | | <script src="${ctxPath}/static/home.js"></script> |
| | | <script src="${ctxPath}/static/js/jquery.sparkline 2.1.2.js"></script> |
| | | @} |
| | |
| | | 专车累计在线 <input type="text" id="num4" class="form-control newWidth" /> 小时奖励 |
| | | <input type="text" id="num5" class="form-control newWidth" /> 元 |
| | | <br/> |
| | | <!-- |
| | | <br/> |
| | | 出租车累计在线 <input type="text" id="num6" class="form-control newWidth" /> 小时奖励 |
| | | <input type="text" id="num7" class="form-control newWidth" /> 元 |
| | |
| | | 跨城出行累计在线 <input type="text" id="num8" class="form-control newWidth" /> 小时奖励 |
| | | <input type="text" id="num9" class="form-control newWidth" /> 元 |
| | | <br/> |
| | | --> |
| | | <br/> |
| | | 司机累计达到规定订单数奖励 |
| | | <br/> |
| | |
| | | @} |
| | | name="zc7" class="form-control newWidth" readonly/> 元 |
| | | <br/> |
| | | <!-- |
| | | <br/> |
| | | 出租车累计在线 <input type="text" @if(isNotEmpty(online2)){ |
| | | value="${online2.online}" |
| | |
| | | @} |
| | | name="zc7" class="form-control newWidth" readonly/> 元 |
| | | <br/> |
| | | --> |
| | | <br/> |
| | | 司机累计达到规定订单数奖励 |
| | | <br/> |
| | |
| | | @} |
| | | name="zc7" id="num5" class="form-control newWidth"/> 元 |
| | | <br/> |
| | | <!-- |
| | | <br/> |
| | | 出租车累计在线 <input type="text" @if(isNotEmpty(online2)){ |
| | | value="${online2.online}" |
| | |
| | | @} |
| | | name="zc7" id="num9" class="form-control newWidth"/> 元 |
| | | <br/> |
| | | --> |
| | | <br/> |
| | | 司机累计达到规定订单数奖励 |
| | | <br/> |
| | |
| | | <h4><a href="#" onclick="driverActivityHistory(3,${id3})">领取列表</a></h4> |
| | | </div> |
| | | </div> |
| | | <!-- |
| | | <div class="col-sm-3"> |
| | | <div class="ibox float-e-margins"> |
| | | <div class="ibox-title"> |
| | |
| | | <h4><a href="#" onclick="driverActivityHistory(3,${id5})">领取列表</a></h4> |
| | | </div> |
| | | </div> |
| | | --> |
| | | <div class="col-sm-3"> |
| | | <div class="ibox float-e-margins"> |
| | | <div class="ibox-title"> |
| | |
| | | <div class="col-sm-12"> |
| | | <div class="ibox float-e-margins"> |
| | | <div class="ibox-title"> |
| | | <h5>优惠券管理</h5> |
| | | <h5>日常运营数据汇总</h5> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <div class="row row-lg"> |
| | |
| | | <#SelectCon id="type" name="类别" > |
| | | <option value="1">专车</option> |
| | | <!--<option value="2">出租车</option> |
| | | <option value="3">跨城</option> |
| | | <option value="4">小件物流</option>--> |
| | | <option value="3">跨城</option>--> |
| | | <option value="4">小件物流</option> |
| | | </#SelectCon> |
| | | </div> |
| | | <div class="col-sm-3"> |
| | |
| | | <option value="">全部</option> |
| | | <option value="0">通用券</option> |
| | | <option value="1">专车券</option> |
| | | <option value="2">出租车券</option> |
| | | <option value="3">跨城出行券</option> |
| | | <!--<option value="2">出租车券</option>--> |
| | | <!--<option value="3">跨城出行券</option>--> |
| | | </#SelectCon> |
| | | </div> |
| | | <div class="col-sm-3"> |
| | |
| | | <option value="">全部</option> |
| | | <option value="0">通用券</option> |
| | | <option value="1">专车券</option> |
| | | <option value="2">出租车券</option> |
| | | <option value="3">跨城出行券</option> |
| | | <!--<option value="2">出租车券</option>--> |
| | | <!--<option value="3">跨城出行券</option>--> |
| | | </#SelectCon> |
| | | </div> |
| | | <div class="col-sm-3"> |
| | |
| | | <div class="col-sm-9 left:50px" style="display: flex;align-items: center;left: 341px;"> |
| | | <div class="radio radio-info radio-inline"> |
| | | <input type="radio" id="sendType3" value="1" name="sendType1" checked="" > |
| | | <label for="sendType1"> 全部司机 </label> |
| | | <label for="sendType3"> 全部司机 </label> |
| | | </div> |
| | | <div class="radio radio-success radio-inline"> |
| | | <input type="radio" id="sendType4" value="2" name="sendType1" > |
| | | <label for="sendType2"> 选择司机 </label> |
| | | <label for="sendType4"> 选择司机 </label> |
| | | </div> |
| | | <#button name="选择" icon="fa-plus" clickFun="TAdvertisementInfoDlg.toSelectUserOpt1()"/> |
| | | <div class="form-group"> |
| | |
| | | <div class="col-sm-9 left:50px" style="display: flex;align-items: center;left: 341px;"> |
| | | <div class="radio radio-info radio-inline"> |
| | | <input type="radio" id="sendType3" value="1" name="sendType1" checked="" > |
| | | <label for="sendType1"> 全部司机 </label> |
| | | <label for="sendType3"> 全部司机 </label> |
| | | </div> |
| | | <div class="radio radio-success radio-inline"> |
| | | <input type="radio" id="sendType4" value="2" name="sendType1" > |
| | | <label for="sendType2"> 选择司机 </label> |
| | | <label for="sendType4"> 选择司机 </label> |
| | | </div> |
| | | <#button name="选择" icon="fa-plus" clickFun="TAdvertisementInfoDlg.toSelectUserOpt1()"/> |
| | | <div class="form-group"> |
| | |
| | | </ul> |
| | | <div class="tab-content"> |
| | | <div id="tab-1" class="tab-pane active"> |
| | | <div class="col-sm-3" style="padding-top: 10px;"> |
| | | <div class="col-sm-3" style="padding-top: 10px;display: none;"> |
| | | <div class="input-group" style="width: 100%;"> |
| | | <select class="form-control" id="language"> |
| | | <option value="1">中文</option> |
| | |
| | | </ul> |
| | | <div class="tab-content"> |
| | | <div id="tab-1" class="tab-pane active"> |
| | | <div class="col-sm-3" style="padding-top: 10px;"> |
| | | <div class="col-sm-3" style="padding-top: 10px;display: none;"> |
| | | <div class="input-group" style="width: 100%;"> |
| | | <select class="form-control" id="language"> |
| | | <option value="1">中文</option> |
| | |
| | | </ul> |
| | | <div class="tab-content"> |
| | | <div id="tab-1" class="tab-pane active"> |
| | | <div class="col-sm-3" style="padding-top: 10px;"> |
| | | <div class="col-sm-3" style="padding-top: 10px;display: none;"> |
| | | <div class="input-group" style="width: 100%;"> |
| | | <select class="form-control" id="language"> |
| | | <option value="1">中文</option> |
| | |
| | | </ul> |
| | | <div class="tab-content"> |
| | | <div id="tab-1" class="tab-pane active"> |
| | | <div class="col-sm-3" style="padding-top: 10px;"> |
| | | <div class="col-sm-3" style="padding-top: 10px;display: none;"> |
| | | <div class="input-group" style="width: 100%;"> |
| | | <select class="form-control" id="language"> |
| | | <option value="1">中文</option> |
| | |
| | | </ul> |
| | | <div class="tab-content"> |
| | | <div id="tab-1" class="tab-pane active"> |
| | | <div class="col-sm-3" style="padding-top: 10px;"> |
| | | <div class="col-sm-3" style="padding-top: 10px;display: none;"> |
| | | <div class="input-group" style="width: 100%;"> |
| | | <select class="form-control" id="language"> |
| | | <option value="1">中文</option> |
| | |
| | | <div class="tab-content"> |
| | | <div id="tab-1" class="tab-pane active"> |
| | | <input type="hidden" id="id1" value="${one.id}"> |
| | | <div class="col-sm-3" style="padding-top: 10px;"> |
| | | <div class="col-sm-3" style="padding-top: 10px;display: none;"> |
| | | <div class="input-group" style="width: 100%;"> |
| | | <select class="form-control" id="language1"> |
| | | <option value="1">中文</option> |
| | |
| | | <div class="tab-content"> |
| | | <div id="tab-1" class="tab-pane active"> |
| | | <input type="hidden" id="id1" value="${one.id}"> |
| | | <div class="col-sm-3" style="padding-top: 10px;"> |
| | | <div class="col-sm-3" style="padding-top: 10px;display: none;"> |
| | | <div class="input-group" style="width: 100%;"> |
| | | <select class="form-control" id="language1"> |
| | | <option value="1">中文</option> |
| | |
| | | </ul> |
| | | <div class="tab-content"> |
| | | <div id="tab-1" class="tab-pane active"> |
| | | <div class="col-sm-3" style="padding-top: 10px;"> |
| | | <div class="col-sm-3" style="padding-top: 10px;display: none;"> |
| | | <div class="input-group" style="width: 100%;"> |
| | | <select class="form-control" id="language"> |
| | | <option value="1">中文</option> |
| | |
| | | </ul> |
| | | <div class="tab-content"> |
| | | <div id="tab-1" class="tab-pane active"> |
| | | <div class="col-sm-3" style="padding-top: 10px;"> |
| | | <div class="col-sm-3" style="padding-top: 10px;display: none;"> |
| | | <div class="input-group" style="width: 100%;"> |
| | | <select class="form-control" id="language"> |
| | | <option value="1">中文</option> |
| | |
| | | </ul> |
| | | <div class="tab-content"> |
| | | <div id="tab-1" class="tab-pane active"> |
| | | <div class="col-sm-3" style="padding-top: 10px;"> |
| | | <div class="col-sm-3" style="padding-top: 10px;display: none;"> |
| | | <div class="input-group" style="width: 100%;"> |
| | | <select class="form-control" id="language"> |
| | | <option value="1">中文</option> |
| | |
| | | </ul> |
| | | <div class="tab-content"> |
| | | <div id="tab-1" class="tab-pane active"> |
| | | <div class="col-sm-3" style="padding-top: 10px;"> |
| | | <div class="col-sm-3" style="padding-top: 10px;display: none;"> |
| | | <div class="input-group" style="width: 100%;"> |
| | | <select class="form-control" id="language"> |
| | | <option value="1">中文</option> |
| | |
| | | </ul> |
| | | <div class="tab-content"> |
| | | <div id="tab-1" class="tab-pane active"> |
| | | <div class="col-sm-3" style="padding-top: 10px;"> |
| | | <div class="col-sm-3" style="padding-top: 10px;display: none;"> |
| | | <div class="input-group" style="width: 100%;"> |
| | | <select class="form-control" id="language"> |
| | | <option value="1">中文</option> |
| | |
| | | </ul> |
| | | <div class="tab-content"> |
| | | <div id="tab-1" class="tab-pane active"> |
| | | <div class="col-sm-3" style="padding-top: 10px;"> |
| | | <div class="col-sm-3" style="padding-top: 10px;display: none;"> |
| | | <div class="input-group" style="width: 100%;"> |
| | | <select class="form-control" id="language"> |
| | | <option value="1">中文</option> |
| | |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <!-- |
| | | <div class="form-group" style="display: none;" id="kcModelDiv"> |
| | | <label class="col-sm-3 control-label">跨城出行车型:</label> |
| | | <div class="col-sm-9"> |
| | |
| | | </select> |
| | | </div> |
| | | </div> |
| | | |
| | | --> |
| | | <#select id="carBrandId" name="车辆品牌:" onchange="TCarInfoDlg.brandChange(this)"> |
| | | <option value="">选择车辆品牌</option> |
| | | @for(obj in brandList){ |
| | |
| | | <#input id="vehicleType" name="车辆类型" /> |
| | | <#input id="ownerName" name="车辆所有人" /> |
| | | <#input id="engineId" name="发动机号" /> |
| | | <!-- |
| | | <#input id="VIN" name="车辆VIN码" /> |
| | | <#input id="certifyDateA" name="车辆注册日期" type="text"/> |
| | | <#input id="fuelType" name="车辆燃料类型" /> |
| | |
| | | <option value="2">巡游出租汽车</option> |
| | | <option value="3">私人小客车合乘</option> |
| | | </#select> |
| | | --> |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | <input type="checkbox" name="serverBox" id="serverBox1" value="1" ${2 == one ? 'checked=checked' : ''} onclick="TCarInfoDlg.zcServerClick()"> |
| | | <label for="serverBox1"> 专车 </label> |
| | | </div> |
| | | <div class="checkbox checkbox-success checkbox-inline"> |
| | | <input type="checkbox" name="serverBox" id="serverBox4" value="4" ${2 == four ? 'checked=checked' : ''}> |
| | | <label for="serverBox4"> 市内小件物流 </label> |
| | | </div> |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <!-- |
| | | <div class="form-group" id="kcModelDiv"> |
| | | <label class="col-sm-3 control-label">跨城出行车型:</label> |
| | | <div class="col-sm-9"> |
| | |
| | | </select> |
| | | </div> |
| | | </div> |
| | | --> |
| | | <#select id="carBrandId" name="车辆品牌:" onchange="TCarInfoDlg.brandChange(this)"> |
| | | <option value="">选择车辆品牌</option> |
| | | @for(obj in brandList){ |
| | |
| | | <#input id="vehicleType" name="车辆类型" value="${item.vehicleType}"/> |
| | | <#input id="ownerName" name="车辆所有人" value="${item.ownerName}"/> |
| | | <#input id="engineId" name="发动机号" value="${item.engineId}"/> |
| | | <!-- |
| | | <#input id="VIN" name="车辆VIN码" value="${item.VIN}"/> |
| | | <#input id="certifyDateA" name="车辆注册日期" type="text" value="${item.certifyDateA}"/> |
| | | <#input id="fuelType" name="车辆燃料类型" value="${item.fuelType}"/> |
| | |
| | | <option value="2" ${'2' == item.commercialType ? 'selected=selected' : ''}>巡游出租汽车</option> |
| | | <option value="3" ${'3' == item.commercialType ? 'selected=selected' : ''}>私人小客车合乘</option> |
| | | </#select> |
| | | --> |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | | <!-- |
| | | <div class="checkbox checkbox-primary"> |
| | | <input name="checkbox" id="checkbox2" type="checkbox" value="2" ${1 == item.isTaxi ? 'checked=checked' : ''} onclick="TCompanyInfoDlg.checkbox2()"> |
| | | <label for="checkbox2"> |
| | |
| | | 跨城出行 |
| | | </label> |
| | | </div> |
| | | --> |
| | | <div class="checkbox checkbox-info"> |
| | | <input name="checkbox" id="checkbox4" type="checkbox" value="4" ${1 == item.isSameLogistics ? 'checked=checked' : ''} onclick="TCompanyInfoDlg.checkbox4()"> |
| | | <label for="checkbox4"> |
| | | 同城小件物流 |
| | | 市内小件物流 |
| | | </label> |
| | | <fieldset> |
| | | <div class="row" style="display: none;" id="tcxDiv"> |
| | |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | | <!-- |
| | | <div class="checkbox checkbox-warning"> |
| | | <input name="checkbox" id="checkbox5" type="checkbox" value="5" ${1 == item.isCrossLogistics ? 'checked=checked' : ''} onclick="TCompanyInfoDlg.checkbox5()"> |
| | | <label for="checkbox5"> |
| | |
| | | 包车 |
| | | </label> |
| | | </div> |
| | | --> |
| | | </fieldset> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="form-group"> |
| | | <label class="col-sm-2 control-label">经营区域:</label> |
| | | <div class="col-sm-2"> |
| | | <select class="form-control" id="province" onchange="TCompanyInfoDlg.provinceChange(this)"> |
| | | <option value="">选择省</option> |
| | | @for(obj in provinceList){ |
| | | <option value="${obj.code}">${obj.name}</option> |
| | | <select class="form-control" id="province"> |
| | | <option value="">选择城市</option> |
| | | @for(obj in city){ |
| | | <option value="${obj.id}">${obj.chineseName}</option> |
| | | @} |
| | | </select> |
| | | </div> |
| | | <div class="col-sm-2"> |
| | | <select class="form-control" id="city" onchange="TCompanyInfoDlg.cityChage(this)"> |
| | | <option value="">选择市</option> |
| | | </select> |
| | | </div> |
| | | <div class="col-sm-2"> |
| | | <select class="form-control" id="area"> |
| | | <option value="">选择区</option> |
| | | </select> |
| | | </div> |
| | | <div class="col-sm-1"> |
| | |
| | | @for(obj in scopeList){ |
| | | <tr class="timeClass"> |
| | | <td><input type="hidden" id="recordId" name="recordId" value="${obj.id}"> |
| | | <input type="hidden" id="provinceCode" name="provinceCode" value="${obj.provinceCode}"> |
| | | <input type="hidden" id="cityCode" name="cityCode" value="${obj.cityCode}"> |
| | | <input type="hidden" id="areaCode" name="areaCode" value="${obj.areaCode}">${obj.value}</td> |
| | | <input type="hidden" id="cityId" name="cityId" value="${obj.cityId}">${obj.value}</td> |
| | | <td><button onclick="deleteSub(this)">移除</button></td> |
| | | </tr> |
| | | @} |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- |
| | | <div class="form-group"> |
| | | <label class="col-sm-2 control-label">是否需要摆渡车:</label> |
| | | <div class="col-sm-9" style="display: flex;align-items: center;"> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | --> |
| | | <!-- <div class="form-group"> |
| | | <label class="col-sm-2 control-label">限登录MAC地址:</label> |
| | | <div class="col-sm-9"> |
| | |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | | <!-- |
| | | <div class="checkbox checkbox-primary"> |
| | | <input name="checkbox" id="checkbox2" type="checkbox" value="2" onclick="TCompanyInfoDlg.checkbox2()"> |
| | | <label for="checkbox2"> |
| | |
| | | 跨城出行 |
| | | </label> |
| | | </div> |
| | | --> |
| | | <div class="checkbox checkbox-info"> |
| | | <input name="checkbox" id="checkbox4" type="checkbox" value="4" onclick="TCompanyInfoDlg.checkbox4()"> |
| | | <label for="checkbox4"> |
| | | 同城小件物流 |
| | | 市内小件物流 |
| | | </label> |
| | | <fieldset> |
| | | <div class="row" style="display: none;" id="tcxDiv"> |
| | |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | | <!-- |
| | | <div class="checkbox checkbox-warning"> |
| | | <input name="checkbox" id="checkbox5" type="checkbox" value="5" onclick="TCompanyInfoDlg.checkbox5()"> |
| | | <label for="checkbox5"> |
| | |
| | | 包车 |
| | | </label> |
| | | </div> |
| | | --> |
| | | </fieldset> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="form-group"> |
| | | <label class="col-sm-2 control-label">经营区域:</label> |
| | | <div class="col-sm-2"> |
| | | <select class="form-control" id="province" onchange="TCompanyInfoDlg.provinceChange(this)"> |
| | | <option value="">选择省</option> |
| | | @for(obj in provinceList){ |
| | | <option value="${obj.code}">${obj.name}</option> |
| | | <select class="form-control" id="province"> |
| | | <option value="">选择城市</option> |
| | | @for(obj in city){ |
| | | <option value="${obj.id}">${obj.chineseName}</option> |
| | | @} |
| | | </select> |
| | | </div> |
| | | <div class="col-sm-2"> |
| | | <select class="form-control" id="city" onchange="TCompanyInfoDlg.cityChage(this)"> |
| | | <option value="">选择市</option> |
| | | </select> |
| | | </div> |
| | | <div class="col-sm-2"> |
| | | <select class="form-control" id="area"> |
| | | <option value="">选择区</option> |
| | | </select> |
| | | </div> |
| | | <div class="col-sm-1"> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- |
| | | <div class="form-group"> |
| | | <label class="col-sm-2 control-label">是否需要摆渡车:</label> |
| | | <div class="col-sm-9" style="display: flex;align-items: center;"> |
| | |
| | | <input type="text" class="form-control" id="mac" name="mac" > |
| | | </div> |
| | | </div> |
| | | --> |
| | | <div class="form-group"> |
| | | <label class="col-sm-2 control-label">登录账号:</label> |
| | | <div class="col-sm-9"> |
| | |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | | <!-- |
| | | <div class="checkbox checkbox-primary"> |
| | | <input name="checkbox" id="checkbox2" type="checkbox" value="2" onclick="FranchiseeInfoDlg.checkbox2()"> |
| | | <label for="checkbox2"> |
| | |
| | | 跨城出行 |
| | | </label> |
| | | </div> |
| | | --> |
| | | <div class="checkbox checkbox-info"> |
| | | <input name="checkbox" id="checkbox4" type="checkbox" value="4" onclick="FranchiseeInfoDlg.checkbox4()"> |
| | | <label for="checkbox4"> |
| | | 同城小件物流 |
| | | 市内小件物流 |
| | | </label> |
| | | <fieldset> |
| | | <div class="row" style="display: none;" id="tcxDiv"> |
| | |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | | <!-- |
| | | <div class="checkbox checkbox-warning"> |
| | | <input name="checkbox" id="checkbox5" type="checkbox" value="5" onclick="FranchiseeInfoDlg.checkbox5()"> |
| | | <label for="checkbox5"> |
| | |
| | | 包车 |
| | | </label> |
| | | </div> |
| | | --> |
| | | </fieldset> |
| | | </div> |
| | | </div> |
| | | <!-- |
| | | <div class="form-group"> |
| | | <label class="col-sm-3 control-label">是否需要摆渡车:</label> |
| | | <div class="col-sm-9" style="display: flex;align-items: center;"> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | --> |
| | | <div class="form-group"> |
| | | <label class="col-sm-3 control-label">登录账号:</label> |
| | | <div class="col-sm-9"> |
| | |
| | | </div> |
| | | |
| | | <div class="col-sm-6"> |
| | | <#label id="mac" name="限登录MAC地址" value="${item.mac}"/> |
| | | <#label id="scopeCode" name="分公司区划代码" value="${item.scopeCode}"/> |
| | | <#label id="detailAddress" name="分公司具体地址" value="${item.detailAddress}"/> |
| | | <#label id="principalPhone" name="负责人电话" value="${item.principalPhone}"/> |
| | |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | | <!-- |
| | | <div class="checkbox checkbox-primary"> |
| | | <input name="checkbox" id="checkbox2" type="checkbox" disabled value="2" ${1 == item.isTaxi ? 'checked=checked' : ''} > |
| | | <label for="checkbox2"> |
| | |
| | | 跨城出行 |
| | | </label> |
| | | </div> |
| | | --> |
| | | <div class="checkbox checkbox-info"> |
| | | <input name="checkbox" id="checkbox4" type="checkbox" disabled value="4" ${1 == item.isSameLogistics ? 'checked=checked' : ''}> |
| | | <label for="checkbox4"> |
| | | 同城小件物流 |
| | | 市内小件物流 |
| | | </label> |
| | | <fieldset> |
| | | <div class="row" style="display: none;" id="tcxDiv"> |
| | |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | | <!-- |
| | | <div class="checkbox checkbox-warning"> |
| | | <input name="checkbox" id="checkbox5" type="checkbox" disabled value="5" ${1 == item.isCrossLogistics ? 'checked=checked' : ''} > |
| | | <label for="checkbox5"> |
| | |
| | | 包车 |
| | | </label> |
| | | </div> |
| | | --> |
| | | </fieldset> |
| | | </div> |
| | | </div> |
| | |
| | | @for(obj in scopeList){ |
| | | <tr class="timeClass" style="text-align: center;"> |
| | | <td><input type="hidden" id="recordId" name="recordId" value="${obj.id}"> |
| | | <input type="hidden" id="provinceCode" name="provinceCode" value="${obj.provinceCode}"> |
| | | <input type="hidden" id="cityCode" name="cityCode" value="${obj.cityCode}"> |
| | | <input type="hidden" id="areaCode" name="areaCode" value="${obj.areaCode}">${obj.value}</td> |
| | | <input type="hidden" id="cityId" name="cityId" value="${obj.cityId}">${obj.value}</td> |
| | | <!--<td><button onclick="deleteSub(this)">移除</button></td>--> |
| | | </tr> |
| | | @} |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- |
| | | <div class="form-group"> |
| | | <label class="col-sm-2 control-label">是否需要摆渡车:</label> |
| | | <div class="col-sm-9" style="display: flex;align-items: center;"> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | --> |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | | <!-- |
| | | <div class="checkbox checkbox-primary"> |
| | | <input name="checkbox" id="checkbox2" type="checkbox" disabled value="2" ${1 == item.isTaxi ? 'checked=checked' : ''}> |
| | | <label for="checkbox2"> |
| | |
| | | 跨城出行 |
| | | </label> |
| | | </div> |
| | | --> |
| | | <div class="checkbox checkbox-info"> |
| | | <input name="checkbox" id="checkbox4" type="checkbox" disabled value="4" ${1 == item.isSameLogistics ? 'checked=checked' : ''} > |
| | | <label for="checkbox4"> |
| | | 同城小件物流 |
| | | 市内小件物流 |
| | | </label> |
| | | <fieldset> |
| | | <div class="row" style="display: none;" id="tcxDiv"> |
| | |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | | <!-- |
| | | <div class="checkbox checkbox-warning"> |
| | | <input name="checkbox" id="checkbox5" type="checkbox" disabled value="5" ${1 == item.isCrossLogistics ? 'checked=checked' : ''} > |
| | | <label for="checkbox5"> |
| | |
| | | 包车 |
| | | </label> |
| | | </div> |
| | | --> |
| | | </fieldset> |
| | | </div> |
| | | </div> |
| | | <!-- |
| | | <div class="form-group"> |
| | | <label class="col-sm-3 control-label">是否需要摆渡车:</label> |
| | | <div class="col-sm-9" style="display: flex;align-items: center;"> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | --> |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | | <!-- |
| | | <div class="checkbox checkbox-primary"> |
| | | <input name="checkbox" id="checkbox2" type="checkbox" value="2" ${1 == item.isTaxi ? 'checked=checked' : ''} onclick="TCompanyInfoDlg.checkbox2()"> |
| | | <label for="checkbox2"> |
| | |
| | | 跨城出行 |
| | | </label> |
| | | </div> |
| | | --> |
| | | <div class="checkbox checkbox-info"> |
| | | <input name="checkbox" id="checkbox4" type="checkbox" value="4" ${1 == item.isSameLogistics ? 'checked=checked' : ''} onclick="TCompanyInfoDlg.checkbox4()"> |
| | | <label for="checkbox4"> |
| | | 同城小件物流 |
| | | 市内小件物流 |
| | | </label> |
| | | <fieldset> |
| | | <div class="row" style="display: none;" id="tcxDiv"> |
| | |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | | <!-- |
| | | <div class="checkbox checkbox-warning"> |
| | | <input name="checkbox" id="checkbox5" type="checkbox" value="5" ${1 == item.isCrossLogistics ? 'checked=checked' : ''} onclick="TCompanyInfoDlg.checkbox5()"> |
| | | <label for="checkbox5"> |
| | |
| | | 包车 |
| | | </label> |
| | | </div> |
| | | --> |
| | | </fieldset> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="form-group"> |
| | | <label class="col-sm-2 control-label">经营区域:</label> |
| | | <div class="col-sm-2"> |
| | | <select class="form-control" id="province" onchange="TCompanyInfoDlg.provinceChange(this)"> |
| | | <option value="">选择省</option> |
| | | @for(obj in provinceList){ |
| | | <option value="${obj.code}">${obj.name}</option> |
| | | <select class="form-control" id="province"> |
| | | <option value="">选择城市</option> |
| | | @for(obj in city){ |
| | | <option value="${obj.id}">${obj.chineseName}</option> |
| | | @} |
| | | </select> |
| | | </div> |
| | | <div class="col-sm-2"> |
| | | <select class="form-control" id="city" onchange="TCompanyInfoDlg.cityChage(this)"> |
| | | <option value="">选择市</option> |
| | | </select> |
| | | </div> |
| | | <div class="col-sm-2"> |
| | | <select class="form-control" id="area"> |
| | | <option value="">选择区</option> |
| | | </select> |
| | | </div> |
| | | <div class="col-sm-1"> |
| | |
| | | @for(obj in scopeList){ |
| | | <tr class="timeClass"> |
| | | <td><input type="hidden" id="recordId" name="recordId" value="${obj.id}"> |
| | | <input type="hidden" id="provinceCode" name="provinceCode" value="${obj.provinceCode}"> |
| | | <input type="hidden" id="cityCode" name="cityCode" value="${obj.cityCode}"> |
| | | <input type="hidden" id="areaCode" name="areaCode" value="${obj.areaCode}">${obj.value}</td> |
| | | <input type="hidden" id="cityId" name="cityId" value="${obj.cityId}">${obj.value}</td> |
| | | <td><button onclick="deleteSub(this)">移除</button></td> |
| | | </tr> |
| | | @} |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- |
| | | <div class="form-group"> |
| | | <label class="col-sm-2 control-label">是否需要摆渡车:</label> |
| | | <div class="col-sm-9" style="display: flex;align-items: center;"> |
| | |
| | | <input type="text" class="form-control" id="mac" name="mac" value="${item.mac}"> |
| | | </div> |
| | | </div> |
| | | --> |
| | | <div class="form-group"> |
| | | <label class="col-sm-2 control-label">登录账号:</label> |
| | | <div class="col-sm-9"> |
| | |
| | | </div> |
| | | </div> |
| | | </fieldset> |
| | | </div>--> |
| | | </div> |
| | | <div class="checkbox checkbox-success"> |
| | | <input name="checkbox" id="checkbox3" type="checkbox" value="3" ${1 == item.isCross ? 'checked=checked' : ''} onclick="FranchiseeInfoDlg.checkbox3()"> |
| | | <label for="checkbox3"> |
| | | 跨城出行 |
| | | </label> |
| | | </div> |
| | | <!--<div class="checkbox checkbox-info"> |
| | | </div>--> |
| | | <div class="checkbox checkbox-info"> |
| | | <input name="checkbox" id="checkbox4" type="checkbox" value="4" ${1 == item.isSameLogistics ? 'checked=checked' : ''} onclick="FranchiseeInfoDlg.checkbox4()"> |
| | | <label for="checkbox4"> |
| | | 同城小件物流 |
| | | 市内小件物流 |
| | | </label> |
| | | <fieldset> |
| | | <div class="row" style="display: none;" id="tcxDiv"> |
| | |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | | <!-- |
| | | <div class="checkbox checkbox-warning"> |
| | | <input name="checkbox" id="checkbox5" type="checkbox" value="5" ${1 == item.isCrossLogistics ? 'checked=checked' : ''} onclick="FranchiseeInfoDlg.checkbox5()"> |
| | | <label for="checkbox5"> |
| | |
| | | </fieldset> |
| | | </div> |
| | | </div> |
| | | <!-- |
| | | <div class="form-group"> |
| | | <label class="col-sm-3 control-label">是否需要摆渡车:</label> |
| | | <div class="col-sm-9" style="display: flex;align-items: center;"> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | --> |
| | | <div class="form-group"> |
| | | <label class="col-sm-3 control-label">登录账号:</label> |
| | | <div class="col-sm-9"> |
| | |
| | | </div> |
| | | |
| | | <#avatar id="headImgUrl" name="头像:" /> |
| | | <#avatar id="faceImgUrl" name="人脸识别照片:" /> |
| | | <!--<#avatar id="faceImgUrl" name="人脸识别照片:" />--> |
| | | <!--<#input id="phone" name="手机号" />--> |
| | | <div class="form-group"> |
| | | <label class="col-sm-3 control-label">性别:</label> |
| | |
| | | </div> |
| | | </div> |
| | | <#input id="birthday" name="出生日期"/> |
| | | <#input id="email" name="邮箱地址:" type="email"/> |
| | | <#input id="email" name="邮箱地址" type="email"/> |
| | | <#input id="driveCard" name="驾驶证号码"/> |
| | | <#avatar id="driveCardImgUrl1" name="驾驶证正面照片:" /> |
| | | <#avatar id="driveCardImgUrl2" name="驾驶证背面照片:" /> |
| | | <#input id="driverAge" name="驾龄" /> |
| | | <#input id="idCard" name="身份证号" /> |
| | | <#avatar id="idCardImgUrl1" name="身份证正面照片:" /> |
| | | <#avatar id="idCardImgUrl2" name="身份证背面照片:" /> |
| | | <#input id="driverAddress" name="居住地址" /> |
| | | <#input id="taxiAptitudeCard" name="出租车资格证号" /> |
| | | <!-- |
| | | <#avatar id="networkCarlssueImg" name="网约车资格证照片:" /> |
| | | <#input id="jobNumber" name="工号(选填)" /> |
| | | --> |
| | | <div class="form-group"> |
| | | <fieldset> |
| | | <label class="col-sm-3 control-label">经营业务:</label> |
| | |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | | <!-- |
| | | <div id="lineDiv" style="display: none;"> |
| | | <div class="form-group"> |
| | | <label class="col-sm-3 control-label">关联线路:</label> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | --> |
| | | |
| | | <#input id="phone" name="登录账号【手机号】" /> |
| | | <#input id="password" name="密码" type="password"/> |
| | | <#input id="rePassword" name="确认密码" type="password"/> |
| | | |
| | | <!-- |
| | | <#input id="driverNationality" name="国籍"/> |
| | | <#input id="driverNation" name="民族"/> |
| | | <div class="form-group"> |
| | |
| | | <#input id="emergencyContact" name="紧急联系人"/> |
| | | <#input id="emergencyContactPhone" name="紧急联系电话"/> |
| | | <#input id="emergencyContactAddress" name="紧急联系地址"/> |
| | | --> |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | </div> |
| | | |
| | | <#avatar id="headImgUrl" name="头像:" avatarImg="${item.headImgUrl}"/> |
| | | <#avatar id="faceImgUrl" name="人脸识别照片:" avatarImg="${item.faceImgUrl}"/> |
| | | <!--<#avatar id="faceImgUrl" name="人脸识别照片:" avatarImg="${item.faceImgUrl}"/>--> |
| | | <!--<#input id="phone" name="手机号" value="${item.phone}"/>--> |
| | | <div class="form-group"> |
| | | <label class="col-sm-3 control-label">性别:</label> |
| | |
| | | </div> |
| | | </div> |
| | | <#input id="birthday" name="出生日期" value="${item.birthday}"/> |
| | | <#input id="email" name="邮箱地址:" value="${item.email}" type="email"/> |
| | | <#input id="email" name="邮箱地址" value="${item.email}" type="email"/> |
| | | <#input id="driveCard" name="驾驶证号码" value="${item.driveCard}"/> |
| | | <#avatar id="driveCardImgUrl1" name="驾驶证正面照片:" avatarImg="${item.driveCardImgUrl1}"/> |
| | | <#avatar id="driveCardImgUrl2" name="驾驶证背面照片:" avatarImg="${item.driveCardImgUrl2}"/> |
| | | <#input id="driverAge" name="驾龄" value="${item.driverAge}"/> |
| | | <#input id="idCard" name="身份证号" value="${item.idCard}"/> |
| | | <#avatar id="idCardImgUrl1" name="身份证正面照片:" avatarImg="${item.idCardImgUrl1}"/> |
| | | <#avatar id="idCardImgUrl2" name="身份证背面照片:" avatarImg="${item.idCardImgUrl2}"/> |
| | | <#input id="driverAddress" name="居住地址" value="${item.driverAddress}"/> |
| | | <#input id="taxiAptitudeCard" name="出租车资格证号" value="${item.taxiAptitudeCard}"/> |
| | | <#input id="jobNumber" name="工号(选填)" value="${item.jobNumber}"/> |
| | | <!--<#input id="jobNumber" name="工号(选填)" value="${item.jobNumber}"/>--> |
| | | <div class="form-group"> |
| | | <fieldset> |
| | | <label class="col-sm-3 control-label">经营业务:</label> |
| | |
| | | </div> |
| | | </fieldset> |
| | | </div> |
| | | |
| | | <!-- |
| | | <div id="lineDiv" style="display: none;"> |
| | | <div class="form-group"> |
| | | <label class="col-sm-3 control-label">关联线路:</label> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | --> |
| | | <#input id="phone" name="登录账号【手机号】" value="${item.phone}"/> |
| | | <#input id="password" name="密码" type="password" /> |
| | | <#input id="rePassword" name="确认密码" type="password" /> |
| | | |
| | | <!-- |
| | | <#input id="driverNationality" name="国籍" value="${item.driverNationality}"/> |
| | | <#input id="driverNation" name="民族" value="${item.driverNation}"/> |
| | | <div class="form-group"> |
| | |
| | | <#input id="emergencyContact" name="紧急联系人" value="${item.emergencyContact}"/> |
| | | <#input id="emergencyContactPhone" name="紧急联系电话" value="${item.emergencyContactPhone}"/> |
| | | <#input id="emergencyContactAddress" name="紧急联系地址" value="${item.emergencyContactAddress}"/> |
| | | |
| | | --> |
| | | |
| | | </div> |
| | | </div> |
| | |
| | | <div class="col-sm-6"> |
| | | <div id="driveCardImgUrlPreId"> |
| | | <div> |
| | | @if(isEmpty(item.driveCardImgUrl)){ |
| | | @if(isEmpty(item.driveCardImgUrl1)){ |
| | | <img onclick="lookBigImg('${ctxPath}/static/img/NoPIC.png')" src="${ctxPath}/static/img/NoPIC.png" style="max-width:150px;"> |
| | | @}else{ |
| | | <img onclick="lookBigImg('${item.driveCardImgUrl}')" src="${item.driveCardImgUrl}" style="max-width:250px;"> |
| | | <img onclick="lookBigImg('${item.driveCardImgUrl1}')" src="${item.driveCardImgUrl1}" style="max-width:250px;"> |
| | | @} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <input type="hidden" id="driveCardImgUrl" name="driveCardImgUrl" value="${item.driveCardImgUrl}"/> |
| | | <input type="hidden" id="driveCardImgUrl" name="driveCardImgUrl1" value="${item.driveCardImgUrl1}"/> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <#label id="idCard" name="身份证号码" value="${item.idCard}"/> |
| | | <div class="form-group"> |
| | | <label class="col-sm-3 control-label">身份证正面照片:</label> |
| | | <div class="col-sm-9"> |
| | | <div class="form-group"> |
| | | <div class="col-sm-6"> |
| | | <div id="idCardImgUrl1PreId"> |
| | | <div> |
| | | @if(isEmpty(item.idCardImgUrl1)){ |
| | | <img onclick="lookBigImg('${ctxPath}/static/img/NoPIC.png')" src="${ctxPath}/static/img/NoPIC.png" style="max-width:150px;"> |
| | | @}else{ |
| | | <img onclick="lookBigImg('${item.idCardImgUrl1}')" src="${item.idCardImgUrl1}" style="max-width:250px;"> |
| | | @} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <input type="hidden" id="idCardImgUrl1" name="idCardImgUrl1" value="${item.idCardImgUrl1}"/> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="form-group"> |
| | | <label class="col-sm-3 control-label">身份证背面照片:</label> |
| | | <div class="col-sm-9"> |
| | | <div class="form-group"> |
| | | <div class="col-sm-6"> |
| | | <div id="idCardImgUrl2PreId"> |
| | | <div> |
| | | @if(isEmpty(item.idCardImgUrl2)){ |
| | | <img onclick="lookBigImg('${ctxPath}/static/img/NoPIC.png')" src="${ctxPath}/static/img/NoPIC.png" style="max-width:150px;"> |
| | | @}else{ |
| | | <img onclick="lookBigImg('${item.idCardImgUrl2}')" src="${item.idCardImgUrl2}" style="max-width:250px;"> |
| | | @} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <input type="hidden" id="idCardImgUrl2" name="idCardImgUrl2" value="${item.idCardImgUrl2}"/> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <#label id="driverAddress" name="居住地址" value="${item.driverAddress}"/> |
| | | <#label id="taxiAptitudeCard" name="出租车资格证号" value="${item.taxiAptitudeCard}"/> |
| | | <#label id="serverStr" name="服务模式" value="${item.serverStr}"/> |
| | | <div class="form-group"> |
| | | <label class="col-sm-3 control-label">审核结果:</label> |
| | |
| | | </div> |
| | | <#label id="companyName" name="邮箱地址" value="${item.email}"/> |
| | | <#label id="companyName" name="出生日期" value="${item.birthday}"/> |
| | | <#label id="companyName" name="所属机构" value="${item.companyName}"/> |
| | | <#label id="driverAge" name="驾龄" value="${item.driverAge}"/> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="col-sm-6"> |
| | | <div id="driveCardImgUrlPreId"> |
| | | <div> |
| | | @if(isEmpty(item.driveCardImgUrl)){ |
| | | @if(isEmpty(item.driveCardImgUrl1)){ |
| | | <img onclick="lookBigImg('${ctxPath}/static/img/NoPIC.png')" src="${ctxPath}/static/img/NoPIC.png" style="max-width:150px;"> |
| | | @}else{ |
| | | <img onclick="lookBigImg('${item.driveCardImgUrl}')" src="${item.driveCardImgUrl}" style="max-width:250px;"> |
| | | <img onclick="lookBigImg('${item.driveCardImgUrl1}')" src="${item.driveCardImgUrl1}" style="max-width:250px;"> |
| | | @} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <input type="hidden" id="driveCardImgUrl" name="driveCardImgUrl" value="${item.driveCardImgUrl}"/> |
| | | <input type="hidden" id="driveCardImgUrl" name="driveCardImgUrl1" value="${item.driveCardImgUrl1}"/> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <#label id="idCard" name="身份证号码" value="${item.idCard}"/> |
| | | <div class="form-group"> |
| | | <label class="col-sm-3 control-label">身份证正面照片:</label> |
| | | <div class="col-sm-9"> |
| | | <div class="form-group"> |
| | | <div class="col-sm-6"> |
| | | <div id="idCardImgUrl1PreId"> |
| | | <div> |
| | | @if(isEmpty(item.idCardImgUrl1)){ |
| | | <img onclick="lookBigImg('${ctxPath}/static/img/NoPIC.png')" src="${ctxPath}/static/img/NoPIC.png" style="max-width:150px;"> |
| | | @}else{ |
| | | <img onclick="lookBigImg('${item.idCardImgUrl1}')" src="${item.idCardImgUrl1}" style="max-width:250px;"> |
| | | @} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <input type="hidden" id="idCardImgUrl1" name="idCardImgUrl1" value="${item.idCardImgUrl1}"/> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="form-group"> |
| | | <label class="col-sm-3 control-label">身份证背面照片:</label> |
| | | <div class="col-sm-9"> |
| | | <div class="form-group"> |
| | | <div class="col-sm-6"> |
| | | <div id="idCardImgUrl2PreId"> |
| | | <div> |
| | | @if(isEmpty(item.idCardImgUrl2)){ |
| | | <img onclick="lookBigImg('${ctxPath}/static/img/NoPIC.png')" src="${ctxPath}/static/img/NoPIC.png" style="max-width:150px;"> |
| | | @}else{ |
| | | <img onclick="lookBigImg('${item.idCardImgUrl2}')" src="${item.idCardImgUrl2}" style="max-width:250px;"> |
| | | @} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <input type="hidden" id="idCardImgUrl2" name="idCardImgUrl2" value="${item.idCardImgUrl2}"/> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <#label id="driverAddress" name="居住地址" value="${item.driverAddress}"/> |
| | | <#label id="taxiAptitudeCard" name="出租车资格证号" value="${item.taxiAptitudeCard}"/> |
| | | <#label id="serverStr" name="服务模式" value="${item.serverStr}"/> |
| | | <#label id="authStateStr" name="审核结果" value="${item.authStateStr}"/> |
| | | </div> |
| | |
| | | </div> |
| | | <#label id="companyName" name="邮箱地址" value="${item.email}"/> |
| | | <#label id="companyName" name="出生日期" value="${item.birthday}"/> |
| | | <#label id="companyName" name="所属机构" value="${item.companyName}"/> |
| | | <#label id="driverAge" name="驾龄" value="${item.driverAge}"/> |
| | | </div> |
| | | </div> |
| | |
| | | <#TimeCon id="insertTime" name="添加时间" isTime="false"/> |
| | | </div> |
| | | <div class="col-sm-3"> |
| | | <#NameCon id="condition" name="省/市/区名称" /> |
| | | <#NameCon id="condition" name="城市名称" /> |
| | | </div> |
| | | <div class="col-sm-3"> |
| | | <#button name="搜索" icon="fa-search" clickFun="TOpenCity.search()"/> |
| | |
| | | <div class="form-horizontal" id="openCityForm"> |
| | | <div class="row"> |
| | | <div class="col-sm-10"> |
| | | <#select id="provinceId" name="省:" onchange="TOpenCityInfoDlg.provinceChange()"> |
| | | <option value="">选择省</option> |
| | | @for(province in provinceList){ |
| | | <option value="${province.id}">${province.name}</option> |
| | | <#select id="cityId" name="城市:"> |
| | | <option value="">选择城市</option> |
| | | @for(item in city){ |
| | | <option value="${item.id}">${item.chineseName}</option> |
| | | @} |
| | | </#select> |
| | | <#select id="cityId" name="市:" onchange="TOpenCityInfoDlg.cityChange()"> |
| | | <option value="">选择市</option> |
| | | </#select> |
| | | <#select id="areaId" name="区:"> |
| | | <option value="">选择区</option> |
| | | </#select> |
| | | <#select id="isQualifications" name="是否需要网约车资格证:"> |
| | | <option value="">选择是否需要网约车资格证</option> |
| | | <option value="1">是</option> |
| | | <option value="2">否</option> |
| | | </#select> |
| | | <div class="form-group"> |
| | | <label class="col-sm-3 control-label">经营业务:</label> |
| | |
| | | <select class="form-control" id="businessType"> |
| | | <option value="">选择经营业务</option> |
| | | <option value="1">专车</option> |
| | | <option value="2">出租车</option> |
| | | <option value="3">跨城出行</option> |
| | | <option value="4">跨城小件物流</option> |
| | | <option value="5">同城小件物流</option> |
| | | <option value="6">包车</option> |
| | | <option value="4">市内小件物流</option> |
| | | </select> |
| | | </div> |
| | | <div class="col-sm-3" > |
| | |
| | | <input type="hidden" id="id" name="id" value="${item.id}"> |
| | | <div class="row"> |
| | | <div class="col-sm-10"> |
| | | <#select id="provinceId" name="省:" onchange="TOpenCityInfoDlg.provinceChange()"> |
| | | <option value="">选择省</option> |
| | | @for(province in provinceList){ |
| | | <option value="${province.id}" ${province.id == item.areaId ? 'selected=selected' : ''}>${province.name}</option> |
| | | <#select id="cityId" name="城市:"> |
| | | <option value="">选择城市</option> |
| | | @for(obj in city){ |
| | | <option value="${obj.id}" ${obj.id == item.cityId ? 'selected=selected' : ''}>${obj.chineseName}</option> |
| | | @} |
| | | </#select> |
| | | <#select id="cityId" name="市:" onchange="TOpenCityInfoDlg.cityChange()"> |
| | | <option value="">选择市</option> |
| | | @for(city in cityList){ |
| | | <option value="${city.id}" ${city.id == item.cityId ? 'selected=selected' : ''}>${city.name}</option> |
| | | @} |
| | | </#select> |
| | | <#select id="areaId" name="区:"> |
| | | <option value="">选择区</option> |
| | | @for(area in areaList){ |
| | | <option value="${area.id}" ${area.id == item.provinceId ? 'selected=selected' : ''}>${area.name}</option> |
| | | @} |
| | | </#select> |
| | | <#select id="isQualifications" name="是否需要网约车资格证:"> |
| | | <option value="">选择是否需要网约车资格证</option> |
| | | <option value="1" ${1 == item.isQualifications ? 'selected=selected' : ''}>是</option> |
| | | <option value="2" ${2 == item.isQualifications ? 'selected=selected' : ''}>否</option> |
| | | </#select> |
| | | <div class="form-group"> |
| | | <label class="col-sm-3 control-label">经营业务:</label> |
| | |
| | | <select class="form-control" id="businessType"> |
| | | <option value="">选择经营业务</option> |
| | | <option value="1">专车</option> |
| | | <option value="2">出租车</option> |
| | | <option value="3">跨城出行</option> |
| | | <option value="4">跨城小件物流</option> |
| | | <option value="5">同城小件物流</option> |
| | | <option value="6">包车</option> |
| | | <option value="4">市内小件物流</option> |
| | | </select> |
| | | </div> |
| | | <div class="col-sm-3" > |
| | |
| | | <option value="">全部</option> |
| | | <option value="1">专车</option> |
| | | <!--<option value="2">出租车</option> |
| | | <option value="3">跨城出行</option> |
| | | <option value="4">跨城小件物流</option> |
| | | <option value="5">同城小件物流</option> |
| | | <option value="3">跨城出行</option>--> |
| | | <option value="4">市内小件物流</option> |
| | | <!--<option value="5">同城小件物流</option> |
| | | <option value="6">包车</option>--> |
| | | </#SelectCon> |
| | | </div> |
| | |
| | | <#input id="id" name="" underline="true"/> |
| | | <#input id="orderId" name="订单id" underline="true"/> |
| | | <#input id="driverId" name="司机id" underline="true"/> |
| | | <#input id="orderType" name="1=专车,2=出租车,3=跨城出行,4=跨城小件物流,5=同城小件物流,6=包车"/> |
| | | <#input id="orderType" name="1=专车,4=市内小件物流"/> |
| | | </div> |
| | | |
| | | <div class="col-sm-6"> |
| | |
| | | <#input id="id" name="" value="${item.id}" underline="true"/> |
| | | <#input id="orderId" name="订单id" value="${item.orderId}" underline="true"/> |
| | | <#input id="driverId" name="司机id" value="${item.driverId}" underline="true"/> |
| | | <#input id="orderType" name="1=专车,2=出租车,3=跨城出行,4=跨城小件物流,5=同城小件物流,6=包车" value="${item.orderType}" /> |
| | | <#input id="orderType" name="1=专车,4=市内小件物流" value="${item.orderType}" /> |
| | | </div> |
| | | |
| | | <div class="col-sm-6"> |
| | |
| | | <div class="col-sm-3"> |
| | | <#SelectCon id="type" name="订单类型" > |
| | | <option value="">全部</option> |
| | | <option value="4">同城物流</option> |
| | | <option value="5">跨城物流</option> |
| | | <option value="4">市内小件物流</option> |
| | | </#SelectCon> |
| | | </div> |
| | | <div class="col-sm-3"> |
| | |
| | | <#label id="orderNum" name="订单编号" value="${item.orderNum}"/> |
| | | <#label id="travelTimeStr" name="乘车时间" value="${item.travelTimeStr}"/> |
| | | <#label id="userPhone" name="下单用户手机号" value="${item.userPhone}"/> |
| | | <#label id="passengersPhone" name="收货人手机号" value="${item.passengersPhone}"/> |
| | | <#label id="passengersPhone" name="收货人手机号" value="${item.recipientPhone}"/> |
| | | <#label id="endAddress" name="终点" value="${item.endAddress}"/> |
| | | <#label id="car" name="接单车辆" value="${item.car}"/> |
| | | </div> |
| | |
| | | </div> |
| | | <div class="row"> |
| | | <div class="col-sm-10"> |
| | | <div class="form-horizontal" id="container" style="margin-left: 50px;width: 100%; height: 500px;"></div> |
| | | <div class="input-card" style="margin-left: 50px;"> |
| | | <h4>轨迹回放控制</h4> |
| | | <div class="input-item"> |
| | | <input type="button" class="btn" value="开始动画" id="start" onclick="startAnimation()"/> |
| | | <input type="button" class="btn" value="暂停动画" id="pause" onclick="pauseAnimation()"/> |
| | | <input type="button" class="btn" value="继续动画" id="resume" onclick="resumeAnimation()"/> |
| | | <input type="button" class="btn" value="停止动画" id="stop" onclick="stopAnimation()"/> |
| | | </div> |
| | | <div class="input-item"> |
| | | </div> |
| | | </div> |
| | | <div class="form-horizontal" id="map" style="margin-left: 50px;width: 100%; height: 500px;"></div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script> |
| | | <script src="https://webapi.amap.com/maps?v=1.4.8&key=e17d799b2506d05faf7f88320a266803"></script> |
| | | <script src="https://cache.amap.com/lbs/static/addToolbar.js"></script> |
| | | <script defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyA_FEliOkbkL1IAHQsnBpbpo9MlIp729H0&callback=initMap&v=weekly"></script> |
| | | <script src="${ctxPath}/static/modular/system/tOrderPrivateCar/tOrderPrivateCar_info.js"></script> |
| | | @} |
| | |
| | | <div class="col-sm-12"> |
| | | <div class="ibox float-e-margins"> |
| | | <div class="ibox-title"> |
| | | <h5>管理</h5> |
| | | <h5>报失管理</h5> |
| | | </div> |
| | | <div class="ibox-content"> |
| | | <div class="row row-lg"> |
| | |
| | | <div class="col-sm-6 b-r"> |
| | | <#input id="id" name="主键" underline="true"/> |
| | | <#input id="userId" name="用户id" underline="true"/> |
| | | <#input id="orderType" name="业务类型(1=专车,2=出租车,3=跨城出行,4=同城小件物流,5=跨城小件物流,6=包车)" underline="true"/> |
| | | <#input id="orderType" name="业务类型(1=专车,4=市内小件物流)" underline="true"/> |
| | | <#input id="orderId" name="订单id" underline="true"/> |
| | | <#input id="remark" name="备注" underline="true"/> |
| | | <#input id="image" name="图片"/> |
| | |
| | | <div class="col-sm-6 b-r"> |
| | | <#input id="id" name="主键" value="${item.id}" underline="true"/> |
| | | <#input id="userId" name="用户id" value="${item.userId}" underline="true"/> |
| | | <#input id="orderType" name="业务类型(1=专车,2=出租车,3=跨城出行,4=同城小件物流,5=跨城小件物流,6=包车)" value="${item.orderType}" underline="true"/> |
| | | <#input id="orderType" name="业务类型(1=专车,4=市内小件物流)" value="${item.orderType}" underline="true"/> |
| | | <#input id="orderId" name="订单id" value="${item.orderId}" underline="true"/> |
| | | <#input id="remark" name="备注" value="${item.remark}" underline="true"/> |
| | | <#input id="image" name="图片" value="${item.image}" /> |
| | |
| | | <br/> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- |
| | | <div class="form-group"> |
| | | <label class="col-sm-2 control-label">改派设置:</label> |
| | | <div class="col-sm-10"> |
| | |
| | | name="one" id="one" class="form-control newWidth" /> 元;<br/> |
| | | </div> |
| | | </div> |
| | | |
| | | --> |
| | | <div class="form-group"> |
| | | <label class="col-sm-2 control-label">积分设置:</label> |
| | | <div class="col-sm-10"> |
| | |
| | | name="two" id="two" class="form-control newWidth" /> 积分;<br/> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- |
| | | <div class="form-group" style="height: 70px;"> |
| | | <label class="col-sm-2 control-label">人脸识别:</label> |
| | | <div class="col-sm-10"> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | --> |
| | | <div class="form-group"> |
| | | <label class="col-sm-2 control-label">专车改派:</label> |
| | | <div class="col-sm-10"> |
| | |
| | | * 提交操作 |
| | | */ |
| | | function setUp() { |
| | | var one = $("#one").val().trim(); |
| | | // var one = $("#one").val().trim(); |
| | | var one = "0.00"; |
| | | var two = $("#two").val().trim(); |
| | | var three = $("input[name='three']:checked").val(); |
| | | var openValue = $("#openValue").val(); |
| | | // var three = $("input[name='three']:checked").val(); |
| | | var three = "2"; |
| | | // var openValue = $("#openValue").val(); |
| | | var openValue = "0"; |
| | | |
| | | var isSpecialCar = $("#isSpecialCar").is(":checked"); |
| | | if (isSpecialCar){ |
| | |
| | | Feng.info("输入框不能为空!"); |
| | | return; |
| | | }else if (1 == three){ |
| | | if ("" == openValue || null == openValue || undefined == openValue){ |
| | | Feng.info("人脸识别分钟数不能为空!"); |
| | | return; |
| | | }else if (!regInt.test(openValue)) { |
| | | Feng.info("人脸识别分钟数格式不正确!"); |
| | | return; |
| | | } |
| | | // if ("" == openValue || null == openValue || undefined == openValue){ |
| | | // Feng.info("人脸识别分钟数不能为空!"); |
| | | // return; |
| | | // }else if (!regInt.test(openValue)) { |
| | | // Feng.info("人脸识别分钟数格式不正确!"); |
| | | // return; |
| | | // } |
| | | } else if (!regDouble.test(one) || !regInt.test(two) |
| | | |
| | | || !regDouble.test(zc1) || !regInt.test(zc2) || !regDouble.test(zc3) |
| | |
| | | <div class="form-group"> |
| | | <label class="col-sm-2 control-label">选择车型:</label> |
| | | <div class="col-sm-10"> |
| | | <select class="form-control" id="serverCarModelId" name="serverCarModelId" style="width: 200px;"> |
| | | <select class="form-control" id="serverCarModelId" name="serverCarModelId" disabled style="width: 200px;"> |
| | | <option value="">选择车型</option> |
| | | @for(obj in modelList!){ |
| | | <option value="${obj.id}" ${obj.id == item.serverCarModelId ? 'selected=selected' : ''}>${obj.name}</option> |
| | |
| | | <input type="text" name="zc1" id="num4" class="form-control newWidth" /> 张 |
| | | <input type="text" name="zc1" id="num5" class="form-control newWidth" placeholder="请选择" readonly="readonly" onclick="RegistInfoDlg.selecteCoupon(1)"/> 元专车优惠券 |
| | | <br/> |
| | | <br/> |
| | | 送 |
| | | <input type="text" name="zc1" id="num6" class="form-control newWidth" /> 张 |
| | | <input type="text" name="zc1" id="num7" class="form-control newWidth" placeholder="请选择" readonly="readonly" onclick="RegistInfoDlg.selecteCoupon(2)"/> 元出租车优惠券 |
| | | <br/> |
| | | <br/> |
| | | 送 |
| | | <input type="text" name="zc1" id="num8" class="form-control newWidth" /> 张 |
| | | <input type="text" name="zc1" id="num9" class="form-control newWidth" placeholder="请选择" readonly="readonly" onclick="RegistInfoDlg.selecteCoupon(3)"/> 元城际优惠券 |
| | | <br/> |
| | | <!--<br/>--> |
| | | <!--送--> |
| | | <!-- <input type="text" name="zc1" id="num6" class="form-control newWidth" /> 张--> |
| | | <!-- <input type="text" name="zc1" id="num7" class="form-control newWidth" placeholder="请选择" readonly="readonly" onclick="RegistInfoDlg.selecteCoupon(2)"/> 元出租车优惠券--> |
| | | <!--<br/>--> |
| | | <!--<br/>--> |
| | | <!--送--> |
| | | <!-- <input type="text" name="zc1" id="num8" class="form-control newWidth" /> 张--> |
| | | <!-- <input type="text" name="zc1" id="num9" class="form-control newWidth" placeholder="请选择" readonly="readonly" onclick="RegistInfoDlg.selecteCoupon(3)"/> 元城际优惠券--> |
| | | <!--<br/>--> |
| | | <br/> |
| | | 有效期 |
| | | <input type="text" name="zc1" id="num10" class="form-control newWidth" /> 天, |
| | |
| | | {title: '专车券领取总数', field: 'speNumber', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '专车券使用总数', field: 'speUseNumber', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '专车券使用总金额', field: 'speUserMoney', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '出租车券领取总数', field: 'taxiNumber', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '出租车券使用总数', field: 'taxiUseNumber', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '出租车券使用总金额', field: 'taxiUserMoney', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '城际券领取总数', field: 'intercityNumber', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '城际券使用总数', field: 'intercityUseNumber', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '城际券使用总金额', field: 'intercityUserMoney', visible: true, align: 'center', valign: 'middle'}, |
| | | // {title: '出租车券领取总数', field: 'taxiNumber', visible: true, align: 'center', valign: 'middle'}, |
| | | // {title: '出租车券使用总数', field: 'taxiUseNumber', visible: true, align: 'center', valign: 'middle'}, |
| | | // {title: '出租车券使用总金额', field: 'taxiUserMoney', visible: true, align: 'center', valign: 'middle'}, |
| | | // {title: '城际券领取总数', field: 'intercityNumber', visible: true, align: 'center', valign: 'middle'}, |
| | | // {title: '城际券使用总数', field: 'intercityUseNumber', visible: true, align: 'center', valign: 'middle'}, |
| | | // {title: '城际券使用总金额', field: 'intercityUserMoney', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '', field: 'insertTime', visible: true, align: 'center', valign: 'middle', |
| | | formatter: function (value, row) { |
| | | var btn = ''; |
| | |
| | | <th style="width: 300px;">通用券数量</th> |
| | | <th style="width: 300px;">专车券金额</th> |
| | | <th style="width: 300px;">专车券数量</th> |
| | | <th style="width: 400px;">出租车券金额</th> |
| | | <th style="width: 400px;">出租车券数量</th> |
| | | <th style="width: 300px;">城际金额</th> |
| | | <th style="width: 300px;">城际券数量</th> |
| | | <!--<th style="width: 400px;">出租车券金额</th>--> |
| | | <!--<th style="width: 400px;">出租车券数量</th>--> |
| | | <!--<th style="width: 300px;">城际金额</th>--> |
| | | <!--<th style="width: 300px;">城际券数量</th>--> |
| | | <th style="width: 100px;">操作</th> |
| | | </tr> |
| | | </thead> |
| | |
| | | |
| | | <input type="text" name="zc1" id="content5Num1" class="form-control newWidth" /> 折 |
| | | <br/> |
| | | <!-- |
| | | <br/> |
| | | 出租车活动打折: |
| | | |
| | | <input type="text" name="zc1" id="content5Num2" class="form-control newWidth" /> 折 |
| | | <br/> |
| | | --> |
| | | <br/> |
| | | 小件物流活动打折: |
| | | <input type="text" name="zc1" id="content5Num3" class="form-control newWidth" /> 折 |
| | |
| | | <th style="width: 300px;">通用券数量</th> |
| | | <th style="width: 300px;">专车券金额</th> |
| | | <th style="width: 300px;">专车券数量</th> |
| | | <th style="width: 400px;">出租车券金额</th> |
| | | <th style="width: 400px;">出租车券数量</th> |
| | | <th style="width: 300px;">城际金额</th> |
| | | <th style="width: 300px;">城际券数量</th> |
| | | <!--<th style="width: 400px;">出租车券金额</th>--> |
| | | <!--<th style="width: 400px;">出租车券数量</th>--> |
| | | <!--<th style="width: 300px;">城际金额</th>--> |
| | | <!--<th style="width: 300px;">城际券数量</th>--> |
| | | </tr> |
| | | </thead> |
| | | <tbody id="coun"> |
| | | @for(obj in balanceInfoList){ |
| | | <tr class="timeClass">' + |
| | | <tr class="timeClass"> |
| | | <td><input type="hidden" id="num1" name="num1" value="${obj.money}">${obj.money}</td> |
| | | <td><input type="hidden" id="num10" name="num10" value="${obj.effective}">${obj.effective}</td> |
| | | <td><input type="hidden" id="num11" name="num3" value="${obj.totalPrice}">${obj.totalPrice}</td> |
| | |
| | | <td><input type="hidden" id="num5" name="num5" value="${obj.specialCouponMoney}">${obj.specialCouponMoney}</td> |
| | | <td><input type="hidden" id="num4" name="num4" value="${obj.specialNum}">${obj.specialNum}</td> |
| | | |
| | | <td><input type="hidden" id="num7" name="num7" value="${obj.taxiCouponMoney}">${obj.taxiCouponMoney}</td> |
| | | <td><input type="hidden" id="num6" name="num6" value="${obj.taxiNum}">${obj.taxiNum}</td> |
| | | <!--<td><input type="hidden" id="num7" name="num7" value="${obj.taxiCouponMoney}">${obj.taxiCouponMoney}</td>--> |
| | | <!--<td><input type="hidden" id="num6" name="num6" value="${obj.taxiNum}">${obj.taxiNum}</td>--> |
| | | |
| | | <td><input type="hidden" id="num9" name="num9" value="${obj.intercityCouponMoney}">${obj.intercityCouponMoney}</td> |
| | | <td><input type="hidden" id="num8" name="num8" value="${obj.intercityNum}">${obj.intercityNum}</td> |
| | | <!--<td><input type="hidden" id="num9" name="num9" value="${obj.intercityCouponMoney}">${obj.intercityCouponMoney}</td>--> |
| | | <!--<td><input type="hidden" id="num8" name="num8" value="${obj.intercityNum}">${obj.intercityNum}</td>--> |
| | | </tr> |
| | | @} |
| | | </tbody> |
| | |
| | | @} |
| | | name="zc1" id="content5Num1" class="form-control newWidth" readonly/> |
| | | <br/> |
| | | <!-- |
| | | <br/> |
| | | 出租车活动打折: |
| | | |
| | |
| | | @} |
| | | name="zc1" id="content5Num2" class="form-control newWidth" readonly/> |
| | | <br/> |
| | | --> |
| | | <br/> |
| | | 距离: |
| | | <input type="text" |
| | |
| | | <th style="width: 300px;">通用券数量</th> |
| | | <th style="width: 300px;">专车券金额</th> |
| | | <th style="width: 300px;">专车券数量</th> |
| | | <th style="width: 400px;">出租车券金额</th> |
| | | <th style="width: 400px;">出租车券数量</th> |
| | | <th style="width: 300px;">城际金额</th> |
| | | <th style="width: 300px;">城际券数量</th> |
| | | <!--<th style="width: 400px;">出租车券金额</th>--> |
| | | <!--<th style="width: 400px;">出租车券数量</th>--> |
| | | <!--<th style="width: 300px;">城际金额</th>--> |
| | | <!--<th style="width: 300px;">城际券数量</th>--> |
| | | <th style="width: 100px;">操作</th> |
| | | </tr> |
| | | </thead> |
| | | <tbody id="coun"> |
| | | @for(obj in balanceInfoList){ |
| | | <tr class="timeClass">' + |
| | | <tr class="timeClass"> |
| | | <td><input type="hidden" id="id1" name="id1" value="${obj.generalCouponId}"><input type="hidden" id="num1" name="num1" value="${obj.money}">${obj.money}</td> |
| | | <td><input type="hidden" id="id2" name="id2" value="${obj.specialCouponId}"><input type="hidden" id="num10" name="num10" value="${obj.effective}">${obj.effective}</td> |
| | | <td><input type="hidden" id="num11" name="num11" value="${obj.totalPrice}">${obj.totalPrice}</td> |
| | |
| | | @} |
| | | name="zc1" id="content5Num1" class="form-control newWidth" /> |
| | | <br/> |
| | | <!-- |
| | | <br/> |
| | | 出租车活动打折: |
| | | |
| | |
| | | @} |
| | | name="zc1" id="content5Num2" class="form-control newWidth" /> |
| | | <br/> |
| | | --> |
| | | <br/> |
| | | 小件物流活动打折: |
| | | <input type="text" |
| | |
| | | var uid = $("#3dnzNxplgTiHaddR",top.window.document).val(); |
| | | var markers = []; |
| | | var companyId = ''; |
| | | var mark_last;//记录上一次点击的mark |
| | | |
| | | var Home = { |
| | | id: "VersionTable", //表格id |
| | |
| | | }); |
| | | getData(); |
| | | getCompanyByUid(); |
| | | // setInterval(function () { |
| | | // Home.webSocketClient(null); |
| | | // }, 60000 * 5); |
| | | // setInterval(function () { |
| | | // Home.getAllOrder(); |
| | | // }, 60000 * 5); |
| | | setInterval(function () { |
| | | Home.webSocketClient(null); |
| | | }, 60000 * 5); |
| | | setInterval(function () { |
| | | Home.getAllOrder(); |
| | | }, 60000 * 5); |
| | | }); |
| | | |
| | | |
| | | |
| | | var map = new AMap.Map('container',{ |
| | | resizeEnable: true, |
| | | zoom:10 |
| | | }); |
| | | let map; |
| | | let markers = []; |
| | | |
| | | let map2; |
| | | |
| | | let markers2 = []; |
| | | |
| | | function initMap() { |
| | | // The location of Uluru |
| | | const uluru = { lat: 5.668430499999999, lng: -0.060339 }; |
| | | // The map, centered at Uluru |
| | | map = new google.maps.Map(document.getElementById("map"), { |
| | | zoom: 8, |
| | | center: uluru, |
| | | }); |
| | | |
| | | // The map, centered at Uluru |
| | | map2 = new google.maps.Map(document.getElementById("map1"), { |
| | | zoom: 7, |
| | | center: uluru, |
| | | }); |
| | | } |
| | | |
| | | |
| | | var map_ = new AMap.Map('container_',{ |
| | | resizeEnable: true, |
| | | mapStyle: 'amap://styles/1de318cbb8d12c02303a22c550b9ccc9', |
| | | zoom:10 |
| | | }); |
| | | |
| | | var mouseTool = new AMap.MouseTool(map); |
| | | //监听draw事件可获取画好的覆盖物 |
| | | var overlays = []; |
| | | var name = null; |
| | | var coordinate = '';//存储坐标 |
| | | mouseTool.on('draw',function(e){ |
| | | overlays.push(e.obj); |
| | | console.log(e.obj.getPath()); |
| | | |
| | | switch (name) { |
| | | case 'polyline':{//折线图 |
| | | var polyline = e.obj.getPath(); |
| | | getCoordinate(polyline); |
| | | break; |
| | | } |
| | | case 'polygon':{//多边形 |
| | | var polygon = e.obj.getPath(); |
| | | getCoordinate(polygon); |
| | | break; |
| | | } |
| | | case 'rectangle':{//矩形 |
| | | var rectangle = e.obj.getPath(); |
| | | getCoordinate(rectangle); |
| | | break; |
| | | } |
| | | case 'circle':{//圆行 |
| | | var center = e.obj.getCenter(); |
| | | var radius = e.obj.getRadius(); |
| | | if(radius > 5000){ |
| | | Feng.error("创建电子围栏失败,圆半径不能大于5000米"); |
| | | return; |
| | | } |
| | | coordinate = center.lng + ',' + center.lat + ';' + radius; |
| | | break; |
| | | } |
| | | } |
| | | console.log(coordinate); |
| | | }) |
| | | |
| | | window.initMap = initMap; |
| | | |
| | | function getCompanyByUid() { |
| | | $.ajax({ |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | function clearMarkers() { |
| | | for (let i = 0; i < markers.length; i++) { |
| | | markers[i].setMap(null); |
| | | } |
| | | markers = []; |
| | | } |
| | | |
| | | function clearMarkers1() { |
| | | for (let i = 0; i < markers2.length; i++) { |
| | | markers2[i].setMap(null); |
| | | } |
| | | markers2 = []; |
| | | } |
| | | |
| | | |
| | | |
| | | Home.webSocketClient = function (companyId) { |
| | | $.ajax({ |
| | | url: Feng.ctxPath + '/home/getDriverPosition', |
| | | type: 'POST', |
| | | data: { |
| | | companyId: companyId, |
| | | //暂定修改此处,不改方法 |
| | | state:$("#driverState").val() |
| | | companyId: companyId |
| | | }, |
| | | success: function (res) { |
| | | map.remove(markers); |
| | | markers = []; |
| | | var data = res.driver; |
| | | clearMarkers(); |
| | | var data1 = res.driver1; |
| | | var data2 = res.driver2; |
| | | var order = res.order; |
| | | var d = ''; |
| | | for(var i in data){ |
| | | var driver = data[i].driver; |
| | | var driverId = driver.id |
| | | var state='<span style="font-size:12px;padding:3px 3px;float: right" class="label label-error">离</span>'; |
| | | if("2"==driver.state){ |
| | | state='<span style="font-size:12px;padding:3px 3px;float: right" class="label label-warning">听</span>'; |
| | | }else if("3"==driver.state){ |
| | | state='<span style="font-size:12px;padding:3px 3px;float: right" class="label label-primary">载</span>'; |
| | | } |
| | | d += '<li style="font-size: 12px;" class="list-group-item" ondblclick="Home.dblclickDriver('+i+')" id="' + driverId + '">' + driver.name + '-' + driver.phone +state+ '</li>'; |
| | | if('' != data[i].lon){ |
| | | // 创建 AMap.Icon 实例: |
| | | var icon = new AMap.Icon({ |
| | | size: new AMap.Size(40, 50), // 图标尺寸 |
| | | image: '/static/car.png', // Icon的图像 |
| | | // imageOffset: new AMap.Pixel(0, -60), // 图像相对展示区域的偏移量,适于雪碧图等 |
| | | imageSize: new AMap.Size(40, 50), // 根据所设置的大小拉伸或压缩图片 |
| | | }); |
| | | for(var i in data1){ |
| | | var driver = data1[i].driver; |
| | | var driverId = driver.id; |
| | | d += '<li class="list-group-item" id="' + driverId + '">' + driver.name + '-' + driver.phone + '</li>'; |
| | | if('' != data1[i].lon){ |
| | | const image = { |
| | | url: "/static/icon_car@2x.png", |
| | | size: new google.maps.Size(50, 50), |
| | | origin: new google.maps.Point(16, 15), |
| | | anchor: new google.maps.Point(0, 0), |
| | | }; |
| | | const shape = { |
| | | coords: [1, 1, 1, 20, 18, 20, 18, 1], |
| | | type: "poly", |
| | | }; |
| | | |
| | | var marker = new AMap.Marker({ |
| | | position: new AMap.LngLat(data[i].lon, data[i].lat), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9] |
| | | offset: new AMap.Pixel(-10, -10), |
| | | icon: icon, // 添加 Icon 实例 |
| | | }); |
| | | marker.setExtData([driverId]) |
| | | marker.on('click', function(){ |
| | | Home.openNetCarInfo(this); |
| | | }); |
| | | //console.log(marker); |
| | | markers.push(marker) |
| | | markers.push( |
| | | new google.maps.Marker({ |
| | | position: { lat: parseFloat(data1[i].lat), lng: parseFloat(data1[i].lon) }, |
| | | map, |
| | | icon: image, |
| | | shape: shape, |
| | | title: driver.name + '-' + driver.phone, |
| | | zIndex: driverId, |
| | | }) |
| | | ) |
| | | } |
| | | } |
| | | |
| | | for(var i in data2){ |
| | | var driver = data2[i].driver; |
| | | var driverId = driver.id; |
| | | d += '<li class="list-group-item" id="' + driverId + '">' + driver.name + '-' + driver.phone + '</li>'; |
| | | if('' != data2[i].lon){ |
| | | const image = { |
| | | url: "/static/car.png", |
| | | size: new google.maps.Size(50, 50), |
| | | origin: new google.maps.Point(0, 0), |
| | | anchor: new google.maps.Point(0, 50), |
| | | }; |
| | | const shape = { |
| | | coords: [1, 1, 1, 20, 18, 20, 18, 1], |
| | | type: "poly", |
| | | }; |
| | | |
| | | markers.push( |
| | | new google.maps.Marker({ |
| | | position: { lat: parseFloat(data2[i].lat), lng: parseFloat(data2[i].lon) }, |
| | | map, |
| | | icon: image, |
| | | shape: shape, |
| | | title: driver.name + '-' + driver.phone, |
| | | zIndex: driverId, |
| | | }) |
| | | ) |
| | | } |
| | | } |
| | | $('#netcardriver').html(d); |
| | | map.add(markers); |
| | | |
| | | //订单数据 |
| | | var privateCar=order.privateCar; |
| | | var zhuanche = order.zhuanche; |
| | | var kuacheng = order.kuacheng; |
| | | var chuzu = order.chuzu; |
| | | var kuahceng = order.kuahceng; |
| | | var o = ''; |
| | | $('#order').html(o); |
| | | console.log(order); |
| | | |
| | | var zc = '<div class="list-group"><a href="#" class="list-group-item active">专车未接订单</a>' |
| | | for(var i in privateCar){ |
| | | zc += '<a href="#" class="list-group-item"><p class="list-group-item-text">起点:' + privateCar[i].start + '</p><p class="list-group-item-text">终点:' + privateCar[i].end + '</p>' + |
| | | '<p class="list-group-item-text">下单时间:' + privateCar[i].travelTime + '</p><p class="list-group-item-text">车型:' + privateCar[i].carModel + '</p>' + |
| | | '<p class="list-group-item-text">人数:' + privateCar[i].num + '</p></a>'; |
| | | for(var i in zhuanche){ |
| | | zc += '<a href="#" class="list-group-item"><p class="list-group-item-text">起点:' + zhuanche[i].startAddress + '</p><p class="list-group-item-text">终点:' + zhuanche[i].endAddress + '</p>' + |
| | | '<p class="list-group-item-text">下单时间:' + new Date(zhuanche[i].travelTime) + '</p>' + |
| | | '</a>'; |
| | | } |
| | | zc += '</div>'; |
| | | o += zc; |
| | | |
| | | var kc = '<div class="list-group"><a href="#" class="list-group-item active">跨城出行未接订单</a>' |
| | | var kc = '<div class="list-group"><a href="#" class="list-group-item active">市内小件物流未接订单</a>' |
| | | for(var i in kuacheng){ |
| | | kc += '<a href="#" class="list-group-item"><p class="list-group-item-text">起点:' + kuacheng[i].start + '</p><p class="list-group-item-text">终点:' + kuacheng[i].end + '</p>' + |
| | | '<p class="list-group-item-text">下单时间:' + kuacheng[i].travelTime + '</p><p class="list-group-item-text">车型:' + kuacheng[i].carModel + '</p>' + |
| | | '<p class="list-group-item-text">人数:' + kuacheng[i].num + '</p></a>'; |
| | | kc += '<a href="#" class="list-group-item"><p class="list-group-item-text">起点:' + kuacheng[i].startAddress + '</p><p class="list-group-item-text">终点:' + kuacheng[i].endAddress + '</p>' + |
| | | '<p class="list-group-item-text">下单时间:' + new Date(kuacheng[i].travelTime) + '</p><p class="list-group-item-text">物品类型:' + kuacheng[i].cargoName + '</p>' + |
| | | '<p class="list-group-item-text">数量:' + kuacheng[i].cargoNumber + '</p></a>'; |
| | | } |
| | | |
| | | kc += '</div>'; |
| | | o += kc; |
| | | |
| | | var cz = '<div class="list-group"><a href="#" class="list-group-item active">出租车未接订单</a>' |
| | | for(var i in chuzu){ |
| | | cz += '<a href="#" class="list-group-item"><p class="list-group-item-text">起点:' + chuzu[i].start + '</p><p class="list-group-item-text">终点:' + chuzu[i].end + '</p>' + |
| | | '<p class="list-group-item-text">下单时间:' + chuzu[i].travelTime + '</p><p class="list-group-item-text">车型:' + chuzu[i].carModel + '</p>' + |
| | | '<p class="list-group-item-text">人数:' + chuzu[i].num + '</p></a>'; |
| | | } |
| | | cz += '</div>'; |
| | | o += cz; |
| | | |
| | | var cx = '<div class="list-group"><a href="#" class="list-group-item active">城乡出行未接订单</a>' |
| | | for(var i in kuahceng){ |
| | | cx += '<a href="#" class="list-group-item"><p class="list-group-item-text">起点:' + kuahceng[i].start + '</p><p class="list-group-item-text">终点:' + kuahceng[i].end + '</p>' + |
| | | '<p class="list-group-item-text">下单时间:' + kuahceng[i].travelTime + '</p><p class="list-group-item-text">车型:' + kuahceng[i].carModel + '</p>' + |
| | | '<p class="list-group-item-text">人数:' + kuahceng[i].num + '</p></a>'; |
| | | } |
| | | cx += '</div>'; |
| | | o += cx; |
| | | |
| | | $('#order').html(o); |
| | | } |
| | |
| | | $.ajax({ |
| | | url: Feng.ctxPath + '/home/getAllOrder', |
| | | type: 'POST', |
| | | data: { |
| | | companyId: companyId, |
| | | uid: uid |
| | | }, |
| | | success: function (res) { |
| | | var style = [{ |
| | | url: 'https://a.amap.com/jsapi_demos/static/images/mass0.png', |
| | | anchor: new AMap.Pixel(6, 6), |
| | | size: new AMap.Size(11, 11) |
| | | }, { |
| | | url: 'https://a.amap.com/jsapi_demos/static/images/mass1.png', |
| | | anchor: new AMap.Pixel(4, 4), |
| | | size: new AMap.Size(7, 7) |
| | | }, { |
| | | url: 'https://a.amap.com/jsapi_demos/static/images/mass2.png', |
| | | anchor: new AMap.Pixel(3, 3), |
| | | size: new AMap.Size(5, 5) |
| | | }]; |
| | | |
| | | var mass = new AMap.MassMarks(citys, { |
| | | opacity: 0.8, |
| | | zIndex: 111, |
| | | cursor: 'pointer', |
| | | style: style |
| | | }); |
| | | |
| | | var marker = new AMap.Marker({content: ' ', map: map_}); |
| | | |
| | | mass.on('mouseover', function (e) { |
| | | |
| | | marker.setPosition(e.data.lnglat); |
| | | marker.setLabel({content: e.data.name}) |
| | | }); |
| | | |
| | | var data = []; |
| | | clearMarkers1() |
| | | for(var i in res){ |
| | | var obj = { |
| | | lnglat: [res[i].lon, res[i].lat] |
| | | } |
| | | data.push(obj); |
| | | markers2.push( |
| | | new google.maps.Marker({ |
| | | position: { lat: parseFloat(res[i].lat), lng: parseFloat(res[i].lon) }, |
| | | map: map2, |
| | | }) |
| | | ) |
| | | } |
| | | mass.setData(data); |
| | | mass.setMap(map_); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | //双击司机li |
| | | /*Home.dblclickDriver=function (lon,lat) { |
| | | var markerPosition = [lon,lat]; |
| | | map.panTo(markerPosition); |
| | | |
| | | }*/ |
| | | Home.dblclickDriver=function (i) { |
| | | var marker=markers[i]; |
| | | var position=[marker.w.position.lng,marker.w.position.lat]; |
| | | map.panTo(position); |
| | | var iconOld = new AMap.Icon({ |
| | | size: new AMap.Size(40, 50), // 图标尺寸 |
| | | image: '/static/car.png', // Icon的图像 |
| | | imageSize: new AMap.Size(40, 50), // 根据所设置的大小拉伸或压缩图片 |
| | | }); |
| | | var iconNew = new AMap.Icon({ |
| | | size: new AMap.Size(40, 50), // 图标尺寸 |
| | | image: '/static/car_blue.jpg', // Icon的图像 |
| | | imageSize: new AMap.Size(40, 50), // 根据所设置的大小拉伸或压缩图片 |
| | | }); |
| | | //标记当前这个的样式 |
| | | marker.setIcon(iconNew); |
| | | //还原上一个的样式 |
| | | if(typeof (mark_last) != "undefined"){ |
| | | if(mark_last!=marker){ |
| | | mark_last.setIcon(iconOld); |
| | | } |
| | | |
| | | } |
| | | //记录为最后一个标记的 |
| | | mark_last=marker; |
| | | } |
| | | |
| | | |
| | | function getData1() { |
| | |
| | | Feng.error("请输入正确金额数!"); |
| | | return; |
| | | } |
| | | if (!re.test($("#num7").val())) { |
| | | Feng.error("请输入正确金额数!"); |
| | | return; |
| | | } |
| | | if (!re.test($("#num9").val())) { |
| | | Feng.error("请输入正确金额数!"); |
| | | return; |
| | | } |
| | | // if (!re.test($("#num7").val())) { |
| | | // Feng.error("请输入正确金额数!"); |
| | | // return; |
| | | // } |
| | | // if (!re.test($("#num9").val())) { |
| | | // Feng.error("请输入正确金额数!"); |
| | | // return; |
| | | // } |
| | | if (!re.test($("#num11").val())) { |
| | | Feng.error("请输入正确金额数!"); |
| | | return; |
| | |
| | | Feng.error("请输入正确小时数!"); |
| | | return; |
| | | } |
| | | if (!/^[1-9]\d*$/.test($("#num6").val())) { |
| | | Feng.error("请输入正确小时数!"); |
| | | return; |
| | | } |
| | | if (!/^[1-9]\d*$/.test($("#num8").val())) { |
| | | Feng.error("请输入正确小时数!"); |
| | | return; |
| | | } |
| | | // if (!/^[1-9]\d*$/.test($("#num6").val())) { |
| | | // Feng.error("请输入正确小时数!"); |
| | | // return; |
| | | // } |
| | | // if (!/^[1-9]\d*$/.test($("#num8").val())) { |
| | | // Feng.error("请输入正确小时数!"); |
| | | // return; |
| | | // } |
| | | if (!/^[1-9]\d*$/.test($("#num10").val())) { |
| | | Feng.error("请输入正确单数!"); |
| | | return; |
| | |
| | | ajax.set("num3",$("#num3").val()); |
| | | ajax.set("num4",$("#num4").val()); |
| | | ajax.set("num5",$("#num5").val()); |
| | | ajax.set("num6",$("#num6").val()); |
| | | ajax.set("num7",$("#num7").val()); |
| | | ajax.set("num8",$("#num8").val()); |
| | | ajax.set("num9",$("#num9").val()); |
| | | ajax.set("num6",0); |
| | | ajax.set("num7",0); |
| | | ajax.set("num8",0); |
| | | ajax.set("num9",0); |
| | | ajax.set("num10",$("#num10").val()); |
| | | ajax.set("num11",$("#num11").val()); |
| | | ajax.start(); |
| | |
| | | Feng.error("请输入正确金额数!"); |
| | | return; |
| | | } |
| | | if (!re.test($("#num7").val())) { |
| | | Feng.error("请输入正确金额数!"); |
| | | return; |
| | | } |
| | | if (!re.test($("#num9").val())) { |
| | | Feng.error("请输入正确金额数!"); |
| | | return; |
| | | } |
| | | // if (!re.test($("#num7").val())) { |
| | | // Feng.error("请输入正确金额数!"); |
| | | // return; |
| | | // } |
| | | // if (!re.test($("#num9").val())) { |
| | | // Feng.error("请输入正确金额数!"); |
| | | // return; |
| | | // } |
| | | if (!re.test($("#num11").val())) { |
| | | Feng.error("请输入正确金额数!"); |
| | | return; |
| | |
| | | Feng.error("请输入正确小时数!"); |
| | | return; |
| | | } |
| | | if (!/^[1-9]\d*$/.test($("#num6").val())) { |
| | | Feng.error("请输入正确小时数!"); |
| | | return; |
| | | } |
| | | if (!/^[1-9]\d*$/.test($("#num8").val())) { |
| | | Feng.error("请输入正确小时数!"); |
| | | return; |
| | | } |
| | | // if (!/^[1-9]\d*$/.test($("#num6").val())) { |
| | | // Feng.error("请输入正确小时数!"); |
| | | // return; |
| | | // } |
| | | // if (!/^[1-9]\d*$/.test($("#num8").val())) { |
| | | // Feng.error("请输入正确小时数!"); |
| | | // return; |
| | | // } |
| | | if (!/^[1-9]\d*$/.test($("#num10").val())) { |
| | | Feng.error("请输入正确单数!"); |
| | | return; |
| | |
| | | ajax.set("num3",$("#num3").val()); |
| | | ajax.set("num4",$("#num4").val()); |
| | | ajax.set("num5",$("#num5").val()); |
| | | ajax.set("num6",$("#num6").val()); |
| | | ajax.set("num7",$("#num7").val()); |
| | | ajax.set("num8",$("#num8").val()); |
| | | ajax.set("num9",$("#num9").val()); |
| | | ajax.set("num6",0); |
| | | ajax.set("num7",0); |
| | | ajax.set("num8",0); |
| | | ajax.set("num9",0); |
| | | ajax.set("num10",$("#num10").val()); |
| | | ajax.set("num11",$("#num11").val()); |
| | | ajax.set("id",$("#id").val()); |
| | |
| | | return [ |
| | | [ |
| | | {field: 'selectItem', radio: true, colspan: 1, rowspan: 2}, |
| | | {title: '主键id', field: 'id', visible: false, align: 'center', valign: 'middle', colspan: 1, rowspan: 2}, |
| | | {title: '日期', field: 'time', visible: true, align: 'center', valign: 'middle',width:'150px',colspan: 1, rowspan: 2}, |
| | | {title: '用户注册数量', field: 'register', visible: true, align: 'center', valign: 'middle',width:'100px',colspan: 1, rowspan: 2}, |
| | | {title: '在线司机数', field: 'online', visible: true, align: 'center', valign: 'middle',width:'100px',colspan: 1, rowspan: 2}, |
| | |
| | | [ |
| | | {title: '下单数量', field: 'orderNum', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '乘客取消数量', field: 'cancelNum', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '取消占比', field: 'cancelProportion', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '取消占比%', field: 'cancelProportion', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '通过平台支付(单)', field: 'onlinePay', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '通过其它支付(单)', field: 'offlinePay', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '合计', field: 'total', visible: true, align: 'center', valign: 'middle'}, |
| | |
| | | var table = new BSTable(OperationalData.id, "/report/queryOperationalData", defaultColunms); |
| | | table.setPaginationType("server"); |
| | | table.setQueryParams({ |
| | | type: 2, |
| | | type: $('#type').val(), |
| | | }) |
| | | OperationalData.table = table.init(); |
| | | }); |
| | |
| | | } |
| | | } |
| | | }, |
| | | provinceCode: { |
| | | cityId: { |
| | | validators: { |
| | | notEmpty: { |
| | | message: '请先选择所属城市' |
| | |
| | | if(!this.validate()){ |
| | | return ; |
| | | } |
| | | var isJump = $('#isJump').val(); |
| | | var imgUrl = $("#imgUrl").valueOf(); |
| | | if ("" == imgUrl){ |
| | | Feng.info("请上传广告图图片"); |
| | | return; |
| | | } |
| | | if(1 == isJump){ |
| | | var jumpType = $('#jumpType').val(); |
| | | if('' == jumpType){ |
| | | Feng.info("请选择跳转类型"); |
| | | return; |
| | | } |
| | | var jumpUrl = $('#jumpUrl').val(); |
| | | if(1 == jumpType && '' == jumpUrl){ |
| | | Feng.info("请输入外部跳转链接"); |
| | | return; |
| | | } |
| | | var editor = TAdvertisementInfoDlg.editor.getContent(); |
| | | if(2 == jumpType && ('' == editor || typeof editor == "undefined")){ |
| | | Feng.info("请输入内部跳转内容"); |
| | | return; |
| | | } |
| | | } |
| | | //提交信息 |
| | | var ajax = new $ax(Feng.ctxPath + "/tAdvertisement/add", function(data){ |
| | |
| | | if(!this.validate()){ |
| | | return ; |
| | | } |
| | | var isJump = $('#isJump').val(); |
| | | var imgUrl = $("#imgUrl").valueOf(); |
| | | if ("" == imgUrl){ |
| | | Feng.info("请上传广告图图片"); |
| | | return; |
| | | } |
| | | if(1 == isJump){ |
| | | var jumpType = $('#jumpType').val(); |
| | | if('' == jumpType){ |
| | | Feng.info("请选择跳转类型"); |
| | | return; |
| | | } |
| | | var jumpUrl = $('#jumpUrl').val(); |
| | | if(1 == jumpType && '' == jumpUrl){ |
| | | Feng.info("请输入外部跳转链接"); |
| | | return; |
| | | } |
| | | var editor = TAdvertisementInfoDlg.editor.getContent(); |
| | | if(2 == jumpType && ('' == editor || typeof editor == "undefined")){ |
| | | Feng.info("请输入内部跳转内容"); |
| | | return; |
| | | } |
| | | } |
| | | |
| | | //提交信息 |
| | | var ajax = new $ax(Feng.ctxPath + "/tAdvertisement/update", function(data){ |
| | | Feng.success("修改成功!"); |
| | |
| | | serverBox.push($(this).val()); |
| | | }); |
| | | if (serverBox.length == 0){ |
| | | Feng.info("请选择经营业务"); |
| | | Feng.info("请选择服务模式"); |
| | | return; |
| | | } |
| | | var carPhoto = $("#carPhoto").valueOf(); |
| | |
| | | serverBox.push($(this).val()); |
| | | }); |
| | | if (serverBox.length == 0){ |
| | | Feng.info("请选择经营业务"); |
| | | Feng.info("请选择服务模式"); |
| | | return; |
| | | } |
| | | var carPhoto = $("#carPhoto").valueOf(); |
| | |
| | | }); |
| | | if(authState==2){ |
| | | if (serverBox.length == 0){ |
| | | Feng.info("请选择经营业务"); |
| | | Feng.info("请选择服务模式"); |
| | | return; |
| | | } |
| | | } |
| | |
| | | if (1 == tcx){ |
| | | var tcxPercent = $("#tcxPercent").val(); |
| | | if ("" == tcxPercent){ |
| | | Feng.info("同城小件物流比例抽成不能为空!"); |
| | | Feng.info("市内小件物流比例抽成不能为空!"); |
| | | return; |
| | | }else if (!regDouble.test(tcxPercent)) { |
| | | Feng.info("同城小件物流比例抽成格式不正确!"); |
| | | Feng.info("市内小件物流比例抽成格式不正确!"); |
| | | return; |
| | | } |
| | | }else if (2 == tcx){ |
| | | var tcxMoney = $("#tcxMoney").val(); |
| | | if ("" == tcxMoney){ |
| | | Feng.info("同城小件物流固定金额抽成不能为空!"); |
| | | Feng.info("市内小件物流固定金额抽成不能为空!"); |
| | | return; |
| | | }else if (!regDouble.test(tcxMoney)) { |
| | | Feng.info("同城小件物流固定金额抽成格式不正确!"); |
| | | Feng.info("市内小件物流固定金额抽成格式不正确!"); |
| | | return; |
| | | } |
| | | } |
| | |
| | | if (1 == tcx){ |
| | | var tcxPercent = $("#tcxPercent").val(); |
| | | if ("" == tcxPercent){ |
| | | Feng.info("同城小件物流比例抽成不能为空!"); |
| | | Feng.info("市内小件物流比例抽成不能为空!"); |
| | | return; |
| | | }else if (!regDouble.test(tcxPercent)) { |
| | | Feng.info("同城小件物流比例抽成格式不正确!"); |
| | | Feng.info("市内小件物流比例抽成格式不正确!"); |
| | | return; |
| | | } |
| | | }else if (2 == tcx){ |
| | | var tcxMoney = $("#tcxMoney").val(); |
| | | if ("" == tcxMoney){ |
| | | Feng.info("同城小件物流固定金额抽成不能为空!"); |
| | | Feng.info("市内小件物流固定金额抽成不能为空!"); |
| | | return; |
| | | }else if (!regDouble.test(tcxMoney)) { |
| | | Feng.info("同城小件物流固定金额抽成格式不正确!"); |
| | | Feng.info("市内小件物流固定金额抽成格式不正确!"); |
| | | return; |
| | | } |
| | | } |
| | |
| | | if (1 == tcx){ |
| | | var tcxPercent = $("#tcxPercent").val(); |
| | | if ("" == tcxPercent){ |
| | | Feng.info("同城小件物流比例抽成不能为空!"); |
| | | Feng.info("市内小件物流比例抽成不能为空!"); |
| | | return; |
| | | }else if (!regDouble.test(tcxPercent)) { |
| | | Feng.info("同城小件物流比例抽成格式不正确!"); |
| | | Feng.info("市内小件物流比例抽成格式不正确!"); |
| | | return; |
| | | } |
| | | }else if (2 == tcx){ |
| | | var tcxMoney = $("#tcxMoney").val(); |
| | | if ("" == tcxMoney){ |
| | | Feng.info("同城小件物流固定金额抽成不能为空!"); |
| | | Feng.info("市内小件物流固定金额抽成不能为空!"); |
| | | return; |
| | | }else if (!regDouble.test(tcxMoney)) { |
| | | Feng.info("同城小件物流固定金额抽成格式不正确!"); |
| | | Feng.info("市内小件物流固定金额抽成格式不正确!"); |
| | | return; |
| | | } |
| | | } |
| | |
| | | if (1 == tcx){ |
| | | var tcxPercent = $("#tcxPercent").val(); |
| | | if ("" == tcxPercent){ |
| | | Feng.info("同城小件物流比例抽成不能为空!"); |
| | | Feng.info("市内小件物流比例抽成不能为空!"); |
| | | return; |
| | | }else if (!regDouble.test(tcxPercent)) { |
| | | Feng.info("同城小件物流比例抽成格式不正确!"); |
| | | Feng.info("市内小件物流比例抽成格式不正确!"); |
| | | return; |
| | | } |
| | | }else if (2 == tcx){ |
| | | var tcxMoney = $("#tcxMoney").val(); |
| | | if ("" == tcxMoney){ |
| | | Feng.info("同城小件物流固定金额抽成不能为空!"); |
| | | Feng.info("市内小件物流固定金额抽成不能为空!"); |
| | | return; |
| | | }else if (!regDouble.test(tcxMoney)) { |
| | | Feng.info("同城小件物流固定金额抽成格式不正确!"); |
| | | Feng.info("市内小件物流固定金额抽成格式不正确!"); |
| | | return; |
| | | } |
| | | } |
| | |
| | | $(".timeClass").each(function () { |
| | | subArr.push({ |
| | | recordId:$(this).find("input[name*='recordId']").val(), |
| | | provinceCode:$(this).find("input[name*='provinceCode']").val(), |
| | | cityCode:$(this).find("input[name*='cityCode']").val(), |
| | | areaCode:$(this).find("input[name*='areaCode']").val(), |
| | | cityId:$(this).find("input[name*='cityId']").val(), |
| | | }) |
| | | }); |
| | | if(subArr.length <= 0){ |
| | |
| | | //添加区域 |
| | | TCompanyInfoDlg.addScope = function () { |
| | | var province = $("#province").val(); |
| | | var city = $("#city").val(); |
| | | var area = $("#area").val(); |
| | | if ("" == province){ |
| | | Feng.info("请选择区域"); |
| | | Feng.info("请选择城市"); |
| | | return; |
| | | } |
| | | var subArr=[]; |
| | | $(".timeClass").each(function () { |
| | | subArr.push({ |
| | | recordId:$(this).find("input[name*='recordId']").val(), |
| | | provinceCode:$(this).find("input[name*='provinceCode']").val(), |
| | | cityCode:$(this).find("input[name*='cityCode']").val(), |
| | | areaCode:$(this).find("input[name*='areaCode']").val(), |
| | | cityId:$(this).find("input[name*='cityId']").val() |
| | | }) |
| | | }); |
| | | for(var i=0;i<subArr.length;i++){ |
| | | var provinceCode = subArr[i].provinceCode; |
| | | var cityCode = subArr[i].cityCode; |
| | | var areaCode = subArr[i].areaCode; |
| | | if (province == provinceCode && city == cityCode && area == areaCode) { |
| | | Feng.info("区域已存在,请重新选择"); |
| | | var provinceCode = subArr[i].cityId; |
| | | if (province == provinceCode) { |
| | | Feng.info("城市已存在,请重新选择"); |
| | | return; |
| | | } |
| | | } |
| | | var provinceValue = $("#province option:selected").text(); |
| | | var cityValue = ""; |
| | | if (city != ""){ |
| | | cityValue = $("#city option:selected").text(); |
| | | } |
| | | var areaValue = ""; |
| | | if (area != ""){ |
| | | areaValue = $("#area option:selected").text(); |
| | | } |
| | | |
| | | var str = '<tr class="timeClass">' + |
| | | '<td><input type="hidden" id="recordId" name="recordId" value="0">' + |
| | | '<input type="hidden" id="provinceCode" name="provinceCode" value="'+province+'">' + |
| | | '<input type="hidden" id="cityCode" name="cityCode" value="'+city+'">' + |
| | | '<input type="hidden" id="areaCode" name="areaCode" value="'+area+'">'+provinceValue+cityValue+areaValue+'</td>' + |
| | | '<td><input type="hidden" id="recordId" name="recordId" value="">' + |
| | | '<input type="hidden" id="cityId" name="cityId" value="' + province + '">'+provinceValue+'</td>' + |
| | | '<td><button onclick="deleteSub(this)">移除</button></td></tr>'; |
| | | $("#conn").append(str); |
| | | } |
| | |
| | | return; |
| | | } |
| | | var faceImgUrl = $("#faceImgUrl").val(); |
| | | if ("" == faceImgUrl){ |
| | | Feng.info("请上传人脸识别照片"); |
| | | return; |
| | | } |
| | | // if ("" == faceImgUrl){ |
| | | // Feng.info("请上传人脸识别照片"); |
| | | // return; |
| | | // } |
| | | var driveCardImgUrl1 = $("#driveCardImgUrl1").val(); |
| | | if ("" == driveCardImgUrl1){ |
| | | Feng.info("请上传驾驶证正面照片"); |
| | |
| | | return; |
| | | } |
| | | var faceImgUrl = $("#faceImgUrl").val(); |
| | | if ("" == faceImgUrl){ |
| | | Feng.info("请上传人脸识别照片"); |
| | | return; |
| | | } |
| | | // if ("" == faceImgUrl){ |
| | | // Feng.info("请上传人脸识别照片"); |
| | | // return; |
| | | // } |
| | | var driveCardImgUrl1 = $("#driveCardImgUrl1").val(); |
| | | if ("" == driveCardImgUrl1){ |
| | | Feng.info("请上传驾驶证正面照片"); |
| | |
| | | var networkCarlssueImg = new $WebUpload("networkCarlssueImg"); |
| | | networkCarlssueImg.setUploadBarId("progressBar"); |
| | | networkCarlssueImg.init(); |
| | | var idCardImgUrl1 = new $WebUpload("idCardImgUrl1"); |
| | | idCardImgUrl1.setUploadBarId("progressBar"); |
| | | idCardImgUrl1.init(); |
| | | var idCardImgUrl2 = new $WebUpload("idCardImgUrl2"); |
| | | idCardImgUrl2.setUploadBarId("progressBar"); |
| | | idCardImgUrl2.init(); |
| | | }); |
| | | |
| | | /** |
| | |
| | | {field: 'selectItem',visible: true, radio: true}, |
| | | {title: '日期', field: 'times', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '在线司机数', field: 'driverNum', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '在线时长', field: 'timeNumber', visible: true, align: 'center', valign: 'middle'} |
| | | {title: '在线时长(秒)', field: 'timeNumber', visible: true, align: 'center', valign: 'middle'} |
| | | ]; |
| | | }; |
| | | |
| | |
| | | TIncome.initColumn = function () { |
| | | return [ |
| | | {field: 'selectItem',visible: false, radio: true}, |
| | | {title: '司机名称', field: 'NAME', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '在线时长', field: 'timeNumber', visible: true, align: 'center', valign: 'middle'} |
| | | {title: '司机名称', field: 'name', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '在线时长(秒)', field: 'timeNumber', visible: true, align: 'center', valign: 'middle'} |
| | | ]; |
| | | }; |
| | | |
| | |
| | | return btn; |
| | | } |
| | | }, |
| | | {title: '省', field: 'areaName', visible: true, align: 'center', valign: 'middle', |
| | | {title: '城市', field: 'chineseName', visible: true, align: 'center', valign: 'middle', |
| | | formatter: function (value, row) { |
| | | var btn = ""; |
| | | if(row.areaName != '' && row.areaName != null) { |
| | | btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.areaName + '" onfocus="TUser.tooltip()">' + row.areaName + '</p>'] |
| | | } |
| | | return btn; |
| | | } |
| | | }, |
| | | {title: '市', field: 'cityName', visible: true, align: 'center', valign: 'middle', |
| | | formatter: function (value, row) { |
| | | var btn = ""; |
| | | if(row.cityName != '' && row.cityName != null) { |
| | | btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.cityName + '" onfocus="TUser.tooltip()">' + row.cityName + '</p>'] |
| | | } |
| | | return btn; |
| | | } |
| | | }, |
| | | {title: '区', field: 'provinceName', visible: true, align: 'center', valign: 'middle', |
| | | formatter: function (value, row) { |
| | | var btn = ""; |
| | | if(row.provinceName != '' && row.provinceName != null) { |
| | | btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.provinceName + '" onfocus="TUser.tooltip()">' + row.provinceName + '</p>'] |
| | | if(row.chineseName != '' && row.chineseName != null) { |
| | | btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.chineseName + '" onfocus="TUser.tooltip()">' + row.chineseName + '</p>'] |
| | | } |
| | | return btn; |
| | | } |
| | |
| | | labelStr = labelStr.substring(0,labelStr.length-4); |
| | | labelStrs = labelStrs.substring(0,labelStrs.length-5); |
| | | btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + labelStrs + '" onfocus="TUser.tooltip()">' + labelStr + '</p>'] |
| | | } |
| | | return btn; |
| | | } |
| | | }, |
| | | {title: '是否需要<br/>网约车资格证', field: 'isQualifications', visible: true, align: 'center', valign: 'middle', |
| | | formatter: function (value, row) { |
| | | var btn = ""; |
| | | if(row.isQualifications != '' && row.isQualifications != null) { |
| | | if (row.isQualifications == 1){ |
| | | btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="是" onfocus="TUser.tooltip()">是</p>'] |
| | | } else if (row.isQualifications == 2){ |
| | | btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="否" onfocus="TUser.tooltip()">否</p>'] |
| | | } |
| | | } |
| | | return btn; |
| | | } |
| | |
| | | ajax.set("money",$("#orderMoney").val()); |
| | | ajax.start(); |
| | | } |
| | | var map = new AMap.Map("container", { |
| | | resizeEnable: true, |
| | | zoom: 14 |
| | | }); |
| | | |
| | | |
| | | var map; |
| | | |
| | | function initMap() { |
| | | map = new google.maps.Map(document.getElementById("map"), { |
| | | zoom: 14, |
| | | center: { lat: 0, lng: -180 }, |
| | | mapTypeId: "terrain", |
| | | }); |
| | | } |
| | | |
| | | |
| | | $(function() { |
| | | window.initMap = initMap(); |
| | | getTrajectory(); |
| | | }); |
| | | |
| | |
| | | var data = res.data; |
| | | if(data.length > 0){ |
| | | orderTrack(data); |
| | | }/*else{ |
| | | }else{ |
| | | Feng.error("当前订单没有轨迹"); |
| | | }*/ |
| | | } |
| | | }else{ |
| | | Feng.error(res.msg); |
| | | } |
| | |
| | | }); |
| | | } |
| | | |
| | | var marker, lineArr = []; |
| | | |
| | | function orderTrack(data) { |
| | | //重新设置地图中心点 |
| | | map.setCenter({ lat: parseFloat(data[0].lat), lng: parseFloat(data[0].lon) }) |
| | | const image = { |
| | | url: "/car.png", |
| | | size: new google.maps.Size(50, 50), |
| | | origin: new google.maps.Point(0, 0), |
| | | anchor: new google.maps.Point(30, 40), |
| | | }; |
| | | new google.maps.Marker({ |
| | | map, |
| | | icon: image, |
| | | position: { lat: parseFloat(data[0].lat), lng: parseFloat(data[0].lon) }, |
| | | title: "origin", |
| | | }); |
| | | new google.maps.Marker({ |
| | | map, |
| | | position: { lat: parseFloat(data[data.length - 1].lat), lng: parseFloat(data[data.length - 1].lon) }, |
| | | title: "destination", |
| | | }); |
| | | |
| | | |
| | | const flightPlanCoordinates = []; |
| | | for(var i in data){ |
| | | var waypoints = []; |
| | | var lon = parseFloat(data[i].lon); |
| | | var lat = parseFloat(data[i].lat); |
| | | waypoints.push(lon); |
| | | waypoints.push(lat); |
| | | lineArr.push(waypoints); |
| | | flightPlanCoordinates.push({ |
| | | lat: lat, |
| | | lng: lon |
| | | }) |
| | | } |
| | | |
| | | marker = new AMap.Marker({ |
| | | map: map, |
| | | position: lineArr[0], |
| | | icon: "https://webapi.amap.com/images/car.png", |
| | | offset: new AMap.Pixel(-26, -13), |
| | | autoRotation: true, |
| | | angle:-90, |
| | | const flightPath = new google.maps.Polyline({ |
| | | path: flightPlanCoordinates, |
| | | geodesic: true, |
| | | strokeColor: "#FF0000", |
| | | strokeOpacity: 1.0, |
| | | strokeWeight: 5, |
| | | }); |
| | | |
| | | // 绘制轨迹 |
| | | var polyline = new AMap.Polyline({ |
| | | map: map, |
| | | path: lineArr, |
| | | showDir:true, |
| | | strokeColor: "#28F", //线颜色 |
| | | // strokeOpacity: 1, //线透明度 |
| | | strokeWeight: 6, //线宽 |
| | | // strokeStyle: "solid" //线样式 |
| | | }); |
| | | |
| | | var passedPolyline = new AMap.Polyline({ |
| | | map: map, |
| | | // path: lineArr, |
| | | strokeColor: "#AF5", //线颜色 |
| | | // strokeOpacity: 1, //线透明度 |
| | | strokeWeight: 6, //线宽 |
| | | // strokeStyle: "solid" //线样式 |
| | | }); |
| | | |
| | | |
| | | marker.on('moving', function (e) { |
| | | passedPolyline.setPath(e.passedPath); |
| | | }); |
| | | |
| | | map.setFitView(); |
| | | } |
| | | |
| | | |
| | | function startAnimation () { |
| | | marker.moveAlong(lineArr, 200); |
| | | } |
| | | |
| | | function pauseAnimation () { |
| | | marker.pauseMove(); |
| | | } |
| | | |
| | | function resumeAnimation () { |
| | | marker.resumeMove(); |
| | | } |
| | | |
| | | function stopAnimation () { |
| | | marker.stopMove(); |
| | | } |
| | | flightPath.setMap(map); |
| | | } |
| | |
| | | if (row.state == 1){ |
| | | btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="提交申请" onfocus="TUser.tooltip()">提交申请</p>'] |
| | | } else if (row.state == 2){ |
| | | btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="已支付" onfocus="TUser.tooltip()">已支付</p>'] |
| | | btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="提交申请" onfocus="TUser.tooltip()">提交申请</p>'] |
| | | } else if (row.state == 3){ |
| | | btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="已改派" onfocus="TUser.tooltip()">已改派</p>'] |
| | | } else if (row.state == 4){ |
| | |
| | | }if (!re.test(num5)) { |
| | | Feng.error("请输入正确金额数!"); |
| | | return; |
| | | }if (!re.test(num7)) { |
| | | }/*if (!re.test(num7)) { |
| | | Feng.error("请输入正确金额数!"); |
| | | return; |
| | | }if (!re.test(num9)) { |
| | | Feng.error("请输入正确金额数!"); |
| | | return; |
| | | } |
| | | }*/ |
| | | |
| | | if (!/^[1-9]\d*$/.test(num2)) { |
| | | Feng.error("请输入正确张数!"); |
| | |
| | | Feng.error("请输入正确张数!"); |
| | | return; |
| | | } |
| | | if (!/^[1-9]\d*$/.test(num6)) { |
| | | Feng.error("请输入正确张数!"); |
| | | return; |
| | | }if (!/^[1-9]\d*$/.test(num8)) { |
| | | Feng.error("请输入正确张数!"); |
| | | return; |
| | | }if (!/^[1-9]\d*$/.test(num10)) { |
| | | // if (!/^[1-9]\d*$/.test(num6)) { |
| | | // Feng.error("请输入正确张数!"); |
| | | // return; |
| | | // } |
| | | // if (!/^[1-9]\d*$/.test(num8)) { |
| | | // Feng.error("请输入正确张数!"); |
| | | // return; |
| | | // } |
| | | if (!/^[1-9]\d*$/.test(num10)) { |
| | | Feng.error("请输入正确天数!"); |
| | | return; |
| | | } |
| | |
| | | '<td><input type="hidden" id="id4" name="id4" value="'+id4+'"><input type="hidden" id="num2" name="num2" value="'+num2+'">' + num2 + '</td>' + |
| | | '<td><input type="hidden" id="num5" name="num5" value="'+num5+'">' + num5 + '</td>' + |
| | | '<td><input type="hidden" id="num4" name="num4" value="'+num4+'">' + num4 + '</td>' + |
| | | '<td><input type="hidden" id="num7" name="num7" value="'+num7+'">' + num7 + '</td>' + |
| | | '<td><input type="hidden" id="num6" name="num6" value="'+num6+'">' + num6 + '</td>' + |
| | | '<td><input type="hidden" id="num9" name="num9" value="'+num9+'">' + num9 + '</td>' + |
| | | '<td><input type="hidden" id="num8" name="num8" value="'+num8+'">' + num8 + '</td>' + |
| | | // '<td><input type="hidden" id="num7" name="num7" value="'+num7+'">' + num7 + '</td>' + |
| | | // '<td><input type="hidden" id="num6" name="num6" value="'+num6+'">' + num6 + '</td>' + |
| | | // '<td><input type="hidden" id="num9" name="num9" value="'+num9+'">' + num9 + '</td>' + |
| | | // '<td><input type="hidden" id="num8" name="num8" value="'+num8+'">' + num8 + '</td>' + |
| | | '<td><button onclick="deleteSub(this)">移除</button></td></tr>'; |
| | | $("#coun").append(str); |
| | | } |