From b1b172a6f1c67b6a02647b9db081f23bf15e4906 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期四, 26 六月 2025 20:04:27 +0800 Subject: [PATCH] bug修改 --- UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java | 134 ++++++++++++++++++++------------- UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/UserCouponRecordMapper.java | 7 + UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IUserCouponRecordService.java | 4 + UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserCouponRecordServiceImpl.java | 21 +++++ UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserCouponRecordMapper.xml | 68 ++++++++++++++-- 5 files changed, 171 insertions(+), 63 deletions(-) diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java index 0a1cbd7..9c7231c 100644 --- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java +++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java @@ -55,6 +55,7 @@ import java.math.RoundingMode; import java.time.LocalDateTime; import java.util.*; +import java.util.stream.Collectors; import static com.stylefeng.guns.modular.taxi.service.impl.OrderTaxiServiceImpl.orderIds; @@ -217,13 +218,24 @@ */ @Override public Map<String, Object> queryBalance(Integer orderId, Integer uid) throws Exception { + System.err.println(orderId); Map<String, Object> map = new HashMap<>(); UserInfo userInfo = userInfoService.selectById(uid); map.put("balance", userInfo.getBalance()); OrderCrossCity orderCrossCity = this.selectById(orderId); - int i = userCouponRecordService.queryAvailable(uid, orderCrossCity.getCompanyId(), 1, 3, orderCrossCity.getOrderMoney()); - i = i + userCouponRecordService.queryAvailable(uid, orderCrossCity.getCompanyId(), 1, 0, orderCrossCity.getOrderMoney()); - map.put("coupon", i); + List<Map<String, Object>> list = userCouponRecordService.queryAvailable_(uid, orderCrossCity.getCompanyId(), 1, 3, orderCrossCity.getOrderMoney()); + List<Map<String, Object>> list1 = userCouponRecordService.queryAvailable_(uid, orderCrossCity.getCompanyId(), 1, 0, orderCrossCity.getOrderMoney()); + list.addAll(list1); + Iterator<Map<String, Object>> iterator = list.iterator(); + System.err.println(list); + while (iterator.hasNext()){ + Map<String, Object> next = iterator.next(); + if(next.get("type").equals(2) && (Double.valueOf(next.get("money").toString()) > orderCrossCity.getOrderMoney() + || Double.valueOf(next.get("fullMoney").toString()) > orderCrossCity.getOrderMoney())){ + iterator.remove(); + } + } + map.put("coupon", list.size()); return map; } @@ -243,8 +255,22 @@ List<Map<String, Object>> list = userCouponRecordService.queryCoupon(uid, orderCrossCity.getCompanyId(), 1, 3, orderCrossCity.getOrderMoney(), pageNum, size); List<Map<String, Object>> list1 = userCouponRecordService.queryCoupon(uid, orderCrossCity.getCompanyId(), 1, 0, orderCrossCity.getOrderMoney(), pageNum, size); list.addAll(list1); + Iterator<Map<String, Object>> iterator = list.iterator(); System.err.println(list); - return list; + while (iterator.hasNext()){ + Map<String, Object> next = iterator.next(); + if(next.get("type").equals(2) && (Double.valueOf(next.get("money").toString()) > orderCrossCity.getOrderMoney() + || Double.valueOf(next.get("fullMoney").toString()) > orderCrossCity.getOrderMoney())){ + iterator.remove(); + } + } + if(CollectionUtils.isEmpty(list)){ + return list; + } + List<Integer> ids = list.stream().map(map -> Integer.parseInt(map.get("id").toString())).collect(Collectors.toList()); + List<Map<String, Object>> result = userCouponRecordService.queryCouponCrossCity(ids, pageNum, size); + System.err.println(result); + return result; } @@ -265,12 +291,14 @@ } Integer uid = orderCrossCity.getUserId(); Double orderMoney = orderCrossCity.getOrderMoney(); + System.err.println(orderMoney); UserInfo userInfo = userInfoService.selectById(uid); ResultUtil resultUtil = ResultUtil.success(""); orderCrossCity.setCouponMoney(0D);//初始化历史数据 orderCrossCity.setCouponId(null); //计算优惠券 + BigDecimal payMoney = new BigDecimal(0); UserCouponRecord userCouponRecord = null; if(null != couponId){ userCouponRecord = userCouponRecordService.selectById(couponId); @@ -289,32 +317,34 @@ if(userCouponRecord.getCouponType() == 2 && orderMoney.compareTo(userCouponRecord.getFullMoney()) < 0){ return ResultUtil.error("优惠券不能用于此订单", ""); } - orderMoney = orderMoney - userCouponRecord.getMoney(); + payMoney = new BigDecimal(orderMoney.toString()).subtract(new BigDecimal(userCouponRecord.getMoney())); + System.err.println(payMoney); orderCrossCity.setCouponMoney(userCouponRecord.getMoney()); orderCrossCity.setCouponId(couponId); } - + if(payMoney.compareTo(new BigDecimal(0)) == 0 ){ + payMoney = new BigDecimal(orderMoney.toString()); + } //计算红包 UserRedPacketRecord query = userRedPacketRecordService.query(uid, orderCrossCity.getCompanyId(), 1, 3, orderMoney); - if(null != query && orderMoney.compareTo(query.getMoney()) > 0){ - orderMoney = orderMoney - query.getMoney(); - orderCrossCity.setRedPacketMoney(query.getMoney()); - orderCrossCity.setRedPacketId(query.getId()); - } - - //计算折扣 - UserActivityDiscount1 query2 = userActivityDiscount1Mapper.query(orderCrossCity.getCompanyId()); - if(null != query2){ - Double special = query2.getSpecial(); - orderCrossCity.setDiscount(special); - double v = new BigDecimal(orderMoney).multiply(new BigDecimal(special / 10)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); - if(orderMoney.compareTo(v) > 0){ - orderCrossCity.setDiscountMoney(orderMoney - v); - orderCrossCity.setActivityId(query2.getId()); - orderMoney = v; - } - } - +// if(null != query && orderMoney.compareTo(query.getMoney()) > 0){ +// orderMoney = orderMoney - query.getMoney(); +// orderCrossCity.setRedPacketMoney(query.getMoney()); +// orderCrossCity.setRedPacketId(query.getId()); +// } +// +// //计算折扣 +// UserActivityDiscount1 query2 = userActivityDiscount1Mapper.query(orderCrossCity.getCompanyId()); +// if(null != query2){ +// Double special = query2.getSpecial(); +// orderCrossCity.setDiscount(special); +// double v = new BigDecimal(orderMoney).multiply(new BigDecimal(special / 10)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); +// if(orderMoney.compareTo(v) > 0){ +// orderCrossCity.setDiscountMoney(orderMoney - v); +// orderCrossCity.setActivityId(query2.getId()); +// orderMoney = v; +// } +// } if(payType == 1){//微信支付 String value = redisUtil.getValue("appletOpenId"); String appletsOpenId = null; @@ -332,8 +362,8 @@ // resultUtil = ResultUtil.error(map.get("msg"), ""); // } String app = type == 1 ? "APP" : "JSAPI"; - resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_3_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId()); - paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, orderId, 3, 1, orderMoney, "", 1);//添加预支付数据 + resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_3_" + UUIDUtil.getRandomCode(5), payMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId()); + paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, orderId, 3, 1, Double.valueOf(payMoney.toString()), "", 1);//添加预支付数据 } if(payType == 2){//支付宝支付 Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + ",3", 10, 5, uid.toString(), "完成订单", orderMoney, callbackPath + "/base/aliPayOrderTaxi", "", type, null); @@ -480,28 +510,28 @@ // driverService.updateById(driver); Company company = companyService.selectById(driver.getFranchiseeId()); - if(Objects.isNull(company)){ - company = companyService.selectById(driver.getCompanyId()); - } - // 司机收入 - double moneyTwo; - // 平台收入 - double money; - if(orderCrossCity.getOrderSource() == 2 || orderCrossCity.getOrderSource() == 3){ - double v = company.getPercentageDeduction() / 100; - money = v * orderCrossCity.getOrderMoney(); - moneyTwo = orderCrossCity.getOrderMoney()-money; - }else { - money = company.getFixedDeduction(); - moneyTwo = orderCrossCity.getOrderMoney()-money; - } - driver.setBalance(driver.getBalance() + moneyTwo); - // 新增扣除使用费记录 - transactionDetailsService.saveDataTaxi(driver.getId(), "软件使用费", money, 2, 1, 2, 6, orderCrossCity.getId(),placeOrderWay,company.getId()); - // 司机订单收入 - transactionDetailsService.saveDataTaxi(driver.getId(), "完成订单", moneyTwo, 1, 1, 2, 3, orderCrossCity.getId(),placeOrderWay,company.getId()); - - driverService.updateById(driver); +// if(Objects.isNull(company)){ +// company = companyService.selectById(driver.getCompanyId()); +// } +// // 司机收入 +// double moneyTwo; +// // 平台收入 +// double money; +// if(orderCrossCity.getOrderSource() == 2 || orderCrossCity.getOrderSource() == 3){ +// double v = company.getPercentageDeduction() / 100; +// money = v * orderCrossCity.getOrderMoney(); +// moneyTwo = orderCrossCity.getOrderMoney()-money; +// }else { +// money = company.getFixedDeduction(); +// moneyTwo = orderCrossCity.getOrderMoney()-money; +// } +// driver.setBalance(driver.getBalance() + moneyTwo); +// // 新增扣除使用费记录 +// transactionDetailsService.saveDataTaxi(driver.getId(), "软件使用费", money, 2, 1, 2, 6, orderCrossCity.getId(),placeOrderWay,company.getId()); +// // 司机订单收入 +// transactionDetailsService.saveDataTaxi(driver.getId(), "完成订单", moneyTwo, 1, 1, 2, 3, orderCrossCity.getId(),placeOrderWay,company.getId()); +// +// driverService.updateById(driver); // TODO: 2020/5/24 这里需要给司机和用户推送订单状态 new Thread(new Runnable() { @@ -514,7 +544,7 @@ }).start(); - systemNoticeService.addSystemNotice(1, "您已使用" + (type == 1 ? "微信" : "支付宝") + "成功完成出行订单支付,谢谢使用!", orderCrossCity.getUserId(), 1); +// systemNoticeService.addSystemNotice(1, "您已使用" + (type == 1 ? "微信" : "支付宝") + "成功完成出行订单支付,谢谢使用!", orderCrossCity.getUserId(), 1); //添加司机消息提醒 systemNoticeService.addSystemNotice(2, "用户已线上完成支付", driver.getId(), 1); }else{ @@ -1384,8 +1414,8 @@ if(null == distance){ System.err.println("查询距离出错了"); }else{ - d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000)).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString(); - t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60)).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + ""; + d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000),2, BigDecimal.ROUND_HALF_EVEN).toString(); + t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60),2, BigDecimal.ROUND_HALF_EVEN).intValue() + ""; } orderServerWarpper.setReservationMileage("0"); orderServerWarpper.setReservationTime("0"); diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/UserCouponRecordMapper.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/UserCouponRecordMapper.java index 746ef5b..9a93f31 100644 --- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/UserCouponRecordMapper.java +++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/UserCouponRecordMapper.java @@ -58,4 +58,11 @@ * 修改过期状态 */ void updateTimeOut(); + + List<Map<String, Object>> queryAvailable_(@Param("uid") Integer uid, @Param("companyId") Integer companyId, + @Param("state") Integer state, @Param("couponUseType") Integer couponUseType, + @Param("money") Double money); + + List<Map<String, Object>> queryCouponCrossCity(@Param("ids") List<Integer> ids, @Param("pageNum") Integer pageNum, + @Param("size") Integer size); } diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserCouponRecordMapper.xml b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserCouponRecordMapper.xml index 1705663..11a15c3 100644 --- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserCouponRecordMapper.xml +++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserCouponRecordMapper.xml @@ -41,9 +41,6 @@ <if test="null != couponUseType"> and a.couponUseType = #{couponUseType} </if> - <if test="null != money"> - and if(a.couponType = 1, a.money <= #{money}, a.fullMoney <= #{money}) - </if> </select> <select id="queryCoupon" resultType="map"> @@ -55,9 +52,11 @@ a.couponType as `type`, a.fullMoney as fullMoney, a.state as state, - b.`name` as `name` + b.`name` as `name`, + c.citys from t_user_coupon_record a left join t_company b on (a.companyId = b.id) + left join t_sys_coupon_record c on (a.couponId = c.id) where a.expirationTime >= now() <if test="null != uid"> and a.userId = #{uid} @@ -71,13 +70,7 @@ <if test="null != couponUseType"> and a.couponUseType = #{couponUseType} </if> - <if test="null != money"> - and if(a.couponType = 1, a.money <= #{money}, a.fullMoney <= #{money}) - </if> order by a.insertTime desc - <if test="null != pageNum and null != size"> - limit #{pageNum}, #{size} - </if> </select> @@ -152,10 +145,63 @@ limit #{pageNum}, #{size} </if> </select> - + <select id="queryAvailable_" resultType="map"> + select + a.id as id, + a.money as money, + a.couponUseType as userType, + DATE_FORMAT(a.expirationTime, '%Y-%m-%d') as time, + a.couponType as `type`, + a.fullMoney as fullMoney, + a.state as state, + b.`name` as `name` + from t_user_coupon_record a + left join t_company b on (a.companyId = b.id) + where a.expirationTime >= now() + <if test="null != uid"> + and a.userId = #{uid} + </if> + <if test="null != companyId"> + and a.companyId = #{companyId} + </if> + <if test="null != state"> + and a.state = #{state} + </if> + <if test="null != couponUseType"> + and a.couponUseType = #{couponUseType} + </if> + order by a.insertTime desc + </select> <update id="updateTimeOut"> update t_user_coupon_record set state = 3,endTime = now() where now() > expirationTime and state = 1 </update> + + + <select id="queryCouponCrossCity" resultType="map"> + select + a.id as id, + a.money as money, + a.couponUseType as userType, + DATE_FORMAT(a.expirationTime, '%Y-%m-%d') as time, + a.couponType as `type`, + a.fullMoney as fullMoney, + a.state as state, + b.`name` as `name` + from t_user_coupon_record a + left join t_company b on (a.companyId = b.id) + <where> + <if test="ids != null and ids.size()>0"> + and a.id in + <foreach collection="ids" item="id" index="index" open="(" close=")" separator=","> + #{id} + </foreach> + </if> + </where> + order by a.insertTime desc + <if test="null != pageNum and null != size"> + limit #{pageNum}, #{size} + </if> + </select> </mapper> \ No newline at end of file diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IUserCouponRecordService.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IUserCouponRecordService.java index fd79e4d..5df4028 100644 --- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IUserCouponRecordService.java +++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IUserCouponRecordService.java @@ -75,4 +75,8 @@ * @throws Exception */ void updateTimeOut() throws Exception; + + List<Map<String, Object>> queryAvailable_(Integer uid, Integer companyId, Integer state, Integer couponUseType, Double money); + + List<Map<String, Object>> queryCouponCrossCity(List<Integer> ids, Integer pageNum, Integer size); } diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserCouponRecordServiceImpl.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserCouponRecordServiceImpl.java index b064b93..cd225e5 100644 --- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserCouponRecordServiceImpl.java +++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserCouponRecordServiceImpl.java @@ -15,6 +15,8 @@ import java.util.List; import java.util.Map; +import static org.bouncycastle.asn1.x500.style.RFC4519Style.uid; + @Service public class UserCouponRecordServiceImpl extends ServiceImpl<UserCouponRecordMapper, UserCouponRecord> implements IUserCouponRecordService { @@ -36,6 +38,25 @@ public int queryAvailable(Integer uid, Integer companyId, Integer state, Integer couponUseType, Double money) throws Exception { return userCouponRecordMapper.queryAvailable(uid, companyId, state, couponUseType, money); } + /** + * 获取可用优惠券数量 + * @param uid + * @param companyId + * @param state + * @param couponUseType + * @return + * @throws Exception + */ + @Override + public List<Map<String, Object>> queryAvailable_(Integer uid, Integer companyId, Integer state, Integer couponUseType, Double money){ + return userCouponRecordMapper.queryAvailable_(uid, companyId, state, couponUseType, money); + } + + @Override + public List<Map<String, Object>> queryCouponCrossCity(List<Integer> ids, Integer pageNum, Integer size) { + pageNum = (pageNum - 1) * size; + return userCouponRecordMapper.queryCouponCrossCity(ids, pageNum, size); + } /** -- Gitblit v1.7.1