From 55132b44cd49f2a312a8fb2523ffda35a7485fd7 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期四, 09 十月 2025 16:07:08 +0800 Subject: [PATCH] 提交代码 --- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java | 185 +++ management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java | 16 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CompanyFundFlowServiceImpl.java | 4 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/model/GetPaymentInfo.java | 8 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserActivityServiceImpl.java | 12 management/guns-admin/src/main/java/com/stylefeng/guns/core/aop/LogAop.java | 2 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/StaffNodeInfo.java | 2 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUser.java | 14 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java | 143 ++ management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/HomeController.java | 6 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/GoodsInfoRequest.java | 4 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/QianYunTongConfig.java | 110 - management/guns-admin/src/main/java/com/stylefeng/guns/core/aop/GlobalExceptionHandler.java | 4 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/BlackboardController.java | 10 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/warpper/OrderPayment.java | 4 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java | 203 +++ management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java | 4 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBillServiceImpl.java | 4 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateEnterpriseRequest.java | 4 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRechargeRecordServiceImpl.java | 8 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/SMSUtil.java | 11 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAdvertisementController.java | 6 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java | 267 +++- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java | 66 + management/guns-admin/src/main/java/com/stylefeng/guns/config/web/ShiroConfig.java | 416 +++--- management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCheckCarActivityServiceImpl.java | 2 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TEvaluateServiceImpl.java | 4 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/AppUser.java | 5 driver/guns-admin/pom.xml | 8 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/TradeOrderCreateData.java | 12 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/UserUtil.java | 52 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/PaymentOrderRequest.java | 4 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRevenueServiceImpl.java | 4 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/OrderUtil.java | 202 +++ driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/AppUser.java | 5 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TComplaintServiceImpl.java | 4 management/guns-admin/src/main/java/com/stylefeng/guns/core/shiro/check/PermissionCheckFactory.java | 4 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCancelOrderServiceImpl.java | 4 management/guns-admin/src/main/java/com/stylefeng/guns/config/web/WebConfig.java | 97 + management/guns-admin/src/main/java/com/stylefeng/guns/core/beetl/BeetlConfiguration.java | 3 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBranchOfficeController.java | 2 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/model/PaymentOrderRequest.java | 4 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java | 121 + management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/UserActivityController.java | 2 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysRedPacketRecordController.java | 8 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/EditStaffNodeRequest.java | 4 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/QianYunTongConfig.java | 2 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSysSensitiveWordsController.java | 2 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/EmployeeUtil.java | 5 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCompany.java | 24 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCheckCarExplainServiceImpl.java | 2 management/guns-admin/pom.xml | 35 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/taxi/TOrderTaxiController.java | 2 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Order.java | 5 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/User.java | 52 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java | 4 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java | 4 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java | 2 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/model/QYTPaymentCallbackData.java | 4 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/AppUserUtil.java | 3 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Driver.java | 25 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Driver.java | 15 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/EmployeeUtil.java | 72 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/EnterpriseUtil.java | 117 - driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/OrderUtil.java | 183 ++ management/guns-admin/src/main/resources/application-dev.yml | 7 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java | 51 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverBackController.java | 18 management/guns-admin/src/main/java/com/stylefeng/guns/config/SpringSessionConfig.java | 3 management/guns-admin/src/main/java/com/stylefeng/guns/core/shiro/ShiroKit.java | 2 /dev/null | 243 ---- management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderCheckServiceImpl.java | 12 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTUserInfo.java | 37 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/TravelItinerary.java | 2 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/UserUtil.java | 122 +- user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java | 35 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Order.java | 10 management/guns-admin/src/main/java/com/stylefeng/guns/core/shiro/ShiroUser.java | 19 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java | 73 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverActivityServiceImpl.java | 12 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriver.java | 77 + management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysCouponActivityController.java | 10 user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/AppUserController.java | 37 83 files changed, 2,303 insertions(+), 1,089 deletions(-) diff --git a/driver/guns-admin/pom.xml b/driver/guns-admin/pom.xml index 6e392f6..398e4a8 100644 --- a/driver/guns-admin/pom.xml +++ b/driver/guns-admin/pom.xml @@ -243,6 +243,14 @@ <scope>system</scope> <systemPath>${pom.basedir}/lib/javabase64-1.3.1.jar</systemPath> </dependency> + <!--证联sdk--> + <dependency> + <groupId>zl</groupId> + <artifactId>security</artifactId> + <version>1.2.2</version> + <scope>system</scope> + <systemPath>${pom.basedir}/lib/zl-util-security-1.2.2.jar</systemPath> + </dependency> </dependencies> diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java index 72ee246..6c0994e 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.supersavedriving.driver.modular.system.dao.MonthOrderMapper; +import com.supersavedriving.driver.modular.system.dao.TCompanyMapper; import com.supersavedriving.driver.modular.system.model.*; import com.supersavedriving.driver.modular.system.service.*; import com.supersavedriving.driver.modular.system.util.ALiSendSms; @@ -16,9 +17,14 @@ import com.supersavedriving.driver.modular.system.util.MiniPay.MiniAppPay; import com.supersavedriving.driver.modular.system.util.juhe.OCRUtil; import com.supersavedriving.driver.modular.system.util.qianyuntong.SMSUtil; +import com.supersavedriving.driver.modular.system.util.qianyuntong.UserUtil; +import com.supersavedriving.driver.modular.system.util.qianyuntong.model.QYTUserInfo; import com.supersavedriving.driver.modular.system.util.qianyuntong.model.SendSmsRequest; import com.supersavedriving.driver.modular.system.util.separateAccounts.StrUtil; import com.supersavedriving.driver.modular.system.util.separateAccounts.TransferUtil; +import com.supersavedriving.driver.modular.system.util.zhenglian.TokenUtil; +import com.supersavedriving.driver.modular.system.util.zhenglian.model.TokenRequest; +import com.supersavedriving.driver.modular.system.util.zhenglian.model.TradeTerminalInfo; import com.supersavedriving.driver.modular.system.warpper.*; import com.supersavedriving.driver.core.util.ToolUtil; import com.supersavedriving.driver.modular.system.util.RedisUtil; @@ -105,6 +111,9 @@ @Value("${qyt.admin_url}") private String adminUrl; + + @Autowired + private TCompanyMapper companyMapper; @@ -1076,6 +1085,13 @@ if(null == uid){ return ResponseWarpper.tokenErr(); } + Driver driver1 = driverService.selectById(uid); + TCompany company = companyMapper.selectById(driver1.getBranchOfficeId()); + List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(driver1.getPhone(), company.getEnterCode()); + if (null == userInfoByPhone || userInfoByPhone.size() == 0) { + return new ResponseWarpper(500, "账号未注册"); + } + ResultUtil resultUtil = driverService.updatePassword(uid, oldPass, newPass); return ResponseWarpper.success(resultUtil); }catch (Exception e){ @@ -1101,6 +1117,12 @@ Integer uid = driverService.getUserByRequest(); if(null == uid){ return ResponseWarpper.tokenErr(); + } + Driver driver1 = driverService.selectById(uid); + TCompany company = companyMapper.selectById(driver1.getBranchOfficeId()); + List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(driver1.getPhone(), company.getEnterCode()); + if (null == userInfoByPhone || userInfoByPhone.size() == 0) { + return new ResponseWarpper(500, "账号未注册"); } ResultUtil resultUtil = driverService.recoverPassword(uid, password); return ResponseWarpper.success(resultUtil); @@ -1398,4 +1420,48 @@ e.printStackTrace(); } } + + + + + @ResponseBody + @PostMapping("/api/driver/getZLToken") + @ApiOperation(value = "获取证联token(黔云通)", tags = {"司机端-首页"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + @ApiImplicitParam(value = "当前设备IP地址", name = "ip", required = true, dataType = "String"), + @ApiImplicitParam(value = "当前设备mac地址", name = "mac", required = true, dataType = "String"), + @ApiImplicitParam(value = "01 证联收银台支付\n" + + "\t 04 HOME 页\n" + + "\t 06 申请免密签约\n" + + "\t 07 商户收银台支付\n" + + "\t 08 开户(绑卡)\n" + + "\t 09 开通支付账户\n" + + "\t 10 打开付款码", name = "type", required = true, dataType = "String"), + }) + public ResponseWarpper<String> getZLToken(String ip, String mac, String type, HttpServletRequest request){ + try { + Integer uid = driverService.getUserByRequest(); + if(null == uid){ + return ResponseWarpper.tokenErr(); + } + Driver driver = driverService.selectById(uid); + 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(ip); + tradeTerminalInfo.setTerminal("1"); + tradeTerminalInfo.setMac(mac); + tokenRequest.setTradeTerminalInfo(tradeTerminalInfo); + tokenRequest.setType(type); + String token = TokenUtil.getToken(tokenRequest); + return ResponseWarpper.success(token); + }catch (Exception e){ + e.printStackTrace(); + return new ResponseWarpper(500, e.getMessage()); + } + } } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/AppUser.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/AppUser.java index 2481af8..a156b7f 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/AppUser.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/AppUser.java @@ -112,5 +112,10 @@ */ @TableField("havDiscount") private Integer havDiscount; + /** + * 中台用户ID + */ + @TableField("onconUUID") + private String onconUUID; } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Driver.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Driver.java index eaff684..bdfa7c7 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Driver.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Driver.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.annotations.TableName; import com.baomidou.mybatisplus.enums.IdType; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigInteger; @@ -290,4 +291,28 @@ @TableField("checkServer") // 是否有车检服务 1有 2没有 private Integer checkServer; + /** + * 中台员工ID + */ + @TableField("empId") + private Long empId; + /** + * 中台员工所属企业ID + */ + @TableField("enterId") + private Long enterId; + /** + * 中台员工所属企业编号 + */ + @TableField("entercode") + private String entercode; + + @ApiModelProperty("证联客户号") + private String custId; + + @ApiModelProperty("是否已开通支付账户(0:否,1:是)") + private Integer accOpenFlag; + + @ApiModelProperty("是否已同步到中台(0:否,1:是)") + private Integer isSynchronous; } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Order.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Order.java index f4ed03a..332c1ad 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Order.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Order.java @@ -313,4 +313,9 @@ */ @TableField("endTime") private Date endTime; + /** + * 中台订单id + */ + @TableField("travelId") + private String travelId; } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java index 0f8679a..631f067 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.supersavedriving.driver.modular.system.dao.OrderMapper; +import com.supersavedriving.driver.modular.system.dao.TCompanyMapper; import com.supersavedriving.driver.modular.system.model.*; import com.supersavedriving.driver.modular.system.service.*; import com.supersavedriving.driver.modular.system.util.*; @@ -13,6 +14,14 @@ import com.supersavedriving.driver.modular.system.util.MallBook.model.*; import com.supersavedriving.driver.modular.system.util.MallBook.util.TrhRequest; import com.supersavedriving.driver.modular.system.util.mongodb.model.Location; +import com.supersavedriving.driver.modular.system.util.qianyuntong.EmployeeUtil; +import com.supersavedriving.driver.modular.system.util.qianyuntong.OrderUtil; +import com.supersavedriving.driver.modular.system.util.qianyuntong.model.AddAccountInfoRequest; +import com.supersavedriving.driver.modular.system.util.qianyuntong.model.CreateTravelItineraryRequest; +import com.supersavedriving.driver.modular.system.util.qianyuntong.model.ModifyTravelItineraryRequest; +import com.supersavedriving.driver.modular.system.util.zhenglian.ZhengLianUtil; +import com.supersavedriving.driver.modular.system.util.zhenglian.model.TradeTerminalInfo; +import com.supersavedriving.driver.modular.system.util.zhenglian.model.ZLUserInfo; import com.supersavedriving.driver.modular.system.warpper.*; import com.supersavedriving.driver.core.util.ToolUtil; import com.supersavedriving.driver.modular.system.util.GaoDe.model.District; @@ -37,6 +46,8 @@ import java.math.BigDecimal; import java.math.RoundingMode; +import java.net.InetAddress; +import java.net.NetworkInterface; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -129,6 +140,9 @@ @Value("${callbackPath}") private String callbackPath;//支付回调网关地址 + + @Autowired + private TCompanyMapper companyMapper; @@ -246,9 +260,23 @@ order.setState(null == order.getDriverId() ? 101 : 102); } order.setStatus(1); - this.insert(order); driverService.updateById(driver); + if(null != appUser && null != order.getDriverId()){ + TCompany company = companyMapper.selectById(driver.getBranchOfficeId()); + //调三方订单中心创建行程单 + CreateTravelItineraryRequest request = new CreateTravelItineraryRequest(); + request.setOrderNo("DJ" + order.getId()); + request.setCustomerId(appUser.getOnconUUID()); + request.setDriverId(driver.getEmpId().toString()); + request.setSupplierShopId(company.getEnterCode()); + request.setServiceType(5); + String travelItinerary = OrderUtil.createTravelItinerary(request); + order.setTravelId(travelItinerary); + this.updateById(order); + } + + //推送状态 if(null != order.getDriverId()){ //推动订单数据 @@ -751,6 +779,43 @@ */ @Override public List<HallOrderList> queryOrderHall(Integer uid, Integer pageNum, Integer pageSize) throws Exception { + Driver driver = driverService.selectById(uid); + //获取证联数据 + if(null == driver.getCustId() || 0 == driver.getAccOpenFlag()){ + TradeTerminalInfo tradeTerminalInfo = new TradeTerminalInfo(); + tradeTerminalInfo.setTerminal("1"); + InetAddress inetAddress = InetAddress.getLocalHost(); + String ip = inetAddress.getHostAddress(); + tradeTerminalInfo.setIp(ip); + NetworkInterface networkInterface = NetworkInterface.getByInetAddress(inetAddress); + byte[] mac = networkInterface.getHardwareAddress(); + StringBuilder macAddress = new StringBuilder(); + for (int i = 0; i < mac.length; i++) { + macAddress.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "")); + } + + tradeTerminalInfo.setMac(macAddress.toString()); + 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); + } + } + pageNum = (pageNum - 1) * pageSize; String value = redisUtil.getValue("daijia:DRIVER" + uid); List<HallOrderList> hallOrderLists = this.baseMapper.queryOrderHall(pageNum, pageSize); @@ -894,6 +959,7 @@ order.setState(102); order.setOrderTakingTime(new Date()); this.updateById(order); + redisUtil.unlock(orderId.toString()); if(null != order.getUserId()){ @@ -901,6 +967,29 @@ appUser.setCancelCount(0); appUser.setIsException(1); appUserService.updateById(appUser); + + if(null == order.getTravelId()){ + TCompany company = companyMapper.selectById(driver.getBranchOfficeId()); + //调三方订单中心创建行程单 + CreateTravelItineraryRequest request = new CreateTravelItineraryRequest(); + request.setOrderNo("DJ" + order.getId()); + request.setCustomerId(appUser.getOnconUUID()); + request.setDriverId(driver.getEmpId().toString()); + request.setSupplierShopId(company.getEnterCode()); + request.setServiceType(5); + String travelItinerary = OrderUtil.createTravelItinerary(request); + order.setTravelId(travelItinerary); + this.updateById(order); + }else{ + //中台修改订单状态 + ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest(); + request.setOrderId(order.getTravelId()); + request.setStatus(getState(order.getState())); + TCompany company = companyMapper.selectById(driver.getBranchOfficeId()); + request.setDriverId(driver.getEmpId().toString()); + request.setSupplierShopId(company.getEnterCode()); + OrderUtil.modifyTravelItinerary(request); + } } driver.setServerStatus(2); @@ -1133,6 +1222,18 @@ } this.updateAllColumnById(order); + if(null != order.getTravelId()){ + Driver driver = driverService.selectById(order.getDriverId()); + //中台修改订单状态 + ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest(); + request.setOrderId(order.getTravelId()); + request.setStatus(getState(order.getState())); + TCompany company = companyMapper.selectById(driver.getBranchOfficeId()); + request.setDriverId(driver.getEmpId().toString()); + request.setSupplierShopId(company.getEnterCode()); + OrderUtil.modifyTravelItinerary(request); + } + //推送订单状态 pushUtil.pushOrderStatus(order.getDriverId(), 2, order.getId(), order.getState()); if(null != order.getUserId()){ @@ -1335,6 +1436,17 @@ } this.updateById(order); + if(null != order.getTravelId()){ + //中台修改订单状态 + ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest(); + request.setOrderId(order.getTravelId()); + request.setStatus(getState(order.getState())); + TCompany company = companyMapper.selectById(driver.getBranchOfficeId()); + request.setDriverId(driver.getEmpId().toString()); + request.setSupplierShopId(company.getEnterCode()); + OrderUtil.modifyTravelItinerary(request); + } + orderTransfer.setOrderId(orderId); orderTransfer.setOldDriverId(order.getDriverId()); @@ -1361,6 +1473,35 @@ } return ResultUtil.success(); + } + + + private Integer getState(Integer state){ + switch (state){ + case 101://待接单 + return 1; + case 102://已接单 + return 2; + case 103://前往预约点 + return 3; + case 104://到达预约点 + return 4; + case 105://开始服务 + return 5; + case 106://到达目的地 + return 6; + case 107://待支付 + return 7; + case 108://待评价 + return 8; + case 109://已完成 + return 9; + case 201://转单中 + return 11; + case 301://已取消 + return 10; + } + return null; } @@ -1431,6 +1572,18 @@ order.setState(order.getOldState()); order.setOldState(null); this.updateAllColumnById(order); + Driver driver = driverService.selectById(order.getDriverId()); + + if(null != order.getTravelId()){ + //中台修改订单状态 + ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest(); + request.setOrderId(order.getTravelId()); + request.setStatus(getState(order.getState())); + TCompany company = companyMapper.selectById(driver.getBranchOfficeId()); + request.setDriverId(driver.getEmpId().toString()); + request.setSupplierShopId(company.getEnterCode()); + OrderUtil.modifyTravelItinerary(request); + } OrderTransfer orderTransfer = orderTransferService.selectOne(new EntityWrapper<OrderTransfer>().eq("orderId", orderId) .eq("status", 1).isNull("successTime").orderBy("createTime desc limit 0, 1")); @@ -1465,6 +1618,20 @@ order.setState(301); this.updateById(order); + + Driver driver = driverService.selectById(order.getDriverId()); + if(null != order.getTravelId()){ + //中台修改订单状态 + ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest(); + request.setOrderId(order.getTravelId()); + request.setStatus(getState(order.getState())); + TCompany company = companyMapper.selectById(driver.getBranchOfficeId()); + request.setDriverId(driver.getEmpId().toString()); + request.setSupplierShopId(company.getEnterCode()); + OrderUtil.modifyTravelItinerary(request); + } + + redisUtil.delSetValue("orderService", orderId.toString()); CancelOrder cancelOrder = new CancelOrder(); @@ -1475,7 +1642,6 @@ cancelOrder.setStatus(1); cancelOrder.setCreateTime(new Date()); cancelOrderService.insert(cancelOrder); - Driver driver = driverService.selectById(order.getDriverId()); if(null != driver){ driver.setServerStatus(1); driverService.updateById(driver); @@ -1583,13 +1749,14 @@ order.setPayType(3); } + Driver driver = driverService.selectById(order.getDriverId()); if(payType == 2 && state == 108){ order.setPayTime(new Date()); if(null != order.getCouponId()){ UserToCoupon userToCoupon = userToCouponService.selectById(order.getCouponId()); Coupon coupon = couponService.selectById(userToCoupon.getCouponId()); - Driver driver = driverService.selectById(order.getDriverId()); + AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); accountChangeDetail.setUserType(2); @@ -1647,9 +1814,19 @@ } this.updateById(order); + if(null != order.getTravelId()){ + //中台修改订单状态 + ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest(); + request.setOrderId(order.getTravelId()); + request.setStatus(getState(order.getState())); + TCompany company = companyMapper.selectById(driver.getBranchOfficeId()); + request.setDriverId(driver.getEmpId().toString()); + request.setSupplierShopId(company.getEnterCode()); + OrderUtil.modifyTravelItinerary(request); + } + if((payType == 1 && state == 107) || (payType == 2 && state == 108)){ //修改司机状态和积分 - Driver driver = driverService.selectById(order.getDriverId()); driver.setServerStatus(1); driverService.updateById(driver); } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/EmployeeUtil.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/EmployeeUtil.java index 5c83c87..2d6bdce 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/EmployeeUtil.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/EmployeeUtil.java @@ -18,7 +18,6 @@ /** * 企业员工工具类 - * * @author zhibing.pu * @Date 2025/6/6 16:17 */ @@ -27,32 +26,13 @@ private static QianYunTongConfig qianYunTongConfig = SpringContextsUtil.getBean(QianYunTongConfig.class).getQianYunTongConfig(); - public static void main(String[] args) { - SaveStaffNodeRequest request = new SaveStaffNodeRequest(); - request.setMobile("15828353127"); - request.setEntercode("981100006005951"); - request.setEmpName("蒲"); - request.setEmpNickname("蒲"); - request.setLoginNo("15828353125"); - request.setEmpSex("男"); - request.setMphone("15828353125"); - request.setEmail("15828353125@qyt.com"); - request.setDeptId(0); - request.setPositionId(1); - request.setSuperLevel(0); - request.setHideMobile(0); - ResultUtil<SaveStaffNode> resultUtil = EmployeeUtil.saveStaffNode(request); - System.out.println(resultUtil.getData()); - } - /** * 企业增加员工 - * * @param request * @return */ - public static ResultUtil<SaveStaffNode> saveStaffNode(SaveStaffNodeRequest request) { + public static ResultUtil<SaveStaffNode> saveStaffNode(SaveStaffNodeRequest request){ //请求路径 String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/saveStaffNode"; //私钥文件 @@ -81,6 +61,11 @@ if (!"0".equals(retCode)) { log.error("【企业增加员工】请求失败:" + result); String retMsg = jsonObject.getString("retMsg"); + if(retMsg.contains("员工昵称已存在")){ + request.setEmpName(request.getEmpName() + Double.valueOf(Math.random() * 100).intValue()); + request.setEmpNickname(request.getEmpName()); + return saveStaffNode(request); + } retMsg = retMsg.substring(retMsg.indexOf("{")); jsonObject = JSON.parseObject(retMsg); return ResultUtil.error("【企业增加员工】请求失败:" + jsonObject.getString("msg")); @@ -231,4 +216,49 @@ StaffNodeInfo staffNodeInfo = object.getObject("data", StaffNodeInfo.class); return staffNodeInfo; } + + + /** + * 创建账号-同步证联开户信息 + * @param request + * @return 状态 0 成功 其他失败 + */ + public static Integer addAccountInfo(AddAccountInfoRequest request){ + request.setPartnerId("522700"); + request.setIndustryCode("100"); + request.setPayModeId("501101"); + request.setAccessMode("APP"); + + //请求路径 + String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/addAccountInfo"; + //私钥文件 + String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath(); + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = qianYunTongConfig.getAppkey();//appkey + Map<String, String> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + Map<String, Object> contentMap = new HashMap<String, Object>(); + Date nowdate = new Date(); + SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); + + String timeStamp = date.format(nowdate); + String messageId = UUID.randomUUID().toString().replaceAll("-", ""); + contentMap.put(SystemParameterNames.getAppKey(), appKey); + contentMap.put(SystemParameterNames.getMessage_id(), messageId); + contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName()); + contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus()); + contentMap.put("content", new Gson().toJson(request)); + log.info("【创建账号-同步证联开户信息】请求地址:" + url); + log.info("【创建账号-同步证联开户信息】请求参数:" + JSON.toJSONString(contentMap)); + String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap); + log.info("【创建账号-同步证联开户信息】请求结果:" + result); + JSONObject jsonObject = JSON.parseObject(result); + String retCode = jsonObject.getString("retCode"); + if (!"0".equals(retCode)) { + log.error("【创建账号-同步证联开户信息】请求失败:" + jsonObject.getString("retMsg")); + return -1; + } + JSONObject object = jsonObject.getJSONObject("object"); + return object.getInteger("status"); + } } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/EnterpriseUtil.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/EnterpriseUtil.java index c9f79c1..8510099 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/EnterpriseUtil.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/EnterpriseUtil.java @@ -6,7 +6,9 @@ import com.open.common.util.OpenApiClient; import com.open.common.util.SystemParameterNames; import com.supersavedriving.driver.modular.system.util.SpringContextsUtil; -import com.supersavedriving.driver.modular.system.util.qianyuntong.model.*; +import com.supersavedriving.driver.modular.system.util.qianyuntong.model.CheckEnterExist; +import com.supersavedriving.driver.modular.system.util.qianyuntong.model.EnterpriseInfo; +import com.supersavedriving.driver.modular.system.util.qianyuntong.model.ModifyEnterpriseInfoRequest; import lombok.extern.slf4j.Slf4j; import java.text.SimpleDateFormat; @@ -26,20 +28,6 @@ private static QianYunTongConfig qianYunTongConfig = SpringContextsUtil.getBean(QianYunTongConfig.class).getQianYunTongConfig(); - - public static void main(String[] args) { -// CheckEnterExist checkEnterNameExist = checkEnterNameExist("黔南云码通数字产业运营有限公司"); -// System.err.println(checkEnterNameExist); - - CreateEnterpriseRequest request = new CreateEnterpriseRequest(); - request.setName("成都喜望科技有限公司"); - request.setNickName("成都喜望"); - request.setIndustry_code("123456"); - request.setMobile("15828353127"); - CreateEnterprise enterprise = EnterpriseUtil.createEnterprise(request); - System.out.println(enterprise); - - } /** * 根据社会信用代码判断企业是否已存在 @@ -219,54 +207,6 @@ return true; } - - /** - * 创建企业 - * - * @param request - * @return - */ - public static CreateEnterprise createEnterprise(CreateEnterpriseRequest request) { - //请求路径 - String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/createEnterprise"; - //私钥文件 - String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath(); - //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 - String appKey = qianYunTongConfig.getAppkey();//appkey - Map<String, String> headers = new HashMap<>(); - headers.put("Content-Type", "application/json"); - Map<String, Object> map = new HashMap<String, Object>(); - Date nowdate = new Date(); - SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); - - String timeStamp = date.format(nowdate); - String messageId = UUID.randomUUID().toString().replaceAll("-", ""); - map.put(SystemParameterNames.getAppKey(), appKey); - map.put(SystemParameterNames.getMessage_id(), messageId); - map.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName()); - map.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus()); - map.put("content", new Gson().toJson(request)); - - log.info("【创建企业】请求地址:" + url); - log.info("【创建企业】请求参数:" + JSON.toJSONString(map)); - String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, map); - log.info("【创建企业】请求结果:" + result); - JSONObject jsonObject = JSON.parseObject(result); - String retCode = jsonObject.getString("retCode"); - if (!"0".equals(retCode)) { - log.error("【创建企业】请求失败:" + result); - throw new RuntimeException("【创建企业】请求失败:" + result); - } - JSONObject object = jsonObject.getJSONObject("object"); - String status = object.getString("status"); - if (!"0".equals(status)) { - log.error("【创建企业】请求失败:" + object.toJSONString()); - throw new RuntimeException("【创建企业】请求失败:" + object.toJSONString()); - } - return object.getObject("data", CreateEnterprise.class); - } - - /** * 删除企业信息 * @@ -313,4 +253,55 @@ } return true; } + + public static void main(String[] args) { + CheckEnterExist checkEnterExist = EnterpriseUtil.checkEnterNameExist("成都喜望科技有限公司"); + System.out.println(checkEnterExist); + } + + /** + * 创建企业 + * + * @param request + * @return + */ + public static CreateEnterprise createEnterprise(CreateEnterpriseRequest request) { + //请求路径 + String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/createEnterprise"; + //私钥文件 + String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath(); + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = qianYunTongConfig.getAppkey();//appkey + Map<String, String> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + Map<String, Object> map = new HashMap<String, Object>(); + Date nowdate = new Date(); + SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); + + String timeStamp = date.format(nowdate); + String messageId = UUID.randomUUID().toString().replaceAll("-", ""); + map.put(SystemParameterNames.getAppKey(), appKey); + map.put(SystemParameterNames.getMessage_id(), messageId); + map.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName()); + map.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus()); + map.put("content", new Gson().toJson(request)); + + log.info("【创建企业】请求地址:" + url); + log.info("【创建企业】请求参数:" + JSON.toJSONString(map)); + String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, map); + log.info("【创建企业】请求结果:" + result); + JSONObject jsonObject = JSON.parseObject(result); + String retCode = jsonObject.getString("retCode"); + if (!"0".equals(retCode)) { + log.error("【创建企业】请求失败:" + result); + throw new RuntimeException("【创建企业】请求失败:" + result); + } + JSONObject object = jsonObject.getJSONObject("object"); + String status = object.getString("status"); + if (!"0".equals(status)) { + log.error("【创建企业】请求失败:" + object.toJSONString()); + throw new RuntimeException("【创建企业】请求失败:" + object.toJSONString()); + } + return object.getObject("data", CreateEnterprise.class); + } } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/NCOSSUtil.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/NCOSSUtil.java deleted file mode 100644 index 9652a82..0000000 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/NCOSSUtil.java +++ /dev/null @@ -1,243 +0,0 @@ -//package com.supersavedriving.driver.modular.system.util.qianyuntong; -// -//import com.heredata.hos.HOS; -//import com.heredata.hos.HOSClientBuilder; -//import com.heredata.hos.model.CreateBucketRequest; -//import com.heredata.hos.model.HOSObject; -//import com.heredata.hos.model.PutObjectRequest; -//import com.heredata.hos.model.PutObjectResult; -//import com.heredata.hos.model.bucket.Bucket; -//import com.heredata.model.VoidResult; -//import com.supersavedriving.driver.modular.system.util.SpringContextsUtil; -//import lombok.extern.slf4j.Slf4j; -// -//import java.io.InputStream; -// -///** -// * OSS 工具类 -// * @author zhibing.pu -// * @Date 2025/6/23 17:50 -// */ -//@Slf4j -//public class NCOSSUtil { -// -// private static QianYunTongConfig qianYunTongConfig = SpringContextsUtil.getBean(QianYunTongConfig.class).getQianYunTongConfig(); -// -// /** -// * 创建桶 -// * @param bucketName -// * @return -// */ -// public static Boolean createBucket(String bucketName) { -// /** -// * endPoint:HOS的基础路径(公共前缀) -// * account:账户的ID -// * accessKey:向UAAS服务请求到的access_key -// * secretKey:向UAAS服务请求到的secret_key -// */ -// HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); -// try { -// // 创建请求对象,并且设置创建桶名为"example"的桶 -// CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName); -// VoidResult result = hos.createBucket(createBucketRequest); -// if (result.getResponse().isSuccessful()) { -// log.info("创建桶成功:" + bucketName); -// return true; -// } -// } catch (Exception e){ -// log.info("创建桶失败:" + bucketName); -// e.printStackTrace(); -// } -// return false; -// } -// -// -// /** -// * 查询桶详情 -// * @param bucketName -// * @return -// */ -// public static Bucket getBucketInfo(String bucketName) { -// /** -// * endPoint:HOS的基础路径(公共前缀) -// * account:账户的ID -// * accessKey:向UAAS服务请求到的access_key -// * secretKey:向UAAS服务请求到的secret_key -// */ -// HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); -// try { -// // 查询桶名为"example"的详情 -// Bucket bucket = hos.getBucketInfo(bucketName); -// return bucket; -// } catch (Exception e){ -// e.printStackTrace(); -// } -// return null; -// } -// -// -// /** -// * 删除桶 -// * @param bucketName -// * @return -// */ -// public static Boolean deleteBucket(String bucketName) { -// /** -// * endPoint:HOS的基础路径(公共前缀) -// * account:账户的ID -// * accessKey:向UAAS服务请求到的access_key -// * secretKey:向UAAS服务请求到的secret_key -// */ -// HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); -// try { -// VoidResult result = hos.deleteBucket(bucketName); -// if (result.getResponse().isSuccessful()) { -// log.info("删除桶成功:" + bucketName); -// return true; -// } -// } catch (Exception e){ -// log.info("删除桶成功:" + bucketName); -// e.printStackTrace(); -// } -// return false; -// } -// -// -// /** -// * 设置桶策略 -// * @param bucketName 桶名 -// * @param policyText 策略规则字符串 -// * { -// * // 策略配置的版本号,由用户定义 -// * "Version": "2012-10-17", -// * // 策略规则配置,可指定多条策略规则 -// * "Statement": [{ -// * // 策略规则ID,可用户指定,如不指定则服务自动生成一条 -// * "Sid": "sid", -// * // 策略规则指定的HOS API接口标识,可参照下表填写 -// * "Action": [ -// * "action" -// * ], -// * // 策略规则效果,具体表现为允许或拒绝,有效值为Allow(允许),Deny(拒绝); -// * "Effect": "Allow", -// * // 策略规则指定的资源参照下面resource配置 -// * "Resource": "resource", -// * // 策略规则指定的授权人 参照下面Principal配置 -// * "Principal": { -// * "HWS": [ -// * "account_id:root" -// * ] -// * } -// * } -// * ] -// * } -// * @return -// */ -// public static Boolean setBucketPolicy(String bucketName, String policyText) { -// /** -// * endPoint:HOS的基础路径(公共前缀) -// * account:账户的ID -// * accessKey:向UAAS服务请求到的access_key -// * secretKey:向UAAS服务请求到的secret_key -// */ -// HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); -// // 桶策略字符串 -// try { -// VoidResult result = hos.setBucketPolicy(bucketName, policyText); -// if (result.getResponse().isSuccessful()) { -// log.info("设置桶策略成功:" + bucketName); -// return true; -// } -// } catch (Exception e) { -// log.info("设置桶策略失败:" + bucketName); -// e.printStackTrace(); -// } -// return false; -// } -// -// -// /** -// * 上传对象 -// * @param bucketName 桶名称 -// * @param key 存储文件名 -// * @param inputStream 上传文件流 -// * @return 对象唯一标识 -// */ -// public static String putObject(String bucketName, String key, InputStream inputStream) { -// /** -// * endPoint:HOS的基础路径(公共前缀) -// * account:账户的ID -// * accessKey:向UAAS服务请求到的access_key -// * secretKey:向UAAS服务请求到的secret_key -// */ -// HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); -// try { -// PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key , inputStream); -// PutObjectResult example = hos.putObject(putObjectRequest); -// if (example.getResponse().isSuccessful()) { -// log.info("上传对象成功:" + bucketName + "--->" + key); -// return example.getETag(); -// } -// } catch (Exception e) { -// log.info("上传对象成功:" + bucketName); -// e.printStackTrace(); -// } -// return null; -// } -// -// -// /** -// * 查询对象 -// * @param bucketName 桶名称 -// * @param key 存储文件名 -// * @return -// */ -// public static HOSObject getObject(String bucketName, String key) { -// /** -// * endPoint:HOS的基础路径(公共前缀) -// * account:账户的ID -// * accessKey:向UAAS服务请求到的access_key -// * secretKey:向UAAS服务请求到的secret_key -// */ -// HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); -// try { -// HOSObject example = hos.getObject(bucketName, key); -// if (example.getResponse().isSuccessful()) { -// log.info("查询对象成功:" + bucketName + "--->" + key); -// return example; -// } -// } catch (Exception e) { -// log.info("查询对象失败:" + bucketName); -// e.printStackTrace(); -// } -// return null; -// } -// -// -// /** -// * 删除对象 -// * @param bucketName 桶名称 -// * @param key 存储文件名 -// * @return -// */ -// public static Boolean deleteObject(String bucketName, String key) { -// /** -// * endPoint:HOS的基础路径(公共前缀) -// * account:账户的ID -// * accessKey:向UAAS服务请求到的access_key -// * secretKey:向UAAS服务请求到的secret_key -// */ -// HOS hos = new HOSClientBuilder().build(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey()); -// try { -// VoidResult example = hos.deleteObject(bucketName, key); -// if (example.getResponse().isSuccessful()) { -// log.info("删除对象成功:" + bucketName + "--->" + key); -// return true; -// } -// } catch (Exception e) { -// log.info("删除对象失败:" + bucketName + "--->" + key); -// e.printStackTrace(); -// } -// return false; -// } -//} diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/OrderUtil.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/OrderUtil.java index 0823304..4e81e09 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/OrderUtil.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/OrderUtil.java @@ -183,14 +183,14 @@ * @return */ public static PayInfo tradePayOff1(TradePayOff1Data tradePayOff1Data) { - tradePayOff1Data.setPartnerId("5400004"); + tradePayOff1Data.setPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401007" : "5400004"); tradePayOff1Data.setTimeout("72H"); tradePayOff1Data.setScene("TRAFFIC"); tradePayOff1Data.setCurrency("RMB"); tradePayOff1Data.setNeedLoginFlag("N"); tradePayOff1Data.setAccessMode("APP"); tradePayOff1Data.getGoodsInfo().forEach(goodsInfoRequest -> { - goodsInfoRequest.setId("981100006005901"); + goodsInfoRequest.setId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "9811000039358999" : "981100006005901"); goodsInfoRequest.setSubAppId("wxcc3c9058e2b294db"); goodsInfoRequest.setAreaInfo("520100"); @@ -200,7 +200,7 @@ TradeRequest request = new TradeRequest<TradePayOff1Data>(); - request.setSceneId("1911676727023968256"); + request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954795404533583872" : "1911676727023968256"); request.setAppId(qianYunTongConfig.getAppkey()); request.setConfigVersion(1); request.setRequestId(UUIDUtil.getRandomCode()); @@ -391,12 +391,12 @@ tradeOrderCreateData.setTimeout("72H"); tradeOrderCreateData.setOrderAppId("52270015"); tradeOrderCreateData.setChannelSource("GRJYCXWXXCX"); - tradeOrderCreateData.setPayPartnerId("5400004"); + tradeOrderCreateData.setPayPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401007" : "5400004"); tradeOrderCreateData.setCurrency("RMB"); tradeOrderCreateData.setNeedLoginFlag("N"); tradeOrderCreateData.setAccessMode("APP"); tradeOrderCreateData.getGoodsInfo().forEach(goodsInfoRequest -> { - goodsInfoRequest.setId("981100006005901"); + goodsInfoRequest.setId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "9811000039358999" : "981100006005901"); goodsInfoRequest.setSubAppId("wxcc3c9058e2b294db"); goodsInfoRequest.setAreaInfo("520100"); goodsInfoRequest.setPayType("0"); @@ -405,7 +405,7 @@ TradeRequest request = new TradeRequest<TradeOrderCreateData>(); - request.setSceneId("1945688132719169536"); + request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954793280550756352" : "1945688132719169536"); request.setAppId(qianYunTongConfig.getAppkey()); request.setConfigVersion(1); request.setRequestId(UUIDUtil.getRandomCode()); @@ -457,7 +457,7 @@ createOrderRequest.setChannelSource("GRJYCXWXXCX"); TradeRequest request = new TradeRequest<CreateOrderRequest>(); - request.setSceneId("1948289607125864448"); + request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954792737421942784" : "1948289607125864448"); request.setAppId(qianYunTongConfig.getAppkey()); request.setConfigVersion(1); request.setRequestId(UUIDUtil.getRandomCode()); @@ -503,7 +503,7 @@ * @return */ public static PayInfo tradePayOff(TradePayOffData tradePayOffData) { - tradePayOffData.setPartnerId("5400005"); + tradePayOffData.setPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401008" : "5400005"); tradePayOffData.setTimeout("72H"); tradePayOffData.setScene("TRAFFIC"); tradePayOffData.setCurrency("RMB"); @@ -528,20 +528,20 @@ tradePayOffData.setPaymentInfos(paymentInfoRequests); List<GoodsInfo> goodsInfo = new ArrayList<>(); GoodsInfo goodsInfo1 = new GoodsInfo(); - goodsInfo1.setMerchantCode("B00000905"); - goodsInfo1.setCustId("CB0000004686"); - goodsInfo1.setCustName("证联消费平台交易客户"); + goodsInfo1.setMerchantCode("prod".equals(qianYunTongConfig.getActiveProfile()) ? "B00001404" : "B00000905"); + goodsInfo1.setCustId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "CB0000004853" : "CB0000004686"); + goodsInfo1.setCustName("prod".equals(qianYunTongConfig.getActiveProfile()) ? "黔南云码通数字产业运营有限公司" : "证联消费平台交易客户"); goodsInfo1.setBusinessType("10408"); - goodsInfo1.setAgreementNo("00000000468618354161754464398681"); + goodsInfo1.setAgreementNo("prod".equals(qianYunTongConfig.getActiveProfile()) ? "00000402485377063581755054680461" : "00000000468618354161754464398681"); goodsInfo1.setProfitSharing("1"); goodsInfo.add(goodsInfo1); tradePayOffData.setGoodsInfo(goodsInfo); TradeRequest request = new TradeRequest<TradePayOffData>(); - request.setSceneId("1774717104844095488"); + request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954794605782913024" : "1774717104844095488"); request.setAppId(qianYunTongConfig.getAppkey()); - request.setConfigVersion(2); + request.setConfigVersion("prod".equals(qianYunTongConfig.getActiveProfile()) ? 1 : 2); request.setRequestId(UUIDUtil.getRandomCode()); request.setData(tradePayOffData); //请求路径 @@ -586,7 +586,7 @@ * @return */ public static GetPaymentInfo paymentInfo(GetPaymentInfoDataRequest getPaymentInfoDataRequest) { - getPaymentInfoDataRequest.setPartnerId("5400004"); + getPaymentInfoDataRequest.setPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401007" : "5400004"); GetPaymentInfoRequest request = new GetPaymentInfoRequest(); request.setRequstType("POST"); @@ -644,7 +644,6 @@ request.setMhltiCenterAppId("52270015"); request.setPayType(4); request.setPayChannel(6); - request.setIsCompensate(1); //请求路径 String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/paymentOrder"; //私钥文件 @@ -677,6 +676,156 @@ OrderInfo orderInfo = jsonObject.getObject("busiResp", OrderInfo.class); return orderInfo; } - + + + /** + * 订单退款 + * @param request1 + * @return + */ + public static TradeOrderRefund tradeOrderRefund(TradeOrderRefundRequest request1) { + request1.setPayPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401007" : "5400004"); + //请求路径 + String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/tradeOrderRefund"; + //私钥文件 + String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath(); + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = qianYunTongConfig.getAppkey();//appkey + Map<String, String> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + Map<String, Object> contentMap = new HashMap<String, Object>(); + Date nowdate = new Date(); + SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); + + TradeRequest request = new TradeRequest<TradeOrderRefundRequest>(); + request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1968487381046722560" : "1726529285264269312"); + request.setAppId(qianYunTongConfig.getAppkey()); + request.setConfigVersion("prod".equals(qianYunTongConfig.getActiveProfile()) ? 1 : 6); + request.setRequestId(UUIDUtil.getRandomCode()); + request.setData(request1); + + String timeStamp = date.format(nowdate); + String messageId = UUIDUtil.getRandomCode(); + contentMap.put(SystemParameterNames.getAppKey(), appKey); + contentMap.put(SystemParameterNames.getMessage_id(), messageId); + contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName()); + contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus()); + contentMap.put("content", new Gson().toJson(request)); + log.info("【订单退款】请求地址:" + url); + log.info("【订单退款】请求参数:" + JSON.toJSONString(contentMap)); + String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap); + log.info("【订单退款】请求结果:" + result); + JSONObject jsonObject = JSON.parseObject(result); + String resCode = jsonObject.getString("resCode"); + if (!"000000".equals(resCode)) { + log.error("【订单退款】失败:" + jsonObject.getString("resMsg")); + throw new RuntimeException("【订单退款】失败:" + jsonObject.getString("resMsg")); + } + JSONObject refundInfo = jsonObject.getJSONObject("busiResp").getJSONObject("refundInfo"); + String retCode = refundInfo.getString("retCode"); + if(!"0".equals(retCode)){ + log.error("【订单退款】失败:" + refundInfo.getString("retMsg")); + throw new RuntimeException("【订单退款】失败:" + refundInfo.getString("retMsg")); + } + JSONObject object = refundInfo.getJSONObject("object"); + String retCode1 = object.getString("retCode"); + if(!"000000".equals(retCode1)){ + log.error("【订单退款】失败:" + object.getString("retMsg")); + throw new RuntimeException("【订单退款】失败:" + object.getString("retMsg")); + } + + TradeOrderRefund tradeOrderRefund = object.getObject("data", TradeOrderRefund.class); + return tradeOrderRefund; + } + + + /** + * 订单退款通知 + * @param request + */ + public static void orderRefundNotice(OrderRefundNoticeRequest request) { + request.setScene("TRAFFIC"); + request.setMhltiCenterAppId("52270015"); + + //请求路径 + String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/orderRefundNotice"; + //私钥文件 + String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath(); + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = qianYunTongConfig.getAppkey();//appkey + Map<String, String> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + Map<String, Object> contentMap = new HashMap<String, Object>(); + Date nowdate = new Date(); + SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); + + String timeStamp = date.format(nowdate); + String messageId = UUIDUtil.getRandomCode(); + contentMap.put(SystemParameterNames.getAppKey(), appKey); + contentMap.put(SystemParameterNames.getMessage_id(), messageId); + contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName()); + contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus()); + contentMap.put("content", new Gson().toJson(request)); + log.info("【订单退款通知】请求地址:" + url); + log.info("【订单退款通知】请求参数:" + JSON.toJSONString(contentMap)); + String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap); + log.info("【订单退款通知】请求结果:" + result); + JSONObject jsonObject = JSON.parseObject(result); + String resCode = jsonObject.getString("resCode"); + if (!"000000".equals(resCode)) { + log.error("【订单退款通知】失败:" + jsonObject.getString("resMsg")); + throw new RuntimeException("【订单退款通知】失败:" + jsonObject.getString("resMsg")); + } + } + + + + /** + * 订单取消 + * @param orderId + */ + public static void tradeOrderCancel(String orderId) { + TradeOrderCancelRequest request1 = new TradeOrderCancelRequest(); + request1.setScene("TRAFFIC"); + request1.setMhltiCenterAppId("52270015"); + request1.setOrderId(orderId); + + //请求路径 + String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/tradeOrderCancel"; + //私钥文件 + String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath(); + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = qianYunTongConfig.getAppkey();//appkey + Map<String, String> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + Map<String, Object> contentMap = new HashMap<String, Object>(); + Date nowdate = new Date(); + SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); + + TradeRequest request = new TradeRequest<TradeOrderRefundRequest>(); + request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1968487841979760640" : "1963507067318833152"); + request.setAppId(qianYunTongConfig.getAppkey()); + request.setConfigVersion(1); + request.setRequestId(UUIDUtil.getRandomCode()); + request.setData(request1); + + String timeStamp = date.format(nowdate); + String messageId = UUIDUtil.getRandomCode(); + contentMap.put(SystemParameterNames.getAppKey(), appKey); + contentMap.put(SystemParameterNames.getMessage_id(), messageId); + contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName()); + contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus()); + contentMap.put("content", new Gson().toJson(request)); + log.info("【订单取消】请求地址:" + url); + log.info("【订单取消】请求参数:" + JSON.toJSONString(contentMap)); + String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap); + log.info("【订单取消】请求结果:" + result); + JSONObject jsonObject = JSON.parseObject(result); + String resCode = jsonObject.getString("resCode"); + if (!"000000".equals(resCode)) { + log.error("【订单取消】失败:" + jsonObject.getString("resMsg")); + throw new RuntimeException("【订单取消】失败:" + jsonObject.getString("resMsg")); + } + } } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/QianYunTongConfig.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/QianYunTongConfig.java index 80ea075..2523950 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/QianYunTongConfig.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/QianYunTongConfig.java @@ -1,5 +1,6 @@ package com.supersavedriving.driver.modular.system.util.qianyuntong; +import lombok.Data; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -7,6 +8,7 @@ * @author zhibing.pu * @Date 2025/7/8 11:31 */ +@Data @Component public class QianYunTongConfig { @@ -60,107 +62,16 @@ * 向UAAS服务请求到的secret_key */ private String secretKey; - - public String getActiveProfile() { - return activeProfile; - } - - public void setActiveProfile(String activeProfile) { - this.activeProfile = activeProfile; - } - - public String getAppkey() { - return appkey; - } - - public void setAppkey(String appkey) { - this.appkey = appkey; - } - - public String getPrivateKeyPath() { - return privateKeyPath; - } - - public void setPrivateKeyPath(String privateKeyPath) { - this.privateKeyPath = privateKeyPath; - } - - public String getUserName() { - return userName; - } - - public void setUserName(String userName) { - this.userName = userName; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - - public String getApiUrl() { - return apiUrl; - } - - public void setApiUrl(String apiUrl) { - this.apiUrl = apiUrl; - } - - public String getBucketName() { - return bucketName; - } - - public void setBucketName(String bucketName) { - this.bucketName = bucketName; - } - - public String getAppId() { - return appId; - } - - public void setAppId(String appId) { - this.appId = appId; - } - - public String getEndPoint() { - return endPoint; - } - - public void setEndPoint(String endPoint) { - this.endPoint = endPoint; - } - - public String getAccount() { - return account; - } - - public void setAccount(String account) { - this.account = account; - } - - public String getAccessKey() { - return accessKey; - } - - public void setAccessKey(String accessKey) { - this.accessKey = accessKey; - } - - public String getSecretKey() { - return secretKey; - } - - public void setSecretKey(String secretKey) { - this.secretKey = secretKey; - } - + /** + * 场景编号 + */ + String sceneId; + + public QianYunTongConfig getQianYunTongConfig() { if("dev".equals(activeProfile)){ this.appkey = "10001104"; - this.privateKeyPath = "C:\\Users\\Admin\\Desktop\\qyt\\private_key_test.pem"; + this.privateKeyPath = "C:\\Users\\39373\\Desktop\\黔云通\\private_key_test.pem"; this.userName = "xiaofei"; this.status = "1"; this.setApiUrl("https://test-zhongtai.stqcloud.com:10070"); @@ -170,6 +81,7 @@ this.setAccount("d8bef0a04db511f0b79d01a3e2b7587e"); this.setAccessKey("TYMFTFD5SIIT15DCCUD7"); this.setSecretKey("AoI1dkH3yoAvXoaQlREO3ed9mwQJFluLTliS9T1z"); + this.sceneId = "1948289607125864448"; } if("test".equals(activeProfile)){ this.setAppkey("10001104"); @@ -183,6 +95,7 @@ this.setAccount("d8bef0a04db511f0b79d01a3e2b7587e"); this.setAccessKey("TYMFTFD5SIIT15DCCUD7"); this.setSecretKey("AoI1dkH3yoAvXoaQlREO3ed9mwQJFluLTliS9T1z"); + this.sceneId = "1948289607125864448"; } if("prod".equals(activeProfile)){ this.setAppkey("10001104"); @@ -196,6 +109,7 @@ this.setAccount("d8bef0a04db511f0b79d01a3e2b7587e"); this.setAccessKey("TYMFTFD5SIIT15DCCUD7"); this.setSecretKey("AoI1dkH3yoAvXoaQlREO3ed9mwQJFluLTliS9T1z"); + this.sceneId = ""; } return this; } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/SMSUtil.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/SMSUtil.java index e884660..2e58f7f 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/SMSUtil.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/SMSUtil.java @@ -70,17 +70,6 @@ return object.getString("code"); } - public static void main(String[] args) { - SendSmsRequest request = new SendSmsRequest(); - request.setDestAddress("15828353127"); - request.setTemplateId("TPL202507300002"); - Map<String, String> templateParams = new HashMap<>(); -// templateParams.put("code", "1234"); - request.setTemplateParams(templateParams); -// request.setCode("code"); - request.setSpId("Y86asr7J"); - SMSUtil.sendSms(request); - } /** * 根据模板发送短信 diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/UserUtil.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/UserUtil.java index b1966c6..24c14aa 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/UserUtil.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/UserUtil.java @@ -25,12 +25,6 @@ private static QianYunTongConfig qianYunTongConfig = SpringContextsUtil.getBean(QianYunTongConfig.class).getQianYunTongConfig(); - public static void main(String[] args) { -// List<QYTUserInfo> userInfoByPhone = getUserInfoByPhone("15828353127"); -// System.out.println(userInfoByPhone); - } - - /** * 根据手机号码获取人员信息 * @@ -75,63 +69,6 @@ JSONArray data = object.getJSONObject("data").getJSONArray("list"); List<QYTUserInfo> list = new ArrayList<>(); for (int i = 0; i < data.size(); i++) { - QYTUserInfo userInfo = data.getObject(i, QYTUserInfo.class); - list.add(userInfo); - } - return list; - } - - /** - * 根据手机号码获取人员信息 - * - * @param mobile 手机号码 - * @param enterNum 企业编号 - */ - public static List<QYTUserInfo> getUserInfoByPhone(String mobile, String enterNum) { - //请求路径 - String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/getUserInfoByPhone"; - //私钥文件 - String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath(); - //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 - String appKey = qianYunTongConfig.getAppkey();//appkey - Map<String, String> headers = new HashMap<>(); - headers.put("Content-Type", "application/json"); - Map<String, Object> contentMap = new HashMap<String, Object>(); - Date nowdate = new Date(); - SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); - - String timeStamp = date.format(nowdate); - String messageId = UUID.randomUUID().toString().replaceAll("-", ""); - contentMap.put(SystemParameterNames.getAppKey(), appKey); - contentMap.put(SystemParameterNames.getMessage_id(), messageId); - contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName()); - contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus()); - Map<String, String> map = new HashMap<>(); - map.put("mobile", mobile); - if (null != enterNum) { - map.put("enterNum", enterNum); - } - contentMap.put("content", JSON.toJSONString(map)); - log.info("【根据手机号码获取人员信息】请求地址:" + url); - log.info("【根据手机号码获取人员信息】请求参数:" + JSON.toJSONString(contentMap)); - String result = OpenApiClient.sendCommonHttpRequst(url, headers, "GET", skprivateKeyFile, timeStamp, contentMap); - log.info("【根据手机号码获取人员信息】请求结果:" + result); - JSONObject jsonObject = JSON.parseObject(result); - String retCode = jsonObject.getString("retCode"); - if (!"0".equals(retCode)) { - log.error("【根据手机号码获取人员信息】请求失败:" + result); - return null; - } - JSONObject object = jsonObject.getJSONObject("object"); - String status = object.getString("status"); - if (!"0".equals(status)) { - log.error("【根据手机号码获取人员信息】失败:" + object.toJSONString()); - return null; - } - JSONArray data = object.getJSONArray("data"); - List<QYTUserInfo> list = new ArrayList<>(); - for (int i = 0; i < data.size(); i++) { - data.getJSONObject(i).getString("enter_code"); QYTUserInfo userInfo = data.getObject(i, QYTUserInfo.class); list.add(userInfo); } @@ -279,6 +216,64 @@ /** + * 根据手机号码获取人员信息 + * + * @param mobile 手机号码 + * @param enterNum 企业编号 + */ + public static List<QYTUserInfo> getUserInfoByPhone(String mobile, String enterNum) { + //请求路径 + String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/getUserInfoByPhone"; + //私钥文件 + String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath(); + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = qianYunTongConfig.getAppkey();//appkey + Map<String, String> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + Map<String, Object> contentMap = new HashMap<String, Object>(); + Date nowdate = new Date(); + SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); + + String timeStamp = date.format(nowdate); + String messageId = UUID.randomUUID().toString().replaceAll("-", ""); + contentMap.put(SystemParameterNames.getAppKey(), appKey); + contentMap.put(SystemParameterNames.getMessage_id(), messageId); + contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName()); + contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus()); + Map<String, String> map = new HashMap<>(); + map.put("mobile", mobile); + if (null != enterNum) { + map.put("enterNum", enterNum); + } + contentMap.put("content", JSON.toJSONString(map)); + log.info("【根据手机号码获取人员信息】请求地址:" + url); + log.info("【根据手机号码获取人员信息】请求参数:" + JSON.toJSONString(contentMap)); + String result = OpenApiClient.sendCommonHttpRequst(url, headers, "GET", skprivateKeyFile, timeStamp, contentMap); + log.info("【根据手机号码获取人员信息】请求结果:" + result); + JSONObject jsonObject = JSON.parseObject(result); + String retCode = jsonObject.getString("retCode"); + if (!"0".equals(retCode)) { + log.error("【根据手机号码获取人员信息】请求失败:" + result); + return null; + } + JSONObject object = jsonObject.getJSONObject("object"); + String status = object.getString("status"); + if (!"0".equals(status)) { + log.error("【根据手机号码获取人员信息】失败:" + object.toJSONString()); + return null; + } + JSONArray data = object.getJSONArray("data"); + List<QYTUserInfo> list = new ArrayList<>(); + for (int i = 0; i < data.size(); i++) { + data.getJSONObject(i).getString("enter_code"); + QYTUserInfo userInfo = data.getObject(i, QYTUserInfo.class); + list.add(userInfo); + } + return list; + } + + + /** * 实名认证 * @param realName * @param cardNo @@ -320,5 +315,4 @@ JSONObject object = jsonObject.getJSONObject("object"); return object.getBoolean("isok"); } - } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/model/GetPaymentInfo.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/model/GetPaymentInfo.java index 31f5225..d57ca56 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/model/GetPaymentInfo.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/model/GetPaymentInfo.java @@ -39,14 +39,6 @@ */ private String totalFee; /** - * 支付工单状态 - * 0 待支付 - * 1 部分支付成功 - * 2 支付成功 - * 3 支付失败 - */ - private String status; - /** * 商品信息 */ private List<GoodsInfoRequest> goodsInfo; diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/model/PaymentOrderRequest.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/model/PaymentOrderRequest.java index fe05520..a47a35a 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/model/PaymentOrderRequest.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/model/PaymentOrderRequest.java @@ -50,8 +50,4 @@ * 付款方式,6:微信 7:支付宝 8:银行卡 9:银联二维码 10银联购物车收银台 */ private Integer payChannel; - /** - * 是否补偿单。1、是,0、否 - */ - private Integer isCompensate; } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/model/QYTPaymentCallbackData.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/model/QYTPaymentCallbackData.java index a179a9c..55bcf0b 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/model/QYTPaymentCallbackData.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/qianyuntong/model/QYTPaymentCallbackData.java @@ -11,10 +11,6 @@ @Data public class QYTPaymentCallbackData { /** - * 业务侧行程编号 - */ - private String orderNo; - /** * 商户单标识。行程单ID */ private String partnerPayId; diff --git a/management/guns-admin/pom.xml b/management/guns-admin/pom.xml index 2353746..70d59d9 100644 --- a/management/guns-admin/pom.xml +++ b/management/guns-admin/pom.xml @@ -72,6 +72,11 @@ <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> + <!--设置共享session--> + <dependency> + <groupId>org.springframework.session</groupId> + <artifactId>spring-session-data-redis</artifactId> + </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> @@ -231,6 +236,36 @@ <artifactId>hutool-all</artifactId> <version>5.7.7</version> </dependency> + <!--中台sdk--> + <dependency> + <groupId>com.zhongtai</groupId> + <artifactId>zhongtai-sdk</artifactId> + <version>1.0.0</version> + <scope>system</scope> + <systemPath>${pom.basedir}/lib/openApiClient-1.0.0.jar</systemPath> + </dependency> + <!--单点登录sdk--> + <dependency> + <groupId>com.cas</groupId> + <artifactId>cas-client-oncon</artifactId> + <version>3.0.5</version> + <scope>system</scope> + <systemPath>${pom.basedir}/lib/cas-client-oncon-3.0.5.jar</systemPath> + </dependency> + <dependency> + <groupId>com.cas</groupId> + <artifactId>cas-client-oncon-core</artifactId> + <version>1.2.2</version> + <scope>system</scope> + <systemPath>${pom.basedir}/lib/cas-client-oncon-core-1.2.2.jar</systemPath> + </dependency> + <dependency> + <groupId>it.sauronsoftware</groupId> + <artifactId>base64</artifactId> + <version>1.3.1</version> + <scope>system</scope> + <systemPath>${pom.basedir}/lib/javabase64-1.3.1.jar</systemPath> + </dependency> <dependency> <groupId>com.ncoss</groupId> <artifactId>ncoss-java-sdk</artifactId> diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/config/SpringSessionConfig.java b/management/guns-admin/src/main/java/com/stylefeng/guns/config/SpringSessionConfig.java index ef9a5bc..9e9627b 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/config/SpringSessionConfig.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/config/SpringSessionConfig.java @@ -1,6 +1,7 @@ package com.stylefeng.guns.config; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; /** * spring session配置 @@ -8,7 +9,7 @@ * @author fengshuonan * @date 2017-07-13 21:05 */ -//@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800) //session过期时间 如果部署多机环境,需要打开注释 +@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 28800) //session过期时间 如果部署多机环境,需要打开注释 @ConditionalOnProperty(prefix = "guns", name = "spring-session-open", havingValue = "true") public class SpringSessionConfig { diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/config/web/ShiroConfig.java b/management/guns-admin/src/main/java/com/stylefeng/guns/config/web/ShiroConfig.java index eb64df0..4279b15 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/config/web/ShiroConfig.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/config/web/ShiroConfig.java @@ -1,208 +1,208 @@ -package com.stylefeng.guns.config.web; - -import com.stylefeng.guns.config.properties.GunsProperties; -import com.stylefeng.guns.core.intercept.GunsUserFilter; -import com.stylefeng.guns.core.shiro.ShiroDbRealm; -import org.apache.shiro.cache.CacheManager; -import org.apache.shiro.cache.ehcache.EhCacheManager; -import org.apache.shiro.codec.Base64; -import org.apache.shiro.session.mgt.SessionManager; -import org.apache.shiro.spring.LifecycleBeanPostProcessor; -import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; -import org.apache.shiro.spring.web.ShiroFilterFactoryBean; -import org.apache.shiro.web.mgt.CookieRememberMeManager; -import org.apache.shiro.web.mgt.DefaultWebSecurityManager; -import org.apache.shiro.web.servlet.Cookie; -import org.apache.shiro.web.servlet.ShiroHttpSession; -import org.apache.shiro.web.servlet.SimpleCookie; -import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; -import org.apache.shiro.web.session.mgt.ServletContainerSessionManager; -import org.springframework.beans.factory.config.MethodInvokingFactoryBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.cache.ehcache.EhCacheManagerFactoryBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import javax.servlet.Filter; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * shiro权限管理的配置 - * - * @author fengshuonan - * @date 2016年11月14日 下午3:03:44 - */ -@Configuration -public class ShiroConfig { - - /** - * 安全管理器 - */ - @Bean - public DefaultWebSecurityManager securityManager(CookieRememberMeManager rememberMeManager, CacheManager cacheShiroManager, SessionManager sessionManager) { - DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); - securityManager.setRealm(this.shiroDbRealm()); - securityManager.setCacheManager(cacheShiroManager); - securityManager.setRememberMeManager(rememberMeManager); - securityManager.setSessionManager(sessionManager); - return securityManager; - } - - /** - * spring session管理器(多机环境) - */ - @Bean - @ConditionalOnProperty(prefix = "guns", name = "spring-session-open", havingValue = "true") - public ServletContainerSessionManager servletContainerSessionManager() { - return new ServletContainerSessionManager(); - } - - /** - * session管理器(单机环境) - */ - @Bean - @ConditionalOnProperty(prefix = "guns", name = "spring-session-open", havingValue = "false") - public DefaultWebSessionManager defaultWebSessionManager(CacheManager cacheShiroManager, GunsProperties gunsProperties) { - DefaultWebSessionManager sessionManager = new DefaultWebSessionManager(); - sessionManager.setCacheManager(cacheShiroManager); - sessionManager.setSessionValidationInterval(gunsProperties.getSessionValidationInterval() * 1000); - sessionManager.setGlobalSessionTimeout(gunsProperties.getSessionInvalidateTime() * 1000); - sessionManager.setDeleteInvalidSessions(true); - sessionManager.setSessionValidationSchedulerEnabled(true); - Cookie cookie = new SimpleCookie(ShiroHttpSession.DEFAULT_SESSION_ID_NAME); - cookie.setName("shiroCookie"); - cookie.setHttpOnly(true); - sessionManager.setSessionIdCookie(cookie); - return sessionManager; - } - - /** - * 缓存管理器 使用Ehcache实现 - */ - @Bean - public CacheManager getCacheShiroManager(EhCacheManagerFactoryBean ehcache) { - EhCacheManager ehCacheManager = new EhCacheManager(); - ehCacheManager.setCacheManager(ehcache.getObject()); - return ehCacheManager; - } - - /** - * 项目自定义的Realm - */ - @Bean - public ShiroDbRealm shiroDbRealm() { - return new ShiroDbRealm(); - } - - /** - * rememberMe管理器, cipherKey生成见{@code Base64Test.java} - */ - @Bean - public CookieRememberMeManager rememberMeManager(SimpleCookie rememberMeCookie) { - CookieRememberMeManager manager = new CookieRememberMeManager(); -// manager.setCipherKey(Base64.decode("Z3VucwAAAAAAAAAAAAAAAA==")); - manager.setCookie(rememberMeCookie); - return manager; - } - - /** - * 记住密码Cookie - */ - @Bean - public SimpleCookie rememberMeCookie() { -// SimpleCookie simpleCookie = new SimpleCookie("rememberMe"); - SimpleCookie simpleCookie = new SimpleCookie(""); - simpleCookie.setHttpOnly(true); - simpleCookie.setMaxAge(7 * 24 * 60 * 60);//7天 - return simpleCookie; - } - - /** - * Shiro的过滤器链 - */ - @Bean - public ShiroFilterFactoryBean shiroFilter(DefaultWebSecurityManager securityManager) { - ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean(); - shiroFilter.setSecurityManager(securityManager); - /** - * 默认的登陆访问url - */ - shiroFilter.setLoginUrl("/login"); - /** - * 登陆成功后跳转的url - */ - shiroFilter.setSuccessUrl("/"); - /** - * 没有权限跳转的url - */ - shiroFilter.setUnauthorizedUrl("/global/error"); - - /** - * 覆盖默认的user拦截器(默认拦截器解决不了ajax请求 session超时的问题,若有更好的办法请及时反馈作者) - */ - HashMap<String, Filter> myFilters = new HashMap<>(); - myFilters.put("user", new GunsUserFilter()); - shiroFilter.setFilters(myFilters); - - /** - * 配置shiro拦截器链 - * - * anon 不需要认证 - * authc 需要认证 - * user 验证通过或RememberMe登录的都可以 - * - * 当应用开启了rememberMe时,用户下次访问时可以是一个user,但不会是authc,因为authc是需要重新认证的 - * - * 顺序从上到下,优先级依次降低 - * - * api开头的接口,走rest api鉴权,不走shiro鉴权 - * - */ - Map<String, String> hashMap = new LinkedHashMap<>(); - hashMap.put("/static/**", "anon"); - hashMap.put("/base/**", "anon"); - hashMap.put("/upload/**", "anon"); - hashMap.put("/gunsApi/**", "anon"); - hashMap.put("/login", "anon"); - hashMap.put("/global/sessionError", "anon"); - hashMap.put("/kaptcha", "anon"); - hashMap.put("/**", "user"); - shiroFilter.setFilterChainDefinitionMap(hashMap); - return shiroFilter; - } - - /** - * 在方法中 注入 securityManager,进行代理控制 - */ - @Bean - public MethodInvokingFactoryBean methodInvokingFactoryBean(DefaultWebSecurityManager securityManager) { - MethodInvokingFactoryBean bean = new MethodInvokingFactoryBean(); - bean.setStaticMethod("org.apache.shiro.SecurityUtils.setSecurityManager"); - bean.setArguments(new Object[]{securityManager}); - return bean; - } - - /** - * Shiro生命周期处理器: - * 用于在实现了Initializable接口的Shiro bean初始化时调用Initializable接口回调(例如:UserRealm) - * 在实现了Destroyable接口的Shiro bean销毁时调用 Destroyable接口回调(例如:DefaultSecurityManager) - */ - @Bean - public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { - return new LifecycleBeanPostProcessor(); - } - - /** - * 启用shrio授权注解拦截方式,AOP式方法级权限检查 - */ - @Bean - public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(DefaultWebSecurityManager securityManager) { - AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = - new AuthorizationAttributeSourceAdvisor(); - authorizationAttributeSourceAdvisor.setSecurityManager(securityManager); - return authorizationAttributeSourceAdvisor; - } - -} +//package com.stylefeng.guns.config.web; +// +//import com.stylefeng.guns.config.properties.GunsProperties; +//import com.stylefeng.guns.core.intercept.GunsUserFilter; +//import com.stylefeng.guns.core.shiro.ShiroDbRealm; +//import org.apache.shiro.cache.CacheManager; +//import org.apache.shiro.cache.ehcache.EhCacheManager; +//import org.apache.shiro.codec.Base64; +//import org.apache.shiro.session.mgt.SessionManager; +//import org.apache.shiro.spring.LifecycleBeanPostProcessor; +//import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; +//import org.apache.shiro.spring.web.ShiroFilterFactoryBean; +//import org.apache.shiro.web.mgt.CookieRememberMeManager; +//import org.apache.shiro.web.mgt.DefaultWebSecurityManager; +//import org.apache.shiro.web.servlet.Cookie; +//import org.apache.shiro.web.servlet.ShiroHttpSession; +//import org.apache.shiro.web.servlet.SimpleCookie; +//import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; +//import org.apache.shiro.web.session.mgt.ServletContainerSessionManager; +//import org.springframework.beans.factory.config.MethodInvokingFactoryBean; +//import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +//import org.springframework.cache.ehcache.EhCacheManagerFactoryBean; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +// +//import javax.servlet.Filter; +//import java.util.HashMap; +//import java.util.LinkedHashMap; +//import java.util.Map; +// +///** +// * shiro权限管理的配置 +// * +// * @author fengshuonan +// * @date 2016年11月14日 下午3:03:44 +// */ +//@Configuration +//public class ShiroConfig { +// +// /** +// * 安全管理器 +// */ +// @Bean +// public DefaultWebSecurityManager securityManager(CookieRememberMeManager rememberMeManager, CacheManager cacheShiroManager, SessionManager sessionManager) { +// DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); +// securityManager.setRealm(this.shiroDbRealm()); +// securityManager.setCacheManager(cacheShiroManager); +// securityManager.setRememberMeManager(rememberMeManager); +// securityManager.setSessionManager(sessionManager); +// return securityManager; +// } +// +// /** +// * spring session管理器(多机环境) +// */ +// @Bean +// @ConditionalOnProperty(prefix = "guns", name = "spring-session-open", havingValue = "true") +// public ServletContainerSessionManager servletContainerSessionManager() { +// return new ServletContainerSessionManager(); +// } +// +// /** +// * session管理器(单机环境) +// */ +// @Bean +// @ConditionalOnProperty(prefix = "guns", name = "spring-session-open", havingValue = "false") +// public DefaultWebSessionManager defaultWebSessionManager(CacheManager cacheShiroManager, GunsProperties gunsProperties) { +// DefaultWebSessionManager sessionManager = new DefaultWebSessionManager(); +// sessionManager.setCacheManager(cacheShiroManager); +// sessionManager.setSessionValidationInterval(gunsProperties.getSessionValidationInterval() * 1000); +// sessionManager.setGlobalSessionTimeout(gunsProperties.getSessionInvalidateTime() * 1000); +// sessionManager.setDeleteInvalidSessions(true); +// sessionManager.setSessionValidationSchedulerEnabled(true); +// Cookie cookie = new SimpleCookie(ShiroHttpSession.DEFAULT_SESSION_ID_NAME); +// cookie.setName("shiroCookie"); +// cookie.setHttpOnly(true); +// sessionManager.setSessionIdCookie(cookie); +// return sessionManager; +// } +// +// /** +// * 缓存管理器 使用Ehcache实现 +// */ +// @Bean +// public CacheManager getCacheShiroManager(EhCacheManagerFactoryBean ehcache) { +// EhCacheManager ehCacheManager = new EhCacheManager(); +// ehCacheManager.setCacheManager(ehcache.getObject()); +// return ehCacheManager; +// } +// +// /** +// * 项目自定义的Realm +// */ +// @Bean +// public ShiroDbRealm shiroDbRealm() { +// return new ShiroDbRealm(); +// } +// +// /** +// * rememberMe管理器, cipherKey生成见{@code Base64Test.java} +// */ +// @Bean +// public CookieRememberMeManager rememberMeManager(SimpleCookie rememberMeCookie) { +// CookieRememberMeManager manager = new CookieRememberMeManager(); +//// manager.setCipherKey(Base64.decode("Z3VucwAAAAAAAAAAAAAAAA==")); +// manager.setCookie(rememberMeCookie); +// return manager; +// } +// +// /** +// * 记住密码Cookie +// */ +// @Bean +// public SimpleCookie rememberMeCookie() { +//// SimpleCookie simpleCookie = new SimpleCookie("rememberMe"); +// SimpleCookie simpleCookie = new SimpleCookie(""); +// simpleCookie.setHttpOnly(true); +// simpleCookie.setMaxAge(7 * 24 * 60 * 60);//7天 +// return simpleCookie; +// } +// +// /** +// * Shiro的过滤器链 +// */ +// @Bean +// public ShiroFilterFactoryBean shiroFilter(DefaultWebSecurityManager securityManager) { +// ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean(); +// shiroFilter.setSecurityManager(securityManager); +// /** +// * 默认的登陆访问url +// */ +// shiroFilter.setLoginUrl("/login"); +// /** +// * 登陆成功后跳转的url +// */ +// shiroFilter.setSuccessUrl("/"); +// /** +// * 没有权限跳转的url +// */ +// shiroFilter.setUnauthorizedUrl("/global/error"); +// +// /** +// * 覆盖默认的user拦截器(默认拦截器解决不了ajax请求 session超时的问题,若有更好的办法请及时反馈作者) +// */ +// HashMap<String, Filter> myFilters = new HashMap<>(); +// myFilters.put("user", new GunsUserFilter()); +// shiroFilter.setFilters(myFilters); +// +// /** +// * 配置shiro拦截器链 +// * +// * anon 不需要认证 +// * authc 需要认证 +// * user 验证通过或RememberMe登录的都可以 +// * +// * 当应用开启了rememberMe时,用户下次访问时可以是一个user,但不会是authc,因为authc是需要重新认证的 +// * +// * 顺序从上到下,优先级依次降低 +// * +// * api开头的接口,走rest api鉴权,不走shiro鉴权 +// * +// */ +// Map<String, String> hashMap = new LinkedHashMap<>(); +// hashMap.put("/static/**", "anon"); +// hashMap.put("/base/**", "anon"); +// hashMap.put("/upload/**", "anon"); +// hashMap.put("/gunsApi/**", "anon"); +// hashMap.put("/login", "anon"); +// hashMap.put("/global/sessionError", "anon"); +// hashMap.put("/kaptcha", "anon"); +// hashMap.put("/**", "user"); +// shiroFilter.setFilterChainDefinitionMap(hashMap); +// return shiroFilter; +// } +// +// /** +// * 在方法中 注入 securityManager,进行代理控制 +// */ +// @Bean +// public MethodInvokingFactoryBean methodInvokingFactoryBean(DefaultWebSecurityManager securityManager) { +// MethodInvokingFactoryBean bean = new MethodInvokingFactoryBean(); +// bean.setStaticMethod("org.apache.shiro.SecurityUtils.setSecurityManager"); +// bean.setArguments(new Object[]{securityManager}); +// return bean; +// } +// +// /** +// * Shiro生命周期处理器: +// * 用于在实现了Initializable接口的Shiro bean初始化时调用Initializable接口回调(例如:UserRealm) +// * 在实现了Destroyable接口的Shiro bean销毁时调用 Destroyable接口回调(例如:DefaultSecurityManager) +// */ +// @Bean +// public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { +// return new LifecycleBeanPostProcessor(); +// } +// +// /** +// * 启用shrio授权注解拦截方式,AOP式方法级权限检查 +// */ +// @Bean +// public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(DefaultWebSecurityManager securityManager) { +// AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = +// new AuthorizationAttributeSourceAdvisor(); +// authorizationAttributeSourceAdvisor.setSecurityManager(securityManager); +// return authorizationAttributeSourceAdvisor; +// } +// +//} diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/config/web/WebConfig.java b/management/guns-admin/src/main/java/com/stylefeng/guns/config/web/WebConfig.java index a94beb7..c050041 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/config/web/WebConfig.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/config/web/WebConfig.java @@ -11,10 +11,14 @@ import com.stylefeng.guns.core.intercept.RestApiInteceptor; import com.stylefeng.guns.core.listener.ConfigListener; import com.stylefeng.guns.core.xss.XssFilter; +import edu.yale.its.tp.cas.client.filter.OnconMDCasFilter; +import org.jasig.cas.client.session.SingleSignOutFilter; +import org.jasig.cas.client.session.SingleSignOutHttpSessionListener; import org.springframework.aop.Advisor; import org.springframework.aop.support.DefaultPointcutAdvisor; import org.springframework.aop.support.JdkRegexpMethodPointcut; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletListenerRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; @@ -25,7 +29,9 @@ import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import java.util.Properties; /** @@ -39,6 +45,9 @@ @Autowired private GunsProperties gunsProperties; + + @Value("${spring.profiles.active}") + private String activeProfile; /** * 增加swagger的支持 @@ -173,4 +182,92 @@ defaultKaptcha.setConfig(config); return defaultKaptcha; } + + + /********************黔云通单点登录拦截器**********************/ + + @Bean + public FilterRegistrationBean getOnconMDCasFilter() { + OnconMDCasFilter onconMDCasFilter = new OnconMDCasFilter(); + FilterRegistrationBean registrationBean = new FilterRegistrationBean(); + if("dev".equals(activeProfile)){ + registrationBean.setFilter(onconMDCasFilter); + List<String> urlPatterns = new ArrayList<String>(); + urlPatterns.add("/*"); + registrationBean.setUrlPatterns(urlPatterns); + registrationBean.setOrder(2); + + registrationBean.addInitParameter("oncon.com.security.urls", "/**"); + registrationBean.addInitParameter("erp.si-tech.com.cn.noCheckUrl", "/index.html,/static/**,/upload/**"); + registrationBean.addInitParameter("erp.si-tech.com.cn.nologinstatus", "/*"); + registrationBean.addInitParameter("erp.si-tech.com.cn.loginstatus", "/*"); + registrationBean.addInitParameter("com.oncon.sso.urlparams.nologin", "code,code2"); + + registrationBean.addInitParameter("edu.yale.its.tp.cas.client.filter.loginUrl", "https://testsso1.teamshub.com/login"); + registrationBean.addInitParameter("edu.yale.its.tp.cas.client.filter.validateUrl", "https://testsso1.teamshub.com/serviceValidate"); + registrationBean.addInitParameter("com.oncon.md.loginUrl", "https://testsso1.teamshub.com/sso-session/login"); + registrationBean.addInitParameter("edu.yale.its.tp.cas.client.filter.serverName", "http://127.0.0.1:8010"); + } + if("test".equals(activeProfile)){ + registrationBean.setFilter(onconMDCasFilter); + List<String> urlPatterns = new ArrayList<String>(); + urlPatterns.add("/*"); + registrationBean.setUrlPatterns(urlPatterns); + registrationBean.setOrder(2); + + registrationBean.addInitParameter("oncon.com.security.urls", "/**"); + registrationBean.addInitParameter("erp.si-tech.com.cn.noCheckUrl", "/index.html,/static/**,/upload/**"); + registrationBean.addInitParameter("erp.si-tech.com.cn.nologinstatus", "/*"); + registrationBean.addInitParameter("erp.si-tech.com.cn.loginstatus", "/*"); + registrationBean.addInitParameter("com.oncon.sso.urlparams.nologin", "code,code2"); + + registrationBean.addInitParameter("edu.yale.its.tp.cas.client.filter.loginUrl", "https://testsso1.teamshub.com/login"); + registrationBean.addInitParameter("edu.yale.its.tp.cas.client.filter.validateUrl", "https://testsso1.teamshub.com/serviceValidate"); + registrationBean.addInitParameter("com.oncon.md.loginUrl", "https://testsso1.teamshub.com/sso-session/login"); + registrationBean.addInitParameter("edu.yale.its.tp.cas.client.filter.serverName", "https://test-qncx.sitechcloud.com:443"); + } + if("prod".equals(activeProfile)){ + registrationBean.setFilter(onconMDCasFilter); + List<String> urlPatterns = new ArrayList<String>(); + urlPatterns.add("/*"); + registrationBean.setUrlPatterns(urlPatterns); + registrationBean.setOrder(2); + + registrationBean.addInitParameter("oncon.com.security.urls", "/**"); + registrationBean.addInitParameter("erp.si-tech.com.cn.noCheckUrl", "/index.html,/static/**,/upload/**"); + registrationBean.addInitParameter("erp.si-tech.com.cn.nologinstatus", "/*"); + registrationBean.addInitParameter("erp.si-tech.com.cn.loginstatus", "/*"); + registrationBean.addInitParameter("com.oncon.sso.urlparams.nologin", "code,code2"); + + registrationBean.addInitParameter("edu.yale.its.tp.cas.client.filter.loginUrl", "https://sso.teamshub.com/login"); + registrationBean.addInitParameter("edu.yale.its.tp.cas.client.filter.validateUrl", "https://sso.teamshub.com/serviceValidate"); + registrationBean.addInitParameter("com.oncon.md.loginUrl", "https://passport.teamshub.com/login"); + registrationBean.addInitParameter("edu.yale.its.tp.cas.client.filter.serverName", "https://traffic.qytzt.cn:443"); + } + return registrationBean; + } + + @Bean + public FilterRegistrationBean getSingleSignOutFilter() { + SingleSignOutFilter singleSignOutFilter = new SingleSignOutFilter(); + FilterRegistrationBean registrationBean = new FilterRegistrationBean(); + registrationBean.setFilter(singleSignOutFilter); + List<String> urlPatterns = new ArrayList<String>(); + urlPatterns.add("/*");//拦截路径,可以添加多个 + registrationBean.setUrlPatterns(urlPatterns); + registrationBean.setOrder(1); + + registrationBean.addInitParameter("wmall.flag", "false"); + + return registrationBean; + } + + + @Bean + public ServletListenerRegistrationBean<SingleSignOutHttpSessionListener> getSingleSignOutHttpSessionListener() { + ServletListenerRegistrationBean<SingleSignOutHttpSessionListener> servletListenerRegistrationBean + = new ServletListenerRegistrationBean<>(); + servletListenerRegistrationBean.setListener(new SingleSignOutHttpSessionListener()); + return servletListenerRegistrationBean; + } } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/core/aop/GlobalExceptionHandler.java b/management/guns-admin/src/main/java/com/stylefeng/guns/core/aop/GlobalExceptionHandler.java index 5f4f745..fdcc78f 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/core/aop/GlobalExceptionHandler.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/core/aop/GlobalExceptionHandler.java @@ -44,7 +44,7 @@ @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) @ResponseBody public ErrorTip notFount(GunsException e) { - LogManager.me().executeLog(LogTaskFactory.exceptionLog(ShiroKit.getUser().getId(), e)); + LogManager.me().executeLog(LogTaskFactory.exceptionLog(shiroExtUtil.getUser().getId(), e)); getRequest().setAttribute("tip", e.getMessage()); log.error("业务异常:", e); return new ErrorTip(e.getCode(), e.getMessage()); @@ -115,7 +115,7 @@ @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) @ResponseBody public ErrorTip notFount(RuntimeException e) { - LogManager.me().executeLog(LogTaskFactory.exceptionLog(ShiroKit.getUser().getId(), e)); + LogManager.me().executeLog(LogTaskFactory.exceptionLog(shiroExtUtil.getUser().getId(), e)); getRequest().setAttribute("tip", "服务器未知运行时异常"); log.error("运行时异常:", e); return new ErrorTip(BizExceptionEnum.SERVER_ERROR.getCode(), BizExceptionEnum.SERVER_ERROR.getMessage()); diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/core/aop/LogAop.java b/management/guns-admin/src/main/java/com/stylefeng/guns/core/aop/LogAop.java index d5123f4..1cd94ac 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/core/aop/LogAop.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/core/aop/LogAop.java @@ -67,7 +67,7 @@ String methodName = currentMethod.getName(); //如果当前用户未登录,不做日志 - ShiroUser user = ShiroKit.getUser(); + ShiroUser user = shiroExtUtil.getUser(); if (null == user) { return; } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/core/beetl/BeetlConfiguration.java b/management/guns-admin/src/main/java/com/stylefeng/guns/core/beetl/BeetlConfiguration.java index fa53e22..bc97138 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/core/beetl/BeetlConfiguration.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/core/beetl/BeetlConfiguration.java @@ -3,6 +3,7 @@ import com.stylefeng.guns.core.tag.DictSelectorTag; import com.stylefeng.guns.core.util.KaptchaUtil; import com.stylefeng.guns.core.util.ToolUtil; +import com.stylefeng.guns.modular.system.util.SpringContextsUtil; import org.beetl.core.Context; import org.beetl.core.Function; import org.beetl.core.Tag; @@ -35,7 +36,7 @@ @Override public void initOther() { - groupTemplate.registerFunctionPackage("shiro", new ShiroExt()); + groupTemplate.registerFunctionPackage("shiro", SpringContextsUtil.getBean(ShiroExtUtil.class)); groupTemplate.registerFunctionPackage("tool", new ToolUtil()); groupTemplate.registerFunctionPackage("kaptcha", new KaptchaUtil()); groupTemplate.registerTagFactory("dictSelector", new TagFactory() { diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/core/shiro/ShiroKit.java b/management/guns-admin/src/main/java/com/stylefeng/guns/core/shiro/ShiroKit.java index eedfe1c..b1866e1 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/core/shiro/ShiroKit.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/core/shiro/ShiroKit.java @@ -277,7 +277,7 @@ * 判断当前用户是否是超级管理员 */ public static boolean isAdmin() { - List<Integer> roleList = ShiroKit.getUser().getRoleList(); + List<Integer> roleList = shiroExtUtil.getUser().getRoleList(); for (Integer integer : roleList) { String singleRoleTip = ConstantFactory.me().getSingleRoleTip(integer); if (singleRoleTip.equals(Const.ADMIN_NAME)) { diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/core/shiro/ShiroUser.java b/management/guns-admin/src/main/java/com/stylefeng/guns/core/shiro/ShiroUser.java index defcc45..bf00425 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/core/shiro/ShiroUser.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/core/shiro/ShiroUser.java @@ -22,6 +22,9 @@ public List<String> roleNames; // 角色名称集 public Integer roleType; // 角色类型 1=平台 2=分公司 3=加盟商 public Integer objectId; // 对象ID + public List<String> menuIds; //菜单 + + public boolean isAdmin; //是否是超管 public Integer getId() { @@ -95,4 +98,20 @@ public void setObjectId(Integer objectId) { this.objectId = objectId; } + + public List<String> getMenuIds() { + return menuIds; + } + + public void setMenuIds(List<String> menuIds) { + this.menuIds = menuIds; + } + + public boolean isAdmin() { + return isAdmin; + } + + public void setAdmin(boolean admin) { + isAdmin = admin; + } } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/core/shiro/check/PermissionCheckFactory.java b/management/guns-admin/src/main/java/com/stylefeng/guns/core/shiro/check/PermissionCheckFactory.java index 89f602f..16b223d 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/core/shiro/check/PermissionCheckFactory.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/core/shiro/check/PermissionCheckFactory.java @@ -41,7 +41,7 @@ @Override public boolean check(Object[] permissions) { - ShiroUser user = ShiroKit.getUser(); + ShiroUser user = shiroExtUtil.getUser(); if (null == user) { return false; } @@ -55,7 +55,7 @@ @Override public boolean checkAll() { HttpServletRequest request = HttpKit.getRequest(); - ShiroUser user = ShiroKit.getUser(); + ShiroUser user = shiroExtUtil.getUser(); if (null == user) { return false; } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/HomeController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/HomeController.java index a942f21..fa3094d 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/HomeController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/HomeController.java @@ -90,7 +90,7 @@ @ResponseBody @PostMapping("/getSumData") public Object getSumData(Integer companyId, Date addDate, Date start, Date end){ - Integer id = ShiroKit.getUser().getId(); + Integer id = shiroExtUtil.getUser().getId(); User user = userService.selectById(id); if(companyId == null && user.getRoleType() != 1){ companyId = user.getObjectId(); @@ -382,7 +382,7 @@ @ResponseBody @PostMapping("/getDriverPosition") public Object getDriverPosition(Integer companyId){ - Integer id = ShiroKit.getUser().getId(); + Integer id = shiroExtUtil.getUser().getId(); User user = userService.selectById(id); if(companyId == null && user.getRoleType() != 1){ companyId = user.getObjectId(); @@ -448,7 +448,7 @@ @ResponseBody @PostMapping("/getCompanyInfoByUserId") public Object getCompanyInfoByUserId(){ - Integer id = ShiroKit.getUser().getId(); + Integer id = shiroExtUtil.getUser().getId(); User user = userService.selectById(id); companys = new ArrayList<>(); List<TCompany> ids = new ArrayList<>(); diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysCouponActivityController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysCouponActivityController.java index 06d0d5f..841da8c 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysCouponActivityController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysCouponActivityController.java @@ -120,7 +120,7 @@ } if(SinataUtil.isNotEmpty(couponUseType)){wrapper.eq("couponUseType",couponUseType);} if(SinataUtil.isNotEmpty(status)){wrapper.eq("status",status);} - ShiroUser user = ShiroKit.getUser(); + ShiroUser user = shiroExtUtil.getUser(); if(user.getRoleType()!=1){ wrapper.eq("companyId",user.getObjectId()); wrapper.eq("companyType",user.getRoleType()); @@ -143,8 +143,8 @@ sysCouponActivity.setFullMoney(sysCouponRecord.getFullMoney()); sysCouponActivity.setInsertTime(new Date()); sysCouponActivity.setCouponId(activityId); - sysCouponActivity.setCompanyId(ShiroKit.getUser().getObjectId()); - sysCouponActivity.setCompanyType(ShiroKit.getUser().getRoleType()); + sysCouponActivity.setCompanyId(shiroExtUtil.getUser().getObjectId()); + sysCouponActivity.setCompanyType(shiroExtUtil.getUser().getRoleType()); sysCouponActivity.setStatus(sysCouponActivity.getCompanyType()==1?3:1); sysCouponActivityService.insert(sysCouponActivity); if(sysCouponActivity.getCompanyType()==1){ @@ -258,8 +258,8 @@ sysCouponActivity.setFullMoney(sysCouponRecord.getFullMoney()); sysCouponActivity.setInsertTime(new Date()); sysCouponActivity.setCouponId(activityId); - sysCouponActivity.setCompanyId(ShiroKit.getUser().getObjectId()); - sysCouponActivity.setCompanyType(ShiroKit.getUser().getRoleType()); + sysCouponActivity.setCompanyId(shiroExtUtil.getUser().getObjectId()); + sysCouponActivity.setCompanyType(shiroExtUtil.getUser().getRoleType()); sysCouponActivity.setStatus(sysCouponActivity.getCompanyType()==1?3:1); sysCouponActivityService.updateById(sysCouponActivity); return SUCCESS_TIP; diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysRedPacketRecordController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysRedPacketRecordController.java index fd0f70a..22f543c 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysRedPacketRecordController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysRedPacketRecordController.java @@ -82,8 +82,8 @@ if(SinataUtil.isNotEmpty(createTime)){ wrapper.between("insertTime",startTimes,endTimes); } - wrapper.eq("companyId",ShiroKit.getUser().getObjectId()); - wrapper.eq("companyType",ShiroKit.getUser().getRoleType()); + wrapper.eq("companyId",shiroExtUtil.getUser().getObjectId()); + wrapper.eq("companyType",shiroExtUtil.getUser().getRoleType()); wrapper.orderBy("id",false); return super.packForBT(sysRedPacketRecordService.selectPage(page,wrapper)); } @@ -95,8 +95,8 @@ @ResponseBody public Object add(SysRedPacketRecord sysRedPacketRecord) { sysRedPacketRecord.setInsertTime(new Date()); - sysRedPacketRecord.setCompanyId(ShiroKit.getUser().getObjectId()); - sysRedPacketRecord.setCompanyType(ShiroKit.getUser().getRoleType()); + sysRedPacketRecord.setCompanyId(shiroExtUtil.getUser().getObjectId()); + sysRedPacketRecord.setCompanyType(shiroExtUtil.getUser().getRoleType()); sysRedPacketRecordService.insert(sysRedPacketRecord); return SUCCESS_TIP; } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAdvertisementController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAdvertisementController.java index 91003a0..e4552bb 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAdvertisementController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAdvertisementController.java @@ -102,7 +102,7 @@ @ResponseBody public Object add(TAdvertisement tAdvertisement) { tAdvertisement.setInsertTime(new Date()); - tAdvertisement.setInsertUser(ShiroKit.getUser().getId()); + tAdvertisement.setInsertUser(shiroExtUtil.getUser().getId()); tAdvertisementService.insert(tAdvertisement); return SUCCESS_TIP; } @@ -131,7 +131,7 @@ tAdvertisement.setState(2); } tAdvertisement.setUpdateTime(new Date()); - tAdvertisement.setUpdateUser(ShiroKit.getUser().getId()); + tAdvertisement.setUpdateUser(shiroExtUtil.getUser().getId()); tAdvertisementService.updateById(tAdvertisement); } return SUCCESS_TIP; @@ -144,7 +144,7 @@ @ResponseBody public Object update(TAdvertisement tAdvertisement) { tAdvertisement.setUpdateTime(new Date()); - tAdvertisement.setUpdateUser(ShiroKit.getUser().getId()); + tAdvertisement.setUpdateUser(shiroExtUtil.getUser().getId()); tAdvertisementService.updateById(tAdvertisement); return SUCCESS_TIP; } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBranchOfficeController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBranchOfficeController.java index ecda26f..2271853 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBranchOfficeController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBranchOfficeController.java @@ -71,7 +71,7 @@ */ @RequestMapping("") public String index(Model model) { - model.addAttribute("userType", Objects.requireNonNull(ShiroKit.getUser()).getRoleType()); + model.addAttribute("userType", Objects.requireNonNull(shiroExtUtil.getUser()).getRoleType()); return PREFIX + "tBranchOffice.html"; } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java index 76f4eef..aff3d97 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java @@ -6,13 +6,22 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.stylefeng.guns.core.base.controller.BaseController; +import com.stylefeng.guns.core.base.tips.ErrorTip; +import com.stylefeng.guns.core.beetl.ShiroExtUtil; import com.stylefeng.guns.core.common.constant.factory.PageFactory; import com.stylefeng.guns.core.shiro.ShiroKit; +import com.stylefeng.guns.core.shiro.ShiroUser; import com.stylefeng.guns.core.util.SinataUtil; +import com.stylefeng.guns.core.util.ToolUtil; 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.util.ResultUtil; +import com.stylefeng.guns.modular.system.util.qianyuntong.EmployeeUtil; +import com.stylefeng.guns.modular.system.util.qianyuntong.EnterpriseUtil; +import com.stylefeng.guns.modular.system.util.qianyuntong.UserUtil; +import com.stylefeng.guns.modular.system.util.qianyuntong.model.*; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @@ -23,10 +32,7 @@ import org.springframework.web.bind.annotation.RequestParam; import com.stylefeng.guns.modular.system.service.ITCompanyService; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 分公司管理控制器 @@ -51,6 +57,9 @@ @Autowired private ITCompanyCityService tCompanyCityService; + + @Autowired + private ShiroExtUtil shiroExtUtil; /** * 跳转到修改平台信息 @@ -294,6 +303,70 @@ if (count > 0){ return "error"; } + if(ToolUtil.isEmpty(tCompany.getIdentifier())){ + return "统一社会信用代码不能为空"; + } + //调用中台接口创建企业 + CheckEnterExist checkEnterExist = EnterpriseUtil.checkEnterExistByEnterIdCardNo(tCompany.getIdentifier()); + String enterCode = ""; + Integer enterNew = null; + Long empId = null; + Integer empnew = null; + //企业未注册,进行注册 + if (null == checkEnterExist || "0".equals(checkEnterExist.getIsReg())) { + CreateEnterpriseRequest request = new CreateEnterpriseRequest(); + request.setName(tCompany.getName()); + request.setNickName(tCompany.getName()); + request.setUscc(tCompany.getIdentifier()); + request.setIndustry_code("292"); + request.setMobile(account); + CreateEnterprise enterprise = EnterpriseUtil.createEnterprise(request); + enterCode = enterprise.getIdCode(); + enterNew = 1; + List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(account, enterCode); + if(null != userInfoByPhone && userInfoByPhone.size() > 0){ + empId = userInfoByPhone.get(0).getEmpId(); + empnew = 0; + }else{ + empId = 0L; + empnew = 1; + } + } + //企业已注册 + if (null != checkEnterExist && "1".equals(checkEnterExist.getIsReg())) { + enterCode = checkEnterExist.getEnterCode(); + enterNew = 0; + List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(account, enterCode); + if(null == userInfoByPhone ||userInfoByPhone.size() == 0){ + //负责人不匹配,则创建新的员工到中台 + SaveStaffNodeRequest request = new SaveStaffNodeRequest(); + request.setMobile(checkEnterExist.getMobile()); + request.setEntercode(enterCode); + request.setEmpName(tCompany.getName() + "管理员"); + request.setEmpNickname(tCompany.getName() + "管理员"); + request.setLoginNo(account); + request.setEmpSex("男"); + request.setMphone(account); + request.setEmail(account + "@qyt.com"); + request.setDeptId(0); + request.setPositionId(1); + request.setSuperLevel(0); + request.setHideMobile(0); + ResultUtil<SaveStaffNode> resultUtil = EmployeeUtil.saveStaffNode(request); + if(200 != resultUtil.getStatus()){ + return new ErrorTip(resultUtil.getStatus(), resultUtil.getMsg()); + } + SaveStaffNode saveStaffNode = resultUtil.getData(); + empId = saveStaffNode.getEmpId(); + empnew = 1; + }else{ + empId = userInfoByPhone.get(0).getEmpId(); + empnew = 0; + } + } + + tCompany.setEnterCode(enterCode); + tCompany.setEnterNew(enterNew); tCompany.setType(2); //2:分公司 tCompany.setState(0); //0:正常 tCompany.setInsertTime(new Date()); @@ -312,12 +385,34 @@ user.setObjectId(tCompany.getId()); user.setName(tCompany.getName()); user.setSex(1); + user.setEmpId(empId); + user.setEntercode(enterCode); + user.setEnterId(Long.valueOf(enterCode)); + user.setEmpnew(empnew); userService.insert(user); - + //编写异步延迟处理中台账号延迟创建的问题 + if(0 == empId){ + Timer timer = new Timer(); + String finalEnterCode = enterCode; + timer.schedule(new TimerTask() { + @Override + public void run() { + List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(account, finalEnterCode); + if(null != userInfoByPhone && userInfoByPhone.size() > 0){ + Long empId1 = userInfoByPhone.get(0).getEmpId(); + user.setEmpId(empId1); + userService.updateById(user); + } + } + },120*1000); + } //添加经营区域 addSocpe(subArr,tCompany.getId()); return SUCCESS_TIP; } + + + //添加经营区域 public void addSocpe(String subArr,Integer id){ JSONArray jsonArray = JSON.parseArray(subArr); @@ -354,6 +449,70 @@ if (count > 0){ return "error"; } + if(ToolUtil.isEmpty(tCompany.getIdentifier())){ + return "统一社会信用代码不能为空"; + } + //调用中台接口创建企业 + CheckEnterExist checkEnterExist = EnterpriseUtil.checkEnterExistByEnterIdCardNo(tCompany.getIdentifier()); + String enterCode = ""; + Long empId = null; + Integer empnew = null; + Integer enterNew = null; + + //企业未注册,进行注册 + if (null == checkEnterExist || "0".equals(checkEnterExist.getIsReg())) { + CreateEnterpriseRequest request = new CreateEnterpriseRequest(); + request.setName(tCompany.getName()); + request.setNickName(tCompany.getName()); + request.setUscc(tCompany.getIdentifier()); + request.setIndustry_code("292"); + request.setMobile(account); + CreateEnterprise enterprise = EnterpriseUtil.createEnterprise(request); + enterCode = enterprise.getIdCode(); + enterNew = 1; + List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(account, enterCode); + if(null != userInfoByPhone && userInfoByPhone.size() > 0){ + empId = userInfoByPhone.get(0).getEmpId(); + empnew = 0; + }else{ + empId = 0L; + empnew = 1; + } + } + //企业已注册 + if (null != checkEnterExist && "1".equals(checkEnterExist.getIsReg())) { + enterCode = checkEnterExist.getEnterCode(); + List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(account, enterCode); + enterNew = 0; + if(null == userInfoByPhone || userInfoByPhone.size() == 0){ + SaveStaffNodeRequest request = new SaveStaffNodeRequest(); + request.setMobile(checkEnterExist.getMobile()); + request.setEntercode(enterCode); + request.setEmpName(tCompany.getName() + "管理员"); + request.setEmpNickname(tCompany.getName() + "管理员"); + request.setLoginNo(account); + request.setEmpSex("女"); + request.setMphone(account); + request.setEmail(account + "@qyt.com"); + request.setDeptId(0); + request.setPositionId(1); + request.setSuperLevel(0); + request.setHideMobile(0); + ResultUtil<SaveStaffNode> resultUtil = EmployeeUtil.saveStaffNode(request); + if(200 != resultUtil.getStatus()){ + return new ErrorTip(resultUtil.getStatus(), resultUtil.getMsg()); + } + SaveStaffNode saveStaffNode = resultUtil.getData(); + empId = saveStaffNode.getEmpId(); + empnew = 1; + }else{ + empId = userInfoByPhone.get(0).getEmpId(); + empnew = 0; + } + } + + tCompany.setEnterCode(enterCode); + tCompany.setEnterNew(enterNew); tCompany.setType(3); //2:分公司 if (ShiroKit.getUser().getRoleType() == 2){ tCompany.setSuperiorId(ShiroKit.getUser().getObjectId()); @@ -375,8 +534,27 @@ user.setObjectId(tCompany.getId()); user.setName(tCompany.getName()); user.setSex(1); + user.setEmpId(empId); + user.setEntercode(enterCode); + user.setEnterId(Long.valueOf(enterCode)); + user.setEmpnew(empnew); userService.insert(user); - + //编写异步延迟处理中台账号延迟创建的问题 + if(0 == empId){ + Timer timer = new Timer(); + String finalEnterCode = enterCode; + timer.schedule(new TimerTask() { + @Override + public void run() { + List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(account, finalEnterCode); + if(null != userInfoByPhone && userInfoByPhone.size() > 0){ + Long empId1 = userInfoByPhone.get(0).getEmpId(); + user.setEmpId(empId1); + userService.updateById(user); + } + } + },120*1000); + } return SUCCESS_TIP; } @@ -387,6 +565,19 @@ @ResponseBody public Object delete(@RequestParam Integer tCompanyId) { TCompany tCompany = tCompanyService.selectById(tCompanyId); + //调用中台接口创建企业 + if(1 == tCompany.getEnterNew()){ + CheckEnterExist checkEnterExist = EnterpriseUtil.checkEnterExistByEnterIdCardNo(tCompany.getIdentifier()); + if (null != checkEnterExist && "1".equals(checkEnterExist.getIsReg())) { + ShiroUser user1 = shiroExtUtil.getUser(); + User user = userService.selectById(user1.getId()); + ResultUtil resultUtil = EnterpriseUtil.delEnterprise(checkEnterExist.getEnterCode(), user.getPhone()); + if(resultUtil.getStatus() != 200){ + return new ErrorTip(resultUtil.getStatus(), resultUtil.getMsg()); + } + } + } + tCompany.setFlag("3"); tCompanyService.updateById(tCompany); return SUCCESS_TIP; diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverBackController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverBackController.java index 9191044..856e462 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverBackController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverBackController.java @@ -101,12 +101,12 @@ List<TCompany> companyList = tCompanyService.selectList(new EntityWrapper<TCompany>().eq("type", 2)); model.addAttribute("companyList",companyList); - Integer roleType = ShiroKit.getUser().getRoleType(); + Integer roleType = shiroExtUtil.getUser().getRoleType(); model.addAttribute("roleType",roleType); if (2 == roleType){ List<TCompany> franchiseeList = tCompanyService.selectList(new EntityWrapper<TCompany>() .eq("type", 3) - .eq("superiorId",ShiroKit.getUser().getObjectId()) + .eq("superiorId",shiroExtUtil.getUser().getObjectId()) .notIn("state",1) .notIn("flag",3)); model.addAttribute("franchiseeList",franchiseeList); @@ -114,7 +114,7 @@ model.addAttribute("franchiseeList",null); } //查询当前用户所属分公司/加盟商 - model.addAttribute("objectName",tCompanyService.selectById(ShiroKit.getUser().getObjectId()).getName()); + model.addAttribute("objectName",tCompanyService.selectById(shiroExtUtil.getUser().getObjectId()).getName()); //查询线路列表 List<TLine> lineList = itLineService.selectList(new EntityWrapper<TLine>().eq("state", 1)); @@ -172,9 +172,9 @@ model.addAttribute("item",tDriver); LogObjectHolder.me().set(tDriver); - Integer roleType = ShiroKit.getUser().getRoleType(); + Integer roleType = shiroExtUtil.getUser().getRoleType(); model.addAttribute("roleType",roleType); - model.addAttribute("objectName",tCompanyService.selectById(ShiroKit.getUser().getObjectId()).getName()); + model.addAttribute("objectName",tCompanyService.selectById(shiroExtUtil.getUser().getObjectId()).getName()); if (1 == roleType){ List<TCompany> companyList = tCompanyService.selectList(new EntityWrapper<TCompany>().eq("type", 2)); @@ -182,7 +182,7 @@ List<TCompany> franchiseeList = tCompanyService.selectList(new EntityWrapper<TCompany>().eq("type", 3).eq("superiorId",tDriver.getCompanyId())); model.addAttribute("franchiseeList",franchiseeList); }else if (2 == roleType){ - List<TCompany> franchiseeList = tCompanyService.selectList(new EntityWrapper<TCompany>().eq("type", 3).eq("superiorId",ShiroKit.getUser().getObjectId())); + List<TCompany> franchiseeList = tCompanyService.selectList(new EntityWrapper<TCompany>().eq("type", 3).eq("superiorId",shiroExtUtil.getUser().getObjectId())); model.addAttribute("franchiseeList",franchiseeList); } @@ -500,7 +500,7 @@ endTime = timeArray[1]; } Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); - if (ShiroKit.getUser().getRoleType() != 1){ + if (shiroExtUtil.getUser().getRoleType() != 1){ page.setRecords(null); }else{ page.setRecords(tDriverService.getAuthDriverList(page,beginTime,endTime,companyName,phone,account,addType,authState)); @@ -527,7 +527,7 @@ endTime = timeArray[1]; } Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); - page.setRecords(tDriverService.getDriverList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,companyName,phone,name,addType,authState)); + page.setRecords(tDriverService.getDriverList(page,shiroExtUtil.getUser().getRoleType(),shiroExtUtil.getUser().getObjectId(),beginTime,endTime,companyName,phone,name,addType,authState)); return super.packForBT(page); } @@ -552,7 +552,7 @@ }*//* //2020-08-21:新需求,已被绑定的车辆可以被继续绑定 Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); - page.setRecords(tDriverService.getCanSelectCarList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),null,carLicensePlate,brandName,modelName,color,serverStr)); + page.setRecords(tDriverService.getCanSelectCarList(page,shiroExtUtil.getUser().getRoleType(),shiroExtUtil.getUser().getObjectId(),null,carLicensePlate,brandName,modelName,color,serverStr)); return super.packForBT(page); } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java index 37cb1d2..9c4430f 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java @@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.stylefeng.guns.core.base.controller.BaseController; +import com.stylefeng.guns.core.base.tips.ErrorTip; import com.stylefeng.guns.core.base.tips.SuccessTip; +import com.stylefeng.guns.core.beetl.ShiroExtUtil; import com.stylefeng.guns.core.log.LogObjectHolder; import com.stylefeng.guns.core.shiro.ShiroKit; import com.stylefeng.guns.core.shiro.ShiroUser; @@ -24,6 +26,13 @@ import com.stylefeng.guns.modular.system.util.DateUtil; import com.stylefeng.guns.modular.system.util.RedisUtil; //import com.stylefeng.guns.modular.system.util.bank.BankUtil; +import com.stylefeng.guns.modular.system.util.ResultUtil; +import com.stylefeng.guns.modular.system.util.qianyuntong.EmployeeUtil; +import com.stylefeng.guns.modular.system.util.qianyuntong.UserUtil; +import com.stylefeng.guns.modular.system.util.qianyuntong.model.DeleteStafNodeRequest; +import com.stylefeng.guns.modular.system.util.qianyuntong.model.QYTUserInfo; +import com.stylefeng.guns.modular.system.util.qianyuntong.model.SaveStaffNode; +import com.stylefeng.guns.modular.system.util.qianyuntong.model.SaveStaffNodeRequest; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @@ -100,6 +109,15 @@ private AccountChangeDetailMapper accountChangeDetailMapper; private Logger log = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private ShiroExtUtil shiroExtUtil; + + @Autowired + private IUserService userService; + + @Autowired + private ITCompanyService companyService; /** * 跳转到首页 @@ -528,10 +546,9 @@ @RequestMapping(value = "/auditSubmit") @ResponseBody public Object auditSubmit(Integer id,Integer approvalStatus,String approvalNotes) { + ShiroUser user1 = shiroExtUtil.getUser(); + User user2 = userService.selectById(user1.getId()); TDriver tDriver = tDriverService.selectById(id); - - - tDriver.setApprovalStatus(approvalStatus); tDriver.setApprovalNotes(approvalNotes); // 审核用户id @@ -540,8 +557,41 @@ tDriver.setApprovalUserId(shiroUser.getId()); tDriver.setApprovalTime(new Date()); if (approvalStatus==2){ -// T21000001Response t21000001Response = BankUtil.addAccount(tDriver); -// tDriver.setMerchantNumber(t21000001Response.getDATA().getUSER_ID()); + //审核通过,在中台添加司机账号 + Integer objectId = tDriver.getBranchOfficeId(); + TCompany tCompany = companyService.selectById(objectId); + List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(tDriver.getPhone(), tCompany.getEnterCode()); + Long empId = null; + Integer empnew = null; + if(null == userInfoByPhone || userInfoByPhone.size() == 0){ + SaveStaffNodeRequest request = new SaveStaffNodeRequest(); + request.setMobile(user2.getPhone()); + request.setEntercode(tCompany.getEnterCode()); + request.setEmpName(tDriver.getName()); + request.setEmpNickname(tDriver.getName()); + request.setLoginNo(tDriver.getPhone()); + request.setEmpSex(tDriver.getSex() == 1 ? "男" : "女"); + request.setMphone(tDriver.getPhone()); + request.setEmail(tDriver.getPhone() + "@qyt.com"); + request.setDeptId(0); + request.setPositionId(1); + request.setSuperLevel(0); + request.setHideMobile(0); + ResultUtil<SaveStaffNode> resultUtil = EmployeeUtil.saveStaffNode(request); + if(200 != resultUtil.getStatus()){ + return new ErrorTip(resultUtil.getStatus(), resultUtil.getMsg()); + } + SaveStaffNode saveStaffNode = resultUtil.getData(); + empId = saveStaffNode.getEmpId(); + empnew = 1; + }else{ + empId = userInfoByPhone.get(0).getEmpId(); + empnew = 0; + } + tDriver.setEmpId(empId); + tDriver.setEntercode(tCompany.getEnterCode()); + tDriver.setEnterId(Long.valueOf(tCompany.getEnterCode())); + tDriver.setEmpnew(empnew); } tDriverService.updateById(tDriver); @@ -567,10 +617,6 @@ accountChangeDetailMapper.insert(accountChangeDetail); tDriverService.updateById(tDriver1); } - - - - return SUCCESS_TIP; } @@ -600,6 +646,13 @@ if(count>0){ return new SuccessTip(500,"该司机已存在!"); } + if(ToolUtil.isEmpty(tDriver.getIdcard())){ + return "身份证号不能为空"; + } + Boolean b = UserUtil.idCardAuth(tDriver.getName(), tDriver.getIdcard()); + if(!b){ + return "司机姓名和身份证号不匹配"; + } Object o = tDriverService.addOrUpdate(tDriver); if(Objects.nonNull(o)){ return o; @@ -611,6 +664,48 @@ tDriver.setBalance(BigDecimal.ZERO); tDriver.setBackgroundBalance(BigDecimal.ZERO); tDriver.setCommission(BigDecimal.ZERO); + if(2 == tDriver.getApprovalStatus()){ + ShiroUser user = shiroExtUtil.getUser(); + User user2 = userService.selectById(user.getId()); + Integer objectId = user.getObjectId(); + TCompany tCompany = companyService.selectById(objectId); + List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(tDriver.getPhone(), tCompany.getEnterCode()); + Long empId = null; + Integer empnew = null; + if(null == userInfoByPhone || userInfoByPhone.size() == 0){ + SaveStaffNodeRequest request = new SaveStaffNodeRequest(); + request.setMobile(user2.getPhone()); + request.setEntercode(tCompany.getEnterCode()); + request.setEmpName(tDriver.getName()); + request.setEmpNickname(tDriver.getName()); + request.setLoginNo(tDriver.getPhone()); + request.setEmpSex(tDriver.getSex() == 1 ? "男" : "女"); + request.setMphone(tDriver.getPhone()); + request.setEmail(tDriver.getPhone() + "@qyt.com"); + request.setDeptId(0); + request.setPositionId(1); + request.setSuperLevel(0); + request.setHideMobile(0); + ResultUtil<SaveStaffNode> resultUtil = EmployeeUtil.saveStaffNode(request); + if(200 != resultUtil.getStatus()){ + return new ErrorTip(resultUtil.getStatus(), resultUtil.getMsg()); + } + SaveStaffNode saveStaffNode = resultUtil.getData(); + empId = saveStaffNode.getEmpId(); + empnew = 1; + }else{ + empId = userInfoByPhone.get(0).getEmpId(); + empnew = 0; + } + + TCompany tCompany1 = companyService.selectById(tDriver.getBranchOfficeId()); + tDriver.setEmpId(empId); + tDriver.setEntercode(tCompany1.getEnterCode()); + tDriver.setEnterId(Long.valueOf(tCompany1.getEnterCode())); + tDriver.setEmpnew(empnew); + } + + tDriverService.insert(tDriver); return SUCCESS_TIP; } @@ -621,6 +716,24 @@ @RequestMapping(value = "/delete") @ResponseBody public Object delete(@RequestParam Integer tDriverId) { + TDriver driver = tDriverService.selectById(tDriverId); + + ShiroUser user = shiroExtUtil.getUser(); + TCompany tCompany = companyService.selectById(user.getObjectId()); + if (null != driver.getEmpId() && 1 == driver.getEmpnew()) { + //中台先删除司机 + List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(driver.getPhone(), tCompany.getEnterCode()); + if (null != userInfoByPhone && 0 < userInfoByPhone.size() && 1 == driver.getEmpnew()) { + DeleteStafNodeRequest deleteStafNodeRequest = new DeleteStafNodeRequest(); + deleteStafNodeRequest.setEmpId(driver.getEmpId()); + deleteStafNodeRequest.setEntercode(tCompany.getEnterCode()); + deleteStafNodeRequest.setMobile(tCompany.getPrincipalPhone()); + ResultUtil resultUtil = EmployeeUtil.ecrmDeleteStafNode(deleteStafNodeRequest); + if(200 != resultUtil.getStatus()){ + return new ErrorTip(resultUtil.getStatus(), resultUtil.getMsg()); + } + } + } tDriverService.deleteById(tDriverId); return SUCCESS_TIP; } @@ -718,8 +831,13 @@ if(Objects.nonNull(driver) && !tDriver.getId().equals(driver.getId())){ return new SuccessTip(500,"该司机已存在!"); } -// Object ocr = ocr("E:\\071bf986db0b00355c0ed190bbd3b16.png"); -// System.err.println(ocr); + if(ToolUtil.isEmpty(tDriver.getIdcard())){ + return "身份证号不能为空"; + } + Boolean b = UserUtil.idCardAuth(tDriver.getName(), tDriver.getIdcard()); + if(!b){ + return "司机姓名和身份证号不匹配"; + } Object o = tDriverService.addOrUpdate(tDriver); if(Objects.nonNull(o)){ return o; @@ -912,6 +1030,9 @@ e.printStackTrace(); } } + + + @ApiOperation(value = "导出司机佣金列表",notes="导出司机佣金列表") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSysSensitiveWordsController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSysSensitiveWordsController.java index e5b3281..39c5f52 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSysSensitiveWordsController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSysSensitiveWordsController.java @@ -65,7 +65,7 @@ endTime = timeArray[1]; } Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); - if (ShiroKit.getUser().getRoleType() != 1){ + if (shiroExtUtil.getUser().getRoleType() != 1){ page.setRecords(null); }else{ page.setRecords(tSysSensitiveWordsService.getSensitiveWordList(page,beginTime,endTime,content)); diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/UserActivityController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/UserActivityController.java index 51d1c3e..cf67d56 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/UserActivityController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/UserActivityController.java @@ -263,7 +263,7 @@ @RequestMapping(value = "/blanceList") @ResponseBody public Object blanceList(String createTime,Integer activityId) { - ShiroUser user = ShiroKit.getUser(); + ShiroUser user = shiroExtUtil.getUser(); String beginTime = null; String endTime = null; if (SinataUtil.isNotEmpty(createTime)){ diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/BlackboardController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/BlackboardController.java index 3d198f7..0765ece 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/BlackboardController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/BlackboardController.java @@ -72,14 +72,14 @@ @RequestMapping("") public String blackboard(Model model,Integer type,Integer agentId,String dayDate,String yearDate,String monthDate) { //查询当前用户是否有"首页"菜单的权限 - Integer id = ShiroKit.getUser().getId(); + Integer id = shiroExtUtil.getUser().getId(); User user = userService.selectById(id); Integer menuNum = userService.getMenuNumByRole(user.getRoleid()); if (menuNum > 0){ return "/home.html"; } else { //查询登录次数 -// int count = loginLogService.selectCount(new EntityWrapper<LoginLog>().eq("userid", ShiroKit.getUser().getId())); +// int count = loginLogService.selectCount(new EntityWrapper<LoginLog>().eq("userid", shiroExtUtil.getUser().getId())); // model.addAttribute("loginNum", count); // // Role role = roleService.selectById(user.getRoleid()); @@ -93,8 +93,8 @@ if(Objects.isNull(type)){ type = 1; } - Integer objectId = ShiroKit.getUser().getObjectId(); - Integer roleType = ShiroKit.getUser().getRoleType(); + Integer objectId = shiroExtUtil.getUser().getObjectId(); + Integer roleType = shiroExtUtil.getUser().getRoleType(); if(roleType != 1){ if(roleType == 2 && Objects.nonNull(objectId)){ // 查询所有分公司 @@ -113,7 +113,7 @@ model.addAttribute("agentList",agentList); } model.addAttribute("txt",new SimpleDateFormat("yyyy年MM月dd日").format(new Date()) + DateUtil.getWeekDay(new Date()) + ",欢迎" + - Objects.requireNonNull(ShiroKit.getUser()).getName() + "登录"); + Objects.requireNonNull(shiroExtUtil.getUser()).getName() + "登录"); Map<String, Object> map = new HashMap<>(); if(Objects.nonNull(agentId)){ // 统计分公司 diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java index 33d3b0e..e50af65 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java @@ -1,5 +1,7 @@ package com.stylefeng.guns.modular.system.controller.system; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.google.code.kaptcha.Constants; import com.stylefeng.guns.core.base.controller.BaseController; import com.stylefeng.guns.core.common.constant.Const; @@ -15,12 +17,19 @@ import com.stylefeng.guns.core.util.KaptchaUtil; import com.stylefeng.guns.core.util.SinataUtil; import com.stylefeng.guns.core.util.ToolUtil; +import com.stylefeng.guns.modular.system.dao.UserMapper; +import com.stylefeng.guns.modular.system.model.Menu; +import com.stylefeng.guns.modular.system.model.Relation; import com.stylefeng.guns.modular.system.model.User; import com.stylefeng.guns.modular.system.service.IMenuService; +import com.stylefeng.guns.modular.system.service.IRelationService; import com.stylefeng.guns.modular.system.service.IUserService; import com.stylefeng.guns.modular.system.util.AESUtil; import com.stylefeng.guns.modular.system.util.AESUtils; import com.stylefeng.guns.modular.system.util.RedisUtil; +import com.stylefeng.guns.modular.system.warpper.LoginUser; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.binary.Base64; import org.apache.shiro.authc.SimpleAuthenticationInfo; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.subject.Subject; @@ -33,7 +42,10 @@ import org.springframework.web.bind.annotation.RequestMethod; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; +import java.io.UnsupportedEncodingException; import java.util.*; +import java.util.stream.Collectors; import static com.stylefeng.guns.core.support.HttpKit.getIp; @@ -43,6 +55,7 @@ * @author fengshuonan * @Date 2017年1月10日 下午8:25:24 */ +@Slf4j @Controller public class LoginController extends BaseController { @@ -54,7 +67,16 @@ @Autowired private RedisUtil redisUtil; + @Autowired + private IShiro shiro; + + @Autowired + private UserMapper userMapper; + private Map<String, Integer> loginFailures = new HashMap<>(); + + @Autowired + private IRelationService relationService; @@ -63,32 +85,32 @@ * 跳转到主页 */ @RequestMapping(value = "/", method = RequestMethod.GET) - public String index(Model model) { + public String index(Model model, HttpServletRequest request) throws UnsupportedEncodingException { + //session中解析用户数据 + HttpSession session = request.getSession(); + String onconParam = edu.yale.its.tp.cas.client.Util.getOnconParam(session); + onconParam = new String(Base64.decodeBase64(onconParam), "UTF-8"); + LoginUser loginUser = JSON.parseObject(onconParam, LoginUser.class); + log.info("session解析结果:" + JSON.toJSONString(loginUser)); //获取菜单列表 - List<Integer> roleList = ShiroKit.getUser().getRoleList(); - if (roleList == null || roleList.size() == 0) { - ShiroKit.getSubject().logout(); - model.addAttribute("tips", "该用户没有角色,无法登陆"); - return "/login.html"; + User user = userMapper.getByAccount(loginUser.getImUser()); + if (null == user) { + log.info("用户不存在"); + return null; } + ShiroUser shiroUser = shiro.shiroUser(user); + List<Integer> roleList = shiroUser.getRoleList(); + if (roleList == null || roleList.size() == 0) { + roleList.add(0); + } + + List<Relation> relations = relationService.selectList(new EntityWrapper<Relation>().in("roleid", roleList)); + Set<Long> collect = relations.stream().map(Relation::getMenuid).collect(Collectors.toSet()); + List<Menu> menuList = menuService.selectBatchIds(collect); List<MenuNode> menus = menuService.getMenusByRoleIds(roleList); List<MenuNode> titles = MenuNode.buildTitle(menus); titles = ApiMenuFilter.build(titles); - - - Integer id = ShiroKit.getUser().getId(); - User user = userService.selectById(id); - if (SinataUtil.isEmpty(user)){ - ShiroKit.getSubject().logout(); - model.addAttribute("tips", "请重新登录"); - return "/login.html"; - } - //设置上级ID - if (SinataUtil.isNotEmpty(user.getObjectId())){ - ShiroKit.getUser().setObjectId(user.getObjectId()); - } - //设置角色 - ShiroKit.getUser().setRoleType(user.getRoleType()); + shiroUser.setMenuIds(menuList.stream().map(Menu::getUrl).collect(Collectors.toList())); model.addAttribute("titles", titles); @@ -110,7 +132,7 @@ @RequestMapping(value = "/login", method = RequestMethod.GET) public String login(Model model) { model.addAttribute("number",0); - if (ShiroKit.isAuthenticated() || ShiroKit.getUser() != null) { + if (ShiroKit.isAuthenticated() || shiroExtUtil.getUser() != null) { return REDIRECT + "/"; } else { return "/login.html"; @@ -183,7 +205,7 @@ // 登录成功,错误次数值改0 loginFailures.put(username, 0); - ShiroUser shiroUser = ShiroKit.getUser(); + ShiroUser shiroUser = shiroExtUtil.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); @@ -198,9 +220,6 @@ */ @RequestMapping(value = "/logout", method = RequestMethod.GET) public String logOut() { - LogManager.me().executeLog(LogTaskFactory.exitLog(ShiroKit.getUser().getId(), getIp())); - ShiroKit.getSubject().logout(); - deleteAllCookie(); - return REDIRECT + "/login"; + return REDIRECT + "/"; } } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java index fbf60a1..d109ffc 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java @@ -5,7 +5,9 @@ import com.heredata.hos.model.bucket.Bucket; import com.stylefeng.guns.config.properties.GunsProperties; import com.stylefeng.guns.core.base.controller.BaseController; +import com.stylefeng.guns.core.base.tips.ErrorTip; import com.stylefeng.guns.core.base.tips.Tip; +import com.stylefeng.guns.core.beetl.ShiroExtUtil; import com.stylefeng.guns.core.common.annotion.BussinessLog; import com.stylefeng.guns.core.common.annotion.Permission; import com.stylefeng.guns.core.common.constant.Const; @@ -33,9 +35,16 @@ import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.transfer.UserDto; import com.stylefeng.guns.modular.system.util.OssUploadUtil; +import com.stylefeng.guns.modular.system.util.ResultUtil; import com.stylefeng.guns.modular.system.util.huawei.OBSUtil; +import com.stylefeng.guns.modular.system.util.qianyuntong.EmployeeUtil; import com.stylefeng.guns.modular.system.util.qianyuntong.NCOSSUtil; import com.stylefeng.guns.modular.system.util.qianyuntong.QianYunTongConfig; +import com.stylefeng.guns.modular.system.util.qianyuntong.UserUtil; +import com.stylefeng.guns.modular.system.util.qianyuntong.model.DeleteStafNodeRequest; +import com.stylefeng.guns.modular.system.util.qianyuntong.model.QYTUserInfo; +import com.stylefeng.guns.modular.system.util.qianyuntong.model.SaveStaffNode; +import com.stylefeng.guns.modular.system.util.qianyuntong.model.SaveStaffNodeRequest; import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -80,6 +89,12 @@ @Autowired private QianYunTongConfig qianYunTongConfig; + + @Autowired + private ITCompanyService companyService; + + @Autowired + private ShiroExtUtil shiroExtUtil; /** @@ -137,7 +152,7 @@ */ @RequestMapping("/user_info") public String userInfo(Model model) { - Integer userId = ShiroKit.getUser().getId(); + Integer userId = shiroExtUtil.getUser().getId(); if (ToolUtil.isEmpty(userId)) { throw new GunsException(BizExceptionEnum.REQUEST_NULL); } @@ -166,7 +181,7 @@ if (!newPwd.equals(rePwd)) { throw new GunsException(BizExceptionEnum.TWO_PWD_NOT_MATCH); } - Integer userId = ShiroKit.getUser().getId(); + Integer userId = shiroExtUtil.getUser().getId(); User user = userService.selectById(userId); String oldMd5 = ShiroKit.md5(oldPwd, user.getSalt()); if (user.getPassword().equals(oldMd5)) { @@ -200,8 +215,8 @@ page.setRecords(userService.getUserListPage(page,null, name, beginTime, endTime, deptid)); return super.packForBT(page); } else { - Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId(); - Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType(); + Integer objectId = Objects.requireNonNull(shiroExtUtil.getUser()).getObjectId(); + Integer roleType = Objects.requireNonNull(shiroExtUtil.getUser()).getRoleType(); if(roleType == 3){ // 查询下级分公司账号 @@ -243,12 +258,44 @@ if (result.hasErrors()) { throw new GunsException(BizExceptionEnum.REQUEST_NULL); } - // 判断账号是否重复 User theUser = userService.getByAccount(user.getAccount()); if (theUser != null) { throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); } + + ShiroUser user1 = shiroExtUtil.getUser(); + User user2 = userService.selectById(user1.getId()); + TCompany tCompany = companyService.selectById(user2.getObjectId()); + List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(user.getPhone(), tCompany.getEnterCode()); + Long empId = null; + Integer empnew = null; + if(null == userInfoByPhone || userInfoByPhone.size() == 0){ + SaveStaffNodeRequest request1 = new SaveStaffNodeRequest(); + request1.setMobile(user2.getPhone()); + request1.setEntercode(tCompany.getEnterCode()); + request1.setEmpName(user.getName()); + request1.setEmpNickname(user.getName()); + request1.setLoginNo(user.getAccount()); + request1.setEmpSex(user.getSex() == 1 ? "男" : "女"); + request1.setMphone(user.getPhone()); + request1.setEmail(user.getPhone() + "@qyt.com"); + request1.setDeptId(0); + request1.setPositionId(1); + request1.setSuperLevel(0); + request1.setHideMobile(0); + ResultUtil<SaveStaffNode> resultUtil = EmployeeUtil.saveStaffNode(request1); + if(200 != resultUtil.getStatus()){ + return new ErrorTip(resultUtil.getStatus(), resultUtil.getMsg()); + } + SaveStaffNode saveStaffNode = resultUtil.getData(); + empId = saveStaffNode.getEmpId(); + empnew = 1; + }else{ + empId = userInfoByPhone.get(0).getEmpId(); + empnew = 0; + } + // 完善账号信息 user.setSalt(ShiroKit.getRandomSalt(5)); @@ -257,10 +304,13 @@ user.setCreatetime(new Date()); User objectUser = UserFactory.createUser(user); - ShiroUser user1 = ShiroKit.getUser(); objectUser.setRoleType(user1.getRoleType()); objectUser.setObjectId(user1.getObjectId()); objectUser.setPassWordUpdate(new Date()); + objectUser.setEnterId(empId); + objectUser.setEmpnew(empnew); + objectUser.setEntercode(tCompany.getEnterCode()); + objectUser.setEnterId(Long.valueOf(tCompany.getEnterCode())); this.userService.insert(objectUser); return SUCCESS_TIP; @@ -279,15 +329,49 @@ throw new GunsException(BizExceptionEnum.REQUEST_NULL); } - User oldUser = userService.selectById(user.getId()); - + ShiroUser user1 = shiroExtUtil.getUser(); + User user2 = userService.selectById(user1.getId()); + TCompany tCompany = companyService.selectById(user2.getObjectId()); + //调用中台接口 + Long empId = null; + Integer empnew = null; + List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(oldUser.getPhone(), tCompany.getEnterCode()); + if(null == userInfoByPhone || userInfoByPhone.size() == 0){ + SaveStaffNodeRequest request1 = new SaveStaffNodeRequest(); + request1.setMobile(user2.getPhone()); + request1.setEntercode(tCompany.getEnterCode()); + request1.setEmpName(user.getName()); + request1.setEmpNickname(user.getName()); + request1.setLoginNo(user.getAccount()); + request1.setEmpSex(user.getSex() == 1 ? "男" : "女"); + request1.setMphone(user.getPhone()); + request1.setEmail(user.getPhone() + "@qyt.com"); + request1.setDeptId(0); + request1.setPositionId(1); + request1.setSuperLevel(0); + request1.setHideMobile(0); + ResultUtil<SaveStaffNode> resultUtil = EmployeeUtil.saveStaffNode(request1); + if(200 != resultUtil.getStatus()){ + return new ErrorTip(resultUtil.getStatus(), resultUtil.getMsg()); + } + SaveStaffNode saveStaffNode = resultUtil.getData(); + empId = saveStaffNode.getEmpId(); + empnew = 1; + }else{ + empId = userInfoByPhone.get(0).getEmpId(); + empnew = 0; + } + oldUser.setEmpId(empId); + oldUser.setEntercode(tCompany.getEnterCode()); + oldUser.setEnterId(Long.valueOf(tCompany.getEnterCode())); + oldUser.setEmpnew(empnew); if (ShiroKit.hasRole(Const.ADMIN_NAME)) { this.userService.updateById(UserFactory.editUser(user, oldUser)); return SUCCESS_TIP; } else { assertAuth(user.getId()); - ShiroUser shiroUser = ShiroKit.getUser(); + ShiroUser shiroUser = shiroExtUtil.getUser(); if (shiroUser.getId().equals(user.getId())) { this.userService.updateById(UserFactory.editUser(user, oldUser)); return SUCCESS_TIP; @@ -312,7 +396,24 @@ if (userId.equals(Const.ADMIN_ID)) { throw new GunsException(BizExceptionEnum.CANT_DELETE_ADMIN); } - + User user = userService.selectById(userId); + ShiroUser user1 = shiroExtUtil.getUser(); + User user2 = userService.selectById(user1.getId()); + TCompany tCompany = companyService.selectById(user2.getObjectId()); + //调用中台接口 + if(1 == user.getEmpnew()){ + List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(user.getPhone(), tCompany.getEnterCode()); + if (null != userInfoByPhone && 0 < userInfoByPhone.size() && 1 == user.getEmpnew()) { + DeleteStafNodeRequest request1 = new DeleteStafNodeRequest(); + request1.setEmpId(user.getEnterId()); + request1.setMobile(tCompany.getPrincipalPhone()); + request1.setEntercode(tCompany.getEnterCode()); + ResultUtil resultUtil = EmployeeUtil.ecrmDeleteStafNode(request1); + if(200 != resultUtil.getStatus()){ + return new ErrorTip(resultUtil.getStatus(), resultUtil.getMsg()); + } + } + } assertAuth(userId); this.userService.setStatus(userId, ManagerStatus.DELETED.getCode()); diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/taxi/TOrderTaxiController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/taxi/TOrderTaxiController.java index e845f33..dff203b 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/taxi/TOrderTaxiController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/taxi/TOrderTaxiController.java @@ -126,7 +126,7 @@ endTime = timeArray[1]; } Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); - page.setRecords(tOrderTaxiService.getTaxiOrderList(page,beginTime,endTime,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),orderNum,orderSource,userName,userPhone,passengers,passengersPhone,driver,state)); + page.setRecords(tOrderTaxiService.getTaxiOrderList(page,beginTime,endTime,shiroExtUtil.getUser().getRoleType(),shiroExtUtil.getUser().getObjectId(),orderNum,orderSource,userName,userPhone,passengers,passengersPhone,driver,state)); return super.packForBT(page); } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCompany.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCompany.java index fb97a7c..89db5ce 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCompany.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCompany.java @@ -241,6 +241,14 @@ private String idCardPositive; //身份证反面 private String idCardReverse; + /** + * 中台企业编号 + */ + private String enterCode; + /** + * 中台新增标识(0=否,1=是) + */ + private Integer enterNew; public String getIdCardPositive() { return idCardPositive; @@ -674,6 +682,22 @@ this.detailAddress = detailAddress; } + public String getEnterCode() { + return enterCode; + } + + public void setEnterCode(String enterCode) { + this.enterCode = enterCode; + } + + public Integer getEnterNew() { + return enterNew; + } + + public void setEnterNew(Integer enterNew) { + this.enterNew = enterNew; + } + @Override protected Serializable pkVal() { return this.id; diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriver.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriver.java index 4886b05..8009c67 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriver.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriver.java @@ -207,6 +207,26 @@ @TableField(exist = false) @ApiModelProperty(value = "邀请人电话") private String inviterPhone; + /** + * 中台员工ID + */ + @TableField("empId") + private Long empId; + /** + * 中台员工所属企业ID + */ + @TableField("enterId") + private Long enterId; + /** + * 中台员工所属企业编号 + */ + @TableField("entercode") + private String entercode; + /** + * 中台新增状态(0=否,1=是) + */ + @TableField("empnew") + private Integer empnew; public BigDecimal getCouponBalance() { @@ -574,6 +594,63 @@ public void setOnlineTime(Long onlineTime) { this.onlineTime = onlineTime; } + + public String getMerchantNumber() { + return merchantNumber; + } + + public void setMerchantNumber(String merchantNumber) { + this.merchantNumber = merchantNumber; + } + + public Integer getOpenOrderQRCode() { + return openOrderQRCode; + } + + public void setOpenOrderQRCode(Integer openOrderQRCode) { + this.openOrderQRCode = openOrderQRCode; + } + + public Integer getCheckServer() { + return checkServer; + } + + public void setCheckServer(Integer checkServer) { + this.checkServer = checkServer; + } + + public Long getEmpId() { + return empId; + } + + public void setEmpId(Long empId) { + this.empId = empId; + } + + public Long getEnterId() { + return enterId; + } + + public void setEnterId(Long enterId) { + this.enterId = enterId; + } + + public String getEntercode() { + return entercode; + } + + public void setEntercode(String entercode) { + this.entercode = entercode; + } + + public Integer getEmpnew() { + return empnew; + } + + public void setEmpnew(Integer empnew) { + this.empnew = empnew; + } + @Override protected Serializable pkVal() { return this.id; diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUser.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUser.java index 78249f9..968f8f0 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUser.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUser.java @@ -1,5 +1,6 @@ package com.stylefeng.guns.modular.system.model; +import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.enums.IdType; import java.math.BigDecimal; import java.util.Date; @@ -126,6 +127,11 @@ private Integer insertUser; private Date updateTime; private Integer updateUser; + /** + * 中台用户ID + */ + @TableField("onconUUID") + private String onconUUID; public Integer getId() { @@ -360,6 +366,14 @@ this.updateUser = updateUser; } + public String getOnconUUID() { + return onconUUID; + } + + public void setOnconUUID(String onconUUID) { + this.onconUUID = onconUUID; + } + @Override protected Serializable pkVal() { return this.id; diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/User.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/User.java index 58a9ed9..0e287d7 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/User.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/User.java @@ -99,6 +99,26 @@ */ @TableField(value = "object_id") private Integer objectId; + /** + * 中台员工ID + */ + @TableField("empId") + private Long empId; + /** + * 中台员工所属企业ID + */ + @TableField("enterId") + private Long enterId; + /** + * 中台员工所属企业编号 + */ + @TableField("entercode") + private String entercode; + /** + * 中台新增状态(0=否,1=是) + */ + @TableField("empnew") + private Integer empnew; public Integer getRoleType() { return roleType; @@ -244,6 +264,38 @@ this.version = version; } + public Long getEmpId() { + return empId; + } + + public void setEmpId(Long empId) { + this.empId = empId; + } + + public Long getEnterId() { + return enterId; + } + + public void setEnterId(Long enterId) { + this.enterId = enterId; + } + + public String getEntercode() { + return entercode; + } + + public void setEntercode(String entercode) { + this.entercode = entercode; + } + + public Integer getEmpnew() { + return empnew; + } + + public void setEmpnew(Integer empnew) { + this.empnew = empnew; + } + @Override protected Serializable pkVal() { return this.id; diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CompanyFundFlowServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CompanyFundFlowServiceImpl.java index 356f5b4..d20130c 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CompanyFundFlowServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CompanyFundFlowServiceImpl.java @@ -27,11 +27,11 @@ */ @Override public List<Map<String, Object>> queryCompanyFundFlow(Page<Map<String, Object>> page, Integer type, String time) { - Integer roleType = ShiroKit.getUser().getRoleType(); + Integer roleType = shiroExtUtil.getUser().getRoleType(); if(roleType == 3){ roleType = 2; } - Integer objectId = ShiroKit.getUser().getObjectId(); + Integer objectId = shiroExtUtil.getUser().getObjectId(); String start = ""; String end = ""; if(ToolUtil.isNotEmpty(time)){ diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverActivityServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverActivityServiceImpl.java index 06d4769..7bb3100 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverActivityServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverActivityServiceImpl.java @@ -58,13 +58,13 @@ String[] timeArray = startTime.split(" - "); Date startTimes = DateUtil.getDate_str3(timeArray[0]); Date endTimes = DateUtil.getDate_str3(timeArray[1]); - ShiroUser user = ShiroKit.getUser(); + ShiroUser user = shiroExtUtil.getUser(); Date nowDay = new Date(); //添加活动 DriverActivity driverActivity = new DriverActivity(); driverActivity.setInsertTime(nowDay); - driverActivity.setCompanyId(ShiroKit.getUser().getObjectId()); - driverActivity.setCompanyType(ShiroKit.getUser().getRoleType()); + driverActivity.setCompanyId(shiroExtUtil.getUser().getObjectId()); + driverActivity.setCompanyType(shiroExtUtil.getUser().getRoleType()); driverActivity.setStatus(driverActivity.getCompanyType()==1?3:1); driverActivity.setName(num1); driverActivity.setStartTime(startTimes); @@ -139,14 +139,14 @@ String[] timeArray = startTime.split(" - "); Date startTimes = DateUtil.getDate_str3(timeArray[0]); Date endTimes = DateUtil.getDate_str3(timeArray[1]); - ShiroUser user = ShiroKit.getUser(); + ShiroUser user = shiroExtUtil.getUser(); Date nowDay = new Date(); //添加活动 DriverActivity driverActivity = new DriverActivity(); driverActivity.setId(id); - driverActivity.setCompanyId(ShiroKit.getUser().getObjectId()); - driverActivity.setCompanyType(ShiroKit.getUser().getRoleType()); + driverActivity.setCompanyId(shiroExtUtil.getUser().getObjectId()); + driverActivity.setCompanyType(shiroExtUtil.getUser().getRoleType()); driverActivity.setStatus(driverActivity.getCompanyType()==1?3:1); driverActivity.setName(num1); driverActivity.setStartTime(startTimes); diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java index f0fbe97..6693c08 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java @@ -85,8 +85,8 @@ wrapper.between("createTime",startTime,endTime); } // 判断是否为代理商 - if(Objects.requireNonNull(ShiroKit.getUser()).getRoleType() == 3){ - wrapper.eq("id",ShiroKit.getUser().getObjectId()); + if(Objects.requireNonNull(shiroExtUtil.getUser()).getRoleType() == 3){ + wrapper.eq("id",shiroExtUtil.getUser().getObjectId()); } // 状态 if(Objects.nonNull(status)){ diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBillServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBillServiceImpl.java index 2aec94b..31c686b 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBillServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBillServiceImpl.java @@ -66,8 +66,8 @@ startTime = split[0]+" 00:00:00"; endTime = split[1] + " 23:59:59"; } - Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType(); - Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId(); + Integer roleType = Objects.requireNonNull(shiroExtUtil.getUser()).getRoleType(); + Integer objectId = Objects.requireNonNull(shiroExtUtil.getUser()).getObjectId(); return tBillMapper.getPageList(startTime, endTime, addresseePhone,state,billType,billHeaderType,roleType,objectId); } } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java index b89f6ad..51136f0 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java @@ -138,8 +138,8 @@ wrapper.ne("status", StatusEnum.DELETE.getCode()); wrapper.orderBy("createTime",false); // 判断代理商 分公司 - Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType(); - Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId(); + Integer roleType = Objects.requireNonNull(shiroExtUtil.getUser()).getRoleType(); + Integer objectId = Objects.requireNonNull(shiroExtUtil.getUser()).getObjectId(); if(2 == roleType){ // 分公司 wrapper.eq("id",objectId); diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCancelOrderServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCancelOrderServiceImpl.java index 9366c42..bda2755 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCancelOrderServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCancelOrderServiceImpl.java @@ -42,8 +42,8 @@ startTime = split[0]; endTime = split[1]; } - Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType(); - Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId(); + Integer roleType = Objects.requireNonNull(shiroExtUtil.getUser()).getRoleType(); + Integer objectId = Objects.requireNonNull(shiroExtUtil.getUser()).getObjectId(); return tCancelOrderMapper.getCancelOrderList(startTime,endTime,code,source,userName,userPhone,state,driverName,roleType,objectId); } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCheckCarActivityServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCheckCarActivityServiceImpl.java index 81c2b8e..3af4892 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCheckCarActivityServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCheckCarActivityServiceImpl.java @@ -35,7 +35,7 @@ @Override public Page<TCheckCarActivity> getOrderList(String createTime, String branchOfficeName, String name, String activityAreaCode, Integer status) { - ShiroUser user = ShiroKit.getUser(); + ShiroUser user = shiroExtUtil.getUser(); String beginTime = null; String endTime = null; if (SinataUtil.isNotEmpty(createTime)){ diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCheckCarExplainServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCheckCarExplainServiceImpl.java index 3197667..0db73a5 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCheckCarExplainServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCheckCarExplainServiceImpl.java @@ -22,7 +22,7 @@ if (ShiroKit.isAdmin()) { tCheckCarExplain.setBranchOfficeId(-1); } else { - tCheckCarExplain.setBranchOfficeId(ShiroKit.getUser().getObjectId()); + tCheckCarExplain.setBranchOfficeId(shiroExtUtil.getUser().getObjectId()); } if (tCheckCarExplain.getId() == null) { diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TComplaintServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TComplaintServiceImpl.java index bc26094..75d322b 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TComplaintServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TComplaintServiceImpl.java @@ -39,8 +39,8 @@ startTime = split[0] + " 00:00:00"; endTime = split[1] + " 23:59:59"; } - Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType(); - Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId(); + Integer roleType = Objects.requireNonNull(shiroExtUtil.getUser()).getRoleType(); + Integer objectId = Objects.requireNonNull(shiroExtUtil.getUser()).getObjectId(); return tComplaintMapper.getPageList(startTime,endTime,userName,userPhone,driverPhone,state,roleType,objectId); } } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java index 421ac17..4b16590 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java @@ -104,13 +104,13 @@ } wrapper.orderBy(true,"approvalStatus"); // 判断是否为代理商或者分公司 - if(Objects.requireNonNull(ShiroKit.getUser()).getRoleType() == 2){ + if(Objects.requireNonNull(shiroExtUtil.getUser()).getRoleType() == 2){ // 分公司 - wrapper.eq("branchOfficeId",ShiroKit.getUser().getObjectId()); + wrapper.eq("branchOfficeId",shiroExtUtil.getUser().getObjectId()); } - if(Objects.requireNonNull(ShiroKit.getUser()).getRoleType() == 3){ + if(Objects.requireNonNull(shiroExtUtil.getUser()).getRoleType() == 3){ // 代理商 - wrapper.eq("agentId",ShiroKit.getUser().getObjectId()); + wrapper.eq("agentId",shiroExtUtil.getUser().getObjectId()); } return wrapper; } @@ -391,13 +391,13 @@ } wrapper.orderBy(true,"approvalStatus"); // 判断是否为代理商或者分公司 - if(Objects.requireNonNull(ShiroKit.getUser()).getRoleType() == 2){ + if(Objects.requireNonNull(shiroExtUtil.getUser()).getRoleType() == 2){ // 分公司 - wrapper.eq("branchOfficeId",ShiroKit.getUser().getObjectId()); + wrapper.eq("branchOfficeId",shiroExtUtil.getUser().getObjectId()); } - if(Objects.requireNonNull(ShiroKit.getUser()).getRoleType() == 3){ + if(Objects.requireNonNull(shiroExtUtil.getUser()).getRoleType() == 3){ // 代理商 - wrapper.eq("agentId",ShiroKit.getUser().getObjectId()); + wrapper.eq("agentId",shiroExtUtil.getUser().getObjectId()); } return wrapper; } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TEvaluateServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TEvaluateServiceImpl.java index d49a1f5..7db79b0 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TEvaluateServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TEvaluateServiceImpl.java @@ -50,8 +50,8 @@ endTime = split[1] + " 23:59:59"; } List<TEvaluateResp> list = tEvaluateMapper.selectPageList(startTime, endTime, userName, driverName, orderType, score); - Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType(); - Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId(); + Integer roleType = Objects.requireNonNull(shiroExtUtil.getUser()).getRoleType(); + Integer objectId = Objects.requireNonNull(shiroExtUtil.getUser()).getObjectId(); if(3 == roleType){ list = list.stream().filter(tEvaluate -> tEvaluate.getAgentId().equals(objectId)).collect(Collectors.toList()); } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderCheckServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderCheckServiceImpl.java index a1100fc..8c9b9d3 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderCheckServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderCheckServiceImpl.java @@ -98,7 +98,7 @@ public Page<TOrderCheck> getOrderCheckList(String createTime, String code, Integer source, String userName, String userPhone, Integer state, String driverName) { //获取当前登录用户身份 boolean admin = ShiroKit.isAdmin(); - Integer objectId = ShiroKit.getUser().getObjectId(); + Integer objectId = shiroExtUtil.getUser().getObjectId(); String startTime = null; String endTime = null; // 开始,结束时间 @@ -191,7 +191,7 @@ Page<DriverDispatchInfoResp> page = new PageFactory<DriverDispatchInfoResp>().defaultPage(); //获取当前登录信息 boolean admin = ShiroKit.isAdmin(); - Integer branchOfficeId = admin ? null : ShiroKit.getUser().getObjectId(); + Integer branchOfficeId = admin ? null : shiroExtUtil.getUser().getObjectId(); // 查询有车检服务权限的司机列表(支持搜索) List<DriverDispatchInfoResp> driverList = tDriverMapper.queryCheckServiceDriversWithSearch(page, 1, // checkServer = 1 (有车检服务权限) @@ -244,8 +244,8 @@ TOrderCheck updateOrder = new TOrderCheck(); updateOrder.setId(orderId); updateOrder.setState(OrderStateEnum.PENDING_ORDER.getCode()); // 设置为待接单状态 - updateOrder.setOperatorId(ShiroKit.getUser().getId()); - updateOrder.setOperatorName(ShiroKit.getUser().getName()); + updateOrder.setOperatorId(shiroExtUtil.getUser().getId()); + updateOrder.setOperatorName(shiroExtUtil.getUser().getName()); updateOrder.setDispatchTime(new Date()); this.updateById(updateOrder); } @@ -395,7 +395,7 @@ // 设置默认状态(正常) order.setStatus(1); //设置分公司id - order.setBranchOfficeId(ShiroKit.getUser().getObjectId()); + order.setBranchOfficeId(shiroExtUtil.getUser().getObjectId()); //处理费用 handleOrderPrice(order.getBranchOfficeId(), order); // 保存订单 @@ -438,7 +438,7 @@ String userName, String userPhone, Integer state, String driverName) { //获取当前登录用户身份 boolean admin = ShiroKit.isAdmin(); - Integer objectId = ShiroKit.getUser().getObjectId(); + Integer objectId = shiroExtUtil.getUser().getObjectId(); String startTime = null; String endTime = null; // 开始,结束时间 diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java index 54bb372..b0d745c 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java @@ -63,8 +63,8 @@ startTime = split[0] + " 00:00:00"; endTime = split[1] + " 23:59:59"; } - Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType(); - Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId(); + Integer roleType = Objects.requireNonNull(shiroExtUtil.getUser()).getRoleType(); + Integer objectId = Objects.requireNonNull(shiroExtUtil.getUser()).getObjectId(); return tOrderMapper.getOrderList(startTime,endTime,code,source,userName,userPhone,state,driverName,isException,roleType,objectId); } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRechargeRecordServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRechargeRecordServiceImpl.java index 9fae351..7cd576a 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRechargeRecordServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRechargeRecordServiceImpl.java @@ -49,8 +49,8 @@ startTime = split[0] + " 00:00:00"; endTime = split[1] + " 23:59:59"; } - Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType(); - Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId(); + Integer roleType = Objects.requireNonNull(shiroExtUtil.getUser()).getRoleType(); + Integer objectId = Objects.requireNonNull(shiroExtUtil.getUser()).getObjectId(); if(Objects.nonNull(branchOfficeId)){ roleType = 2; objectId = branchOfficeId; @@ -87,8 +87,8 @@ startTime = split[0] + " 00:00:00"; endTime = split[1] + " 23:59:59"; } - Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType(); - Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId(); + Integer roleType = Objects.requireNonNull(shiroExtUtil.getUser()).getRoleType(); + Integer objectId = Objects.requireNonNull(shiroExtUtil.getUser()).getObjectId(); if(Objects.nonNull(branchOfficeId)){ roleType = 2; objectId = branchOfficeId; diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRevenueServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRevenueServiceImpl.java index 63e961a..cb43106 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRevenueServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRevenueServiceImpl.java @@ -57,8 +57,8 @@ startTime = split[0] + " 00:00:00"; endTime = split[1] + " 23:59:59"; } - Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType(); - Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId(); + Integer roleType = Objects.requireNonNull(shiroExtUtil.getUser()).getRoleType(); + Integer objectId = Objects.requireNonNull(shiroExtUtil.getUser()).getObjectId(); if(Objects.nonNull(branchOfficeId)){ objectId = branchOfficeId; roleType = 2; diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserActivityServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserActivityServiceImpl.java index caf80bc..13be684 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserActivityServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserActivityServiceImpl.java @@ -64,12 +64,12 @@ String[] timeArray = startTime.split(" - "); Date startTimes = DateUtil.getDate_str3(timeArray[0]); Date endTimes = DateUtil.getDate_str3(timeArray[1]); - ShiroUser user = ShiroKit.getUser(); + ShiroUser user = shiroExtUtil.getUser(); Date nowDay = new Date(); UserActivity userActivity = new UserActivity(); userActivity.setInsertTime(nowDay); - userActivity.setCompanyId(ShiroKit.getUser().getObjectId()); - userActivity.setCompanyType(ShiroKit.getUser().getRoleType()); + userActivity.setCompanyId(shiroExtUtil.getUser().getObjectId()); + userActivity.setCompanyType(shiroExtUtil.getUser().getRoleType()); userActivity.setStatus(userActivity.getCompanyType()==1?3:1); userActivity.setName(name); userActivity.setStartTime(startTimes); @@ -168,13 +168,13 @@ String[] timeArray = startTime.split(" - "); Date startTimes = DateUtil.getDate_str3(timeArray[0]); Date endTimes = DateUtil.getDate_str3(timeArray[1]); - ShiroUser user = ShiroKit.getUser(); + ShiroUser user = shiroExtUtil.getUser(); Date nowDay = new Date(); UserActivity userActivity = new UserActivity(); userActivity.setId(id); userActivity.setInsertTime(nowDay); - userActivity.setCompanyId(ShiroKit.getUser().getObjectId()); - userActivity.setCompanyType(ShiroKit.getUser().getRoleType()); + userActivity.setCompanyId(shiroExtUtil.getUser().getObjectId()); + userActivity.setCompanyType(shiroExtUtil.getUser().getRoleType()); userActivity.setStatus(userActivity.getCompanyType()==1?3:1); userActivity.setName(name); userActivity.setStartTime(startTimes); diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java index aa42025..48de991 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java @@ -160,7 +160,7 @@ public QianYunTongConfig getQianYunTongConfig() { if("dev".equals(activeProfile)){ this.appkey = "10001104"; - this.privateKeyPath = "C:\\Users\\Admin\\Desktop\\qyt\\private_key_test.pem"; + this.privateKeyPath = "C:\\Users\\39373\\Desktop\\黔云通\\private_key_test.pem"; this.userName = "xiaofei"; this.status = "1"; this.setApiUrl("https://test-zhongtai.stqcloud.com:10070"); diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateEnterpriseRequest.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateEnterpriseRequest.java index ab18fe9..bab630e 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateEnterpriseRequest.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateEnterpriseRequest.java @@ -17,6 +17,10 @@ */ private String nickName; /** + * 社会信用代码 + */ + private String uscc; + /** * 行业编码 */ private String industry_code; diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/EditStaffNodeRequest.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/EditStaffNodeRequest.java index 581cbc1..9d3e3eb 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/EditStaffNodeRequest.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/EditStaffNodeRequest.java @@ -11,7 +11,7 @@ /** * 人员ID */ - private Long empId; + private Integer empId; /** * 操作人手机号 */ @@ -51,7 +51,7 @@ /** * 员工所属部门ID多个部门英文; 分割 */ - private String deptIds; + private Integer deptId; /** * 员工职务ID */ diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTUserInfo.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTUserInfo.java index b0a0231..2db06fd 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTUserInfo.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTUserInfo.java @@ -10,35 +10,28 @@ @Data public class QYTUserInfo { /** - * 员工名称 - */ - private String empName; - /** - * 企业编号 - */ - private String enterNum; - /** - * 节点路径 - */ - private String nodePath; - /** - * 员工昵称 - */ - private String nickName; - /** - * 员工编号 + * 用户id */ private Long empId; /** * 手机号码 */ - private String mphone; + private String mobile; /** - * 员工在企业内部的编号 + * 用户昵称 */ - private String loginNo; + private String nickname; /** - * 部门ID + * 小头像url */ - private Long deptId; + private String photoUrl; + /** + * 大头像url + */ + private String photoUrlBig; + /** + * 企业名称 + */ + private String enterName; + } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/StaffNodeInfo.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/StaffNodeInfo.java index e0fcb39..84383c5 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/StaffNodeInfo.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/StaffNodeInfo.java @@ -11,7 +11,7 @@ /** * 人员ID */ - private Long empId; + private Integer empId; /** * 主要号码 */ diff --git a/management/guns-admin/src/main/resources/application-dev.yml b/management/guns-admin/src/main/resources/application-dev.yml index 6791308..2685506 100644 --- a/management/guns-admin/src/main/resources/application-dev.yml +++ b/management/guns-admin/src/main/resources/application-dev.yml @@ -54,14 +54,11 @@ spring: datasource: - url: jdbc:mysql://192.168.110.80:3306/qyt_driving?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8 + url: jdbc:mysql://127.0.0.1:3306/qyt_driving?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8 username: root password: 123456 db-name: qyt_driving #用来搜集数据库的所有表 filters: wall,mergeStat - data: - mongodb: - uri: mongodb://192.168.110.80:27017/test @@ -69,7 +66,7 @@ spring: data: mongodb: - uri: mongodb://192.168.110.80:27017/test + uri: mongodb://127.0.0.1:27017/test filePath: /usr/local/server/app/orderPostionFile/ #存储订单轨迹文件路径 diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/AppUserController.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/AppUserController.java index 254421c..c172303 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/AppUserController.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/AppUserController.java @@ -15,6 +15,8 @@ import com.supersavedriving.user.modular.system.util.GaoDe.model.District; import com.supersavedriving.user.modular.system.util.qianyuntong.QianYunTongConfig; import com.supersavedriving.user.modular.system.util.qianyuntong.SMSUtil; +import com.supersavedriving.user.modular.system.util.qianyuntong.UserUtil; +import com.supersavedriving.user.modular.system.util.qianyuntong.model.QYTUserInfo; import com.supersavedriving.user.modular.system.util.qianyuntong.model.SendSmsRequest; import com.supersavedriving.user.modular.system.util.weChat.WeChatUtil; import com.supersavedriving.user.modular.system.warpper.*; @@ -30,10 +32,8 @@ import javax.annotation.Resource; import java.io.File; import java.io.InputStream; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.concurrent.TimeUnit; /** * 用户控制器 @@ -150,7 +150,29 @@ }) public ResponseWarpper queryCaptcha(String phone){ try { - AppUserUtil.queryCaptcha(phone); + Random random = new Random(); + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < 4; i++) { + sb.append((int) (random.nextDouble() * 10)); + } + String authCode = sb.toString(); + //中台没有用户数据,需要走注册接口,验证码校验走中台 + List<QYTUserInfo> infoByPhone = UserUtil.getUserInfoByPhone(phone); + if (null == infoByPhone || infoByPhone.isEmpty()) { + SMSUtil.sendVerifyCode(phone); + } else { + SendSmsRequest request = new SendSmsRequest(); + request.setDestAddress(phone); + request.setTemplateId("TPL202410290001"); + Map<String, String> templateParams = new HashMap<>(); + templateParams.put("code", authCode); + request.setTemplateParams(templateParams); + request.setCode("code"); + request.setSpId("T8d5hdfg"); + SMSUtil.sendSms(request); + //发送验证码短信 + redisUtil.setStrValue(phone, authCode, 5);//设置五分钟过期 + } return ResponseWarpper.success(); }catch (Exception e){ e.printStackTrace(); @@ -246,6 +268,11 @@ return ResponseWarpper.success(ResultUtil.tokenErr()); } AppUser appUser = appUserService.selectById(uid); + if(ToolUtil.isEmpty(appUser.getOnconUUID())){ + String onconUUIDByMobile = UserUtil.getOnconUUIDByMobile(appUser.getPhone()); + appUser.setOnconUUID(onconUUIDByMobile); + appUserService.updateById(appUser); + } UserInfoWarpper userInfoWarpper = new UserInfoWarpper(); BeanUtils.copyProperties(appUser, userInfoWarpper); diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java index ce8d16a..bca299c 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java @@ -628,41 +628,6 @@ //返回success字符串,否则支付系统将重复推送通知,间隔通知频率为0/30/60/90/120/150,单位:秒 return "false"; - - - // 验签 -// boolean verify = RSASignature.validate(interfaceResponse.content(), interfaceResponse.getSign()); -// if (verify) {//验签成功业务处理逻辑 -// if("0000".equals(interfaceResponse.getCode())){ -// JSONObject jsonObject = JSON.parseObject(interfaceResponse.getResult()); -// Integer status = jsonObject.getInteger("status"); -// String orderId = jsonObject.getString("parameter1"); -// String parameter2 = jsonObject.getString("parameter2"); -// if(2 == status){ -// Order order = orderService.selectById(orderId); -// AccountChangeDetail accountChangeDetail = accountChangeDetailService.selectById(parameter2); -// Double m = new BigDecimal(accountChangeDetail.getOldData()).subtract(new BigDecimal(accountChangeDetail.getNewData())).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); -// AppUser appUser1 = appUserService.selectById(order.getUserId()); -// appUser1.setAccountBalance(new BigDecimal(appUser1.getAccountBalance()).add(new BigDecimal(m)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); -// appUserService.updateById(appUser1); -// accountChangeDetailService.deleteById(accountChangeDetail.getId()); -// System.err.println("支付失败"); -// } -// if(1 == status){ -// String merOrderId = jsonObject.getString("merOrderId"); -// ResultUtil resultUtil = orderService.orderPayCallback(orderId, merOrderId); -// if(resultUtil.getCode() == 10000){ -// response.setStatus(200); -// PrintWriter out = response.getWriter(); -// out.print("OK"); -// out.flush(); -// out.close(); -// } -// } -// } -// } else {//验签失败业务处理逻辑 -// System.err.println("支付回调验签失败"); -// } } catch (Exception e) { e.printStackTrace(); } diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/AppUser.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/AppUser.java index 38b1210..bc0edab 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/AppUser.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/AppUser.java @@ -117,4 +117,9 @@ */ @TableField("taxiUserId") private Integer taxiUserId; + /** + * 中台用户ID + */ + @TableField("onconUUID") + private String onconUUID; } diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Driver.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Driver.java index 346a477..a88ec84 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Driver.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Driver.java @@ -259,4 +259,19 @@ */ @TableField("referralCode") private String referralCode; + /** + * 中台员工ID + */ + @TableField("empId") + private Long empId; + /** + * 中台员工所属企业ID + */ + @TableField("enterId") + private Long enterId; + /** + * 中台员工所属企业编号 + */ + @TableField("entercode") + private String entercode; } diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Order.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Order.java index c9f4c61..5310f8b 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Order.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Order.java @@ -340,4 +340,14 @@ @TableField("endTime") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private Date endTime; + /** + * 中台行程id + */ + @TableField("travelId") + private String travelId; + /** + * 中台是否已创建订单(0=否,1=是) + */ + @TableField("isCreated") + private Integer isCreated; } diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java index 8002e42..da46130 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java @@ -23,6 +23,11 @@ import com.supersavedriving.user.modular.system.util.MallBook.model.QueryOrder; import com.supersavedriving.user.modular.system.util.MallBook.util.Transfer; import com.supersavedriving.user.modular.system.util.MallBook.util.TrhRequest; +import com.supersavedriving.user.modular.system.util.qianyuntong.AESUtils; +import com.supersavedriving.user.modular.system.util.qianyuntong.UserUtil; +import com.supersavedriving.user.modular.system.util.qianyuntong.model.QYTUserInfo; +import com.supersavedriving.user.modular.system.util.qianyuntong.model.RegisterViaMobile; +import com.supersavedriving.user.modular.system.util.qianyuntong.model.RegisterViaMobileRequest; import com.supersavedriving.user.modular.system.util.weChat.WXCore; import com.supersavedriving.user.modular.system.util.weChat.WeChatUtil; import com.supersavedriving.user.modular.system.util.weChat.model.Code2Session; @@ -268,6 +273,37 @@ } String openid = code2Session.getOpenid(); AppUser appUser = this.selectOne(new EntityWrapper<AppUser>().eq("phone", phone).ne("status", 3)); + + String nickName = null; + if (null == appUser) { + nickName = this.getDefaultName(); + } else { + nickName = appUser.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 ResultUtil.error(register.getDesc()); + } + onconUUID = register.getOnconUUID(); + } else { + boolean b = AppUserUtil.checkCaptcha(phone, code); + if (!b) { + return ResultUtil.error("验证码无效"); + } + } + + if(null == appUser){ appUser = new AppUser(); appUser.setNickname("亲爱的用户"); @@ -283,8 +319,11 @@ appUser.setInviterId(verificationCodeLogin.getInviterId()); appUser.setInviterType(verificationCodeLogin.getInviterType()); } + if(null != onconUUID){ + appUser.setOnconUUID(onconUUID); + } //同步用户数据到打车系统 - String s = AppUserUtil.addUser(phone, code, verificationCodeLogin.getAreaCode()); + String s = AppUserUtil.addUser(phone, code, verificationCodeLogin.getAreaCode(), onconUUID); if(ToolUtil.isEmpty(s)){ return ResultUtil.error("登录失败"); } @@ -777,4 +816,14 @@ public List<CouponsWarpper> queryMyCoupons(Integer uid, Integer state, Integer pageNum, Integer pageSize) throws Exception { return null; } + + + /** + * 获取默认名称 + * @return + */ + public String getDefaultName(){ + int num = this.selectCount(new EntityWrapper<AppUser>().ne("status", 3)) + 1000001; + return "GRJY-DJ" + String.valueOf(num).substring(1); + } } diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java index 132dce8..bf878f9 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.supersavedriving.user.core.util.ToolUtil; import com.supersavedriving.user.modular.system.dao.OrderMapper; +import com.supersavedriving.user.modular.system.dao.TCompanyMapper; import com.supersavedriving.user.modular.system.model.*; import com.supersavedriving.user.modular.system.service.*; import com.supersavedriving.user.modular.system.util.*; @@ -16,6 +17,8 @@ import com.supersavedriving.user.modular.system.util.MallBook.util.Transfer; import com.supersavedriving.user.modular.system.util.MallBook.util.TrhRequest; import com.supersavedriving.user.modular.system.util.mongodb.model.Location; +import com.supersavedriving.user.modular.system.util.qianyuntong.OrderUtil; +import com.supersavedriving.user.modular.system.util.qianyuntong.model.*; import com.supersavedriving.user.modular.system.warpper.*; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; @@ -37,8 +40,12 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -132,6 +139,9 @@ @Value("${callbackPath}") private String callbackPath;//支付回调网关地址 + + @Autowired + private TCompanyMapper companyMapper; @@ -521,11 +531,27 @@ appUserService.updateById(appUser); } + List<Order> orderList = new ArrayList<>(); for (Integer i = 0; i < travelOrder.getDriverNum(); i++) { order.setId(null); order.setCode(UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(5)); boolean insert = this.insert(order); + if(null != order.getDriverId()){ + Driver driver = driverService.selectById(order.getDriverId()); + TCompany company = companyMapper.selectById(order.getDriverId()); + //调三方订单中心创建行程单 + CreateTravelItineraryRequest request = new CreateTravelItineraryRequest(); + request.setOrderNo("DJ" + order.getId()); + request.setCustomerId(appUser.getOnconUUID()); + request.setDriverId(driver.getEmpId().toString()); + request.setSupplierShopId(company.getEnterCode()); + request.setServiceType(2); + String travelItinerary = OrderUtil.createTravelItinerary(request); + order.setTravelId(travelItinerary); + this.insertOrUpdate(order); + } + if(insert){ orderList.add(order); } @@ -842,13 +868,25 @@ order.setState(301); this.updateById(order); redisUtil.delSetValue("orderService", order.getId().toString()); + + Driver driver = driverService.selectById(order.getDriverId()); + if(null != order.getTravelId()){ + //中台修改订单状态 + ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest(); + request.setOrderId(order.getTravelId()); + request.setStatus(getState(order.getState())); + TCompany company = companyMapper.selectById(driver.getBranchOfficeId()); + request.setDriverId(driver.getEmpId().toString()); + request.setSupplierShopId(company.getEnterCode()); + OrderUtil.modifyTravelItinerary(request); + } + AppUser appUser = appUserService.selectById(uid); appUser.setCancelCount(appUser.getCancelCount() + 1); if(appUser.getCancelCount() >= 3){ appUser.setIsException(2); } appUserService.updateById(appUser); - Driver driver = driverService.selectById(order.getDriverId()); if(null != driver){ driver.setServerStatus(1); driverService.updateById(driver); @@ -864,6 +902,36 @@ } redisUtil.setStrValue("cancelOrder", "true"); return ResultUtil.success(); + } + + + + private Integer getState(Integer state){ + switch (state){ + case 101://待接单 + return 1; + case 102://已接单 + return 2; + case 103://前往预约点 + return 3; + case 104://到达预约点 + return 4; + case 105://开始服务 + return 5; + case 106://到达目的地 + return 6; + case 107://待支付 + return 7; + case 108://待评价 + return 8; + case 109://已完成 + return 9; + case 201://转单中 + return 11; + case 301://已取消 + return 10; + } + return null; } @@ -1100,16 +1168,16 @@ } //开始支付操作 if(orderPayment.getPayType() == 1){//微信支付 - return weixinPay(order, appUser, orderPayment.getCouponId()); + return weixinPay(order, appUser, orderPayment.getCouponId(), orderPayment.getPath(), orderPayment.getIp()); } if(orderPayment.getPayType() == 2){//余额支付 return balancePayment(order, appUser, orderPayment.getCouponId()); } // if(orderPayment.getPayType() == 3){//线下支付(由司机端操作) // } - if(orderPayment.getPayType() == 4){//微信+余额 - return weixinAndBalancePayment(order, appUser, orderPayment.getCouponId()); - } +// if(orderPayment.getPayType() == 4){//微信+余额 +// return weixinAndBalancePayment(order, appUser, orderPayment.getCouponId()); +// } return ResultUtil.success(); } @@ -1123,100 +1191,100 @@ * @return * @throws Exception */ - public ResultUtil weixinPay(Order order, AppUser appUser, Integer couponId) throws Exception{ + public ResultUtil weixinPay(Order order, AppUser appUser, Integer couponId, String path, String ip) throws Exception{ Double payMoney = order.getPayMoney(); order.setPayType(1); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); - String out_trade_no = sdf.format(new Date()) + order.getId(); + ResultUtil resultUtil = ResultUtil.success(new Object()); + Driver driver = driverService.selectById(order.getDriverId()); + if(null == order.getIsCreated() || 0 == order.getIsCreated()){ + //调用中台创建订单及拉起支付接口 + TradeOrderCreateData tradeOrderCreateData = new TradeOrderCreateData(); + tradeOrderCreateData.setTreatShopId(driver.getEmpId().toString()); + tradeOrderCreateData.setField1("{\"profitSharing\":\"1\",\"isCompensate\":\"0\",\"isPromote\":\"0\"}"); + tradeOrderCreateData.setCharge(new BigDecimal(payMoney).setScale(2, RoundingMode.HALF_EVEN)); + tradeOrderCreateData.setOrderNo("DJ" + order.getId()); + tradeOrderCreateData.setCustomerId(appUser.getOnconUUID()); + tradeOrderCreateData.setPartnerPayId(order.getTravelId()); + tradeOrderCreateData.setTotalFee(Double.valueOf(payMoney * 100).intValue() + ""); + tradeOrderCreateData.setOrderDesc("完成订单"); + tradeOrderCreateData.setRetUrl(path); + tradeOrderCreateData.setClientIp(ip); + tradeOrderCreateData.setServiceType(3); -// -// PaymentOrder paymentOrder = new PaymentOrder(); -// paymentOrder.setBizOrderId(out_trade_no); -// paymentOrder.setAmount(new BigDecimal(payMoney).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + ""); -// paymentOrder.setOrderName("代驾服务费"); -// paymentOrder.setPayType("WX_MINI"); -// paymentOrder.setTransferType("0"); -// paymentOrder.setAsynSplitFlag("1"); -// paymentOrder.setAppid(appletsAppid); -// paymentOrder.setOpenid(appUser.getOpenid()); -// paymentOrder.setTerminalIp(InetAddress.getLocalHost().getHostAddress()); -// List<PaymentOrderGood> goodsDetail = new ArrayList<>(); -// PaymentOrderGood paymentOrderGood = new PaymentOrderGood(); -// paymentOrderGood.setGoodsName("服务费"); -// goodsDetail.add(paymentOrderGood); -// paymentOrder.setGoodsDetail(goodsDetail); -// paymentOrder.setFrontUrl(callbackPath + "/base/order/orderPayCallback"); -// paymentOrder.setNotifyUrl(callbackPath + "/base/order/orderPayCallback"); -// paymentOrder.setParameter1(order.getId().toString()); -// -// TrhRequest<PaymentOrder> request = new TrhRequest(); -// InterfaceResponse execute = request.execute(paymentOrder, PaymentOrder.SERVICE_CODE); - return MiniAppPay.pay(appUser.getOpenid(),new BigDecimal(payMoney).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "","/base/order/orderPayCallback",order.getCode()); -// return payMoneyUtil.weixinpay("服务费", String.valueOf(order.getId()),out_trade_no,new BigDecimal(payMoney).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "","/base/order/orderPayCallback","APP"); + List<GoodsInfoRequest> goodsInfo = new ArrayList<>(); + GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest(); + goodsInfoRequest.setSubOpenId(appUser.getOpenid()); + goodsInfoRequest.setProfitSharing("1"); + goodsInfo.add(goodsInfoRequest); + tradeOrderCreateData.setGoodsInfo(goodsInfo); + TradeOrderCreate tradeOrderCreate = OrderUtil.tradeOrderCreate1(tradeOrderCreateData, 0); + PayInfo payInfo = tradeOrderCreate.getPayInfo(); + if(!"000000".equals(payInfo.getRetCode())){ + return ResultUtil.error(payInfo.getRetMsg()); + } + order.setIsCreated(1); + order.setTravelId(tradeOrderCreate.getOrderInfo().getOrderId()); + resultUtil = ResultUtil.success(payInfo.getData().getRedirectUrl()); + }else{ + //拉起支付 + TradePayOff1Data tradePayOff1Data = new TradePayOff1Data(); + tradePayOff1Data.setPartnerPayId(order.getTravelId()); + tradePayOff1Data.setTotalFee(Double.valueOf(payMoney * 100).intValue() + ""); + tradePayOff1Data.setRetUrl(path); + tradePayOff1Data.setClientIp(ip); + tradePayOff1Data.setOrderDesc("完成订单"); + List<GoodsInfoRequest> goodsInfo = new ArrayList<>(); + GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest(); + goodsInfoRequest.setSubOpenId(appUser.getOpenid()); + goodsInfoRequest.setProfitSharing("1"); + goodsInfo.add(goodsInfoRequest); + tradePayOff1Data.setGoodsInfo(goodsInfo); + PayInfo payInfo = OrderUtil.tradePayOff1(tradePayOff1Data, 0); + if(!"000000".equals(payInfo.getRetCode())){ + return ResultUtil.error(payInfo.getRetMsg()); + } + resultUtil = ResultUtil.success(payInfo.getData().getRedirectUrl()); + } + this.updateById(order); + //创建定时任务查询订单支付状态 + ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); + threadPoolExecutor.execute(()->{ + try { + int num = 1; + int wait = 0; + while (num <= 13) { + int min = 5000; + wait += (min * num); + Order order1 = this.selectById(order.getId()); + if (order1.getState() != 107) { + break; + } + GetTravelItineraryListRequest request = new GetTravelItineraryListRequest(); + request.setCustomerId(appUser.getOnconUUID()); + request.setOrderNo("DJ" + order1.getId()); + request.setDriverId(driver.getEmpId().toString()); + ListPage<List<TravelItinerary>> travelItineraryList = OrderUtil.getTravelItineraryList(request); + TravelItinerary travelItinerary = travelItineraryList.getList().get(0); + if(travelItinerary.getStatus() != 7 || Arrays.asList(3, 11).contains(travelItinerary.getOrderStatus())){ + GetPaymentInfoDataRequest getPaymentInfoDataRequest1 = new GetPaymentInfoDataRequest(); + getPaymentInfoDataRequest1.setPartnerPayId(order1.getTravelId()); + GetPaymentInfo getPaymentInfo1 = OrderUtil.paymentInfo(getPaymentInfoDataRequest1); + orderPayCallback(order1.getId().toString(), getPaymentInfo1.getPayId()); + break; + } + Thread.sleep(wait); + num++; + } + } catch (Exception e) { + e.printStackTrace(); + }finally { + threadPoolExecutor.shutdown(); + } + }); -// -// if(!"0000".equals(execute.getCode())){ -// return ResultUtil.error(execute.getMsg()); -// } -// JSONObject jsonObject = JSON.parseObject(execute.getResult()); -// String status = jsonObject.getString("status"); -// if("2".equals(status)){ -// return ResultUtil.error("失败"); -// } -// String merOrderId = jsonObject.getString("merOrderId"); -// String payCode = jsonObject.getString("payCode"); -// this.updateById(order); - -// if(ToolUtil.isNotEmpty(payCode)){ -// new Thread(new Runnable() { -// @Override -// public void run() { -// try { -// int num = 1; -// int wait = 0; -// while (num <= 10){ -// int min = 5000; -// wait += (min * num); -// Order order1 = OrderServiceImpl.this.selectById(order.getId()); -// if(order1.getState() != 107){ -// return; -// } -// QueryOrder queryOrder = new QueryOrder(); -// queryOrder.setOriginalMerOrderId(merOrderId); -// queryOrder.setQueryType("1"); -// TrhRequest<QueryOrder> request = new TrhRequest(); -// InterfaceResponse execute1 = request.execute(queryOrder, QueryOrder.SERVICE_CODE); -// if("0000".equals(execute1.getCode())){ -// JSONObject jsonObject1 = JSON.parseObject(execute1.getResult()); -// String status1 = jsonObject1.getString("status"); -// if("0".equals(status1)){//待处理 -// Thread.sleep(wait); -// num++; -// } -// if("1".equals(status1)){//成功 -// String merOrderId = jsonObject1.getString("merOrderId"); -// ResultUtil resultUtil = orderPayCallback(order1.getId().toString(), merOrderId); - -// break; -// } -// if("2".equals(status1) || 10 == num){//失败 -// break; -// } -// }else{ -// Thread.sleep(wait); -// num++; -// } -// } -// }catch (Exception e){ -// e.printStackTrace(); -// } -// } -// }).start(); -// } - -// return ResultUtil.success(payCode); + return resultUtil; } @@ -1501,6 +1569,18 @@ } order.setState(109); this.updateById(order); + Driver driver = driverService.selectById(order.getDriverId()); + //中台修改订单状态 + if(null != order.getTravelId()){ + ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest(); + request.setOrderId(order.getTravelId()); + request.setStatus(getState(order.getState())); + TCompany company = companyMapper.selectById(driver.getBranchOfficeId()); + request.setDriverId(driver.getEmpId().toString()); + request.setSupplierShopId(company.getEnterCode()); + OrderUtil.modifyTravelItinerary(request); + } + Evaluate evaluate = new Evaluate(); evaluate.setOrderId(orderId.intValue()); evaluate.setCreateTime(new Date()); @@ -1509,7 +1589,6 @@ evaluate.setStatus(1); evaluate.setUserId(uid); evaluateService.insert(evaluate); - Driver driver = driverService.selectById(order.getDriverId()); driver.setScore(((null == driver.getScore() ? 0 : driver.getScore()) + score) / 2); if(score == 5){//司机积分奖励 SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 4)); diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/AppUserUtil.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/AppUserUtil.java index 4649170..8f6be83 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/AppUserUtil.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/AppUserUtil.java @@ -61,11 +61,12 @@ * @return * @throws Exception */ - public static String addUser(String phone, String code, String areaCode) throws Exception{ + public static String addUser(String phone, String code, String areaCode, String onconUUID) throws Exception{ HttpRequest post = HttpUtil.createPost(qytConfig.getChuxingUrl() + "/user-server/base/user/addAppUser"); post.form("phone", phone); post.form("code", code); post.form("areaCode", areaCode); + post.form("onconUUID", onconUUID); HttpResponse execute = post.execute(); if(200 != execute.getStatus()){ log.error("打车系统-注册用户失败:{}", execute.body()); diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/EmployeeUtil.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/EmployeeUtil.java index f27aadf..55ff458 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/EmployeeUtil.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/EmployeeUtil.java @@ -81,6 +81,11 @@ if (!"0".equals(retCode)) { log.error("【企业增加员工】请求失败:" + result); String retMsg = jsonObject.getString("retMsg"); + if(retMsg.contains("员工昵称已存在")){ + request.setEmpName(request.getEmpName() + Double.valueOf(Math.random() * 100).intValue()); + request.setEmpNickname(request.getEmpName()); + return saveStaffNode(request); + } retMsg = retMsg.substring(retMsg.indexOf("{")); jsonObject = JSON.parseObject(retMsg); return ResultUtil.error("【企业增加员工】请求失败:" + jsonObject.getString("msg")); diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/OrderUtil.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/OrderUtil.java index 44e9a2c..a0614f7 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/OrderUtil.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/OrderUtil.java @@ -180,18 +180,23 @@ * 拉起支付 * * @param tradePayOff1Data + * @param recoveryOrder * @return */ - public static PayInfo tradePayOff1(TradePayOff1Data tradePayOff1Data) { - tradePayOff1Data.setPartnerId("5400004"); + public static PayInfo tradePayOff1(TradePayOff1Data tradePayOff1Data, Integer recoveryOrder) { + tradePayOff1Data.setPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401007" : "5400004"); tradePayOff1Data.setTimeout("72H"); tradePayOff1Data.setScene("TRAFFIC"); tradePayOff1Data.setCurrency("RMB"); tradePayOff1Data.setNeedLoginFlag("N"); tradePayOff1Data.setAccessMode("APP"); tradePayOff1Data.getGoodsInfo().forEach(goodsInfoRequest -> { - goodsInfoRequest.setId("981100006005901"); - goodsInfoRequest.setSubAppId("wxcc3c9058e2b294db"); + if(0 == recoveryOrder){ + goodsInfoRequest.setId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "9811000039358999" : "981100006005901"); + }else{ + goodsInfoRequest.setId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "981100006228370" : "981100006005901"); + } + goodsInfoRequest.setSubAppId(qianYunTongConfig.getAppId()); goodsInfoRequest.setAreaInfo("520100"); goodsInfoRequest.setPayType("0"); @@ -200,7 +205,7 @@ TradeRequest request = new TradeRequest<TradePayOff1Data>(); - request.setSceneId("1911676727023968256"); + request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954795404533583872" : "1911676727023968256"); request.setAppId(qianYunTongConfig.getAppkey()); request.setConfigVersion(1); request.setRequestId(UUIDUtil.getRandomCode()); @@ -385,19 +390,23 @@ * @param tradeOrderCreateData * @return */ - public static TradeOrderCreate tradeOrderCreate1(TradeOrderCreateData tradeOrderCreateData) { + public static TradeOrderCreate tradeOrderCreate1(TradeOrderCreateData tradeOrderCreateData, Integer recoveryOrder) { tradeOrderCreateData.setScene("TRAFFIC"); tradeOrderCreateData.setPartnerId("522700"); tradeOrderCreateData.setTimeout("72H"); tradeOrderCreateData.setOrderAppId("52270015"); tradeOrderCreateData.setChannelSource("GRJYCXWXXCX"); - tradeOrderCreateData.setPayPartnerId("5400004"); + tradeOrderCreateData.setPayPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401007" : "5400004"); tradeOrderCreateData.setCurrency("RMB"); tradeOrderCreateData.setNeedLoginFlag("N"); tradeOrderCreateData.setAccessMode("APP"); tradeOrderCreateData.getGoodsInfo().forEach(goodsInfoRequest -> { - goodsInfoRequest.setId("981100006005901"); - goodsInfoRequest.setSubAppId("wxcc3c9058e2b294db"); + if(0 == recoveryOrder){ + goodsInfoRequest.setId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "9811000039358999" : "981100006005901"); + }else{ + goodsInfoRequest.setId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "981100006228370" : "981100006005901"); + } + goodsInfoRequest.setSubAppId(qianYunTongConfig.getAppId()); goodsInfoRequest.setAreaInfo("520100"); goodsInfoRequest.setPayType("0"); goodsInfoRequest.setBusinessType("10408"); @@ -405,7 +414,7 @@ TradeRequest request = new TradeRequest<TradeOrderCreateData>(); - request.setSceneId("1945688132719169536"); + request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954793280550756352" : "1945688132719169536"); request.setAppId(qianYunTongConfig.getAppkey()); request.setConfigVersion(1); request.setRequestId(UUIDUtil.getRandomCode()); @@ -457,7 +466,7 @@ createOrderRequest.setChannelSource("GRJYCXWXXCX"); TradeRequest request = new TradeRequest<CreateOrderRequest>(); - request.setSceneId("1948289607125864448"); + request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954792737421942784" : "1948289607125864448"); request.setAppId(qianYunTongConfig.getAppkey()); request.setConfigVersion(1); request.setRequestId(UUIDUtil.getRandomCode()); @@ -503,7 +512,7 @@ * @return */ public static PayInfo tradePayOff(TradePayOffData tradePayOffData) { - tradePayOffData.setPartnerId("5400005"); + tradePayOffData.setPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401008" : "5400005"); tradePayOffData.setTimeout("72H"); tradePayOffData.setScene("TRAFFIC"); tradePayOffData.setCurrency("RMB"); @@ -528,20 +537,20 @@ tradePayOffData.setPaymentInfos(paymentInfoRequests); List<GoodsInfo> goodsInfo = new ArrayList<>(); GoodsInfo goodsInfo1 = new GoodsInfo(); - goodsInfo1.setMerchantCode("B00000905"); - goodsInfo1.setCustId("CB0000004686"); - goodsInfo1.setCustName("证联消费平台交易客户"); + goodsInfo1.setMerchantCode("prod".equals(qianYunTongConfig.getActiveProfile()) ? "B00001404" : "B00000905"); + goodsInfo1.setCustId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "CB0000004853" : "CB0000004686"); + goodsInfo1.setCustName("prod".equals(qianYunTongConfig.getActiveProfile()) ? "黔南云码通数字产业运营有限公司" : "证联消费平台交易客户"); goodsInfo1.setBusinessType("10408"); - goodsInfo1.setAgreementNo("00000000468618354161754464398681"); + goodsInfo1.setAgreementNo("prod".equals(qianYunTongConfig.getActiveProfile()) ? "00000402485377063581755054680461" : "00000000468618354161754464398681"); goodsInfo1.setProfitSharing("1"); goodsInfo.add(goodsInfo1); tradePayOffData.setGoodsInfo(goodsInfo); TradeRequest request = new TradeRequest<TradePayOffData>(); - request.setSceneId("1774717104844095488"); + request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954794605782913024" : "1774717104844095488"); request.setAppId(qianYunTongConfig.getAppkey()); - request.setConfigVersion(2); + request.setConfigVersion("prod".equals(qianYunTongConfig.getActiveProfile()) ? 1 : 2); request.setRequestId(UUIDUtil.getRandomCode()); request.setData(tradePayOffData); //请求路径 @@ -586,7 +595,7 @@ * @return */ public static GetPaymentInfo paymentInfo(GetPaymentInfoDataRequest getPaymentInfoDataRequest) { - getPaymentInfoDataRequest.setPartnerId("5400004"); + getPaymentInfoDataRequest.setPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401007" : "5400004"); GetPaymentInfoRequest request = new GetPaymentInfoRequest(); request.setRequstType("POST"); @@ -644,7 +653,6 @@ request.setMhltiCenterAppId("52270015"); request.setPayType(4); request.setPayChannel(6); - request.setIsCompensate(1); //请求路径 String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/paymentOrder"; //私钥文件 @@ -677,6 +685,156 @@ OrderInfo orderInfo = jsonObject.getObject("busiResp", OrderInfo.class); return orderInfo; } - - + + + + /** + * 订单退款 + * @param request1 + * @return + */ + public static TradeOrderRefund tradeOrderRefund(TradeOrderRefundRequest request1) { + request1.setPayPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401007" : "5400004"); + //请求路径 + String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/tradeOrderRefund"; + //私钥文件 + String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath(); + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = qianYunTongConfig.getAppkey();//appkey + Map<String, String> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + Map<String, Object> contentMap = new HashMap<String, Object>(); + Date nowdate = new Date(); + SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); + + TradeRequest request = new TradeRequest<TradeOrderRefundRequest>(); + request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1968487381046722560" : "1726529285264269312"); + request.setAppId(qianYunTongConfig.getAppkey()); + request.setConfigVersion("prod".equals(qianYunTongConfig.getActiveProfile()) ? 1 : 6); + request.setRequestId(UUIDUtil.getRandomCode()); + request.setData(request1); + + String timeStamp = date.format(nowdate); + String messageId = UUIDUtil.getRandomCode(); + contentMap.put(SystemParameterNames.getAppKey(), appKey); + contentMap.put(SystemParameterNames.getMessage_id(), messageId); + contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName()); + contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus()); + contentMap.put("content", new Gson().toJson(request)); + log.info("【订单退款】请求地址:" + url); + log.info("【订单退款】请求参数:" + JSON.toJSONString(contentMap)); + String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap); + log.info("【订单退款】请求结果:" + result); + JSONObject jsonObject = JSON.parseObject(result); + String resCode = jsonObject.getString("resCode"); + if (!"000000".equals(resCode)) { + log.error("【订单退款】失败:" + jsonObject.getString("resMsg")); + throw new RuntimeException("【订单退款】失败:" + jsonObject.getString("resMsg")); + } + JSONObject refundInfo = jsonObject.getJSONObject("busiResp").getJSONObject("refundInfo"); + String retCode = refundInfo.getString("retCode"); + if(!"0".equals(retCode)){ + log.error("【订单退款】失败:" + refundInfo.getString("retMsg")); + throw new RuntimeException("【订单退款】失败:" + refundInfo.getString("retMsg")); + } + JSONObject object = refundInfo.getJSONObject("object"); + String retCode1 = object.getString("retCode"); + if(!"000000".equals(retCode1)){ + log.error("【订单退款】失败:" + object.getString("retMsg")); + throw new RuntimeException("【订单退款】失败:" + object.getString("retMsg")); + } + + TradeOrderRefund tradeOrderRefund = object.getObject("data", TradeOrderRefund.class); + return tradeOrderRefund; + } + + + /** + * 订单退款通知 + * @param request + */ + public static void orderRefundNotice(OrderRefundNoticeRequest request) { + request.setScene("TRAFFIC"); + request.setMhltiCenterAppId("52270015"); + + //请求路径 + String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/orderRefundNotice"; + //私钥文件 + String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath(); + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = qianYunTongConfig.getAppkey();//appkey + Map<String, String> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + Map<String, Object> contentMap = new HashMap<String, Object>(); + Date nowdate = new Date(); + SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); + + String timeStamp = date.format(nowdate); + String messageId = UUIDUtil.getRandomCode(); + contentMap.put(SystemParameterNames.getAppKey(), appKey); + contentMap.put(SystemParameterNames.getMessage_id(), messageId); + contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName()); + contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus()); + contentMap.put("content", new Gson().toJson(request)); + log.info("【订单退款通知】请求地址:" + url); + log.info("【订单退款通知】请求参数:" + JSON.toJSONString(contentMap)); + String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap); + log.info("【订单退款通知】请求结果:" + result); + JSONObject jsonObject = JSON.parseObject(result); + String resCode = jsonObject.getString("resCode"); + if (!"000000".equals(resCode)) { + log.error("【订单退款通知】失败:" + jsonObject.getString("resMsg")); + throw new RuntimeException("【订单退款通知】失败:" + jsonObject.getString("resMsg")); + } + } + + + + /** + * 订单取消 + * @param orderId + */ + public static void tradeOrderCancel(String orderId) { + TradeOrderCancelRequest request1 = new TradeOrderCancelRequest(); + request1.setScene("TRAFFIC"); + request1.setMhltiCenterAppId("52270015"); + request1.setOrderId(orderId); + + //请求路径 + String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/tradeOrderCancel"; + //私钥文件 + String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath(); + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = qianYunTongConfig.getAppkey();//appkey + Map<String, String> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + Map<String, Object> contentMap = new HashMap<String, Object>(); + Date nowdate = new Date(); + SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); + + TradeRequest request = new TradeRequest<TradeOrderRefundRequest>(); + request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1968487841979760640" : "1963507067318833152"); + request.setAppId(qianYunTongConfig.getAppkey()); + request.setConfigVersion(1); + request.setRequestId(UUIDUtil.getRandomCode()); + request.setData(request1); + + String timeStamp = date.format(nowdate); + String messageId = UUIDUtil.getRandomCode(); + contentMap.put(SystemParameterNames.getAppKey(), appKey); + contentMap.put(SystemParameterNames.getMessage_id(), messageId); + contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName()); + contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus()); + contentMap.put("content", new Gson().toJson(request)); + log.info("【订单取消】请求地址:" + url); + log.info("【订单取消】请求参数:" + JSON.toJSONString(contentMap)); + String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap); + log.info("【订单取消】请求结果:" + result); + JSONObject jsonObject = JSON.parseObject(result); + String resCode = jsonObject.getString("resCode"); + if (!"000000".equals(resCode)) { + log.error("【订单取消】失败:" + jsonObject.getString("resMsg")); + throw new RuntimeException("【订单取消】失败:" + jsonObject.getString("resMsg")); + } + } } diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/QianYunTongConfig.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/QianYunTongConfig.java index be8c20b..29b102e 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/QianYunTongConfig.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/QianYunTongConfig.java @@ -160,7 +160,7 @@ public QianYunTongConfig getQianYunTongConfig() { if("dev".equals(activeProfile)){ this.appkey = "10001104"; - this.privateKeyPath = "C:\\Users\\Admin\\Desktop\\qyt\\private_key_test.pem"; + this.privateKeyPath = "C:\\Users\\39373\\Desktop\\黔云通\\private_key_test.pem"; this.userName = "xiaofei"; this.status = "1"; this.setApiUrl("https://test-zhongtai.stqcloud.com:10070"); diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/UserUtil.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/UserUtil.java index e2caa34..03a13d5 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/UserUtil.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/UserUtil.java @@ -25,10 +25,7 @@ private static QianYunTongConfig qianYunTongConfig = SpringContextsUtil.getBean(QianYunTongConfig.class).getQianYunTongConfig(); - public static void main(String[] args) { -// List<QYTUserInfo> userInfoByPhone = getUserInfoByPhone("15828353127"); -// System.out.println(userInfoByPhone); - } + /** @@ -321,4 +318,51 @@ return object.getBoolean("isok"); } + + /** + * 根据手机号码获取易信uuid + * @param mobile + * @return + */ + public static String getOnconUUIDByMobile(String mobile) { + //请求路径 + String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/getOnconUUIDByMobile"; + //私钥文件 + String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath(); + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = qianYunTongConfig.getAppkey();//appkey + Map<String, String> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + Map<String, Object> contentMap = new HashMap<String, Object>(); + Date nowdate = new Date(); + SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss"); + + String timeStamp = date.format(nowdate); + String messageId = UUID.randomUUID().toString().replaceAll("-", ""); + contentMap.put(SystemParameterNames.getAppKey(), appKey); + contentMap.put(SystemParameterNames.getMessage_id(), messageId); + contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName()); + contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus()); + Map<String, String> map = new HashMap<>(); + map.put("mobile", mobile); + contentMap.put("content", JSON.toJSONString(map)); + log.info("【根据手机号码获取易信uuid】请求地址:" + url); + log.info("【根据手机号码获取易信uuid】请求参数:" + JSON.toJSONString(contentMap)); + String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap); + log.info("【根据手机号码获取易信uuid】请求结果:" + result); + JSONObject jsonObject = JSON.parseObject(result); + String retCode = jsonObject.getString("retCode"); + if (!"0".equals(retCode)) { + log.error("【根据手机号码获取易信uuid】请求失败:" + result); + throw new RuntimeException("【根据手机号码获取易信uuid】请求失败:" + result); + } + JSONObject object = jsonObject.getJSONObject("object"); + Integer status = object.getInteger("status"); + if(0 != status){ + log.error("【身份证实名认证】请求失败:" + object.getString("desc")); + throw new RuntimeException("【身份证实名认证】请求失败:" + object.getString("desc")); + } + return object.getString("onconUUID"); + } + } diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/GoodsInfoRequest.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/GoodsInfoRequest.java index 68efe51..5aeee7a 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/GoodsInfoRequest.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/GoodsInfoRequest.java @@ -36,4 +36,8 @@ * 业务类型,默认传10408 */ private String businessType; + /** + * 结算日期yyyyMMdd + */ + private String settleDate; } diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/PaymentOrderRequest.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/PaymentOrderRequest.java index 103bf3c..467595d 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/PaymentOrderRequest.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/PaymentOrderRequest.java @@ -50,8 +50,4 @@ * 付款方式,6:微信 7:支付宝 8:银行卡 9:银联二维码 10银联购物车收银台 */ private Integer payChannel; - /** - * 是否补偿单。1、是,0、否 - */ - private Integer isCompensate; } diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/TradeOrderCreateData.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/TradeOrderCreateData.java index e6f32e1..00c95bd 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/TradeOrderCreateData.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/TradeOrderCreateData.java @@ -56,6 +56,18 @@ */ private String customerId; /** + * 推广人id + */ + private String promoterId; + /** + * 服务商商户ID(serviceType为3时必传) + */ + private String supplierShopId; + /** + * 场景服务类型。1、出租;2、网约车;3、城际;4、顺风车,5、代驾 + */ + private Integer serviceType; + /** * 商户号,由支付中心分配。测试环境5400004 */ private String payPartnerId; diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/TravelItinerary.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/TravelItinerary.java index fd91bfc..3169090 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/TravelItinerary.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/qianyuntong/model/TravelItinerary.java @@ -45,7 +45,7 @@ */ private Integer serviceType; /** - * 订单状态。1、待支付,11、已完结(可结算) + * 订单状态。1、待支付,3=已支付,11、已完结(可结算),16、已取消,32、已全部退款 */ private Integer orderStatus; /** diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/warpper/OrderPayment.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/warpper/OrderPayment.java index 2b70d88..31d0330 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/warpper/OrderPayment.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/warpper/OrderPayment.java @@ -17,4 +17,8 @@ private Integer payType; @ApiModelProperty(value = "优惠券id", required = false, dataType = "int") private Integer couponId; + @ApiModelProperty(value = "支付成功后的回调页面地址", required = true, dataType = "string") + private String path; + @ApiModelProperty(value = "ip地址", required = true, dataType = "string") + private String ip; } -- Gitblit v1.7.1