From 3163a383bb58507ac7b0bb56ac20dc26aa1a8e5a Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期三, 25 六月 2025 15:05:05 +0800 Subject: [PATCH] 更新司机端中台接口 --- DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/config/SwaggerConfig.java | 7 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTUserInfo.java | 39 DriverQYTTravel/guns-admin/src/main/resources/application.yml | 129 +-- DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java | 4 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/NettyServiceImpl.java | 18 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java | 222 +++--- DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java | 18 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushMinistryOfTransportUtil.java | 18 DriverQYTTravel/guns-admin/pom.xml | 13 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java | 18 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderPositionServiceImpl.java | 78 - DriverQYTTravel/guns-admin/src/test/java/com/stylefeng/guns/GunsApplicationTest.java | 86 -- DriverQYTTravel/guns-admin/src/main/resources/logback.xml | 222 ++++++ DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java | 22 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/UserUtil.java | 71 + DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 7 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/NCOSSUtil.java | 240 +++++++ DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EmployeeUtil.java | 6 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java | 41 + DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongProperties.java | 31 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/account/controller/UserWithdrawalController.java | 19 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/LoginWeChatXiao.java | 39 + /dev/null | 119 --- DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml | 139 ++-- DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java | 18 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/OrderPosition.java | 114 --- DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java | 50 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EnterpriseUtil.java | 158 ++++ 28 files changed, 1,182 insertions(+), 764 deletions(-) diff --git a/DriverQYTTravel/guns-admin/pom.xml b/DriverQYTTravel/guns-admin/pom.xml index e5c748e..63e6e49 100644 --- a/DriverQYTTravel/guns-admin/pom.xml +++ b/DriverQYTTravel/guns-admin/pom.xml @@ -115,6 +115,14 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> + <dependency> + <groupId>io.lettuce</groupId> + <artifactId>lettuce-core</artifactId> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-pool2</artifactId> + </dependency> <dependency> <groupId>com.github.penggle</groupId> @@ -248,10 +256,13 @@ <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-data-mongodb</artifactId> + </dependency> </dependencies> <build> - <!--打包jar包方式--> <plugins> <plugin> diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/config/SwaggerConfig.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/config/SwaggerConfig.java index fb10574..4b8bdb5 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/config/SwaggerConfig.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/config/SwaggerConfig.java @@ -8,6 +8,7 @@ import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @@ -36,10 +37,10 @@ private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("黔云通 Doc") - .description("所有接口前需要加 /driver 前缀,例如:/driver/base/agreement/queryByType <br>所有以 /api/*** 路径的接口需要上传签名参数sign") + .title("黔云通 Doc") + .description("所有接口前需要加 /driver 前缀,例如:/driver/base/agreement/queryByType <br>所有以 /api/*** 路径的接口需要上传签名参数sign") // .termsOfServiceUrl("http://git.oschina.net/naan1993/guns") - .contact("stylefeng") + .contact(new Contact("", "", "")) .version("1.0") .build(); } diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/account/controller/UserWithdrawalController.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/account/controller/UserWithdrawalController.java index 9bd7bd8..24ac1d8 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/account/controller/UserWithdrawalController.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/account/controller/UserWithdrawalController.java @@ -69,15 +69,16 @@ }) public ResultUtil isElectronicLede(HttpServletRequest request){ try { - Integer driverId = driverService.getUserIdFormRedis(request); - if(null == driverId){ - return ResultUtil.tokenErr(); - } - Driver driver = driverService.selectById(driverId); - List<UserWithdrawal> userWithdrawals = userWithdrawalService.selectList(new EntityWrapper<UserWithdrawal>().eq("phone", driver.getPhone())); - if(userWithdrawals.size()==0){ - return ResultUtil.success("yes"); - } + //临时关闭 +// Integer driverId = driverService.getUserIdFormRedis(request); +// if(null == driverId){ +// return ResultUtil.tokenErr(); +// } +// Driver driver = driverService.selectById(driverId); +// List<UserWithdrawal> userWithdrawals = userWithdrawalService.selectList(new EntityWrapper<UserWithdrawal>().eq("phone", driver.getPhone())); +// if(userWithdrawals.size()==0){ +// return ResultUtil.success("yes"); +// } return ResultUtil.success("no"); }catch (Exception e){ e.printStackTrace(); diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java index 20d4b61..d670e36 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java @@ -29,6 +29,7 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.io.InputStream; @@ -46,8 +47,8 @@ @RequestMapping("") public class DriverController { - @Autowired - private RedisTemplate redisTemplate; + @Resource + private RedisTemplate<String, Object> redisTemplate; @Autowired private IDriverService driverService; @@ -1504,4 +1505,40 @@ e.printStackTrace(); } } + + +// @ResponseBody +// @RequestMapping(value = "/base/driver/uploadImg", method = RequestMethod.POST) +// @ApiOperation(value = "上传图片", tags = {"司机端-注册"}, notes = "") +// public ResultUtil uploadImg(MultipartFile file) { +// try { +// String bucketName = "grjy_test"; +// Bucket grjyTest = NCOSSUtil.getBucketInfo(bucketName); +// if (null == grjyTest) { +// //创建桶 +// Boolean bucket = NCOSSUtil.createBucket(bucketName); +// if (!bucket) { +// return ResultUtil.error("创建存储桶失败"); +// } +// //设置桶策略 +// String policyText = "{\"Version\":\"2025-06-23\",\"Statement\":[{\"Sid\":\"Stmt20250623\",\"Action\":[\"GetObject\"]" + +// ",\"Effect\":\"Allow\",\"Resource\":[\"" + bucketName + "\"/*],\"Principal\":{*}}]}"; +// Boolean bucketPolicy = NCOSSUtil.setBucketPolicy(bucketName, policyText); +// if (!bucketPolicy) { +// return ResultUtil.error("设置桶策略失败"); +// } +// } +// //上传对象 +// String key = "image/driver/" + UUID.randomUUID().toString() + ".png"; +// String object = NCOSSUtil.putObject(bucketName, key, file.getInputStream()); +// if (null == object) { +// return ResultUtil.error("上传图片失败"); +// } +// +// return ResultUtil.success("http://" + QianYunTongProperties.endPoint + "/" + key); +// } catch (Exception e) { +// e.printStackTrace(); +// return ResultUtil.runErr(); +// } +// } } diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java index 83c1a67..6ac2b97 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java @@ -43,31 +43,29 @@ @Resource private LineShiftMapper lineShiftMapper; - + @Resource private LocationMapper locationMapper; - + @Autowired private DateUtil dateUtil; - + @Autowired private GDMapElectricFenceUtil gdMapElectricFenceUtil; - @Autowired - private RedisTemplate redisTemplate; - + @Resource + private RedisTemplate<String, Object> redisTemplate; + @Autowired private IOrderTaxiService orderTaxiService; - + @Autowired private IOrderPrivateCarService orderPrivateCarService; - + @Autowired private IOrderCrossCityService orderCrossCityService; - - - - + + /** * 根据线路id获取排班数据 * @param lineId diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java index 5f51f98..37c3447 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java @@ -34,6 +34,7 @@ import org.apache.commons.lang.time.DateFormatUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Isolation; @@ -41,9 +42,6 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.io.File; -import java.io.FileWriter; -import java.io.PrintWriter; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -109,49 +107,47 @@ @Resource private OrderPrivateCarMapper orderPrivateCarMapper; - + @Resource private OrderTaxiMapper orderTaxiMapper; - + @Resource private PhoneMapper phoneMapper; - + @Autowired private IOrderPositionService orderPositionService; - - @Autowired - private PushMinistryOfTransportUtil pushMinistryOfTransportUtil; - + + @Resource + private MongoTemplate mongoTemplate; + @Autowired private IOrderCancelService orderCancelService; - + @Autowired private GeodesyUtil geodesyUtil; - + @Autowired private PayMoneyUtil payMoneyUtil; - + @Autowired private IOrderAdditionalFeeService orderAdditionalFeeService; - @Autowired - private RedisTemplate redisTemplate; - + @Resource + private RedisTemplate<String, Object> redisTemplate; + @Autowired private IMerchantActivityService merchantActivityService; - + @Autowired private IMerchantActivitySlaveService merchantActivitySlaveService; - + @Autowired private IUserMerchantCouponService userMerchantCouponService; - + @Autowired private IMerchantCouponService merchantCouponService; @Autowired private QrCodeConfiguration qrCodeConfiguration; - @Value("${filePath}") - private String filePath; @Value("${pushMinistryOfTransport}") private boolean pushMinistryOfTransport; @@ -948,18 +944,8 @@ orderPosition.setInsertTime(new Date()); //将数据存储到文件中 List<OrderPosition> orderPositions = orderPositionService.queryPosition(orderCrossCity.getId(), 3); - File file = new File(filePath + orderCrossCity.getId() + "_3" + ".txt"); - if(!file.exists()){ - file.getParentFile().mkdirs(); - file.createNewFile(); - } - //写入相应的文件 - PrintWriter out = new PrintWriter(new FileWriter(file)); orderPositions.add(orderPosition); - System.err.println("存储新数据:" + JSON.toJSONString(orderPositions)); - out.write(JSON.toJSONString(orderPositions)); - out.flush(); - out.close(); + mongoTemplate.save(orderPositions); } } return false;//上层不需要处理 diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java index d03c013..d270062 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java @@ -48,28 +48,28 @@ @Autowired private ChinaMobileUtil chinaMobileUtil; - + @Autowired private PushUtil pushUtil; - + @Autowired private ISystemNoticeService systemNoticeService; - + @Autowired private IOrderLogisticsSpreadService orderLogisticsSpreadService; - @Autowired - private RedisTemplate redisTemplate; - + @Resource + private RedisTemplate<String, Object> redisTemplate; + @Autowired private ICompanyService companyService; - + @Autowired private IIncomeService incomeService; - + @Autowired private ALiSendSms aLiSendSms; - + @Resource private UserInfoMapper userInfoMapper; diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java index 938b103..aee5467 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java @@ -90,13 +90,14 @@ @Resource private CarServiceMapper carServiceMapper; - @Autowired - private RedisTemplate redisTemplate; + @Resource + private RedisTemplate<String, Object> redisTemplate; /** * 获取司机端首页订单列表 - * @param state 1=服务中,2=待服务(30分钟定义预约) + * + * @param state 1=服务中,2=待服务(30分钟定义预约) * @param driverId * @return * @throws Exception diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml index b38b84a..47e4a2a 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml @@ -80,74 +80,77 @@ <select id="queryByPhone" resultType="Driver"> - select - id as id, - account as account, - jobNumber as jobNumber, - phone as phone, - password as password, - name as name, - sex as sex, - idCard as idCard, - companyId as companyId, - franchiseeId as franchiseeId, - headImgUrl as headImgUrl, - faceImgUrl as faceImgUrl, - idCardImgUrl1 as idCardImgUrl1, - idCardImgUrl2 as idCardImgUrl2, - placeOfEmployment as placeOfEmployment, - birthday as birthday, - bankCardNumber as bankCardNumber, - driverNationality as driverNationality, - driverNation as driverNation, - driverMaritalStatus as driverMaritalStatus, - driverLanguageLevel as driverLanguageLevel, - driverEducation as driverEducation, - driverCensus as driverCensus, - driverAddress as driverAddress, - driverContactAddress as driverContactAddress, - driverAge as driverAge, - driveCard as driveCard, - driveCardImgUrl as driveCardImgUrl, - driverType as driverType, - getDriverLicenseDate as getDriverLicenseDate, - driverLicenseOn as driverLicenseOn, - driverLicenseOff as driverLicenseOff, - taxiDriver as taxiDriver, - taxiAptitudeCard as taxiAptitudeCard, - networkCarlssueImg as networkCarlssueImg, - networkCarlssueOrganization as networkCarlssueOrganization, - networkCarlssueDate as networkCarlssueDate, - getNetworkCarProofDate as getNetworkCarProofDate, - networkCarProofOn as networkCarProofOn, - networkCarProofOff as networkCarProofOff, - registerDate as registerDate, - fullTimeDriver as fullTimeDriver, - inDriverBlacklist as inDriverBlacklist, - commercialType as commercialType, - contractCompany as contractCompany, - contractOn as contractOn, - contractOff as contractOff, - emergencyContact as emergencyContact, - emergencyContactPhone as emergencyContactPhone, - emergencyContactAddress as emergencyContactAddress, - remark as remark, - isPlatCar as isPlatCar, - carId as carId, - authState as authState, - state as state, - addType as addType, - balance as balance, - activityMoney as activityMoney, - laveActivityMoney as laveActivityMoney, - businessMoney as businessMoney, - laveBusinessMoney as laveBusinessMoney, - flag as flag, - insertTime as insertTime, - insertUser as insertUser, - updateTime as updateTime, - updateUser as updateUser - from t_driver where flag != 3 and authState != 4 and phone = #{phone} + select id as id, + account as account, + jobNumber as jobNumber, + phone as phone, + password as password, + name as name, + sex as sex, + idCard as idCard, + companyId as companyId, + franchiseeId as franchiseeId, + headImgUrl as headImgUrl, + faceImgUrl as faceImgUrl, + idCardImgUrl1 as idCardImgUrl1, + idCardImgUrl2 as idCardImgUrl2, + placeOfEmployment as placeOfEmployment, + birthday as birthday, + bankCardNumber as bankCardNumber, + driverNationality as driverNationality, + driverNation as driverNation, + driverMaritalStatus as driverMaritalStatus, + driverLanguageLevel as driverLanguageLevel, + driverEducation as driverEducation, + driverCensus as driverCensus, + driverAddress as driverAddress, + driverContactAddress as driverContactAddress, + driverAge as driverAge, + driveCard as driveCard, + driveCardImgUrl as driveCardImgUrl, + driverType as driverType, + getDriverLicenseDate as getDriverLicenseDate, + driverLicenseOn as driverLicenseOn, + driverLicenseOff as driverLicenseOff, + taxiDriver as taxiDriver, + taxiAptitudeCard as taxiAptitudeCard, + networkCarlssueImg as networkCarlssueImg, + networkCarlssueOrganization as networkCarlssueOrganization, + networkCarlssueDate as networkCarlssueDate, + getNetworkCarProofDate as getNetworkCarProofDate, + networkCarProofOn as networkCarProofOn, + networkCarProofOff as networkCarProofOff, + registerDate as registerDate, + fullTimeDriver as fullTimeDriver, + inDriverBlacklist as inDriverBlacklist, + commercialType as commercialType, + contractCompany as contractCompany, + contractOn as contractOn, + contractOff as contractOff, + emergencyContact as emergencyContact, + emergencyContactPhone as emergencyContactPhone, + emergencyContactAddress as emergencyContactAddress, + remark as remark, + isPlatCar as isPlatCar, + carId as carId, + authState as authState, + state as state, + addType as addType, + balance as balance, + activityMoney as activityMoney, + laveActivityMoney as laveActivityMoney, + businessMoney as businessMoney, + laveBusinessMoney as laveBusinessMoney, + flag as flag, + insertTime as insertTime, + insertUser as insertUser, + updateTime as updateTime, + updateUser as updateUser, + empId, + enterId, + entercode + from t_driver + where flag != 3 and authState != 4 and phone = #{phone} </select> diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/OrderPosition.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/OrderPosition.java index 9b07899..f16917d 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/OrderPosition.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/OrderPosition.java @@ -1,148 +1,50 @@ package com.stylefeng.guns.modular.system.model; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableName; -import com.baomidou.mybatisplus.enums.IdType; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.data.mongodb.core.mapping.Document; import java.util.Date; /** * 订单坐标信息表 + * + * @author Pu Zhibing */ -@TableName("t_order_position") +@Data +@Document(collection = "order_position") public class OrderPosition { - /** - * 主键 - */ - @TableId(value = "id", type = IdType.AUTO) - @TableField("id") - private Integer id; /** * 订单类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城,6=包车) */ - @TableField("orderType") private Integer orderType; /** * 订单id */ - @TableField("orderId") private Integer orderId; /** * 司机id */ - @TableField("driverId") private Integer driverId; /** * 经度 */ - @TableField("lon") private String lon; /** * 纬度 */ - @TableField("lat") private String lat; /** * 方向角 */ - @TableField("directionAngle") private String directionAngle; /** * 海拔 */ - @TableField("altitude") private String altitude; /** * 添加时间 */ - @TableField("insertTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date insertTime; - - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - public Integer getOrderType() { - return orderType; - } - - public void setOrderType(Integer orderType) { - this.orderType = orderType; - } - - public Integer getOrderId() { - return orderId; - } - - public void setOrderId(Integer orderId) { - this.orderId = orderId; - } - - public Integer getDriverId() { - return driverId; - } - - public void setDriverId(Integer driverId) { - this.driverId = driverId; - } - - public String getLon() { - return lon; - } - - public void setLon(String lon) { - this.lon = lon; - } - - public String getLat() { - return lat; - } - - public void setLat(String lat) { - this.lat = lat; - } - - public String getDirectionAngle() { - return directionAngle; - } - - public void setDirectionAngle(String directionAngle) { - this.directionAngle = directionAngle; - } - - public String getAltitude() { - return altitude; - } - - public void setAltitude(String altitude) { - this.altitude = altitude; - } - - public Date getInsertTime() { - return insertTime; - } - - public void setInsertTime(Date insertTime) { - this.insertTime = insertTime; - } - - @Override - public String toString() { - return "OrderPosition{" + - "id=" + id + - ", orderType=" + orderType + - ", orderId=" + orderId + - ", driverId=" + driverId + - ", lon='" + lon + '\'' + - ", lat='" + lat + '\'' + - ", directionAngle='" + directionAngle + '\'' + - ", altitude='" + altitude + '\'' + - ", insertTime=" + insertTime + - '}'; - } } diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java index 51414dd..641980f 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java @@ -85,8 +85,8 @@ @Resource private DriverOrdersMapper driverOrdersMapper; - @Autowired - private RedisTemplate redisTemplate; + @Resource + private RedisTemplate<String, Object> redisTemplate; @Autowired private ALiSendSms aLiSendSms; diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/NettyServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/NettyServiceImpl.java index 97ae294..6776c1e 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/NettyServiceImpl.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/NettyServiceImpl.java @@ -33,28 +33,28 @@ @Service public class NettyServiceImpl implements INettyService { - + @Resource private DriverWorkMapper driverWorkMapper; - + @Resource private PushOrderMapper pushOrderMapper; - + @Resource private PushAuxiliaryMapper pushAuxiliaryMapper; - @Autowired - private RedisTemplate redisTemplate; - + @Resource + private RedisTemplate<String, Object> redisTemplate; + @Autowired private IOrderTaxiService orderTaxiService; - + @Autowired private GDMapElectricFenceUtil gdMapElectricFenceUtil; - + @Autowired private IOrderPositionService orderPositionService; - + @Autowired private IDriverOrdersService driverOrdersService; diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderPositionServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderPositionServiceImpl.java index 5b4006b..d55a2b6 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderPositionServiceImpl.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderPositionServiceImpl.java @@ -1,50 +1,46 @@ package com.stylefeng.guns.modular.system.service.impl; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.system.dao.OrderPositionMapper; import com.stylefeng.guns.modular.system.model.OrderPosition; import com.stylefeng.guns.modular.system.service.IOrderPositionService; import com.stylefeng.guns.modular.system.service.IOrderService; -import com.stylefeng.guns.modular.system.util.GDMapElectricFenceUtil; import com.stylefeng.guns.modular.system.util.PushMinistryOfTransportUtil; -import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Sort; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.io.*; -import java.util.ArrayList; import java.util.Date; import java.util.List; -import java.util.Map; @Service public class OrderPositionServiceImpl extends ServiceImpl<OrderPositionMapper, OrderPosition> implements IOrderPositionService { - + @Resource private OrderPositionMapper orderPositionMapper; - + @Autowired private IOrderService orderService; - + @Autowired private PushMinistryOfTransportUtil pushMinistryOfTransportUtil; - - @Value("${filePath}") - private String filePath; - + + @Resource + private MongoTemplate mongoTemplate; + @Value("${pushMinistryOfTransport}") private boolean pushMinistryOfTransport; - - - + + /** * 添加数据 + * * @param orderPosition * @throws Exception */ @@ -57,21 +53,8 @@ orderPosition.setInsertTime(new Date()); //将数据存储到文件中 List<OrderPosition> orderPositions = this.queryPosition(orderPosition.getOrderId(), orderPosition.getOrderType()); - File file = new File(filePath + orderPosition.getOrderId() + "_" + orderPosition.getOrderType() + ".txt"); - if(!file.exists()){ - file.getParentFile().mkdirs(); - file.createNewFile(); - file.setReadable(true, false);//设置读取权限 - file.setWritable(true, false);//设置写入权限 - - } - //写入相应的文件 - PrintWriter out = new PrintWriter(new FileWriter(file)); orderPositions.add(orderPosition); - System.err.println("存储新数据:" + JSON.toJSONString(orderPositions)); - out.write(JSON.toJSONString(orderPositions)); - out.flush(); - out.close(); + mongoTemplate.save(orderPositions); } new Thread(new Runnable() { @@ -99,35 +82,22 @@ List<OrderPosition> orderPositions = this.queryPosition(orderId, orderType); return orderPositions.size() > 0 ? orderPositions.get(orderPositions.size() - 1) : null; } - - + + /** * 获取坐标文件中的坐标数据 + * * @param orderId * @param orderType * @return * @throws Exception */ @Override - public List<OrderPosition> queryPosition(Integer orderId, Integer orderType) throws Exception{ - //将数据存储到文件中 - File file = new File(filePath + orderId + "_" + orderType + ".txt"); - if(!file.exists()){ - return new ArrayList<>(); - } - //读取文件(字符流) - BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8")); - //循环取出数据 - String str = null; - StringBuffer sb = new StringBuffer(); - while ((str = in.readLine()) != null) { - sb.append(str); - } - List<OrderPosition> list = new ArrayList<>(); - if(ToolUtil.isNotEmpty(sb.toString())){ - list = JSONArray.parseArray(sb.toString(), OrderPosition.class); - } - System.err.println("坐标:" + sb); - return list; + public List<OrderPosition> queryPosition(Integer orderId, Integer orderType) throws Exception { + Query query = new Query() + .addCriteria(Criteria.where("orderId").is(orderId).and("orderType").is(orderType)) + .with(new Sort(Sort.Direction.ASC, "insertTime")); + List<OrderPosition> positions = mongoTemplate.find(query, OrderPosition.class); + return positions; } } diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java index c56d645..39a7c06 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java @@ -54,28 +54,28 @@ @Autowired private GDMapGeocodingUtil gdMapGeocodingUtil; - + @Autowired private IDriverService driverService; - + @Autowired private TaskUtil taskUtil; - + @Autowired private ChinaMobileUtil chinaMobileUtil; - @Autowired - private RedisTemplate redisTemplate; - + @Resource + private RedisTemplate<String, Object> redisTemplate; + @Autowired private PushUtil pushUtil; - + @Autowired private IOrderPrivateCarService orderPrivateCarService; - + @Autowired private IOrderCrossCityService orderCrossCityService; - + @Autowired private IOrderLogisticsService orderLogisticsService; diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushMinistryOfTransportUtil.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushMinistryOfTransportUtil.java index 1cb9de2..4330603 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushMinistryOfTransportUtil.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushMinistryOfTransportUtil.java @@ -39,28 +39,28 @@ @Resource private SystemPriceMapper systemPriceMapper; - + @Autowired private IDriverService driverService; - + @Autowired private IOrderPositionService orderPositionService; - + @Autowired private GDMapElectricFenceUtil gdMapElectricFenceUtil; - @Autowired - private RedisTemplate redisTemplate; - + @Resource + private RedisTemplate<String, Object> redisTemplate; + @Resource private ServerCarModelMapper serverCarModelMapper; - + @Autowired private ITransactionDetailsService transactionDetailsService; - + @Autowired private GeodesyUtil geodesyUtil; - + private String path = "http://120.77.11.218:8868/"; diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java index b0cea43..a7e58bf 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java @@ -1,5 +1,8 @@ package com.stylefeng.guns.modular.system.util; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.stylefeng.guns.core.util.ToolUtil; @@ -13,12 +16,8 @@ import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; import java.math.BigDecimal; @@ -46,29 +45,31 @@ @Autowired private IOrderPrivateCarService orderPrivateCarService; - + @Autowired private IOrderCrossCityService orderCrossCityService; @Autowired private RedisTemplate redisTemplate; - + @Autowired private IOrderLogisticsService orderLogisticsService; - + private Map<String, Timer> taskMap = new HashMap<>();//存储定时推送的定时器 - - - + + private final String socket_uri = "http://172.21.35.142:6000"; + + /** * 推送订单状态 - * @param type 1=用户,2=司机 - * @param uid 对象id - * @param orderId 订单id - * @param orderType 订单类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城,6=包车) - * @param state 订单状态(1=待接单,2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,8=待评价,9=已完成,10=已取消,11=改派中) + * + * @param type 1=用户,2=司机 + * @param uid 对象id + * @param orderId 订单id + * @param orderType 订单类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城,6=包车) + * @param state 订单状态(1=待接单,2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,8=待评价,9=已完成,10=已取消,11=改派中) */ - public void pushOrderState(Integer type, Integer uid, Integer orderId, Integer orderType, Integer state){ + public void pushOrderState(Integer type, Integer uid, Integer orderId, Integer orderType, Integer state) { JSONObject jsonObject = new JSONObject(); jsonObject.put("code", 200); jsonObject.put("msg", "SUCCESS"); @@ -78,22 +79,26 @@ map.put("orderType", orderType); map.put("state", state); jsonObject.put("data", map); - + //调用推送 - HttpHeaders headers = new HttpHeaders(); - // 以表单的方式提交 - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + HttpRequest post = HttpUtil.createPost(socket_uri + "/netty/sendMsgToClient"); + post.header("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE); //将请求头部和参数合成一个请求 - MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); - params.add("msg", jsonObject.toJSONString()); - params.add("id", String.valueOf(uid)); - params.add("type", String.valueOf(type)); - HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers); - String s = internalRestTemplate.postForObject("http://zuul-gateway/netty/sendMsgToClient",requestEntity , String.class); - JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class); - if(jsonObject1.getIntValue("code") != 200){ - System.err.println(jsonObject1.getString("msg")); + Map<String, Object> params = new HashMap<>(); + params.put("msg", jsonObject.toJSONString()); + params.put("id", uid); + params.put("type", type); + post.form(params); + HttpResponse execute = post.execute(); + if (200 != execute.getStatus()) { + System.err.println("推送异常"); + } else { + JSONObject jsonObject1 = JSON.parseObject(execute.body(), JSONObject.class); + if (jsonObject1.getIntValue("code") != 200) { + System.err.println(jsonObject1.getString("msg")); + } } + } @@ -113,22 +118,24 @@ map.put("orderId", orderId); map.put("orderType", orderType); jsonObject.put("data", map); - + //调用推送 - HttpHeaders headers = new HttpHeaders(); - // 以表单的方式提交 - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + HttpRequest post = HttpUtil.createPost(socket_uri + "/netty/sendMsgToClient"); + post.header("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE); //将请求头部和参数合成一个请求 - MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); - params.add("msg", jsonObject.toJSONString()); - params.add("id", String.valueOf(uid)); - params.add("type", type.toString()); - HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers); - String s = internalRestTemplate.postForObject("http://zuul-gateway/netty/sendMsgToClient",requestEntity , String.class); - System.out.println("result:"+s); - JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class); - if(jsonObject1.getIntValue("code") != 200){ - System.err.println(jsonObject1.getString("msg")); + Map<String, Object> params = new HashMap<>(); + params.put("msg", jsonObject.toJSONString()); + params.put("id", uid); + params.put("type", type); + post.form(params); + HttpResponse execute = post.execute(); + if (200 != execute.getStatus()) { + System.err.println("推送异常"); + } else { + JSONObject jsonObject1 = JSON.parseObject(execute.body(), JSONObject.class); + if (jsonObject1.getIntValue("code") != 200) { + System.err.println(jsonObject1.getString("msg")); + } } } @@ -336,31 +343,35 @@ map.put("laveMileage", d);//距离终点剩余未服务的里程数 map.put("laveTime", t);//距离终端剩余未服务的预计时间 } - + } - + msg.put("data", map); - - //调用推送 - HttpHeaders headers = new HttpHeaders(); - // 以表单的方式提交 - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); - //将请求头部和参数合成一个请求 + String value1 = (String) redisTemplate.opsForValue().get(orderId + "_" + orderType); - if(ToolUtil.isEmpty(value1)){ + if (ToolUtil.isEmpty(value1)) { this.removeTask(orderId, orderType); return; } JSONObject jsonObject = JSON.parseObject(value1); - MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); - params.add("msg", msg.toJSONString()); - params.add("id", jsonObject.getString("id")); - params.add("type", jsonObject.getString("type")); - HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers); - String s = internalRestTemplate.postForObject("http://zuul-gateway/netty/sendMsgToClient",requestEntity , String.class); - JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class); - if(jsonObject1.getIntValue("code") != 200){ - System.err.println(jsonObject1.getString("msg")); + + //调用推送 + HttpRequest post = HttpUtil.createPost(socket_uri + "/netty/sendMsgToClient"); + post.header("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE); + //将请求头部和参数合成一个请求 + Map<String, Object> params = new HashMap<>(); + params.put("msg", msg.toJSONString()); + params.put("id", jsonObject.getIntValue("id")); + params.put("type", jsonObject.getIntValue("type")); + post.form(params); + HttpResponse execute = post.execute(); + if (200 != execute.getStatus()) { + System.err.println("推送异常"); + } else { + JSONObject jsonObject1 = JSON.parseObject(execute.body(), JSONObject.class); + if (jsonObject1.getIntValue("code") != 200) { + System.err.println(jsonObject1.getString("msg")); + } } } @@ -371,27 +382,30 @@ * @param id * @param type */ - public void pushOffline(Integer id, Integer type){ + public void pushOffline(Integer id, Integer type) { JSONObject msg = new JSONObject(); msg.put("code", 200); msg.put("msg", "SUCCESS"); msg.put("method", "OFFLINE"); msg.put("data", new Object()); - + //调用推送 - HttpHeaders headers = new HttpHeaders(); - // 以表单的方式提交 - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + HttpRequest post = HttpUtil.createPost(socket_uri + "/netty/sendMsgToClient"); + post.header("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE); //将请求头部和参数合成一个请求 - MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); - params.add("msg", msg.toJSONString()); - params.add("id", id.toString()); - params.add("type", type.toString()); - HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers); - String s = internalRestTemplate.postForObject("http://zuul-gateway/netty/sendMsgToClient",requestEntity , String.class); - JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class); - if(jsonObject1.getIntValue("code") != 200){ - System.err.println(jsonObject1.getString("msg")); + Map<String, Object> params = new HashMap<>(); + params.put("msg", msg.toJSONString()); + params.put("id", id); + params.put("type", type); + post.form(params); + HttpResponse execute = post.execute(); + if (200 != execute.getStatus()) { + System.err.println("推送异常"); + } else { + JSONObject jsonObject1 = JSON.parseObject(execute.body(), JSONObject.class); + if (jsonObject1.getIntValue("code") != 200) { + System.err.println(jsonObject1.getString("msg")); + } } } @@ -416,21 +430,24 @@ map.put("orderType", orderType); map.put("state", state); jsonObject.put("data", map); - + //调用推送 - HttpHeaders headers = new HttpHeaders(); - // 以表单的方式提交 - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + HttpRequest post = HttpUtil.createPost(socket_uri + "/netty/sendMsgToClient"); + post.header("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE); //将请求头部和参数合成一个请求 - MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); - params.add("msg", jsonObject.toJSONString()); - params.add("id", String.valueOf(uid)); - params.add("type", String.valueOf(type)); - HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers); - String s = internalRestTemplate.postForObject("http://zuul-gateway/netty/sendMsgToClient",requestEntity , String.class); - JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class); - if(jsonObject1.getIntValue("code") != 200){ - System.err.println(jsonObject1.getString("msg")); + Map<String, Object> params = new HashMap<>(); + params.put("msg", jsonObject.toJSONString()); + params.put("id", uid); + params.put("type", type); + post.form(params); + HttpResponse execute = post.execute(); + if (200 != execute.getStatus()) { + System.err.println("推送异常"); + } else { + JSONObject jsonObject1 = JSON.parseObject(execute.body(), JSONObject.class); + if (jsonObject1.getIntValue("code") != 200) { + System.err.println(jsonObject1.getString("msg")); + } } } @@ -453,21 +470,24 @@ map.put("orderType", orderType); map.put("money", money); jsonObject.put("data", map); - + //调用推送 - HttpHeaders headers = new HttpHeaders(); - // 以表单的方式提交 - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + HttpRequest post = HttpUtil.createPost(socket_uri + "/netty/sendMsgToClient"); + post.header("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE); //将请求头部和参数合成一个请求 - MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); - params.add("msg", jsonObject.toJSONString()); - params.add("id", String.valueOf(uid)); - params.add("type", String.valueOf(type)); - HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers); - String s = internalRestTemplate.postForObject("http://zuul-gateway/netty/sendMsgToClient",requestEntity , String.class); - JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class); - if(jsonObject1.getIntValue("code") != 200){ - System.err.println(jsonObject1.getString("msg")); + Map<String, Object> params = new HashMap<>(); + params.put("msg", jsonObject.toJSONString()); + params.put("id", uid); + params.put("type", type); + post.form(params); + HttpResponse execute = post.execute(); + if (200 != execute.getStatus()) { + System.err.println("推送异常"); + } else { + JSONObject jsonObject1 = JSON.parseObject(execute.body(), JSONObject.class); + if (jsonObject1.getIntValue("code") != 200) { + System.err.println(jsonObject1.getString("msg")); + } } } diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EmployeeUtil.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EmployeeUtil.java index 2366416..60c54be 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EmployeeUtil.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EmployeeUtil.java @@ -64,7 +64,7 @@ log.error("【企业增加员工】失败:" + object.toJSONString()); throw new RuntimeException("【企业增加员工】失败:" + object.toJSONString()); } - SaveStaffNode saveStaffNode = jsonObject.getObject("object", SaveStaffNode.class); + SaveStaffNode saveStaffNode = jsonObject.getObject("data", SaveStaffNode.class); return saveStaffNode; } @@ -193,13 +193,13 @@ String retCode = jsonObject.getString("retCode"); if (!"0".equals(retCode)) { log.error("【根据员工ID获取人员信息】请求失败:" + result); - throw new RuntimeException("【根据员工ID获取人员信息】请求失败:" + result); + return null; } JSONObject object = jsonObject.getJSONObject("object"); String status = object.getString("status"); if (!"0".equals(status)) { log.error("【根据员工ID获取人员信息】失败:" + object.toJSONString()); - throw new RuntimeException("【根据员工ID获取人员信息】失败:" + object.toJSONString()); + return null; } StaffNodeInfo staffNodeInfo = object.getObject("data", StaffNodeInfo.class); return staffNodeInfo; diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EnterpriseUtil.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EnterpriseUtil.java index bdc9694..a5d5d88 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EnterpriseUtil.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EnterpriseUtil.java @@ -58,13 +58,13 @@ String retCode = jsonObject.getString("retCode"); if (!"0".equals(retCode)) { log.error("【根据社会信用代码判断企业是否已存在】请求失败:" + result); - throw new RuntimeException("【根据社会信用代码判断企业是否已存在】请求失败:" + result); + return null; } JSONObject object = jsonObject.getJSONObject("object"); String status = object.getString("status"); if (!"0".equals(status)) { log.error("【根据社会信用代码判断企业是否已存在】失败:" + object.toJSONString()); - throw new RuntimeException("【根据社会信用代码判断企业是否已存在】失败:" + object.toJSONString()); + return null; } return jsonObject.getObject("object", CheckEnterExist.class); } @@ -104,13 +104,13 @@ String retCode = jsonObject.getString("retCode"); if (!"0".equals(retCode)) { log.error("【根据企业名称判断企业是否已存在】请求失败:" + result); - throw new RuntimeException("【根据企业名称判断企业是否已存在】请求失败:" + result); + return null; } JSONObject object = jsonObject.getJSONObject("object"); String status = object.getString("status"); if (!"0".equals(status)) { log.error("【根据企业名称判断企业是否已存在】失败:" + object.toJSONString()); - throw new RuntimeException("【根据企业名称判断企业是否已存在】失败:" + object.toJSONString()); + return null; } return jsonObject.getObject("object", CheckEnterExist.class); } @@ -150,13 +150,13 @@ String retCode = jsonObject.getString("retCode"); if (!"0".equals(retCode)) { log.error("【查询企业详情】请求失败:" + result); - throw new RuntimeException("【查询企业详情】请求失败:" + result); + return null; } JSONObject object = jsonObject.getJSONObject("object"); String status = object.getString("status"); if (!"0".equals(status)) { log.error("【查询企业详情】失败:" + object.toJSONString()); - throw new RuntimeException("【查询企业详情】失败:" + object.toJSONString()); + return null; } EnterpriseInfo enterpriseInfo = jsonObject.getObject("object", EnterpriseInfo.class); return enterpriseInfo; @@ -197,11 +197,148 @@ String status = jsonObject.getString("status"); if (!"0".equals(status)) { log.error("【修改企业基本信息】请求失败:" + result); - return false; + throw new RuntimeException("【修改企业基本信息】请求失败:" + result); } return true; } + /** + * 删除企业信息 + * + * @param enterNum 企业编号 + * @param operator 管理员手机号码 + * @return + */ + public static boolean delEnterprise(String enterNum, String operator) { + //请求路径 + String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/delCompany"; + //私钥文件 + String skprivateKeyFile = QianYunTongProperties.privateKeyPath; + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = QianYunTongProperties.appkey;//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(), QianYunTongProperties.userName); + map.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); + map.put("content", "{\"enterNum\":\"" + enterNum + "\",\"operator\":\"" + operator + "\"}"); + + 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 true; + } + + public static void main(String[] args) { +// CreateEnterpriseRequest request = new CreateEnterpriseRequest(); +// request.setName("成都喜望科技有限公司"); +// request.setNickName("成都喜望"); +// request.setIndustry_code("123456789"); +// request.setMobile("18200000000"); +// request.setMobileFlag("1"); +// EnterpriseUtil.createEnterprise(request); + +// EnterpriseUtil.delEnterprise("981100006005878", "15828353127"); + + + //短信 +// SMSUtil.sendVerifyCode("15828353127"); + +// CheckEnterExist checkEnterNameExist = EnterpriseUtil.checkEnterNameExist("成都喜望科技有限公司"); + +// EnterpriseInfo enterpriseDetail = EnterpriseUtil.getEnterpriseDetail(checkEnterNameExist.getEnterCode()); +// System.out.println(enterpriseDetail); + +// List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone("15828353127", "981100006005878"); + +// RegisterViaMobileRequest request = new RegisterViaMobileRequest(); +// request.setMobile("15828353126"); +// request.setPassword("123456"); +// request.setNickname("测试"); +// request.setVerify_code("1111"); +// request.setVerify_code_type("1"); +// RegisterViaMobile registerViaMobile = UserUtil.registerViaMobile(request); + +// ModifyPwdRequest request = new ModifyPwdRequest(); +// request.setMobile("15828353126"); +// request.setOldPwd("111111"); +// request.setNewPwd("654321"); +// request.setCode("1111"); +// UserUtil.modifyPwd(request); + +// ResetPwdRequest request = new ResetPwdRequest(); +// request.setMobile("15828353126"); +// request.setPassword("654321"); +// request.setCode("1111"); +// UserUtil.resetPwd(request); + +// SaveStaffNodeRequest request = new SaveStaffNodeRequest(); +// request.setMobile("15828353127"); +// request.setEntercode("981100006005878"); +// request.setEmpName("超级管理员"); +// request.setEmpNickname("超级管理员"); +// request.setLoginNo("18200000000"); +// request.setEmpSex("男"); +// request.setMphone("18200000000"); +// request.setEmail("sn93@qq.com"); +// request.setDeptId(0); +// request.setPositionId(1); +// request.setSuperLevel(0); +// request.setHideMobile(0); +// EmployeeUtil.saveStaffNode(request); + + //接口参数有问题 + EditStaffNodeRequest request = new EditStaffNodeRequest(); + request.setEmpId(11448071); + request.setMobile("15828353127"); + request.setEntercode("981100006005901"); + request.setEnterId(981100006005901L); + request.setEmpName("蒲师傅"); + request.setEmpNickname("蒲师傅"); + request.setLoginNo("15828353127"); + request.setMphone("15828353127"); + request.setEmail("393733352@qq.com"); + request.setEmpSex("男"); + request.setDeptId(0); + request.setPositionId(1); + request.setSuperLevel(0); + request.setHideMobile(0); + EmployeeUtil.editStaffNode(request); + + +// GetStaffNodeRequest request = new GetStaffNodeRequest(); +// request.setEmpId(11448036L); +// request.setMobile("15828353127"); +// request.setEntercode("981100006005878"); +// EmployeeUtil.getStaffNode(request); + + +// DeleteStafNodeRequest request = new DeleteStafNodeRequest(); +// request.setEmpId(11448036); +// request.setMobile("15828353127"); +// request.setEntercode("981100006005878"); +// EmployeeUtil.ecrmDeleteStafNode(request); + } /** * 创建企业 @@ -216,7 +353,6 @@ String skprivateKeyFile = QianYunTongProperties.privateKeyPath; //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 String appKey = QianYunTongProperties.appkey;//appkey - String content = "";//业务参数 Map<String, String> headers = new HashMap<>(); headers.put("Content-Type", "application/json"); Map<String, Object> map = new HashMap<String, Object>(); @@ -239,13 +375,13 @@ String retCode = jsonObject.getString("retCode"); if (!"0".equals(retCode)) { log.error("【创建企业】请求失败:" + result); - return null; + throw new RuntimeException("【创建企业】请求失败:" + result); } JSONObject object = jsonObject.getJSONObject("object"); String status = object.getString("status"); if (!"0".equals(status)) { - log.error("【创建企业】请求失败:" + result); - return null; + log.error("【创建企业】请求失败:" + object.toJSONString()); + throw new RuntimeException("【创建企业】请求失败:" + object.toJSONString()); } return object.getObject("data", CreateEnterprise.class); } diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/NCOSSUtil.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/NCOSSUtil.java new file mode 100644 index 0000000..0d30226 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/NCOSSUtil.java @@ -0,0 +1,240 @@ +//package com.stylefeng.guns.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 lombok.extern.slf4j.Slf4j; +// +//import java.io.InputStream; +// +///** +// * OSS 工具类 +// * @author zhibing.pu +// * @Date 2025/6/23 17:50 +// */ +//@Slf4j +//public class NCOSSUtil { +// +// /** +// * 创建桶 +// * @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(QianYunTongProperties.endPoint, QianYunTongProperties.account, QianYunTongProperties.accessKey, QianYunTongProperties.secretKey); +// 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(QianYunTongProperties.endPoint, QianYunTongProperties.account, QianYunTongProperties.accessKey, QianYunTongProperties.secretKey); +// 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(QianYunTongProperties.endPoint, QianYunTongProperties.account, QianYunTongProperties.accessKey, QianYunTongProperties.secretKey); +// 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(QianYunTongProperties.endPoint, QianYunTongProperties.account, QianYunTongProperties.accessKey, QianYunTongProperties.secretKey); +// // 桶策略字符串 +// 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(QianYunTongProperties.endPoint, QianYunTongProperties.account, QianYunTongProperties.accessKey, QianYunTongProperties.secretKey); +// 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(QianYunTongProperties.endPoint, QianYunTongProperties.account, QianYunTongProperties.accessKey, QianYunTongProperties.secretKey); +// 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(QianYunTongProperties.endPoint, QianYunTongProperties.account, QianYunTongProperties.accessKey, QianYunTongProperties.secretKey); +// 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/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongProperties.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongProperties.java index 270c01c..26212d6 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongProperties.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongProperties.java @@ -2,10 +2,23 @@ /** * 黔云通配置 + * * @author zhibing.pu * @Date 2025/6/6 15:03 */ public interface QianYunTongProperties { + /** + * 小程序appId + */ + String appId = "wxcc3c9058e2b294db"; + /** + * + */ + String encryptedData = "645HaSm7meo0GLKQZZvagq3JkWZXYlOfvhf8YKqNjWklpzx3IjM2S/wkmlUOz/iPvDVYRgBD2+V1WCHT6fMbOjJnR/0W9bwVGOSSaoyYpZdPR5x8f/6OR1B3e3qfJWFKJf0Za4n9JJTwStCTuMHWRIE0IgYtj3zSb2WI1AzDyLeR7MMgW0q+red2ujtrKGR4pe0NoXB2qZKHj4whBuGUiw=="; + /** + * + */ + String iv = "Zz2ZL9Yu43pp38p5CcocJA=="; /** * appkey */ @@ -13,7 +26,7 @@ /** * 私钥地址 */ - String privateKeyPath = "E:\\IDEA Workspace\\QianYunTong\\private_key_test.pem"; + String privateKeyPath = "/root/server/app/key/private_key_test.pem"; /** * 消费者账号 */ @@ -28,4 +41,20 @@ * API地址 */ String apiUrl = "https://test-zhongtai.stqcloud.com:10070"; + /** + * HOS的基础路径(公共前缀) + */ + String endPoint = "119.4.112.68:27741"; + /** + * 账户的ID + */ + String account = "d8bef0a04db511f0b79d01a3e2b7587e"; + /** + * 向UAAS服务请求到的access_key + */ + String accessKey = "TYMFTFD5SIIT15DCCUD7"; + /** + * 向UAAS服务请求到的secret_key + */ + String secretKey = "AoI1dkH3yoAvXoaQlREO3ed9mwQJFluLTliS9T1z"; } diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/UserUtil.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/UserUtil.java index 6dfe5af..0bcc9f9 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/UserUtil.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/UserUtil.java @@ -1,11 +1,15 @@ package com.stylefeng.guns.modular.system.util.qianyuntong; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.google.gson.Gson; import com.open.common.util.OpenApiClient; import com.open.common.util.SystemParameterNames; +import com.stylefeng.guns.modular.system.util.UUIDUtil; import com.stylefeng.guns.modular.system.util.qianyuntong.model.*; import lombok.extern.slf4j.Slf4j; @@ -25,12 +29,11 @@ /** * 根据手机号码获取人员信息 * - * @param mobile 手机号码 - * @param enterNum 企业编号 + * @param mobile 手机号码 */ - public static List<QYTUserInfo> getUserInfoByPhone(String mobile, String enterNum) { + public static List<QYTUserInfo> getUserInfoByPhone(String mobile) { //请求路径 - String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/getUserInfoByPhone"; + String url = QianYunTongProperties.apiUrl + "/openapi/rest/2.0/queryUserinfoByMobilev2"; //私钥文件 String skprivateKeyFile = QianYunTongProperties.privateKeyPath; //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 @@ -47,27 +50,26 @@ contentMap.put(SystemParameterNames.getMessage_id(), messageId); contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName); contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); - contentMap.put("content", "{\"mobile\":\"" + mobile + "\",\"enterNum\":\"" + enterNum + "\"}"); - log.info("【根据手机号和企业编号查询用户信息】请求地址:" + url); - log.info("【根据手机号和企业编号查询用户信息】请求参数:" + JSON.toJSONString(contentMap)); + contentMap.put("content", "{\"list\":[{\"mobile\":\"" + mobile + "\"}]}"); + log.info("【根据手机号码获取人员信息】请求地址:" + url); + log.info("【根据手机号码获取人员信息】请求参数:" + JSON.toJSONString(contentMap)); String result = OpenApiClient.sendCommonHttpRequst(url, headers, "GET", skprivateKeyFile, timeStamp, contentMap); - log.info("【根据手机号和企业编号查询用户信息】请求结果:" + result); + log.info("【根据手机号码获取人员信息】请求结果:" + result); JSONObject jsonObject = JSON.parseObject(result); String retCode = jsonObject.getString("retCode"); if (!"0".equals(retCode)) { - log.error("【根据手机号和企业编号查询用户信息】请求失败:" + result); - throw new RuntimeException("【根据手机号和企业编号查询用户信息】请求失败:" + result); + log.error("【根据手机号码获取人员信息】请求失败:" + result); + return null; } JSONObject object = jsonObject.getJSONObject("object"); String status = object.getString("status"); if (!"0".equals(status)) { - log.error("【根据手机号和企业编号查询用户信息】失败:" + object.toJSONString()); - throw new RuntimeException("【根据手机号和企业编号查询用户信息】失败:" + object.toJSONString()); + log.error("【根据手机号码获取人员信息】失败:" + object.toJSONString()); + return null; } - JSONArray data = object.getJSONArray("data"); + JSONArray data = object.getJSONObject("data").getJSONArray("list"); 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); } @@ -211,4 +213,45 @@ } return true; } + + + /** + * 微信小程序登录 + * + * @param code + * @return + */ + public static LoginWeChatXiao loginWeChatXiao(String code) { + HttpRequest post = HttpUtil.createPost("https://casme.teamshub.com/webapp-backstage/ajax/loginWeChatXiao/v1.0"); + post.header("Content-Type", "text/plain;charset=UTF-8"); + post.header("Accept-encodeing", "UTF-8"); + JSONObject body = new JSONObject(); + body.put("version", "1.0"); + try { + body.put("id", UUIDUtil.getRandomCode(6)); + } catch (Exception e) { + throw new RuntimeException(e); + } + body.put("type", "loginWeChatXiao"); + body.put("action", "request"); + body.put("code", code); + body.put("appId", QianYunTongProperties.appId); + body.put("encryptedData", QianYunTongProperties.encryptedData); + body.put("iv", QianYunTongProperties.iv); + post.body(body.toJSONString()); + HttpResponse execute = post.execute(); + if (200 != execute.getStatus()) { + log.error("微信登录失败"); + return null; + } + JSONObject jsonObject = JSON.parseObject(execute.body()); + Integer status = jsonObject.getInteger("status"); + if (0 != status) { + log.error("微信登录失败:" + jsonObject.getString("desc")); + return null; + } + LoginWeChatXiao loginWeChatXiao = jsonObject.getObject("data", LoginWeChatXiao.class); + return loginWeChatXiao; + } + } diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/LoginWeChatXiao.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/LoginWeChatXiao.java new file mode 100644 index 0000000..9670f97 --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/LoginWeChatXiao.java @@ -0,0 +1,39 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong.model; + +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2025/6/16 23:50 + */ +@Data +public class LoginWeChatXiao { + /** + * token + */ + private String token; + /** + * 用户UUID + */ + private String userUUID; + /** + * 用户手机号 + */ + private String mobile; + /** + * 企业名称,无企业时为空 + */ + private String enterName; + /** + * 企业编码 + */ + private String enterCode; + /** + * 企业认证状态 + */ + private String enterAuth; + /** + * 是否是管理员,是:1;否:0 + */ + private String isAdmin; +} diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTUserInfo.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTUserInfo.java index 6dd1b2a..84939a7 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTUserInfo.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTUserInfo.java @@ -10,35 +10,24 @@ @Data public class QYTUserInfo { /** - * 员工名称 - */ - private String empName; - /** - * 企业编号 - */ - private String enterNum; - /** - * 节点路径 - */ - private String nodePath; - /** - * 员工昵称 - */ - private String nickName; - /** - * 员工编号 - */ - private String empId; - /** * 手机号码 */ - private String mphone; + private String mobile; /** - * 员工在企业内部的编号 + * 用户昵称 */ - private String loginNo; + private String nickname; /** - * 部门ID + * 小头像url */ - private String deptId; + private String photoUrl; + /** + * 大头像url + */ + private String photoUrlBig; + /** + * 企业名称 + */ + private String enterName; + } diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java index 520e941..4035453 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java @@ -31,28 +31,28 @@ @Resource private OrderTaxiMapper orderTaxiMapper; - + @Autowired private IDriverService driverService; - + @Autowired private PushUtil pushUtil; - + @Autowired private GDFalconUtil gdFalconUtil; - @Autowired - private RedisTemplate redisTemplate; - + @Resource + private RedisTemplate<String, Object> redisTemplate; + @Autowired private IOrderPositionService orderPositionService; - + @Autowired private ISystemNoticeService systemNoticeService; - + @Autowired private ChinaMobileUtil chinaMobileUtil; - + @Autowired private GeodesyUtil geodesyUtil; diff --git a/DriverQYTTravel/guns-admin/src/main/resources/application.yml b/DriverQYTTravel/guns-admin/src/main/resources/application.yml index a0ec92f..ba2e18c 100644 --- a/DriverQYTTravel/guns-admin/src/main/resources/application.yml +++ b/DriverQYTTravel/guns-admin/src/main/resources/application.yml @@ -2,54 +2,54 @@ port: 8007 guns: - swagger-open: true #是否开启swagger (true/false) - kaptcha-open: false #是否开启登录时验证码 (true/false) - file-upload-path: d:/tmp #文件上传目录(不配置的话为java.io.tmpdir目录) - picture-server-address: http://192.168.0.43/resources/ #图片服务器地址 - spring-session-open: false #是否开启spring session,如果是多机环境需要开启(true/false) - session-invalidate-time: 1800 #session失效时间(只在单机环境下生效,多机环境在SpringSessionConfig类中配置) 单位:秒 - session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 + swagger-open: true #是否开启swagger (true/false) + kaptcha-open: false #是否开启登录时验证码 (true/false) + file-upload-path: d:/tmp #文件上传目录(不配置的话为java.io.tmpdir目录) + picture-server-address: http://192.168.0.43/resources/ #图片服务器地址 + spring-session-open: false #是否开启spring session,如果是多机环境需要开启(true/false) + session-invalidate-time: 1800 #session失效时间(只在单机环境下生效,多机环境在SpringSessionConfig类中配置) 单位:秒 + session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 spring: - application: + application: name: driver-server - profiles: - active: dev -# active: produce - mvc: - static-path-pattern: /static/** - view: - prefix: /WEB-INF/view - devtools: - restart: - enabled: false - additional-paths: src/main/java - exclude: static/**,WEB-INF/view/** - servlet: - multipart: - max-request-size: 100MB - max-file-size: 100MB + profiles: + active: dev + # active: prod + mvc: + static-path-pattern: /static/** + view: + prefix: /WEB-INF/view + devtools: + restart: + enabled: false + additional-paths: src/main/java + exclude: static/**,WEB-INF/view/** + servlet: + multipart: + max-request-size: 100MB + max-file-size: 100MB + redis: + password: SC_cache@20#25 + database: 0 + timeout: 1000 + cluster: + nodes: 172.21.35.151:6512,172.21.35.152:6512,172.21.35.153:6512,172.21.35.151:6513,172.21.35.152:6513,172.21.35.153:6513 + max-redirects: 3 + lettuce: + pool: + max-idle: 16 + max-active: 32 + min-idle: 8 mybatis-plus: - typeAliasesPackage: com.stylefeng.guns.modular - global-config: - id-type: 0 #0:数据库ID自增 1:用户输入id 2:全局唯一id(IdWorker) 3:全局唯一ID(uuid) - db-column-underline: false - configuration: - configuration.map-underscore-to-camel-case: true #是否开启自动驼峰命名规则(camel case)映射 - log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl #输出Sql,如需打印Sql注释该配置 -logging: - file: - # path 及 name只能二选一,自定义名称选name,path的默认文件名spring.log - # path: /logs - name: logs/app.log - logback: - rollingpolicy: - max-history: 3 - level: - com: - stylefeng: - guns: debug + typeAliasesPackage: com.stylefeng.guns.modular + global-config: + id-type: 0 #0:数据库ID自增 1:用户输入id 2:全局唯一id(IdWorker) 3:全局唯一ID(uuid) + db-column-underline: false + configuration: + configuration.map-underscore-to-camel-case: true #是否开启自动驼峰命名规则(camel case)映射 + log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl #输出Sql,如需打印Sql注释该配置 eureka: @@ -62,30 +62,29 @@ --- spring: - datasource: - url: jdbc:mysql://127.0.0.1:3306/jyxtravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai - username: root - password: 123456 - db-name: qyttravel #用来搜集数据库的所有表 - filters: wall,mergeStat - redis: - #测试环境 - host: 127.0.0.1 - port: 6379 - password: 123456 + datasource: + url: jdbc:mysql://172.21.35.140:8066/traffic_scdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai + username: traffic_scusr + password: QYT_sc@20#25 + db-name: traffic_scdb #用来搜集数据库的所有表 + filters: wall,mergeStat - +--- +spring: + data: + mongodb: + uri: mongodb://qyt_jtcx:qyt_jtcx2025@172.21.35.195:27017,172.21.35.196:27017/traveling_track --- wx: - grantType: authorization_code #填authorization_code - appid: 111 #应用唯一标识,在微信开放平台提交应用审核通过后获得 - appSecret: 111 #应用密钥AppSecret,在微信开放平台提交应用审核通过后获得 - appletsAppid: wxcc3c9058e2b294db #小程序APPid - appletsAppSecret: 5610fc6126255ca5f7bd9fa4330338b6 # - mchId: 111 #微信支付分配的商户号 - key: 111 #key为商户平台设置的密钥key: + grantType: authorization_code #填authorization_code + appid: 111 #应用唯一标识,在微信开放平台提交应用审核通过后获得 + appSecret: 111 #应用密钥AppSecret,在微信开放平台提交应用审核通过后获得 + appletsAppid: wxcc3c9058e2b294db #小程序APPid + appletsAppSecret: 5610fc6126255ca5f7bd9fa4330338b6 # + mchId: 111 #微信支付分配的商户号 + key: 111 #key为商户平台设置的密钥key: --- @@ -112,13 +111,9 @@ --- -filePath: C:/orderPostionFile/ #存储订单轨迹文件路径 - - - #支付回调地址 #正式环境 -callbackPath: https://zhentonggongsi.com:443/driver +callbackPath: https://traffic.qytzt.cn/driver --- #交通部推送数据功能开关 diff --git a/DriverQYTTravel/guns-admin/src/main/resources/lib/cas-client-oncon-3.0.5.jar b/DriverQYTTravel/guns-admin/src/main/resources/lib/cas-client-oncon-3.0.5.jar deleted file mode 100644 index e69de29..0000000 --- a/DriverQYTTravel/guns-admin/src/main/resources/lib/cas-client-oncon-3.0.5.jar +++ /dev/null diff --git a/DriverQYTTravel/guns-admin/src/main/resources/lib/cas-client-oncon-core-1.2.2.jar b/DriverQYTTravel/guns-admin/src/main/resources/lib/cas-client-oncon-core-1.2.2.jar deleted file mode 100644 index e69de29..0000000 --- a/DriverQYTTravel/guns-admin/src/main/resources/lib/cas-client-oncon-core-1.2.2.jar +++ /dev/null diff --git a/DriverQYTTravel/guns-admin/src/main/resources/lib/javabase64-1.3.1.jar b/DriverQYTTravel/guns-admin/src/main/resources/lib/javabase64-1.3.1.jar deleted file mode 100644 index e69de29..0000000 --- a/DriverQYTTravel/guns-admin/src/main/resources/lib/javabase64-1.3.1.jar +++ /dev/null diff --git a/DriverQYTTravel/guns-admin/src/main/resources/lib/openApiClient-1.0.0.jar b/DriverQYTTravel/guns-admin/src/main/resources/lib/openApiClient-1.0.0.jar deleted file mode 100644 index e69de29..0000000 --- a/DriverQYTTravel/guns-admin/src/main/resources/lib/openApiClient-1.0.0.jar +++ /dev/null diff --git a/DriverQYTTravel/guns-admin/src/main/resources/logback-spring.xml b/DriverQYTTravel/guns-admin/src/main/resources/logback-spring.xml deleted file mode 100644 index 59cc686..0000000 --- a/DriverQYTTravel/guns-admin/src/main/resources/logback-spring.xml +++ /dev/null @@ -1,119 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 -scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒当scan为true时,此属性生效。默认的时间间隔为1分钟。 -debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 ---> -<!--文件名称需要采取官方规定的方式 带后缀--> -<configuration scan="false" scanPeriod="60 seconds" debug="false"> - - <!-- 定义日志的根目录 --> - <!--<property name="LOG_HOME" value="/usr/local/server/logs/" />--> - <property name="LOG_HOME" value="c:/logs/driver/" /> - <!-- 定义日志文件名称 --> - <property name="LOG_FILE_NAME" value="driver_log"></property> - - <!--按照官方规定 采用带后缀的命名方式,可以使用其高级Profile功能--> - <springProfile name="dev"> - <!-- ch.qos.logback.core.ConsoleAppender 表示控制台输出 --> - <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> - <!-- - 日志输出格式: - %d表示日期时间, - %thread表示线程名, - %-5level:级别从左显示5个字符宽度 - %logger{50} 表示logger名字最长50个字符,否则按照句点分割。 - %msg:日志消息, - %n是换行符 - --> - <layout class="ch.qos.logback.classic.PatternLayout"> - <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n</pattern> - </layout> - </appender> - <!-- - logger主要用于存放日志对象,也可以定义日志类型、级别 - name:表示匹配的logger类型前缀,也就是包的前半部分 - level:要记录的日志级别,包括 TRACE < DEBUG < INFO < WARN < ERROR - additivity:作用在于children-logger是否使用 rootLogger配置的appender进行输出, - false:表示只用当前logger的appender-ref,true: - 表示当前logger的appender-ref和rootLogger的appender-ref都有效 - --> - <!-- hibernate logger --> - <!-- <logger name="xxxx" level="debug" /> --> - <!-- Spring framework logger --> - <logger name="org.springframework" level="debug" additivity="false"></logger> - <!-- mybatis日志打印--> - <logger name="org.apache.ibatis" level="DEBUG" /> - <logger name="java.sql" level="DEBUG" /> - <logger name="com.stylefeng.guns.modular.system.dao" level="DEBUG"></logger> - - <!-- - root与logger是父子关系,没有特别定义则默认为root,任何一个类只会和一个logger对应, - 要么是定义的logger,要么是root,判断的关键在于找到这个logger,然后判断这个logger的appender和level。 - --> - <root level="info"> - <appender-ref ref="stdout" /> - </root> - </springProfile> - - <springProfile name="produce"> - <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 --> - <appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> - <!-- 指定日志文件的名称 --> - <file>${LOG_HOME}/${LOG_FILE_NAME}.log</file> - <!-- - 当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名 - TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责触发滚动。 - --> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <!-- - 滚动时产生的文件的存放位置及文件名称 %d{yyyy-MM-dd}:按天进行日志滚动 - %i:当文件大小超过maxFileSize时,按照i进行文件滚动 - --> - <fileNamePattern>${LOG_HOME}/${LOG_FILE_NAME}/%d{yyyy-MM-dd}/${LOG_FILE_NAME}-%d{yyyy-MM-dd}-%i.log</fileNamePattern> - <!-- - 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每天滚动, - 且maxHistory是365,则只保存最近365天的文件,删除之前的旧文件。注意,删除旧文件是, - 那些为了归档而创建的目录也会被删除。 - --> - <MaxHistory>10</MaxHistory> - <!-- - 当日志文件超过maxFileSize指定的大小是,根据上面提到的%i进行日志文件滚动 - 注意此处配置SizeBasedTriggeringPolicy是无法实现按文件大小进行滚动的,必须配置timeBasedFileNamingAndTriggeringPolicy - --> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>100MB</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - </rollingPolicy> - <!-- 日志输出格式: --> - <layout class="ch.qos.logback.classic.PatternLayout"> - <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern> - </layout> - </appender> - - <!-- - logger主要用于存放日志对象,也可以定义日志类型、级别 - name:表示匹配的logger类型前缀,也就是包的前半部分 - level:要记录的日志级别,包括 TRACE < DEBUG < INFO < WARN < ERROR - additivity:作用在于children-logger是否使用 rootLogger配置的appender进行输出, - false:表示只用当前logger的appender-ref,true: - 表示当前logger的appender-ref和rootLogger的appender-ref都有效 - --> - <!-- hibernate logger --> - <!-- <logger name="xxxx" level="debug" /> --> - <!-- Spring framework logger --> - <logger name="org.springframework" level="debug" additivity="false"></logger> - <!-- mybatis日志打印--> - <logger name="org.apache.ibatis" level="DEBUG" /> - <logger name="java.sql" level="DEBUG" /> - <logger name="com.stylefeng.guns.modular.system.dao" level="DEBUG"></logger> - - <!-- - root与logger是父子关系,没有特别定义则默认为root,任何一个类只会和一个logger对应, - 要么是定义的logger,要么是root,判断的关键在于找到这个logger,然后判断这个logger的appender和level。 - --> - <root level="info"> - <appender-ref ref="appLogAppender" /> - </root> - </springProfile> -</configuration> \ No newline at end of file diff --git a/DriverQYTTravel/guns-admin/src/main/resources/logback.xml b/DriverQYTTravel/guns-admin/src/main/resources/logback.xml new file mode 100644 index 0000000..57c8c5e --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/resources/logback.xml @@ -0,0 +1,222 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,比如: 如果设置为WARN,则低于WARN的信息都不会输出 --> +<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true --> +<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 --> +<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 --> +<configuration scan="true" scanPeriod="10 seconds"> + <contextName>logback</contextName> + + <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 --> + <property name="log.path" value="/data/app/logs/driver"/> + + <!--0. 日志格式和颜色渲染 --> + <!-- 彩色日志依赖的渲染类 --> + <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /> + <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /> + <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /> + <!-- 彩色日志格式 --> + <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> + + <!--1. 输出到控制台--> + <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> + <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> + <level>debug</level> + </filter> + <encoder> + <Pattern>${CONSOLE_LOG_PATTERN}</Pattern> + <!-- 设置字符集 --> + <charset>UTF-8</charset> + </encoder> + </appender> + + <!--2. 输出到文档--> + <!-- 2.1 level为 DEBUG 日志,时间滚动输出 --> + <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <!-- 正在记录的日志文档的路径及文档名 --> + <file>${log.path}/debug.log</file> + <!--日志文档输出格式--> + <encoder> + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> + <charset>UTF-8</charset> <!-- 设置字符集 --> + </encoder> + <!-- 日志记录器的滚动策略,按日期,按大小记录 --> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <!-- 日志归档 --> + <fileNamePattern>${log.path}/%d{yyyy-MM-dd}/debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>100MB</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <!--日志文档保留天数--> + <maxHistory>15</maxHistory> + </rollingPolicy> + <!-- 此日志文档只记录debug级别的 --> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>debug</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + </appender> + + <!-- 2.2 level为 INFO 日志,时间滚动输出 --> + <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <!-- 正在记录的日志文档的路径及文档名 --> + <file>${log.path}/info.log</file> + <!--日志文档输出格式--> + <encoder> + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> + <charset>UTF-8</charset> + </encoder> + <!-- 日志记录器的滚动策略,按日期,按大小记录 --> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <!-- 每天日志归档路径以及格式 --> + <fileNamePattern>${log.path}/%d{yyyy-MM-dd}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>100MB</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <!--日志文档保留天数--> + <maxHistory>15</maxHistory> + </rollingPolicy> + <!-- 此日志文档只记录info级别的 --> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>info</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + </appender> + + <!-- 2.3 level为 WARN 日志,时间滚动输出 --> + <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <!-- 正在记录的日志文档的路径及文档名 --> + <file>${log.path}/warn.log</file> + <!--日志文档输出格式--> + <encoder> + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> + <charset>UTF-8</charset> <!-- 此处设置字符集 --> + </encoder> + <!-- 日志记录器的滚动策略,按日期,按大小记录 --> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${log.path}/%d{yyyy-MM-dd}/warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>100MB</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <!--日志文档保留天数--> + <maxHistory>15</maxHistory> + </rollingPolicy> + <!-- 此日志文档只记录warn级别的 --> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>warn</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + </appender> + + <!-- 2.4 level为 ERROR 日志,时间滚动输出 --> + <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <!-- 正在记录的日志文档的路径及文档名 --> + <file>${log.path}/error.log</file> + <!--日志文档输出格式--> + <encoder> + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> + <charset>UTF-8</charset> <!-- 此处设置字符集 --> + </encoder> + <!-- 日志记录器的滚动策略,按日期,按大小记录 --> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${log.path}/%d{yyyy-MM-dd}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>100MB</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <!--日志文档保留天数--> + <maxHistory>15</maxHistory> + </rollingPolicy> + <!-- 此日志文档只记录ERROR级别的 --> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>ERROR</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + </appender> + + <!-- 2.5 所有 除了DEBUG级别的其它高于DEBUG的 日志,记录到一个文件 --> + <appender name="ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <!-- 正在记录的日志文档的路径及文档名 --> + <file>${log.path}/all.log</file> + <!--日志文档输出格式--> + <encoder> + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> + <charset>UTF-8</charset> <!-- 此处设置字符集 --> + </encoder> + <!-- 日志记录器的滚动策略,按日期,按大小记录 --> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${log.path}/%d{yyyy-MM-dd}/all-%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>100MB</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <!--日志文档保留天数--> + <maxHistory>15</maxHistory> + </rollingPolicy> + <!-- 此日志文档记录除了DEBUG级别的其它高于DEBUG的 --> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>DEBUG</level> + <onMatch>DENY</onMatch> + <onMismatch>ACCEPT</onMismatch> + </filter> + </appender> + + <!-- + <logger>用来设置某一个包或者具体的某一个类的日志打印级别、 + 以及指定<appender>。<logger>仅有一个name属性, + 一个可选的level和一个可选的addtivity属性。 + name:用来指定受此logger约束的某一个包或者具体的某一个类。 + level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, + 还有一个特殊值INHERITED或者同义词NULL,代表强制执行上级的级别。 + 如果未设置此属性,那么当前logger将会继承上级的级别。 + addtivity:是否向上级logger传递打印信息。默认是true。 + <logger name="org.springframework.web" level="info"/> + <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/> + --> + + <!-- + root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性 + level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, + 不能设置为INHERITED或者同义词NULL。默认是DEBUG + 可以包含零个或多个元素,标识这个appender将会添加到这个logger。 + --> + + <!-- 4 最终的策略: + 基本策略(root级) + 根据profile在启动时, logger标签中定制化package日志级别(优先级高于上面的root级)--> + <springProfile name="dev"> + <root level="info"> + <appender-ref ref="CONSOLE" /> + <appender-ref ref="DEBUG_FILE" /> + <appender-ref ref="INFO_FILE" /> + <appender-ref ref="WARN_FILE" /> + <appender-ref ref="ERROR_FILE" /> + <appender-ref ref="ALL_FILE" /> + </root> + <logger name="com.stylefeng.guns.modular.system.dao" level="debug"/> + </springProfile> + + <springProfile name="test"> + <root level="info"> + <appender-ref ref="CONSOLE" /> + <appender-ref ref="DEBUG_FILE" /> + <appender-ref ref="INFO_FILE" /> + <appender-ref ref="WARN_FILE" /> + <appender-ref ref="ERROR_FILE" /> + <appender-ref ref="ALL_FILE" /> + </root> + </springProfile> + + <springProfile name="prod"> + <root level="info"> + <!-- 生产环境最好不配置console写文件 --> + <appender-ref ref="DEBUG_FILE" /> + <appender-ref ref="INFO_FILE" /> + <appender-ref ref="WARN_FILE" /> + <appender-ref ref="ERROR_FILE" /> + <appender-ref ref="ALL_FILE" /> + </root> + </springProfile> + +</configuration> \ No newline at end of file diff --git a/DriverQYTTravel/guns-admin/src/test/java/com/stylefeng/guns/GunsApplicationTest.java b/DriverQYTTravel/guns-admin/src/test/java/com/stylefeng/guns/GunsApplicationTest.java index b367027..70818e0 100644 --- a/DriverQYTTravel/guns-admin/src/test/java/com/stylefeng/guns/GunsApplicationTest.java +++ b/DriverQYTTravel/guns-admin/src/test/java/com/stylefeng/guns/GunsApplicationTest.java @@ -1,7 +1,5 @@ package com.stylefeng.guns; -import com.stylefeng.guns.modular.system.util.qianyuntong.EmployeeUtil; -import com.stylefeng.guns.modular.system.util.qianyuntong.model.EditStaffNodeRequest; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; @@ -14,90 +12,6 @@ @Test public void test() throws Exception { -// CreateEnterpriseRequest request = new CreateEnterpriseRequest(); -// request.setName("成都喜望科技有限公司"); -// request.setNickName("成都喜望"); -// request.setIndustry_code("123456789"); -// request.setMobile("15828353127"); -// request.setMobileFlag("1"); -// EnterpriseUtil.createEnterprise(request); - - //短信 -// SMSUtil.sendVerifyCode("15828353127"); -// CheckEnterExist checkEnterNameExist = EnterpriseUtil.checkEnterNameExist("成都喜望科技有限公司"); - -// EnterpriseInfo enterpriseDetail = EnterpriseUtil.getEnterpriseDetail(checkEnterNameExist.getEnterCode()); -// System.out.println(enterpriseDetail); - -// List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone("15828353127", "981100006005878"); - -// RegisterViaMobileRequest request = new RegisterViaMobileRequest(); -// request.setMobile("15828353126"); -// request.setPassword("123456"); -// request.setNickname("测试"); -// request.setVerify_code("1111"); -// request.setVerify_code_type("1"); -// RegisterViaMobile registerViaMobile = UserUtil.registerViaMobile(request); - -// ModifyPwdRequest request = new ModifyPwdRequest(); -// request.setMobile("15828353126"); -// request.setOldPwd("111111"); -// request.setNewPwd("654321"); -// request.setCode("1111"); -// UserUtil.modifyPwd(request); - -// ResetPwdRequest request = new ResetPwdRequest(); -// request.setMobile("15828353126"); -// request.setPassword("654321"); -// request.setCode("1111"); -// UserUtil.resetPwd(request); - -// SaveStaffNodeRequest request = new SaveStaffNodeRequest(); -// request.setMobile("15828353127"); -// request.setEntercode("981100006005878"); -// request.setEmpName("超级管理员"); -// request.setEmpNickname("超级管理员"); -// request.setLoginNo("18200000000"); -// request.setEmpSex("男"); -// request.setMphone("18200000000"); -// request.setEmail("sn93@qq.com"); -// request.setDeptId(0); -// request.setPositionId(1); -// request.setSuperLevel(0); -// request.setHideMobile(0); -// EmployeeUtil.saveStaffNode(request); - - //接口参数有问题 - EditStaffNodeRequest request = new EditStaffNodeRequest(); - request.setEmpId(11448038); - request.setMobile("15828353127"); - request.setEntercode("981100006005878"); - request.setEnterId(981100006005878l); - request.setEmpName("超级管理员"); - request.setEmpNickname("超管"); - request.setLoginNo("18200000000"); - request.setMphone("18200000000"); - request.setEmail("sn93@qq.com"); - request.setEmpSex("男"); - request.setDeptId(0); - request.setPositionId(1); - request.setSuperLevel(0); - request.setHideMobile(0); - EmployeeUtil.editStaffNode(request); - - -// GetStaffNodeRequest request = new GetStaffNodeRequest(); -// request.setEmpId(11448036L); -// request.setMobile("15828353127"); -// request.setEntercode("981100006005878"); -// EmployeeUtil.getStaffNode(request); - - -// DeleteStafNodeRequest request = new DeleteStafNodeRequest(); -// request.setEmpId(11448036); -// request.setMobile("15828353127"); -// request.setEntercode("981100006005878"); -// EmployeeUtil.ecrmDeleteStafNode(request); } } -- Gitblit v1.7.1