From 9828db9febf4ad5cb0b79a72eedca6922b466104 Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期日, 27 七月 2025 13:54:52 +0800 Subject: [PATCH] 用户端修改 推广功能 --- UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TDriverPromotionActivityMapper.java | 17 ++ UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java | 23 ++ UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java | 5 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IUserInfoService.java | 2 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/IOrderPrivateCarService.java | 2 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverPromotionActivity.java | 105 +++++++++++++ UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TDriverPromotionActivityMapper.xml | 7 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 43 +++++ UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java | 41 +++++ UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/IOrderTaxiService.java | 3 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java | 36 ++++ UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java | 30 +++ UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java | 22 ++ UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java | 42 +++++ UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java | 3 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverPromotionActivityServiceImpl.java | 21 ++ UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/TDriverPromotionActivityService.java | 18 ++ UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java | 29 +++ UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java | 27 +++ 19 files changed, 464 insertions(+), 12 deletions(-) diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java index 3280f80..b6fb4c6 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java @@ -138,7 +138,8 @@ @Resource private ISystemPriceCityService systemPriceCityService; - + + /** * 获取正在进行中的订单 @@ -2091,6 +2092,30 @@ } + + /** + * 推广订单支付成功回调 + * + * @param orderId + * @return + */ + private void promotion(Integer orderType,Integer orderId){ + switch (orderType){ + case 1: + orderPrivateCarService.promotion(orderId); + break; + case 2: + orderTaxiService.promotion(orderId); + break; + case 3: + orderCrossCityService.promotion(orderId); + break; + default: + break; + } + } + + @ResponseBody @PostMapping("/api/get/unPayOrder") @ApiOperation(value = "获取未支付订单", tags = {"用户端-首页"}, notes = "") diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java index 4c69f92..77335e1 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java @@ -106,10 +106,11 @@ @ApiImplicitParam(value = "ip地址", name = "registIp", required = false, dataType = "String"), @ApiImplicitParam(value = "登录端口-小程序传Applets", name = "loginType", required = false, dataType = "String"), @ApiImplicitParam(value = "当前定位区县行政编号", name = "registAreaCode", required = false, dataType = "String"), + @ApiImplicitParam(value = "司机id", name = "driverId", required = false, dataType = "int"), }) - public ResultUtil<LoginWarpper> captchaLogin(String phone, String code, String registIp, String registAreaCode,String loginType,String jsCode){ + public ResultUtil<LoginWarpper> captchaLogin(String phone, String code, String registIp, String registAreaCode,String loginType,String jsCode,Integer driverId){ try { - return userInfoService.captchaLogin(phone, code, registIp, registAreaCode,loginType); + return userInfoService.captchaLogin(phone, code, registIp, registAreaCode,loginType,driverId); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java index 01a306e..cf0690f 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotations.TableName; import com.baomidou.mybatisplus.enums.IdType; +import java.math.BigDecimal; import java.util.Date; /** @@ -360,6 +361,13 @@ /** + * 推广订单 1否 2是 + */ + @TableField("promotion") + private Integer promotion; + + + /** * 乘客反馈情况 */ @TableField("abnormalIntro") @@ -371,8 +379,36 @@ @TableField("abnormalImg") private String abnormalImg; + private Integer promotionDriverId; + + private BigDecimal promotionMoney; + private String splitAllocation; + public Integer getPromotion() { + return promotion; + } + + public void setPromotion(Integer promotion) { + this.promotion = promotion; + } + + public Integer getPromotionDriverId() { + return promotionDriverId; + } + + public void setPromotionDriverId(Integer promotionDriverId) { + this.promotionDriverId = promotionDriverId; + } + + public BigDecimal getPromotionMoney() { + return promotionMoney; + } + + public void setPromotionMoney(BigDecimal promotionMoney) { + this.promotionMoney = promotionMoney; + } + public Integer getAbnormal() { return abnormal; } diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java index 9e97d56..2f6c4d5 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IOrderCrossCityService.java @@ -327,4 +327,7 @@ */ void addAppeal(Integer uid, Integer orderId,String abnormalIntro, String abnormalImg); + void promotion(Integer orderId); + + } diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java index bb1de00..5eb8a64 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java @@ -192,6 +192,11 @@ @Autowired private IRegionService regionService; + + + + @Autowired + private TDriverPromotionActivityService driverPromotionActivityService; @Value("${callbackPath}") @@ -1294,6 +1299,11 @@ // orderCrossCity.setTelX(map.get("telX")); // orderCrossCity.setBindId(map.get("bindId")); // } + + // 是否推广订单 + Integer promotion = isPromotion(uid); + orderCrossCity.setPromotion(promotion); + this.insert(orderCrossCity); if (driver.getState() == 2) { @@ -1386,8 +1396,19 @@ return ResultUtil.success(baseWarpper); } - - + + private Integer isPromotion(Integer userId){ + UserInfo userInfo = userInfoService.selectById(userId); + if(userInfo.getBindDriverId()!=null && userInfo.getBindExpireDate().getTime()<=System.currentTimeMillis()){ + String registAreaCode = userInfo.getRegistAreaCode(); + TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).ge("startTime", new Date()).lt("endTime", new Date()).last("AND FIND_IN_SET(" + 3 + ", bizType) limit 1")); + if(tDriverPromotionActivity!=null){ + return 2; + } + } + return null; + + } /** * 获取订单 * @@ -2701,4 +2722,21 @@ orderCrossCity.setAbnormal(1); this.baseMapper.updateById(orderCrossCity); } + + @Override + public void promotion(Integer orderId) { + OrderCrossCity orderCrossCity = this.baseMapper.selectById(orderId); + UserInfo userInfo = userInfoService.selectById(orderCrossCity.getUserId()); + if(userInfo.getBindDriverId()!=null && userInfo.getBindExpireDate().getTime()<=System.currentTimeMillis()){ + String registAreaCode = userInfo.getRegistAreaCode(); + TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).ge("startTime", new Date()).lt("endTime", new Date()).last("AND FIND_IN_SET(" + 3 + ", bizType) limit 1")); + if(tDriverPromotionActivity!=null){ + Double payMoney = orderCrossCity.getPayMoney(); + BigDecimal bigDecimal = tDriverPromotionActivity.getCommissionRatio().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(payMoney)).setScale(2, RoundingMode.HALF_UP); + orderCrossCity.setPromotionDriverId(userInfo.getBindDriverId()); + orderCrossCity.setPromotionMoney(bigDecimal); + this.baseMapper.updateById(orderCrossCity); + } + } + } } diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java index dde5b28..fa43519 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotations.TableName; import com.baomidou.mybatisplus.enums.IdType; +import java.math.BigDecimal; import java.util.Date; /** @@ -425,6 +426,15 @@ private Integer abnormal; + + /** + * 推广订单 1否 2是 + */ + @TableField("promotion") + private Integer promotion; + + + /** * 乘客反馈情况 */ @@ -437,6 +447,13 @@ @TableField("abnormalImg") private String abnormalImg; + + private Integer promotionDriverId; + + private BigDecimal promotionMoney; + + + private Integer totalPeopleNum; /** * 预估里程(米) @@ -449,6 +466,30 @@ private String splitAllocation; + public Integer getPromotion() { + return promotion; + } + + public void setPromotion(Integer promotion) { + this.promotion = promotion; + } + + public Integer getPromotionDriverId() { + return promotionDriverId; + } + + public void setPromotionDriverId(Integer promotionDriverId) { + this.promotionDriverId = promotionDriverId; + } + + public BigDecimal getPromotionMoney() { + return promotionMoney; + } + + public void setPromotionMoney(BigDecimal promotionMoney) { + this.promotionMoney = promotionMoney; + } + public Integer getAbnormal() { return abnormal; } diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/IOrderPrivateCarService.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/IOrderPrivateCarService.java index 0ed17e0..3a6bb39 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/IOrderPrivateCarService.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/IOrderPrivateCarService.java @@ -330,4 +330,6 @@ */ void addAppeal(Integer uid, Integer orderId,String abnormalIntro, String abnormalImg); + void promotion(Integer orderId); + } diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java index 85a8d0c..5a22d0d 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java @@ -158,6 +158,9 @@ private Lock lock = new ReentrantLock(); @Autowired private AppOrderController appOrderController; + + @Autowired + private TDriverPromotionActivityService driverPromotionActivityService; /** * 专车下单操作 @@ -594,6 +597,12 @@ orderPrivateCar.setTotalPeopleNum(peopleNum); orderPrivateCar.setIsReassign(1); orderPrivateCar.setIsDelete(1); + + // 是否推广订单 + Integer promotion = isPromotion(uid); + orderPrivateCar.setPromotion(promotion); + + this.insert(orderPrivateCar); //判断独享,一口价,拼车 @@ -729,7 +738,22 @@ } return ResultUtil.success(baseWarpper); } - + + + private Integer isPromotion(Integer userId){ + UserInfo userInfo = userInfoService.selectById(userId); + if(userInfo.getBindDriverId()!=null && userInfo.getBindExpireDate().getTime()<=System.currentTimeMillis()){ + String registAreaCode = userInfo.getRegistAreaCode(); + TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).ge("startTime", new Date()).lt("endTime", new Date()).last("AND FIND_IN_SET(" + 1 + ", bizType) limit 1")); + if(tDriverPromotionActivity!=null){ + return 2; + } + } + return null; + + } + + /** * 下单后继续等待 * @@ -2715,4 +2739,21 @@ this.baseMapper.updateById(orderPrivateCar); } + + @Override + public void promotion(Integer orderId) { + OrderPrivateCar orderPrivateCar = this.baseMapper.selectById(orderId); + UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId()); + if(userInfo.getBindDriverId()!=null && userInfo.getBindExpireDate().getTime()<=System.currentTimeMillis()){ + String registAreaCode = userInfo.getRegistAreaCode(); + TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).ge("startTime", new Date()).lt("endTime", new Date()).last("AND FIND_IN_SET(" + 1 + ", bizType) limit 1")); + if(tDriverPromotionActivity!=null){ + Double payMoney = orderPrivateCar.getPayMoney(); + BigDecimal bigDecimal = tDriverPromotionActivity.getCommissionRatio().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(payMoney)).setScale(2, RoundingMode.HALF_UP); + orderPrivateCar.setPromotionDriverId(userInfo.getBindDriverId()); + orderPrivateCar.setPromotionMoney(bigDecimal); + this.baseMapper.updateById(orderPrivateCar); + } + } + } } diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TDriverPromotionActivityMapper.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TDriverPromotionActivityMapper.java new file mode 100644 index 0000000..8b627b6 --- /dev/null +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TDriverPromotionActivityMapper.java @@ -0,0 +1,17 @@ +package com.stylefeng.guns.modular.system.dao; + + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.stylefeng.guns.modular.system.model.TDriverPromotionActivity; + +/** + * <p> + * 司机推广活动主表 Mapper 接口 + * </p> + * + * @author administrator + * @since 2025-07-23 + */ +public interface TDriverPromotionActivityMapper extends BaseMapper<TDriverPromotionActivity> { + +} diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TDriverPromotionActivityMapper.xml b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TDriverPromotionActivityMapper.xml new file mode 100644 index 0000000..e4515a0 --- /dev/null +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TDriverPromotionActivityMapper.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.stylefeng.guns.modular.system.dao.TDriverPromotionActivityMapper"> + + <!-- 通用查询映射结果 --> + +</mapper> diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverPromotionActivity.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverPromotionActivity.java new file mode 100644 index 0000000..a2e62ff --- /dev/null +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverPromotionActivity.java @@ -0,0 +1,105 @@ +package com.stylefeng.guns.modular.system.model; + +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * <p> + * 司机推广活动主表 + * </p> + * + * @author administrator + * @since 2025-07-23 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_driver_promotion_activity") +public class TDriverPromotionActivity extends Model<TDriverPromotionActivity> { + + private static final long serialVersionUID = 1L; + + /** + * 推广活动ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + /** + * 关联业务:1-专车/2-出租车/3-城际/4-顺风车/5-代驾 + */ + private String bizType; + /** + * 推广活动标题 + */ + private String activityTitle; + /** + * 活动区域-省 + */ + private String province; + /** + * 省code + */ + private String provinceCode; + /** + * 活动区域-市 + */ + private String city; + /** + * 市code + */ + private String cityCode; + /** + * 活动区域-区/县 + */ + private String district; + /** + * 区code + */ + private String districtCode; + /** + * 活动开始时间 + */ + private Date startTime; + /** + * 活动结束时间 + */ + private Date endTime; + /** + * 抽佣比例(如 10.00 代表 10%) + */ + private BigDecimal commissionRatio; + /** + * 司机乘客绑定有效期(天) + */ + private Integer bindingDays; + /** + * 推广活动说明 + */ + private String activityDesc; + /** + * 状态:1-未开始 2-进行中 3-已结束 + */ + private Integer status; + /** + * 创建人 + */ + private String creator; + private Date createTime; + private Date updateTime; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java index 273005e..0eb4e24 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java @@ -133,6 +133,35 @@ @TableField("state") private Integer state; + + /** + * 绑定的司机id + */ + @TableField("bindDriverId") + private Integer bindDriverId; + + /** + * 绑定司机有效期 + */ + + private Date bindExpireDate; + + public Integer getBindDriverId() { + return bindDriverId; + } + + public void setBindDriverId(Integer bindDriverId) { + this.bindDriverId = bindDriverId; + } + + public Date getBindExpireDate() { + return bindExpireDate; + } + + public void setBindExpireDate(Date bindExpireDate) { + this.bindExpireDate = bindExpireDate; + } + public String getRegistIp() { return registIp; } diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IUserInfoService.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IUserInfoService.java index 96bf060..b30e749 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IUserInfoService.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IUserInfoService.java @@ -36,7 +36,7 @@ * @param code * @return */ - ResultUtil<LoginWarpper> captchaLogin(String phone, String code, String registIp, String registAreaCode,String loginType) throws Exception; + ResultUtil<LoginWarpper> captchaLogin(String phone, String code, String registIp, String registAreaCode,String loginType,Integer driverId) throws Exception; /** * 手机一键登录 diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/TDriverPromotionActivityService.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/TDriverPromotionActivityService.java new file mode 100644 index 0000000..4ccec88 --- /dev/null +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/TDriverPromotionActivityService.java @@ -0,0 +1,18 @@ +package com.stylefeng.guns.modular.system.service; + + +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.service.IService; +import com.stylefeng.guns.modular.system.model.TDriverPromotionActivity; + +/** + * <p> + * 司机推广活动主表 服务类 + * </p> + * + * @author administrator + * @since 2025-07-23 + */ +public interface TDriverPromotionActivityService extends IService<TDriverPromotionActivity> { + +} diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverPromotionActivityServiceImpl.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverPromotionActivityServiceImpl.java new file mode 100644 index 0000000..7bd9569 --- /dev/null +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverPromotionActivityServiceImpl.java @@ -0,0 +1,21 @@ +package com.stylefeng.guns.modular.system.service.impl; + + +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.stylefeng.guns.modular.system.dao.TDriverPromotionActivityMapper; +import com.stylefeng.guns.modular.system.model.TDriverPromotionActivity; +import com.stylefeng.guns.modular.system.service.TDriverPromotionActivityService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 司机推广活动主表 服务实现类 + * </p> + * + * @author administrator + * @since 2025-07-23 + */ +@Service +public class TDriverPromotionActivityServiceImpl extends ServiceImpl<TDriverPromotionActivityMapper, TDriverPromotionActivity> implements TDriverPromotionActivityService { + +} diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java index 291c45f..885a57d 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java @@ -27,6 +27,7 @@ import com.stylefeng.guns.modular.taxi.model.PaymentRecord; import com.stylefeng.guns.modular.taxi.service.IPaymentRecordService; import com.stylefeng.guns.modular.taxi.service.ITransactionDetailsService; +import org.apache.commons.lang.time.DateUtils; import org.apache.shiro.authc.SimpleAuthenticationInfo; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.authc.credential.HashedCredentialsMatcher; @@ -50,6 +51,7 @@ import java.net.URLConnection; import java.security.spec.AlgorithmParameterSpec; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Lock; @@ -124,6 +126,10 @@ @Autowired private PayMoneyUtil payMoneyUtil; + + + @Autowired + private TDriverPromotionActivityService driverPromotionActivityService; @Value("${callbackPath}") private String callbackPath; @@ -221,7 +227,7 @@ * @return */ @Override - public synchronized ResultUtil<LoginWarpper> captchaLogin(String phone, String code, String registIp, String registAreaCode,String loginType) throws Exception { + public synchronized ResultUtil<LoginWarpper> captchaLogin(String phone, String code, String registIp, String registAreaCode,String loginType,Integer driverId) throws Exception { UserInfo userInfo = userInfoMapper.queryByPhone(phone); String nickName = null; if (null == userInfo) { @@ -269,6 +275,24 @@ }else { userInfo.setCompanyId(1); } + + + + + + // 是否需要绑定司机 + TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).ge("startTime", new Date()).lt("endTime", new Date()).last(" limit 1")); + if(tDriverPromotionActivity!=null){ + Integer bindingDays = tDriverPromotionActivity.getBindingDays(); + // 当前时间+绑定天数 + Date endTime = DateUtils.addDays(new Date(), bindingDays); + userInfo.setBindDriverId(driverId); + userInfo.setBindExpireDate(endTime); + } + + + + this.insert(userInfo); this.addCoupon(userInfo);//添加优惠券 @@ -379,7 +403,7 @@ } @Override public synchronized ResultUtil<LoginWarpper> captchaLogin(String phone, String code, Integer uid, Integer type, Integer userType,String loginType) throws Exception { - ResultUtil<LoginWarpper> resultUtil = this.captchaLogin(phone, code, null, null,loginType); + ResultUtil<LoginWarpper> resultUtil = this.captchaLogin(phone, code, null, null,loginType,null); if(resultUtil.getCode() == 200 && null != uid){ if(type == 2){//司机分享 Driver driver = driverMapper.selectById(uid); @@ -1226,7 +1250,7 @@ if(null == userInfo){ return ResultUtil.error("获取用户信息失败"); } - return this.captchaLogin(userInfo.get("phone"), "1234", null, registAreaCode, loginType); + return this.captchaLogin(userInfo.get("phone"), "1234", null, registAreaCode, loginType,null); }else{ return ResultUtil.error(jsonObject.getString("msg")); } diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java index 7cfedfc..137f696 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.enums.IdType; import com.stylefeng.guns.modular.system.model.BaseBean; +import java.math.BigDecimal; import java.util.Date; /** @@ -375,8 +376,29 @@ @TableField("abnormalImg") private String abnormalImg; + + private Integer promotionDriverId; + + private BigDecimal promotionMoney; + + private String splitAllocation; + public Integer getPromotionDriverId() { + return promotionDriverId; + } + + public void setPromotionDriverId(Integer promotionDriverId) { + this.promotionDriverId = promotionDriverId; + } + + public BigDecimal getPromotionMoney() { + return promotionMoney; + } + + public void setPromotionMoney(BigDecimal promotionMoney) { + this.promotionMoney = promotionMoney; + } public Integer getAbnormal() { return abnormal; diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/IOrderTaxiService.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/IOrderTaxiService.java index 7c63faf..be2011e 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/IOrderTaxiService.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/IOrderTaxiService.java @@ -310,4 +310,7 @@ * @param orderId */ void addAppeal(Integer uid, Integer orderId,String abnormalIntro, String abnormalImg); + + void promotion(Integer orderId); + } diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java index 30055e5..4ab0ae6 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java @@ -188,8 +188,10 @@ @Value("${callbackPath}") private String callbackPath; - - + + + @Autowired + private TDriverPromotionActivityService driverPromotionActivityService; /** * 出租车下单操作 * @@ -2306,4 +2308,21 @@ orderTaxi.setAbnormal(1); this.baseMapper.updateById(orderTaxi); } + + @Override + public void promotion(Integer orderId) { + OrderTaxi orderTaxi = this.baseMapper.selectById(orderId); + UserInfo userInfo = userInfoService.selectById(orderTaxi.getUserId()); + if(userInfo.getBindDriverId()!=null && userInfo.getBindExpireDate().getTime()<=System.currentTimeMillis()){ + String registAreaCode = userInfo.getRegistAreaCode(); + TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).ge("startTime", new Date()).lt("endTime", new Date()).last("AND FIND_IN_SET(" + 2 + ", bizType) limit 1")); + if(tDriverPromotionActivity!=null){ + Double payMoney = orderTaxi.getPayMoney(); + BigDecimal bigDecimal = tDriverPromotionActivity.getCommissionRatio().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(payMoney)).setScale(2, RoundingMode.HALF_UP); + orderTaxi.setPromotionDriverId(userInfo.getBindDriverId()); + orderTaxi.setPromotionMoney(bigDecimal); + this.baseMapper.updateById(orderTaxi); + } + } + } } -- Gitblit v1.7.1