DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Driver.java
@@ -390,6 +390,15 @@ @ApiModelProperty("分享链接") private String shareLink; @ApiModelProperty("证联客户号") private String custId; @ApiModelProperty("是否已开通支付账户(0:否,1:是)") private Integer accOpenFlag; @ApiModelProperty("是否已同步到中台(0:否,1:是)") private Integer isSynchronous; public String getShareImg() { return shareImg; @@ -1009,6 +1018,30 @@ this.entercode = entercode; } public String getCustId() { return custId; } public void setCustId(String custId) { this.custId = custId; } public Integer getAccOpenFlag() { return accOpenFlag; } public void setAccOpenFlag(Integer accOpenFlag) { this.accOpenFlag = accOpenFlag; } public Integer getIsSynchronous() { return isSynchronous; } public void setIsSynchronous(Integer isSynchronous) { this.isSynchronous = isSynchronous; } @Override public String toString() { return "Driver{" + DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
@@ -21,8 +21,13 @@ import com.stylefeng.guns.modular.system.model.OrderPosition; import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.*; import com.stylefeng.guns.modular.system.util.qianyuntong.EmployeeUtil; import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil; import com.stylefeng.guns.modular.system.util.qianyuntong.model.AddAccountInfoRequest; import com.stylefeng.guns.modular.system.util.qianyuntong.model.ModifyTravelItineraryRequest; import com.stylefeng.guns.modular.system.util.zhenglian.ZhengLianUtil; import com.stylefeng.guns.modular.system.util.zhenglian.model.TradeTerminalInfo; import com.stylefeng.guns.modular.system.util.zhenglian.model.ZLUserInfo; import com.stylefeng.guns.modular.system.warpper.BaseWarpper; import com.stylefeng.guns.modular.system.warpper.OrderListWarpper; import com.stylefeng.guns.modular.taxi.model.OrderTaxi; @@ -119,6 +124,35 @@ */ @Override public List<Map<String, Object>> queryOrderList(Integer state, Integer pageNum, Integer size, Integer uid) throws Exception { Driver driver = driverService.selectById(uid); //获取证联数据 if(null == driver.getCustId() || 0 == driver.getAccOpenFlag()){ TradeTerminalInfo tradeTerminalInfo = new TradeTerminalInfo(); tradeTerminalInfo.setIp("127.0.0.1"); tradeTerminalInfo.setTerminal("1"); tradeTerminalInfo.setMac(""); ZLUserInfo userInfo = ZhengLianUtil.getUserInfo(driver.getEmpId().toString(), tradeTerminalInfo); if(null != userInfo){ driver.setCustId(userInfo.getCustId()); driver.setAccOpenFlag(userInfo.getAccOpenFlag()); driverService.updateById(driver); } } //同步到中台 if(null != driver.getAccOpenFlag() && 1 == driver.getAccOpenFlag() && 0 == driver.getIsSynchronous()){ AddAccountInfoRequest request = new AddAccountInfoRequest(); request.setCustId(driver.getCustId()); request.setAccountNo(driver.getEmpId().toString()); request.setAccountName(driver.getName()); request.setMobile(driver.getPhone()); Integer status = EmployeeUtil.addAccountInfo(request); if(0 == status){ driver.setIsSynchronous(1); driverService.updateById(driver); } } Integer page = pageNum; pageNum = (pageNum - 1) * size; List<Map<String, Object>> datas = new ArrayList<>(); DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EmployeeUtil.java
@@ -212,6 +212,11 @@ * @return 状态 0 成功 其他失败 */ public static Integer addAccountInfo(AddAccountInfoRequest request){ request.setPartnerId("522700"); request.setIndustryCode("100"); request.setPayModeId("501101"); request.setAccessMode("APP"); //请求路径 String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/addAccountInfo"; //私钥文件 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/zhenglian/ZhengLianUtil.java
@@ -1,7 +1,15 @@ package com.stylefeng.guns.modular.system.util.zhenglian; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.stylefeng.guns.modular.system.util.SpringContextsUtil; import com.stylefeng.guns.modular.system.util.UUIDUtil; import com.stylefeng.guns.modular.system.util.zhenglian.model.MessageBody; import com.stylefeng.guns.modular.system.util.zhenglian.model.TradeTerminalInfo; import com.stylefeng.guns.modular.system.util.zhenglian.model.ZLUserInfo; import com.zlpay.assist.encrypt.sm4.SM4Util; import com.zlpay.assist.sign.sm2.SM2Cert; import com.zlpay.assist.sign.sm2.SM2Util; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.RandomStringUtils; @@ -9,7 +17,11 @@ import java.io.FileInputStream; import java.io.IOException; import java.security.cert.X509Certificate; import java.text.SimpleDateFormat; import java.util.Base64; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * @author zhibing.pu @@ -20,6 +32,87 @@ private static ZhengLianConfig zhengLianConfig = SpringContextsUtil.getBean(ZhengLianConfig.class).getZhengLianConfig(); /** * 获取用户详情 * @param appUserId * @param tradeTerminalInfo * @return * @throws Exception */ public static ZLUserInfo getUserInfo(String appUserId, TradeTerminalInfo tradeTerminalInfo) throws Exception { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); Map<String,String> headerMap = new HashMap<String,String>(); MessageBody body = new MessageBody(); headerMap.put("msgId", UUIDUtil.getRandomCode()); headerMap.put("merchNo", "B00000871"); headerMap.put("txCode", "ZLPAY.ACC.T0009"); headerMap.put("version", "1.0.1"); headerMap.put("signa", "1"); headerMap.put("signNo", zhengLianConfig.getSignNo()); headerMap.put("encrp", "1"); headerMap.put("encrpNo", zhengLianConfig.getEncrpNo()); headerMap.put("timestamp", sdf.format(new Date())); Map<String, Object> map = new HashMap<>(); map.put("appId", zhengLianConfig.getAppid()); map.put("appUserId", appUserId); map.put("tradeTerminalInfo", tradeTerminalInfo); String reqBO = JSON.toJSONString(map); // 生成对称加密秘钥 String key = ZhengLianUtil.generateKey(16); // 加密数据 String jsonData = SM4Util.sm4EcbEncrypt(key, reqBO, "NoPadding"); //加密对称加密的秘钥 // 获取公钥 String publicKey = ZhengLianUtil.getPublicKey(); String secrtKey = SM2Util.encrypt(publicKey, key); // 将密文放入body body.setData(jsonData); body.setSign(ZhengLianUtil.sign(jsonData)); body.setSecret(secrtKey); String result = ZLHttpClientUtil.doPost(zhengLianConfig.getUrl(), headerMap, JSON.toJSONString(body)); System.out.println("应答内容:"+ result); MessageBody respBody = JSON.parseObject(result,MessageBody.class); // 验签 boolean checkResult = SM2Util.verify(publicKey, zhengLianConfig.getEncrpNo(), respBody.getSign(), respBody.getData()); System.out.println("验签结果:" + checkResult); // 获取私钥 String privateKey = ZhengLianUtil.getPrivateKey(); // 解密对称秘钥 String k = SM2Util.decrypt(privateKey, respBody.getSecret()); System.out.println("对称秘钥:" + k); // 解密业务报文 String backData = SM4Util.sm4EcbDecrypt(k, respBody.getData()); System.out.println("返回业务报文:" + backData); JSONObject jsonObject = JSON.parseObject(backData); String sysRtnCode = jsonObject.getString("sysRtnCode"); if(!"000000".equals(sysRtnCode)){ log.error("查询用户信息失败!{}", jsonObject.getString("sysRtnMsg")); throw new Exception(jsonObject.getString("sysRtnMsg")); } JSONObject bizData = jsonObject.getJSONObject("bizData"); String resCode = bizData.getString("resCode"); if(!"S010000".equals(resCode)){ log.error("查询用户信息失败!{}", bizData.getString("resMsg")); throw new Exception(jsonObject.getString("resMsg")); } JSONObject resData = bizData.getJSONObject("resData"); ZLUserInfo zlUserInfo = resData.toJavaObject(ZLUserInfo.class); return zlUserInfo; } /** * @Description: 从公钥证书获取公钥串 * @return DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/zhenglian/model/ZLUserInfo.java
New file @@ -0,0 +1,37 @@ package com.stylefeng.guns.modular.system.util.zhenglian.model; import lombok.Data; /** * @author zhibing.pu * @Date 2025/8/5 10:10 */ @Data public class ZLUserInfo { /** * appid */ private String appId; /** * APP端用户唯一标识 */ private String appUserId; /** * 姓名 */ private String userName; /** * 证件号码 */ private String certNo; /** * 证联客户号 */ private String custId; /** * 是否已开通支付账户 * 1:是 * 0:否 */ private Integer accOpenFlag; } DriverQYTTravel/guns-admin/src/test/java/com/stylefeng/guns/GunsApplicationTest.java
@@ -1,48 +1,47 @@ //package com.stylefeng.guns; // //import com.stylefeng.guns.modular.system.model.Driver; //import com.stylefeng.guns.modular.system.service.IDriverService; //import com.stylefeng.guns.modular.system.util.zhenglian.TokenUtil; //import com.stylefeng.guns.modular.system.util.zhenglian.model.TokenRequest; //import com.stylefeng.guns.modular.system.util.zhenglian.model.TradeTerminalInfo; //import org.junit.Test; //import org.junit.runner.RunWith; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.boot.test.context.SpringBootTest; //import org.springframework.data.mongodb.core.MongoTemplate; //import org.springframework.test.context.junit4.SpringRunner; // //@RunWith(SpringRunner.class) //@SpringBootTest //public class GunsApplicationTest { // // @Autowired // private MongoTemplate mongoTemplate; // @Autowired // private IDriverService driverService; // // // @Test // public void test() { // // Driver driver = driverService.selectById(driverId); // TokenRequest tokenRequest = new TokenRequest(); // tokenRequest.setAppUserId(driver.getEmpId().toString()); // tokenRequest.setUserName(driver.getName()); // tokenRequest.setCertNo(driver.getIdCard()); // tokenRequest.setPhone(driver.getPhone()); // TradeTerminalInfo tradeTerminalInfo = new TradeTerminalInfo(); // tradeTerminalInfo.setIp("127.0.0.1"); // tradeTerminalInfo.setTerminal("1"); // tradeTerminalInfo.setMac(""); // tokenRequest.setTradeTerminalInfo(tradeTerminalInfo); // tokenRequest.setType(type); // String token = null; // try { // token = TokenUtil.getToken(tokenRequest); // } catch (Exception e) { // throw new RuntimeException(e); // } // System.err.println(token); // } //} package com.stylefeng.guns; import com.stylefeng.guns.modular.system.model.Driver; import com.stylefeng.guns.modular.system.service.IDriverService; import com.stylefeng.guns.modular.system.util.zhenglian.ZhengLianUtil; import com.stylefeng.guns.modular.system.util.zhenglian.model.TokenRequest; import com.stylefeng.guns.modular.system.util.zhenglian.model.TradeTerminalInfo; import com.stylefeng.guns.modular.system.util.zhenglian.model.ZLUserInfo; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest public class GunsApplicationTest { @Autowired private MongoTemplate mongoTemplate; @Autowired private IDriverService driverService; @Test public void test() { Driver driver = driverService.selectById(14); TokenRequest tokenRequest = new TokenRequest(); tokenRequest.setAppUserId(driver.getEmpId().toString()); tokenRequest.setUserName(driver.getName()); tokenRequest.setCertNo(driver.getIdCard()); tokenRequest.setPhone(driver.getPhone()); TradeTerminalInfo tradeTerminalInfo = new TradeTerminalInfo(); tradeTerminalInfo.setIp("127.0.0.1"); tradeTerminalInfo.setTerminal("1"); tradeTerminalInfo.setMac(""); ZLUserInfo userInfo = null; try { userInfo = ZhengLianUtil.getUserInfo("11448158", tradeTerminalInfo); } catch (Exception e) { throw new RuntimeException(e); } System.err.println(userInfo); } } UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/account/util/Util.java
@@ -1,12 +1,14 @@ package com.stylefeng.guns.modular.account.util; import com.thoughtworks.xstream.XStream; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.time.DateFormatUtils; import javax.servlet.http.HttpServletRequest; import java.io.UnsupportedEncodingException; import java.io.*; import java.lang.reflect.Field; import java.util.*; /** @@ -118,5 +120,104 @@ throw new RuntimeException("签名过程中出现错误"); } } /** * 通过反射的方式遍历对象的属性和属性值,方便调试 * * @param o 要遍历的对象 * @throws Exception */ public static void reflect(Object o) throws Exception { Class<? extends Object> cls = o.getClass(); Field[] fields = cls.getDeclaredFields(); for (int i = 0; i < fields.length; i++) { Field f = fields[i]; f.setAccessible(true); Util.log(f.getName() + " -> " + f.get(o)); } } public static byte[] readInput(InputStream in) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); int len = 0; byte[] buffer = new byte[1024]; while ((len = in.read(buffer)) > 0) { out.write(buffer, 0, len); } out.close(); in.close(); return out.toByteArray(); } public static String inputStreamToString(InputStream is) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); int i; while ((i = is.read()) != -1) { baos.write(i); } return baos.toString(); } public static InputStream getStringStream(String sInputString) { ByteArrayInputStream tInputStringStream = null; if (sInputString != null && !sInputString.trim().equals("")) { try { tInputStringStream = new ByteArrayInputStream(sInputString.getBytes("UTF-8")); } catch (Exception e) { e.printStackTrace(); } } return tInputStringStream; } public static Object getObjectFromXML(String xml, Class<?> tClass) { //将从API返回的XML数据映射到Java对象 XStream xStreamForResponseData = new XStream(); xStreamForResponseData.alias("xml", tClass); xStreamForResponseData.ignoreUnknownElements();//暂时忽略掉一些新增的字段 return xStreamForResponseData.fromXML(xml); } public static String getStringFromMap(Map<String, Object> map, String key, String defaultValue) { if (key == "" || key == null) { return defaultValue; } String result = (String) map.get(key); if (result == null) { return defaultValue; } else { return result; } } public static int getIntFromMap(Map<String, Object> map, String key) { if (key == "" || key == null) { return 0; } if (map.get(key) == null) { return 0; } return Integer.parseInt((String) map.get(key)); } /** * 打log接口 * @param log 要打印的log字符串 * @return 返回log */ public static String log(Object log){ System.out.println(log.toString()); return log.toString(); } /** * 读取本地的xml数据,一般用来自测用 * @param localPath 本地xml文件路径 * @return 读到的xml字符串 */ public static String getLocalXMLString(String localPath) throws IOException { return Util.inputStreamToString(Util.class.getResourceAsStream(localPath)); } } UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java
@@ -3,13 +3,11 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.stylefeng.guns.core.common.constant.JwtConstants; import com.stylefeng.guns.core.shiro.ShiroKit; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.account.server.UserWithdrawalService; import com.stylefeng.guns.modular.account.util.OssUploadUtil; import com.stylefeng.guns.modular.system.model.Driver; import com.stylefeng.guns.modular.system.model.TDriverPromotionActivity; import com.stylefeng.guns.modular.system.model.UserInfo; import com.stylefeng.guns.modular.system.model.UserWithdrawal; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.ResultUtil; import com.stylefeng.guns.modular.system.util.WeChatUtil; @@ -60,6 +58,8 @@ @Autowired private HttpServletRequest request; private String salt = "&a.s"; @Autowired private TDriverPromotionActivityService driverPromotionActivityService; @@ -860,4 +860,44 @@ return ResultUtil.runErr(); } } /** * 代驾系统添加用户接口 * @param phone * @return */ @ResponseBody @GetMapping("/base/user/addAppUser") public String addAppUser(String phone, String code, String areaCode){ try { return userInfoService.addAppUser(phone, code, areaCode); }catch (Exception e){ e.printStackTrace(); } return null; } /** * 代驾系统验证短信验证码 * @param phone * @param code * @param request * @return */ @ResponseBody @PostMapping("/base/user/checkCaptcha") public Boolean checkCaptcha1(String phone, String code, HttpServletRequest request){ try { String device = request.getHeader("device"); if(ToolUtil.isEmpty(device)){ return false; } boolean b = userInfoService.checkCaptcha(phone, code); return b; }catch (Exception e){ e.printStackTrace(); return false; } } } UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/controller/rideCommentController.java
@@ -10,14 +10,14 @@ import com.stylefeng.guns.modular.shunfeng.task.base.QuartzManager; import com.stylefeng.guns.modular.shunfeng.task.base.TimeJobType; import com.stylefeng.guns.modular.shunfeng.task.jobs.CourseExamineRide; import com.stylefeng.guns.modular.shunfeng.util.DateUtil; import com.stylefeng.guns.modular.shunfeng.util.OrderUtil; import com.stylefeng.guns.modular.shunfeng.util.OrdersUtil; import com.stylefeng.guns.modular.shunfeng.util.SensitiveWordUtil; import com.stylefeng.guns.modular.system.dao.SensitiveWordsMapper; import com.stylefeng.guns.modular.system.model.SensitiveWords; import com.stylefeng.guns.modular.system.model.UserInfo; import com.stylefeng.guns.modular.system.service.ISystemNoticeService; import com.stylefeng.guns.modular.system.service.IUserInfoService; import com.stylefeng.guns.modular.system.util.DateUtil; import com.stylefeng.guns.modular.system.util.GDMapElectricFenceUtil; import com.stylefeng.guns.modular.system.util.PushUtil; import com.stylefeng.guns.modular.system.util.qianyuntong.UserUtil; @@ -393,7 +393,7 @@ } } OrderRide orderRide=new OrderRide(); orderRide.setOrderNum(OrderUtil.getOrderNoForPrefix("ride")); orderRide.setOrderNum(OrdersUtil.getOrderNoForPrefix("ride")); orderRide.setPlatformMoney(platformMoney); orderRide.setAddTime(new Date()); orderRide.setUserId(userId); @@ -484,7 +484,7 @@ } /*1一个司机可以创建多个行程*/ OrderTravel orderTravel=new OrderTravel(); orderTravel.setOrderNum(OrderUtil.getOrderNoForPrefix("travel")); orderTravel.setOrderNum(OrdersUtil.getOrderNoForPrefix("travel")); orderTravel.setAddTime(new Date()); orderTravel.setDriverId(driverId); orderTravel.setStartTime(DateUtil.getDate(startTime,"yyyy-MM-dd HH:mm")); @@ -775,7 +775,7 @@ } if(orderRide.getTuiMoney()>0){ Financial financial= financialService.selectOne(new EntityWrapper<Financial>().eq("orderNum",orderRide.getOrderNum())); String finNum=OrderUtil.getOrderNoForPrefix("fin"); String finNum=OrdersUtil.getOrderNoForPrefix("fin"); //todo 退款金额大于0需要退款 if(orderRide.getPayType()==1){//余额 UserInfo userInfo=userInfoService.selectById(orderRide.getUserId()); @@ -848,7 +848,7 @@ f.setMoney(orderTravel.getServiceMoney()); f.setPwType(9);//9=顺风车取消服务费 f.setOrderNum(orderTravel.getOrderNum()); String finNum=OrderUtil.getOrderNoForPrefix("fin"); String finNum=OrdersUtil.getOrderNoForPrefix("fin"); f.setLsType(finNum); f.setUserId(driverRide.getUserId()); f.setOrderType(4); @@ -947,7 +947,7 @@ f.setPayType("1");//余额 f.setMoney(orderRide.getMoney()-orderRide.getPlatformMoney());//司机提成 f.setPwType(11);//顺风车司机提成 f.setLsType(OrderUtil.getOrderNoForPrefix("finan")); f.setLsType(OrdersUtil.getOrderNoForPrefix("finan")); f.setUserId(userInfo.getId()); f.setOrderType(4); f.setLx(1); @@ -969,7 +969,7 @@ f.setPayType("1");//余额 f.setMoney(money);//邀请金额 f.setPwType(10);//分享收益 f.setLsType(OrderUtil.getOrderNoForPrefix("finan")); f.setLsType(OrdersUtil.getOrderNoForPrefix("finan")); f.setUserId(userInfo1.getId()); f.setOrderType(4); f.setLx(1); UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/tencent/common/HttpsRequest.java
@@ -1,5 +1,6 @@ package com.stylefeng.guns.modular.shunfeng.tencent.common; import com.stylefeng.guns.modular.account.util.Util; import com.stylefeng.guns.modular.shunfeng.tencent.service.IServiceRequest; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/tencent/common/HttpsRequest_2.java
@@ -1,5 +1,6 @@ package com.stylefeng.guns.modular.shunfeng.tencent.common; import com.stylefeng.guns.modular.account.util.Util; import com.stylefeng.guns.modular.shunfeng.tencent.service.IServiceRequest; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/tencent/common/Signature.java
@@ -1,15 +1,14 @@ package com.stylefeng.guns.modular.shunfeng.tencent.common; import java.io.IOException; import com.stylefeng.guns.modular.account.util.Util; import org.xml.sax.SAXException; import javax.xml.parsers.ParserConfigurationException; import java.io.IOException; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import javax.xml.parsers.ParserConfigurationException; import org.xml.sax.SAXException; /** UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/tencent/common/Util.java
File was deleted UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/tencent/common/XMLParser.java
@@ -1,20 +1,20 @@ package com.stylefeng.guns.modular.shunfeng.tencent.common; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import com.stylefeng.guns.modular.account.util.Util; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; public class XMLParser { public static Map<String,Object> getMapFromXML(String xmlString) throws ParserConfigurationException, IOException, SAXException { UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/tencent/protocol/AppPayReqData.java
@@ -2,7 +2,7 @@ import com.stylefeng.guns.modular.shunfeng.tencent.common.RandomStringGenerator; import com.stylefeng.guns.modular.shunfeng.tencent.common.Signature; import com.stylefeng.guns.modular.shunfeng.util.DateUtil; import com.stylefeng.guns.modular.system.util.DateUtil; import java.lang.reflect.Field; import java.util.HashMap; UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/util/ApiUtil.java
@@ -1,6 +1,8 @@ package com.stylefeng.guns.modular.shunfeng.util; import com.stylefeng.guns.modular.system.util.DateUtil; import java.net.URLDecoder; import java.util.ArrayList; import java.util.HashMap; UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/util/DateUtil.java
File was deleted UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/util/OrdersUtil.java
File was renamed from UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/util/OrderUtil.java @@ -9,7 +9,7 @@ * @createDate 2016年5月27日 * @version 1.0 */ public class OrderUtil { public class OrdersUtil { /* 订单号 */ private static long orderNum = 0L; UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IUserInfoService.java
@@ -236,6 +236,11 @@ ResultUtil reissueCoupon() throws Exception; ResultUtil<LoginWarpper> wxLoginIsBind(String jscode); /** * 代驾系统添加用户接口 * @param phone * @return */ String addAppUser(String phone, String code, String areaCode) throws Exception; } UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java
@@ -1633,4 +1633,59 @@ } return ResultUtil.success(loginWarpper); } @Override public String addAppUser(String phone, String code, String areaCode) throws Exception { UserInfo userInfo = userInfoMapper.queryByPhone(phone); String nickName = null; if (null == userInfo) { nickName = this.getDefaultName(); } else { nickName = userInfo.getNickName(); } //调中台接口查询用户 List<QYTUserInfo> infoByPhone = UserUtil.getUserInfoByPhone(phone); String onconUUID = null; if (null == infoByPhone || infoByPhone.isEmpty()) { RegisterViaMobileRequest request = new RegisterViaMobileRequest(); request.setMobile(phone); request.setEncryptType("aesbase64"); request.setPassword(AESUtils.encryptBase64("123456")); request.setNickname(nickName); request.setVerify_code(code); request.setVerify_code_type("0"); RegisterViaMobile register = UserUtil.registerViaMobile(request); if (!"0".equals(register.getStatus())) { return null; } onconUUID = register.getOnconUUID(); } if (null == userInfo) { userInfo = new UserInfo(); userInfo.setPhone(phone); userInfo.setPassWord(ShiroKit.md5("", salt)); userInfo.setNickName(nickName); userInfo.setIsAuth(1); userInfo.setConsumption(0D); userInfo.setBalance(0D); userInfo.setState(1); if(null != onconUUID){ userInfo.setOnconUUID(onconUUID); } //用户所属企业 if(null != areaCode){ Company query = companyCityService.query(areaCode); userInfo.setCompanyId(null != query ? query.getId() : 1); userInfo.setRegistAreaCode(areaCode); }else { userInfo.setCompanyId(1); } this.insert(userInfo); } return userInfo.getId().toString(); } } UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/DateUtil.java
@@ -12,7 +12,1092 @@ */ @Component public class DateUtil { private static TimeZone tz = TimeZone.getTimeZone("GMT+8"); // private static TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai"); public static boolean hourMinuteBetween(String nowDate, String startDate, String endDate) throws Exception{ SimpleDateFormat format = new SimpleDateFormat("HH:mm"); Date now = format.parse(nowDate); Date start = format.parse(startDate); Date end = format.parse(endDate); long nowTime = now.getTime(); long startTime = start.getTime(); long endTime = end.getTime(); return nowTime >= startTime && nowTime <= endTime; } /** * 得到系统日期 * * @return */ public static Date getDate() { TimeZone.setDefault(tz); return new Date(); } /** * 获取当然凌晨的时间 * * @return Date */ public static Date getZero() { Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); return calendar.getTime(); } /** * 判断日期是否在from,to之内 "yyyy-MM-dd" 格式 * * @param time * 指定日期 * @param from * 开始日期 * @param to * 结束日期 * @return true 在之间 false 不在之间 */ public static boolean belongCalendar(Date time, Date from, Date to) { Calendar date = Calendar.getInstance(); date.setTime(time); Calendar after = Calendar.getInstance(); after.setTime(from); Calendar before = Calendar.getInstance(); before.setTime(to); if ((date.after(after) && date.before(before)) || (time.compareTo(from) == 0 || time.compareTo(to) == 0)) { return true; } else { return false; } } /** * 两个时间之差 * * @param startTime * @param endTime * @param format * @return * @throws ParseException */ public static String dateDiff(String startTime, String endTime, String format) throws ParseException { // 按照传入的格式生成一个simpledateformate对象 SimpleDateFormat sd = new SimpleDateFormat(format); long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数 long nh = 1000 * 60 * 60;// 一小时的毫秒数 long nm = 1000 * 60;// 一分钟的毫秒数 long ns = 1000;// 一秒钟的毫秒数 long diff; long day = 0; long hour = 0; long min = 0; long sec = 0; // long time=0; String strTime = ""; // 获得两个时间的毫秒时间差异 diff = sd.parse(endTime).getTime() - sd.parse(startTime).getTime(); day = diff / nd;// 计算差多少天 hour = diff % nd / nh + day * 24;// 计算差多少小时 min = diff % nd % nh / nm + day * 24 * 60;// 计算差多少分钟 sec = diff % nd % nh % nm / ns;// 计算差多少秒 // 输出结果 /* * System.out.println("时间相差:" + day + "天" + (hour - day * 24) + "小时" + * (min - day * 24 * 60) + "分钟" + sec + "秒。"); * System.out.println("hour=" + hour + ",min=" + min); */ if (day == 1) { strTime = "昨天"; } else if (day > 1) { // strTime=day+"天前"; strTime = startTime.substring(0, 10); } else if (hour >= 1 && hour < 24) { strTime = hour + "小时前"; } else { if (min == 0) { strTime = sec + "秒钟前"; } else { strTime = min + "分钟前"; } } // if (str.equalsIgnoreCase("h")) { // return hour; // } else { // return min; // } // if (str.equalsIgnoreCase("h")) { // return hour; // } else { // return min; // } return strTime; } /** * 得到系统Calendar日期 * * @return */ public static Calendar getCalendar() { TimeZone.setDefault(tz); Calendar cal = Calendar.getInstance(); return cal; } /** * 获取当前时间 * * @return */ public static long getMillisecond() { long millisecond = 0; TimeZone.setDefault(tz); Calendar cal = Calendar.getInstance(); millisecond = cal.getTimeInMillis(); return millisecond; } /** * 获取本月1号的时间戳 * * @return */ public static long getMillisecond_MONTH() { long millisecond = 0; TimeZone.setDefault(tz); Calendar cal = Calendar.getInstance(); cal.set(Calendar.DAY_OF_MONTH, 1); millisecond = cal.getTimeInMillis(); return millisecond; } /** * 获取上个月1号的时间戳 * * @return */ public static long getMillisecond_FRONTMONTH() { long millisecond = 0; Calendar cal = getCalendar(); cal.set(Calendar.DAY_OF_MONTH, 1); cal.set(Calendar.MONTH, Calendar.MONTH - 2); millisecond = cal.getTimeInMillis(); return millisecond; } /** * 获取当前毫秒数 * * @return long */ public static long getCurMilli() { long millisecond = 0; Calendar cal = Calendar.getInstance(); millisecond = cal.getTimeInMillis(); return millisecond; } /** * 日期转毫秒 * * @param date * @return */ public static long getMillisecond(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String newDate = ""; if (!"".equals(date)) { newDate = sdf.format(date); } else { newDate = sdf.format(DateUtil.getDate()); } long millisecond = 0; try { millisecond = sdf.parse(newDate).getTime(); } catch (ParseException e) { e.printStackTrace(); } return millisecond; } /** * 日期转毫秒(加24小时,yyyy-MM-dd HH:mm:ss) * * @param date * @return */ public static long getMillisecond_24h(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String newDate = ""; if (!"".equals(date)) { newDate = sdf.format(date); } else { newDate = sdf.format(DateUtil.getDate()); } long millisecond = 24 * 3600 * 1000; try { millisecond += sdf.parse(newDate).getTime(); } catch (ParseException e) { e.printStackTrace(); } return millisecond; } /** * 日期转毫秒(加N年) * * @param date * @return */ public static long getMillisecond_year(String date, Integer year) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String newDate = ""; if ("".equals(date)) { newDate = sdf.format(DateUtil.getDate()); } else { newDate = getDateTime(Long.parseLong(date)); } Date dt = null; try { dt = sdf.parse(newDate); } catch (ParseException e) { e.printStackTrace(); } Calendar rightNow = Calendar.getInstance(); rightNow.setTime(dt); rightNow.add(Calendar.YEAR, year); Date dt1 = rightNow.getTime(); return dt1.getTime(); } /** * 日期转毫秒(加N天) * * @param date * 毫秒字符串 * @return */ public static Date getMillisecond_day(String date, Integer day) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String newDate = ""; if ("".equals(date)) { newDate = sdf.format(DateUtil.getDate()); } else { newDate = date; } Date dt = null; try { dt = sdf.parse(newDate); } catch (ParseException e) { e.printStackTrace(); } Calendar rightNow = Calendar.getInstance(); rightNow.setTime(dt); rightNow.add(Calendar.DATE, day); Date dt1 = rightNow.getTime(); Date dates = new Date(dt1.getTime()); return dates; } /** * 日期转毫秒(加N月) * * @param date * @return */ public static long getMillisecond_month(String date, Integer day) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String newDate = ""; if ("".equals(date)) { newDate = sdf.format(DateUtil.getDate()); } else { newDate = getDateTime(Long.parseLong(date)); } Date dt = null; try { dt = sdf.parse(newDate); } catch (ParseException e) { e.printStackTrace(); } Calendar rightNow = Calendar.getInstance(); rightNow.setTime(dt); rightNow.add(Calendar.MONTH, day); Date dt1 = rightNow.getTime(); return dt1.getTime(); } /** * 日期转毫秒(加分钟) * * @param date * @return */ public static long getMillisecond_fz(String date, Integer day) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String newDate = ""; if ("".equals(date)) { newDate = sdf.format(DateUtil.getDate()); } else { newDate = getDateTime(Long.parseLong(date)); } Date dt = null; try { dt = sdf.parse(newDate); } catch (ParseException e) { e.printStackTrace(); } Calendar rightNow = Calendar.getInstance(); rightNow.setTime(dt); rightNow.add(Calendar.MINUTE, day); Date dt1 = rightNow.getTime(); return dt1.getTime(); } public static Date getMillisecond_fz1(String date, Integer day) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date dt = null; try { dt = sdf.parse(date); } catch (ParseException e) { e.printStackTrace(); } Calendar rightNow = Calendar.getInstance(); rightNow.setTime(dt); rightNow.add(Calendar.MINUTE, day); Date dt1 = rightNow.getTime(); return dt1; } /** * 字符串日期转毫秒 * * @param date * @return */ public static long getMillisecond_str(String date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if ("".equals(date)) { date = sdf.format(DateUtil.getDate()); } long millisecond = 0; try { millisecond = sdf.parse(date).getTime(); } catch (ParseException e) { e.printStackTrace(); } return millisecond; } /** * 字符串日期转毫秒 * * @param date * @return */ public static long getMillisecond_strYmd(String date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); if ("".equals(date)) { date = sdf.format(DateUtil.getDate()); } long millisecond = 0; try { millisecond = sdf.parse(date).getTime(); } catch (ParseException e) { e.printStackTrace(); } return millisecond; } /** * 字符串日期转Date * * @param string * @return date * @throws ParseException */ public static Date getStrToDate(String dateString) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = sdf.parse(dateString); return date; } /** * 字符串日期转Date * * @param date * @return */ public static Date getDate_str(String dateStr) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); sdf.setTimeZone(tz); if ("".equals(dateStr)) { dateStr = sdf.format(DateUtil.getDate()); } Date date = null; try { date = sdf.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } return date; } /** * 字符串日期转Date yyyy-MM-dd HH:mm * * @param date * @return */ public static Date getDate_str2(String dateStr) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); sdf.setTimeZone(tz); if ("".equals(dateStr)) { dateStr = sdf.format(DateUtil.getDate()); } Date date = null; try { date = sdf.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } return date; } /** * 字符串日期转Date yyyy-MM-dd HH:mm:ss * * @param date * @return */ public static Date getDate_str3(String dateStr) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); sdf.setTimeZone(tz); if ("".equals(dateStr)) { dateStr = sdf.format(DateUtil.getDate()); } Date date = null; try { date = sdf.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } return date; } /** * 字符串日期转Date * * @param date * @return */ public static Date getDate_strYMd(Long dateStr) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); if (dateStr == null) { dateStr = DateUtil.getCurMilli(); } Date date = null; try { date = sdf.parse(sdf.format(new Date(dateStr))); } catch (ParseException e) { e.printStackTrace(); } return date; } /** * 毫秒转Date * * @param date * @return */ public static Date getDate_strYMdHms(Long dateStr) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if (dateStr == null) { dateStr = DateUtil.getCurMilli(); } Date date = null; try { date = sdf.parse(sdf.format(new Date(dateStr))); } catch (ParseException e) { e.printStackTrace(); } return date; } /** * 字符串日期转Date * * @param date * @return */ public static Date getDate_strYMdHm(Long dateStr) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); if (dateStr == null) { dateStr = DateUtil.getCurMilli(); } Date date = null; try { date = sdf.parse(sdf.format(new Date(dateStr))); } catch (ParseException e) { e.printStackTrace(); } return date; } /** * 字符串日期转毫秒 * * @param date * @return */ public static long getMillisecond_strDmy(String date) { SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); if ("".equals(date)) { date = sdf.format(DateUtil.getDate()); } long millisecond = 0; try { millisecond = sdf.parse(date).getTime(); } catch (ParseException e) { e.printStackTrace(); } return millisecond; } /** * 字符串日期转毫秒转毫秒(加24小时) * * @param date * @return */ public static long getMillisecond_str_24h(String date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if ("".equals(date)) { date = sdf.format(DateUtil.getDate()); } long millisecond = 24 * 3600 * 1000; try { millisecond += sdf.parse(date).getTime(); } catch (ParseException e) { e.printStackTrace(); } return millisecond; } /** * 字符串日期转毫秒转毫秒(加24小时) * * @param date * @return */ public static long getMillisecond_strYmd_24h(String date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); if ("".equals(date)) { date = sdf.format(DateUtil.getDate()); } long millisecond = 24 * 3600 * 1000; try { millisecond += sdf.parse(date).getTime(); } catch (ParseException e) { e.printStackTrace(); } return millisecond; } /** * 毫秒转日期 * * @param millisecond * @return */ public static String getDate(long millisecond) { if (millisecond == 0) { millisecond = getCurMilli(); } SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = getCalendar(); calendar.setTimeInMillis(millisecond); return dateformat.format(calendar.getTime()); } /** * 转换为指定格式的时间 * * @return Date */ public static Date getDate(String date, String pattern) { SimpleDateFormat format = new SimpleDateFormat(pattern); Date d = null; try { d = format.parse(date); } catch (ParseException ex) { return null; } return d; } /** * 毫秒转日期 * * @param millisecond * @return */ public static String getDate_HH(long millisecond) { if (millisecond == 0) { millisecond = getCurMilli(); } SimpleDateFormat dateformat = new SimpleDateFormat("HH"); Calendar calendar = getCalendar(); calendar.setTimeInMillis(millisecond); return dateformat.format(calendar.getTime()); } /** * 毫秒转日期时间 * * @param millisecond * @return */ public static String getDateTime(long millisecond) { if (millisecond == 0) { millisecond = getCurMilli(); } SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar calendar = getCalendar(); calendar.setTimeInMillis(millisecond); return dateformat.format(calendar.getTime()); } /** * 毫秒转年月日 * * @param millisecond * @return */ public static String getDateYMD(long millisecond) { if (millisecond == 0) { millisecond = getCurMilli(); } SimpleDateFormat dateformat = new SimpleDateFormat("yyyy年MM月dd日"); Calendar calendar = getCalendar(); calendar.setTimeInMillis(millisecond); return dateformat.format(calendar.getTime()); } /** * 两日期相差毫秒 * * @param startDate * @param endDate * @return */ public static long getMinusMillisecond(Date startDate, Date endDate) { long startMillisecond = getMillisecond(startDate); long endMillisecond = getMillisecond(endDate); long minusMillisecond = endMillisecond - startMillisecond; if (minusMillisecond < 0) { minusMillisecond = 0; } return minusMillisecond; } /** * 两日期相差天数 * * @param startDate * @param endDate * @return */ public static long getMinusDay(Date startDate, Date endDate) { long startMillisecond = getMillisecond(startDate); long endMillisecond = getMillisecond(endDate); long minusMillisecond = endMillisecond - startMillisecond; long day = 0; if (minusMillisecond < 0) { day = 0; } else { day = minusMillisecond / (24 * 3600 * 1000); } return day; } /** * 前N天毫秒 * * @param day * @return */ public static long getRetreatDay_millisecond(int day) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); long nowMillisecond = 0; try { nowMillisecond = sdf.parse(sdf.format(DateUtil.getDate())).getTime(); } catch (ParseException e) { e.printStackTrace(); } nowMillisecond += 24 * 3600 * 1000; long retreatMillisecond = 24 * 3600 * 1000 * day; return nowMillisecond - retreatMillisecond; } /** * 前N天时间 * * @param day * @return */ public static String getRetreatDay_millisecond1(int day) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); long nowMillisecond = 0; try { nowMillisecond = sdf.parse(sdf.format(DateUtil.getDate())).getTime(); } catch (ParseException e) { e.printStackTrace(); } nowMillisecond += 24 * 3600 * 1000; long retreatMillisecond = 24 * 3600 * 1000 * day; long s = nowMillisecond - retreatMillisecond; Date date = new Date(s); String res = sdf.format(date); return res; } // 当前时间前30天 public static String getRetreatDay_millisecond2() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date today = new Date(); String endDate = sdf.format(today);// 当前日期 // 获取三十天前日期 Calendar theCa = Calendar.getInstance(); theCa.setTime(today); theCa.add(theCa.DATE, -30);// 最后一个数字30可改,30天的意思 Date start = theCa.getTime(); String startDate = sdf.format(start);// 三十天之前日期 return startDate; } /** * 日期转秒 * * @param date * @return */ public static long getDecond(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String newDate = ""; if (!"".equals(date)) { newDate = sdf.format(date); } else { newDate = sdf.format(DateUtil.getDate()); } long second = 0; try { second = sdf.parse(newDate).getTime() / 1000; } catch (ParseException e) { e.printStackTrace(); } return second; } /** * 日期转String * * @param date * @return * @throws ParseException */ public static String getDateToString(Date date) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String newDate = sdf.format(date); long millisecond = sdf.parse(newDate).getTime(); Calendar calendar = getCalendar(); calendar.setTimeInMillis(millisecond); return sdf.format(calendar.getTime()); } public static String getDateToString(Date date,String pattern) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat(pattern); String newDate = sdf.format(date); long millisecond = sdf.parse(newDate).getTime(); Calendar calendar = getCalendar(); calendar.setTimeInMillis(millisecond); return sdf.format(calendar.getTime()); } /** * 毫秒转星期XX * * @param millisecond * @return */ public static int getDate_week(Long millisecond) { if (millisecond == null) { millisecond = getCurMilli(); } Calendar cal = getCalendar(); cal.setTimeInMillis(millisecond); return cal.get(Calendar.DAY_OF_WEEK) - 1; } /** * 获取当前系统时间已yyyy-MM-dd HH:mm:ss格式化的字符串 */ public static String nowStr() { SimpleDateFormat dateFormat = new SimpleDateFormat("yy-MM-dd HH:mm:ss"); return dateFormat.format(getDate()); } /** * * 获取之前几天日期 * * @param pattern * yyyy-MM-dd(默认) * @param few * 之前几天 */ public static String beforeFewDayStr(String pattern, Integer few) { if (pattern == null || "".equals(pattern)) { pattern = "yyyy-MM-dd"; } Calendar c = getCalendar(); c.add(Calendar.DATE, -few); return new SimpleDateFormat(pattern).format(c.getTime()); } /** * 得到几天后的时间 * * @param d * @param day * @return */ public static Date getDateAfter(Date d, int day) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Calendar now = Calendar.getInstance(); now.setTime(d); now.set(Calendar.DATE, now.get(Calendar.DATE) - day);//+后 -前 return now.getTime(); } /** * 获取今天日期 * * @param pattern * yyyy-MM-dd(默认) */ public static String todayStr(String pattern) { if (pattern == null || "".equals(pattern)) { pattern = "yyyy-MM-dd"; } return new SimpleDateFormat(pattern).format(getDate()); } /** * 获取当前系统时间戳字符串 */ public static String nowDateLongStr() { return getDate().getTime() + ""; } /** * 获取当前系统时间 * * @return */ public static Date now() { return getDate(); } /*public static void main(String[] args) throws ParseException { // 打印测试日期包含 Date time1 = getDate_str("2017-3-11"); Date time2 = getDate_str("2017-3-15"); Date time3 = getDate_str("2017-3-17"); Date time4 = getDate_str("2017-3-12"); Date time5 = getDate_str("2017-3-16"); Date from = getDate_str("2017-3-12"); Date to = getDate_str("2017-3-16"); System.out.println(belongCalendar(time1, from, to)); System.out.println(belongCalendar(time2, from, to)); System.out.println(belongCalendar(time3, from, to)); System.out.println(belongCalendar(time4, from, to)); System.out.println(belongCalendar(time5, from, to)); System.out.println(nowStr()); } */ /** * 把日期往后增加一天. 正数往后推,负数往前移动 * * @param day * @return */ public static String getString(int day) { Date date = new Date();// 取时间 Calendar calendar = new GregorianCalendar(); calendar.setTime(date); calendar.add(calendar.DATE, day);// 把日期往后增加一天.整数往后推,负数往前移动 date = calendar.getTime(); // 这个时间就是日期往后推一天的结果 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); String dateString = formatter.format(date); return dateString; } /** * 根据当前日期获得所在周的日期区间(周一和周日日期) * * @return * @author zhaoxuepu * @throws ParseException */ public static String getTimeInterval(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); cal.setTime(date); // 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了 int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天 if (1 == dayWeek) { cal.add(Calendar.DAY_OF_MONTH, -1); } // System.out.println("要计算日期为:" + sdf.format(cal.getTime())); // 输出要计算日期 // 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一 cal.setFirstDayOfWeek(Calendar.MONDAY); // 获得当前日期是一个星期的第几天 int day = cal.get(Calendar.DAY_OF_WEEK); // 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值 cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day); String imptimeBegin = sdf.format(cal.getTime()); // System.out.println("所在周星期一的日期:" + imptimeBegin); cal.add(Calendar.DATE, 6); String imptimeEnd = sdf.format(cal.getTime()); // System.out.println("所在周星期日的日期:" + imptimeEnd); return imptimeBegin + "," + imptimeEnd; } /** * 根据当前日期获得上周的日期区间(上周周一和周日日期) * * @return * @author zhaoxuepu */ public static String getLastTimeInterval() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar1 = Calendar.getInstance(); Calendar calendar2 = Calendar.getInstance(); int dayOfWeek = calendar1.get(Calendar.DAY_OF_WEEK) - 1; int offset1 = 1 - dayOfWeek; int offset2 = 7 - dayOfWeek; calendar1.add(Calendar.DATE, offset1 - 7); calendar2.add(Calendar.DATE, offset2 - 7); // System.out.println(sdf.format(calendar1.getTime()));// last Monday String lastBeginDate = sdf.format(calendar1.getTime()); // System.out.println(sdf.format(calendar2.getTime()));// last Sunday String lastEndDate = sdf.format(calendar2.getTime()); return lastBeginDate + "," + lastEndDate; } public static String DateYUE() { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); c.add(Calendar.MONTH, 0); c.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天 String first = format.format(c.getTime()); // 获取当前月最后一天 Calendar ca = Calendar.getInstance(); ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH)); String last = format.format(ca.getTime()); return first + "," + last; } public static String getBeforeFirstMonthdate() { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); Calendar calendar1 = Calendar.getInstance(); calendar.add(Calendar.MONTH, -1); calendar.set(Calendar.DAY_OF_MONTH, 1); int month = calendar1.get(Calendar.MONTH); calendar1.set(Calendar.MONTH, month - 1); calendar1.set(Calendar.DAY_OF_MONTH, calendar1.getActualMaximum(Calendar.DAY_OF_MONTH)); String str = format.format(calendar.getTime()); String str1 = format.format(calendar1.getTime()); return str + "," + str1; } /** * 获取某年第一天和最后一天日期 * * @param year * 年份 * @return Date */ public static String getYearFirst(int year) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.clear(); calendar.set(Calendar.YEAR, year); Calendar calendar1 = Calendar.getInstance(); calendar1.clear(); calendar1.set(Calendar.YEAR, year); calendar1.roll(Calendar.DAY_OF_YEAR, -1); String str = format.format(calendar.getTime()); String str1 = format.format(calendar1.getTime()); return str + "," + str1; } public static Date addDate(Date date,Integer day) throws ParseException { long time = date.getTime(); // 得到指定日期的毫秒数 day = day*24*60*60*1000; // 要加上的天数转换成毫秒数 time+=day; // 相加得到新的毫秒数 return new Date(time); // 将毫秒数转换成日期 } // 获取一天开始和结束 public static String getDay() { Date dBefore = new Date(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); //设置时间格式 String defaultStartDate = sdf.format(dBefore); //格式化前一天 defaultStartDate = defaultStartDate+" 00:00:00"; String defaultEndDate = defaultStartDate.substring(0,10)+" 23:59:59"; return defaultStartDate + "," + defaultEndDate; } public static void main(String[] args){ System.out.println(DateUtil.getDate("2020-05-28", "yyyy-MM-dd").getTime()); System.out.println(new Date().getTime()); } /** * 获取给定日期天的开始时间点或结束时间点 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java
@@ -29,7 +29,7 @@ @Component public class PushUtil { private final String socket_uri = "http://127.0.0.1:6000"; private final String socket_uri = "http://192.168.110.111:6000"; @Autowired private IOrderTaxiService orderTaxiService; UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
@@ -142,7 +142,7 @@ */ public void timoutNoPayment() { List<OrderPrivateCar> orderPrivateCars = orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().eq("state", 7) .eq("isDelete", 1).eq("recoveryOrder", 0).last(" and now() >= DATE_ADD(insertTime, INTERVAL 24 HOUR)")); .eq("isDelete", 1).eq("recoveryOrder", 0).last(" and now() >= DATE_ADD(insertTime, INTERVAL 30 MINUTE)")); for (OrderPrivateCar orderPrivateCar : orderPrivateCars) { try { //使用备付金进行支付订单 @@ -172,11 +172,11 @@ request.setDriverId(driver1.getEmpId().toString()); ListPage<List<TravelItinerary>> travelItineraryList = OrderUtil.getTravelItineraryList(request); Integer status1 = travelItineraryList.getList().get(0).getStatus(); if(8 != status1){ if(9 != status1){ //中台修改订单状态 ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest(); request1.setOrderId(orderPrivateCar.getTravelId()); request1.setStatus(8); request1.setStatus(9); if (null != orderPrivateCar.getDriverId()) { request1.setDriverId(driver1.getEmpId().toString()); request1.setSupplierShopId(company.getEnterCode()); UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java
@@ -515,7 +515,7 @@ tradePayOffData.setPaymentInfos(paymentInfoRequests); List<GoodsInfo> goodsInfo = new ArrayList<>(); GoodsInfo goodsInfo1 = new GoodsInfo(); goodsInfo1.setMerchantCode(":B00000872"); goodsInfo1.setMerchantCode("B00000872"); goodsInfo1.setCustId("CB0000004686"); goodsInfo1.setCustName("证联消费平台交易客户"); goodsInfo1.setProfitSharing("1"); @@ -526,7 +526,7 @@ TradeRequest request = new TradeRequest<TradePayOffData>(); request.setSceneId("1774717104844095488"); request.setAppId(QianYunTongProperties.appkey); request.setConfigVersion(1); request.setConfigVersion(2); request.setRequestId(UUIDUtil.getRandomCode()); request.setData(tradePayOffData); //请求路径