From 704d1c246b1da77fcef2628bd0d459489d064c19 Mon Sep 17 00:00:00 2001 From: hurui <177768073@qq.com> Date: Thu, 4 Aug 2022 14:08:58 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bweb/controller/HighGasController.java | 10 +++- .../java/com/bweb/model/ImportStoreModel.java | 2 +- .../com/hai/config/JinZhuJiaYouService.java | 3 +- .../com/hai/dao/HighChildOrderMapper.java | 55 +++++++++-------- .../hai/dao/HighChildOrderSqlProvider.java | 14 +++++ .../com/hai/dao/HighGasOilPriceMapper.java | 19 +++--- .../hai/dao/HighGasOilPriceSqlProvider.java | 14 +++++ .../java/com/hai/entity/HighChildOrder.java | 18 +++++- .../com/hai/entity/HighChildOrderExample.java | 60 +++++++++++++++++++ .../java/com/hai/entity/HighGasOilPrice.java | 16 +++++ .../hai/entity/HighGasOilPriceExample.java | 60 +++++++++++++++++++ .../com/hai/enum_type/JinZhuJiaYouOilNo.java | 9 ++- .../hai/service/impl/HighGasServiceImpl.java | 9 ++- .../service/impl/HighOrderServiceImpl.java | 45 +++++++++++++- 14 files changed, 290 insertions(+), 44 deletions(-) diff --git a/hai-bweb/src/main/java/com/bweb/controller/HighGasController.java b/hai-bweb/src/main/java/com/bweb/controller/HighGasController.java index b5a2297e..19fbfff3 100644 --- a/hai-bweb/src/main/java/com/bweb/controller/HighGasController.java +++ b/hai-bweb/src/main/java/com/bweb/controller/HighGasController.java @@ -812,6 +812,10 @@ public class HighGasController { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "退款失败,未找到加油站信息"); } + // 油站来源,根据不同的来源,请求不同的退款业务接口。 + // 团油 退款需要申请。不是实时退款 + // 加好油 实时退款,退款成功就可以退款给用户 + // 金猪加油 没有线上退款接口,线下核实后直接退款给用户。 if (store.getSourceType().equals(MerchantStoreSourceType.type2.getNumber())) { JSONObject object = TuanYouConfig.refuelingOrderRefund(order.getMemPhone(), order.getOrderNo(), body.getString("refundContent")); if (object == null || !object.getString("code").equals("200")) { @@ -831,9 +835,13 @@ public class HighGasController { highOrderService.updateOrderDetail(order); } + + // 用户支付金额原路退款 // 来源类型 1:平台自建 2:团油 if (store.getSourceType().equals(MerchantStoreSourceType.type1.getNumber()) - || store.getSourceType().equals(MerchantStoreSourceType.type3.getNumber())) { + || store.getSourceType().equals(MerchantStoreSourceType.type3.getNumber()) + || store.getSourceType().equals(MerchantStoreSourceType.type4.getNumber()) + ) { if (order.getPayType() == 2) { OrderRefundModel orderRefundModel = WxOrderConfig.orderToRefund(order.getPaySerialNo(), order.getPayRealPrice(), order.getAccountMerchantNum(), order.getPayRealPrice()); diff --git a/hai-bweb/src/main/java/com/bweb/model/ImportStoreModel.java b/hai-bweb/src/main/java/com/bweb/model/ImportStoreModel.java index bb18791f..7a93b19f 100644 --- a/hai-bweb/src/main/java/com/bweb/model/ImportStoreModel.java +++ b/hai-bweb/src/main/java/com/bweb/model/ImportStoreModel.java @@ -5,7 +5,7 @@ import com.alibaba.excel.annotation.format.DateTimeFormat; /** * @Author 胡锐 - * @Description 导入门店 + * @Description * @Date 2021/3/26 19:23 **/ public class ImportStoreModel { diff --git a/hai-service/src/main/java/com/hai/config/JinZhuJiaYouService.java b/hai-service/src/main/java/com/hai/config/JinZhuJiaYouService.java index 5223c7f3..caf9d88c 100644 --- a/hai-service/src/main/java/com/hai/config/JinZhuJiaYouService.java +++ b/hai-service/src/main/java/com/hai/config/JinZhuJiaYouService.java @@ -112,7 +112,7 @@ public class JinZhuJiaYouService { // 请求头部 Map heard = new HashMap<>(); heard.put("Request-App-Id", "app_xiaohan_test_01"); - heard.put("Request-Service-Name", "STATION_TREE_PAGE"); + heard.put("Request-Service-Name", service); heard.put("Request-Signature", generateSign(param)); JSONObject repsObject = HttpsUtils.doPost(reqUrl, param, heard); @@ -128,7 +128,6 @@ public class JinZhuJiaYouService { || !repsObject.getInteger("status").equals(200) || !repsObject.getString("type").equals("OK")) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, repsObject == null?"请求失败":repsObject.getString("title")); - } return repsObject; } diff --git a/hai-service/src/main/java/com/hai/dao/HighChildOrderMapper.java b/hai-service/src/main/java/com/hai/dao/HighChildOrderMapper.java index c92fd604..72349bcd 100644 --- a/hai-service/src/main/java/com/hai/dao/HighChildOrderMapper.java +++ b/hai-service/src/main/java/com/hai/dao/HighChildOrderMapper.java @@ -52,16 +52,17 @@ public interface HighChildOrderMapper extends HighChildOrderMapperExt { "gas_oil_type, gas_order_no, ", "gas_price_platform, gas_price_gun, ", "gas_price_vip, gas_price_official, ", - "gas_oil_liters, gas_discount, ", - "gas_oil_subsidy, gas_liters_preferences, ", - "gas_price_preferences, gas_class_group_id, ", - "gas_class_group_name, gas_class_group_task_id, ", - "gas_staff_id, gas_staff_name, ", - "gas_salesman_id, gas_salesman_name, ", - "gas_agent_id, gas_agent_name, ", - "gas_org_id, gas_org_name, ", - "ext_1, ext_2, ext_3, ", - "ext_4, ext_5, ext_6)", + "gas_price_channel_pay, gas_oil_liters, ", + "gas_discount, gas_oil_subsidy, ", + "gas_liters_preferences, gas_price_preferences, ", + "gas_class_group_id, gas_class_group_name, ", + "gas_class_group_task_id, gas_staff_id, ", + "gas_staff_name, gas_salesman_id, ", + "gas_salesman_name, gas_agent_id, ", + "gas_agent_name, gas_org_id, ", + "gas_org_name, ext_1, ", + "ext_2, ext_3, ext_4, ", + "ext_5, ext_6)", "values (#{orderId,jdbcType=BIGINT}, #{memId,jdbcType=BIGINT}, ", "#{storeId,jdbcType=BIGINT}, #{storeName,jdbcType=VARCHAR}, ", "#{storeAddress,jdbcType=VARCHAR}, #{goodsType,jdbcType=INTEGER}, ", @@ -75,16 +76,17 @@ public interface HighChildOrderMapper extends HighChildOrderMapperExt { "#{gasOilType,jdbcType=INTEGER}, #{gasOrderNo,jdbcType=VARCHAR}, ", "#{gasPricePlatform,jdbcType=DECIMAL}, #{gasPriceGun,jdbcType=DECIMAL}, ", "#{gasPriceVip,jdbcType=DECIMAL}, #{gasPriceOfficial,jdbcType=DECIMAL}, ", - "#{gasOilLiters,jdbcType=DECIMAL}, #{gasDiscount,jdbcType=DECIMAL}, ", - "#{gasOilSubsidy,jdbcType=DECIMAL}, #{gasLitersPreferences,jdbcType=DECIMAL}, ", - "#{gasPricePreferences,jdbcType=DECIMAL}, #{gasClassGroupId,jdbcType=BIGINT}, ", - "#{gasClassGroupName,jdbcType=VARCHAR}, #{gasClassGroupTaskId,jdbcType=BIGINT}, ", - "#{gasStaffId,jdbcType=BIGINT}, #{gasStaffName,jdbcType=VARCHAR}, ", - "#{gasSalesmanId,jdbcType=BIGINT}, #{gasSalesmanName,jdbcType=VARCHAR}, ", - "#{gasAgentId,jdbcType=BIGINT}, #{gasAgentName,jdbcType=VARCHAR}, ", - "#{gasOrgId,jdbcType=BIGINT}, #{gasOrgName,jdbcType=VARCHAR}, ", - "#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR}, ", - "#{ext4,jdbcType=VARCHAR}, #{ext5,jdbcType=VARCHAR}, #{ext6,jdbcType=VARCHAR})" + "#{gasPriceChannelPay,jdbcType=DECIMAL}, #{gasOilLiters,jdbcType=DECIMAL}, ", + "#{gasDiscount,jdbcType=DECIMAL}, #{gasOilSubsidy,jdbcType=DECIMAL}, ", + "#{gasLitersPreferences,jdbcType=DECIMAL}, #{gasPricePreferences,jdbcType=DECIMAL}, ", + "#{gasClassGroupId,jdbcType=BIGINT}, #{gasClassGroupName,jdbcType=VARCHAR}, ", + "#{gasClassGroupTaskId,jdbcType=BIGINT}, #{gasStaffId,jdbcType=BIGINT}, ", + "#{gasStaffName,jdbcType=VARCHAR}, #{gasSalesmanId,jdbcType=BIGINT}, ", + "#{gasSalesmanName,jdbcType=VARCHAR}, #{gasAgentId,jdbcType=BIGINT}, ", + "#{gasAgentName,jdbcType=VARCHAR}, #{gasOrgId,jdbcType=BIGINT}, ", + "#{gasOrgName,jdbcType=VARCHAR}, #{ext1,jdbcType=VARCHAR}, ", + "#{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR}, #{ext4,jdbcType=VARCHAR}, ", + "#{ext5,jdbcType=VARCHAR}, #{ext6,jdbcType=VARCHAR})" }) @Options(useGeneratedKeys=true,keyProperty="id") int insert(HighChildOrder record); @@ -122,6 +124,7 @@ public interface HighChildOrderMapper extends HighChildOrderMapperExt { @Result(column="gas_price_gun", property="gasPriceGun", jdbcType=JdbcType.DECIMAL), @Result(column="gas_price_vip", property="gasPriceVip", jdbcType=JdbcType.DECIMAL), @Result(column="gas_price_official", property="gasPriceOfficial", jdbcType=JdbcType.DECIMAL), + @Result(column="gas_price_channel_pay", property="gasPriceChannelPay", jdbcType=JdbcType.DECIMAL), @Result(column="gas_oil_liters", property="gasOilLiters", jdbcType=JdbcType.DECIMAL), @Result(column="gas_discount", property="gasDiscount", jdbcType=JdbcType.DECIMAL), @Result(column="gas_oil_subsidy", property="gasOilSubsidy", jdbcType=JdbcType.DECIMAL), @@ -153,11 +156,11 @@ public interface HighChildOrderMapper extends HighChildOrderMapperExt { "goods_name, goods_desc, goods_img, goods_spec_name, goods_price, goods_actual_price, ", "sale_count, total_price, giveaway_type, child_orde_status, praise_status, gas_oil_no, ", "gas_gun_no, gas_oil_type, gas_order_no, gas_price_platform, gas_price_gun, gas_price_vip, ", - "gas_price_official, gas_oil_liters, gas_discount, gas_oil_subsidy, gas_liters_preferences, ", - "gas_price_preferences, gas_class_group_id, gas_class_group_name, gas_class_group_task_id, ", - "gas_staff_id, gas_staff_name, gas_salesman_id, gas_salesman_name, gas_agent_id, ", - "gas_agent_name, gas_org_id, gas_org_name, ext_1, ext_2, ext_3, ext_4, ext_5, ", - "ext_6", + "gas_price_official, gas_price_channel_pay, gas_oil_liters, gas_discount, gas_oil_subsidy, ", + "gas_liters_preferences, gas_price_preferences, gas_class_group_id, gas_class_group_name, ", + "gas_class_group_task_id, gas_staff_id, gas_staff_name, gas_salesman_id, gas_salesman_name, ", + "gas_agent_id, gas_agent_name, gas_org_id, gas_org_name, ext_1, ext_2, ext_3, ", + "ext_4, ext_5, ext_6", "from high_child_order", "where id = #{id,jdbcType=BIGINT}" }) @@ -189,6 +192,7 @@ public interface HighChildOrderMapper extends HighChildOrderMapperExt { @Result(column="gas_price_gun", property="gasPriceGun", jdbcType=JdbcType.DECIMAL), @Result(column="gas_price_vip", property="gasPriceVip", jdbcType=JdbcType.DECIMAL), @Result(column="gas_price_official", property="gasPriceOfficial", jdbcType=JdbcType.DECIMAL), + @Result(column="gas_price_channel_pay", property="gasPriceChannelPay", jdbcType=JdbcType.DECIMAL), @Result(column="gas_oil_liters", property="gasOilLiters", jdbcType=JdbcType.DECIMAL), @Result(column="gas_discount", property="gasDiscount", jdbcType=JdbcType.DECIMAL), @Result(column="gas_oil_subsidy", property="gasOilSubsidy", jdbcType=JdbcType.DECIMAL), @@ -251,6 +255,7 @@ public interface HighChildOrderMapper extends HighChildOrderMapperExt { "gas_price_gun = #{gasPriceGun,jdbcType=DECIMAL},", "gas_price_vip = #{gasPriceVip,jdbcType=DECIMAL},", "gas_price_official = #{gasPriceOfficial,jdbcType=DECIMAL},", + "gas_price_channel_pay = #{gasPriceChannelPay,jdbcType=DECIMAL},", "gas_oil_liters = #{gasOilLiters,jdbcType=DECIMAL},", "gas_discount = #{gasDiscount,jdbcType=DECIMAL},", "gas_oil_subsidy = #{gasOilSubsidy,jdbcType=DECIMAL},", diff --git a/hai-service/src/main/java/com/hai/dao/HighChildOrderSqlProvider.java b/hai-service/src/main/java/com/hai/dao/HighChildOrderSqlProvider.java index e89debe9..2159353f 100644 --- a/hai-service/src/main/java/com/hai/dao/HighChildOrderSqlProvider.java +++ b/hai-service/src/main/java/com/hai/dao/HighChildOrderSqlProvider.java @@ -132,6 +132,10 @@ public class HighChildOrderSqlProvider { sql.VALUES("gas_price_official", "#{gasPriceOfficial,jdbcType=DECIMAL}"); } + if (record.getGasPriceChannelPay() != null) { + sql.VALUES("gas_price_channel_pay", "#{gasPriceChannelPay,jdbcType=DECIMAL}"); + } + if (record.getGasOilLiters() != null) { sql.VALUES("gas_oil_liters", "#{gasOilLiters,jdbcType=DECIMAL}"); } @@ -256,6 +260,7 @@ public class HighChildOrderSqlProvider { sql.SELECT("gas_price_gun"); sql.SELECT("gas_price_vip"); sql.SELECT("gas_price_official"); + sql.SELECT("gas_price_channel_pay"); sql.SELECT("gas_oil_liters"); sql.SELECT("gas_discount"); sql.SELECT("gas_oil_subsidy"); @@ -403,6 +408,10 @@ public class HighChildOrderSqlProvider { sql.SET("gas_price_official = #{record.gasPriceOfficial,jdbcType=DECIMAL}"); } + if (record.getGasPriceChannelPay() != null) { + sql.SET("gas_price_channel_pay = #{record.gasPriceChannelPay,jdbcType=DECIMAL}"); + } + if (record.getGasOilLiters() != null) { sql.SET("gas_oil_liters = #{record.gasOilLiters,jdbcType=DECIMAL}"); } @@ -526,6 +535,7 @@ public class HighChildOrderSqlProvider { sql.SET("gas_price_gun = #{record.gasPriceGun,jdbcType=DECIMAL}"); sql.SET("gas_price_vip = #{record.gasPriceVip,jdbcType=DECIMAL}"); sql.SET("gas_price_official = #{record.gasPriceOfficial,jdbcType=DECIMAL}"); + sql.SET("gas_price_channel_pay = #{record.gasPriceChannelPay,jdbcType=DECIMAL}"); sql.SET("gas_oil_liters = #{record.gasOilLiters,jdbcType=DECIMAL}"); sql.SET("gas_discount = #{record.gasDiscount,jdbcType=DECIMAL}"); sql.SET("gas_oil_subsidy = #{record.gasOilSubsidy,jdbcType=DECIMAL}"); @@ -662,6 +672,10 @@ public class HighChildOrderSqlProvider { sql.SET("gas_price_official = #{gasPriceOfficial,jdbcType=DECIMAL}"); } + if (record.getGasPriceChannelPay() != null) { + sql.SET("gas_price_channel_pay = #{gasPriceChannelPay,jdbcType=DECIMAL}"); + } + if (record.getGasOilLiters() != null) { sql.SET("gas_oil_liters = #{gasOilLiters,jdbcType=DECIMAL}"); } diff --git a/hai-service/src/main/java/com/hai/dao/HighGasOilPriceMapper.java b/hai-service/src/main/java/com/hai/dao/HighGasOilPriceMapper.java index 41b38ac2..a3bd8ee3 100644 --- a/hai-service/src/main/java/com/hai/dao/HighGasOilPriceMapper.java +++ b/hai-service/src/main/java/com/hai/dao/HighGasOilPriceMapper.java @@ -43,16 +43,16 @@ public interface HighGasOilPriceMapper extends HighGasOilPriceMapperExt { "oil_no_name, preferential_margin, ", "gas_station_drop, price_vip, ", "price_gun, price_official, ", - "oil_type, oil_type_name, ", - "`status`, ext_1, ext_2, ", - "ext_3)", + "price_cost, oil_type, ", + "oil_type_name, `status`, ", + "ext_1, ext_2, ext_3)", "values (#{merchantStoreId,jdbcType=BIGINT}, #{oilNo,jdbcType=INTEGER}, ", "#{oilNoName,jdbcType=VARCHAR}, #{preferentialMargin,jdbcType=DECIMAL}, ", "#{gasStationDrop,jdbcType=DECIMAL}, #{priceVip,jdbcType=DECIMAL}, ", "#{priceGun,jdbcType=DECIMAL}, #{priceOfficial,jdbcType=DECIMAL}, ", - "#{oilType,jdbcType=INTEGER}, #{oilTypeName,jdbcType=VARCHAR}, ", - "#{status,jdbcType=INTEGER}, #{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, ", - "#{ext3,jdbcType=VARCHAR})" + "#{priceCost,jdbcType=DECIMAL}, #{oilType,jdbcType=INTEGER}, ", + "#{oilTypeName,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, ", + "#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})" }) @Options(useGeneratedKeys=true,keyProperty="id") int insert(HighGasOilPrice record); @@ -72,6 +72,7 @@ public interface HighGasOilPriceMapper extends HighGasOilPriceMapperExt { @Result(column="price_vip", property="priceVip", jdbcType=JdbcType.DECIMAL), @Result(column="price_gun", property="priceGun", jdbcType=JdbcType.DECIMAL), @Result(column="price_official", property="priceOfficial", jdbcType=JdbcType.DECIMAL), + @Result(column="price_cost", property="priceCost", jdbcType=JdbcType.DECIMAL), @Result(column="oil_type", property="oilType", jdbcType=JdbcType.INTEGER), @Result(column="oil_type_name", property="oilTypeName", jdbcType=JdbcType.VARCHAR), @Result(column="status", property="status", jdbcType=JdbcType.INTEGER), @@ -84,8 +85,8 @@ public interface HighGasOilPriceMapper extends HighGasOilPriceMapperExt { @Select({ "select", "id, merchant_store_id, oil_no, oil_no_name, preferential_margin, gas_station_drop, ", - "price_vip, price_gun, price_official, oil_type, oil_type_name, `status`, ext_1, ", - "ext_2, ext_3", + "price_vip, price_gun, price_official, price_cost, oil_type, oil_type_name, `status`, ", + "ext_1, ext_2, ext_3", "from high_gas_oil_price", "where id = #{id,jdbcType=BIGINT}" }) @@ -99,6 +100,7 @@ public interface HighGasOilPriceMapper extends HighGasOilPriceMapperExt { @Result(column="price_vip", property="priceVip", jdbcType=JdbcType.DECIMAL), @Result(column="price_gun", property="priceGun", jdbcType=JdbcType.DECIMAL), @Result(column="price_official", property="priceOfficial", jdbcType=JdbcType.DECIMAL), + @Result(column="price_cost", property="priceCost", jdbcType=JdbcType.DECIMAL), @Result(column="oil_type", property="oilType", jdbcType=JdbcType.INTEGER), @Result(column="oil_type_name", property="oilTypeName", jdbcType=JdbcType.VARCHAR), @Result(column="status", property="status", jdbcType=JdbcType.INTEGER), @@ -127,6 +129,7 @@ public interface HighGasOilPriceMapper extends HighGasOilPriceMapperExt { "price_vip = #{priceVip,jdbcType=DECIMAL},", "price_gun = #{priceGun,jdbcType=DECIMAL},", "price_official = #{priceOfficial,jdbcType=DECIMAL},", + "price_cost = #{priceCost,jdbcType=DECIMAL},", "oil_type = #{oilType,jdbcType=INTEGER},", "oil_type_name = #{oilTypeName,jdbcType=VARCHAR},", "`status` = #{status,jdbcType=INTEGER},", diff --git a/hai-service/src/main/java/com/hai/dao/HighGasOilPriceSqlProvider.java b/hai-service/src/main/java/com/hai/dao/HighGasOilPriceSqlProvider.java index 714766f9..d2186faf 100644 --- a/hai-service/src/main/java/com/hai/dao/HighGasOilPriceSqlProvider.java +++ b/hai-service/src/main/java/com/hai/dao/HighGasOilPriceSqlProvider.java @@ -60,6 +60,10 @@ public class HighGasOilPriceSqlProvider { sql.VALUES("price_official", "#{priceOfficial,jdbcType=DECIMAL}"); } + if (record.getPriceCost() != null) { + sql.VALUES("price_cost", "#{priceCost,jdbcType=DECIMAL}"); + } + if (record.getOilType() != null) { sql.VALUES("oil_type", "#{oilType,jdbcType=INTEGER}"); } @@ -102,6 +106,7 @@ public class HighGasOilPriceSqlProvider { sql.SELECT("price_vip"); sql.SELECT("price_gun"); sql.SELECT("price_official"); + sql.SELECT("price_cost"); sql.SELECT("oil_type"); sql.SELECT("oil_type_name"); sql.SELECT("`status`"); @@ -161,6 +166,10 @@ public class HighGasOilPriceSqlProvider { sql.SET("price_official = #{record.priceOfficial,jdbcType=DECIMAL}"); } + if (record.getPriceCost() != null) { + sql.SET("price_cost = #{record.priceCost,jdbcType=DECIMAL}"); + } + if (record.getOilType() != null) { sql.SET("oil_type = #{record.oilType,jdbcType=INTEGER}"); } @@ -202,6 +211,7 @@ public class HighGasOilPriceSqlProvider { sql.SET("price_vip = #{record.priceVip,jdbcType=DECIMAL}"); sql.SET("price_gun = #{record.priceGun,jdbcType=DECIMAL}"); sql.SET("price_official = #{record.priceOfficial,jdbcType=DECIMAL}"); + sql.SET("price_cost = #{record.priceCost,jdbcType=DECIMAL}"); sql.SET("oil_type = #{record.oilType,jdbcType=INTEGER}"); sql.SET("oil_type_name = #{record.oilTypeName,jdbcType=VARCHAR}"); sql.SET("`status` = #{record.status,jdbcType=INTEGER}"); @@ -250,6 +260,10 @@ public class HighGasOilPriceSqlProvider { sql.SET("price_official = #{priceOfficial,jdbcType=DECIMAL}"); } + if (record.getPriceCost() != null) { + sql.SET("price_cost = #{priceCost,jdbcType=DECIMAL}"); + } + if (record.getOilType() != null) { sql.SET("oil_type = #{oilType,jdbcType=INTEGER}"); } diff --git a/hai-service/src/main/java/com/hai/entity/HighChildOrder.java b/hai-service/src/main/java/com/hai/entity/HighChildOrder.java index 134f3e9f..9ed597a1 100644 --- a/hai-service/src/main/java/com/hai/entity/HighChildOrder.java +++ b/hai-service/src/main/java/com/hai/entity/HighChildOrder.java @@ -148,6 +148,11 @@ public class HighChildOrder implements Serializable { */ private BigDecimal gasPriceOfficial; + /** + * 【加油站】渠道支付金额 + */ + private BigDecimal gasPriceChannelPay; + /** * 【加油站】加油升数 */ @@ -458,6 +463,14 @@ public class HighChildOrder implements Serializable { this.gasPriceOfficial = gasPriceOfficial; } + public BigDecimal getGasPriceChannelPay() { + return gasPriceChannelPay; + } + + public void setGasPriceChannelPay(BigDecimal gasPriceChannelPay) { + this.gasPriceChannelPay = gasPriceChannelPay; + } + public BigDecimal getGasOilLiters() { return gasOilLiters; } @@ -673,6 +686,7 @@ public class HighChildOrder implements Serializable { && (this.getGasPriceGun() == null ? other.getGasPriceGun() == null : this.getGasPriceGun().equals(other.getGasPriceGun())) && (this.getGasPriceVip() == null ? other.getGasPriceVip() == null : this.getGasPriceVip().equals(other.getGasPriceVip())) && (this.getGasPriceOfficial() == null ? other.getGasPriceOfficial() == null : this.getGasPriceOfficial().equals(other.getGasPriceOfficial())) + && (this.getGasPriceChannelPay() == null ? other.getGasPriceChannelPay() == null : this.getGasPriceChannelPay().equals(other.getGasPriceChannelPay())) && (this.getGasOilLiters() == null ? other.getGasOilLiters() == null : this.getGasOilLiters().equals(other.getGasOilLiters())) && (this.getGasDiscount() == null ? other.getGasDiscount() == null : this.getGasDiscount().equals(other.getGasDiscount())) && (this.getGasOilSubsidy() == null ? other.getGasOilSubsidy() == null : this.getGasOilSubsidy().equals(other.getGasOilSubsidy())) @@ -728,6 +742,7 @@ public class HighChildOrder implements Serializable { result = prime * result + ((getGasPriceGun() == null) ? 0 : getGasPriceGun().hashCode()); result = prime * result + ((getGasPriceVip() == null) ? 0 : getGasPriceVip().hashCode()); result = prime * result + ((getGasPriceOfficial() == null) ? 0 : getGasPriceOfficial().hashCode()); + result = prime * result + ((getGasPriceChannelPay() == null) ? 0 : getGasPriceChannelPay().hashCode()); result = prime * result + ((getGasOilLiters() == null) ? 0 : getGasOilLiters().hashCode()); result = prime * result + ((getGasDiscount() == null) ? 0 : getGasDiscount().hashCode()); result = prime * result + ((getGasOilSubsidy() == null) ? 0 : getGasOilSubsidy().hashCode()); @@ -786,6 +801,7 @@ public class HighChildOrder implements Serializable { sb.append(", gasPriceGun=").append(gasPriceGun); sb.append(", gasPriceVip=").append(gasPriceVip); sb.append(", gasPriceOfficial=").append(gasPriceOfficial); + sb.append(", gasPriceChannelPay=").append(gasPriceChannelPay); sb.append(", gasOilLiters=").append(gasOilLiters); sb.append(", gasDiscount=").append(gasDiscount); sb.append(", gasOilSubsidy=").append(gasOilSubsidy); @@ -812,4 +828,4 @@ public class HighChildOrder implements Serializable { sb.append("]"); return sb.toString(); } -} +} \ No newline at end of file diff --git a/hai-service/src/main/java/com/hai/entity/HighChildOrderExample.java b/hai-service/src/main/java/com/hai/entity/HighChildOrderExample.java index cdde1256..124e94bf 100644 --- a/hai-service/src/main/java/com/hai/entity/HighChildOrderExample.java +++ b/hai-service/src/main/java/com/hai/entity/HighChildOrderExample.java @@ -1835,6 +1835,66 @@ public class HighChildOrderExample { return (Criteria) this; } + public Criteria andGasPriceChannelPayIsNull() { + addCriterion("gas_price_channel_pay is null"); + return (Criteria) this; + } + + public Criteria andGasPriceChannelPayIsNotNull() { + addCriterion("gas_price_channel_pay is not null"); + return (Criteria) this; + } + + public Criteria andGasPriceChannelPayEqualTo(BigDecimal value) { + addCriterion("gas_price_channel_pay =", value, "gasPriceChannelPay"); + return (Criteria) this; + } + + public Criteria andGasPriceChannelPayNotEqualTo(BigDecimal value) { + addCriterion("gas_price_channel_pay <>", value, "gasPriceChannelPay"); + return (Criteria) this; + } + + public Criteria andGasPriceChannelPayGreaterThan(BigDecimal value) { + addCriterion("gas_price_channel_pay >", value, "gasPriceChannelPay"); + return (Criteria) this; + } + + public Criteria andGasPriceChannelPayGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("gas_price_channel_pay >=", value, "gasPriceChannelPay"); + return (Criteria) this; + } + + public Criteria andGasPriceChannelPayLessThan(BigDecimal value) { + addCriterion("gas_price_channel_pay <", value, "gasPriceChannelPay"); + return (Criteria) this; + } + + public Criteria andGasPriceChannelPayLessThanOrEqualTo(BigDecimal value) { + addCriterion("gas_price_channel_pay <=", value, "gasPriceChannelPay"); + return (Criteria) this; + } + + public Criteria andGasPriceChannelPayIn(List values) { + addCriterion("gas_price_channel_pay in", values, "gasPriceChannelPay"); + return (Criteria) this; + } + + public Criteria andGasPriceChannelPayNotIn(List values) { + addCriterion("gas_price_channel_pay not in", values, "gasPriceChannelPay"); + return (Criteria) this; + } + + public Criteria andGasPriceChannelPayBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("gas_price_channel_pay between", value1, value2, "gasPriceChannelPay"); + return (Criteria) this; + } + + public Criteria andGasPriceChannelPayNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("gas_price_channel_pay not between", value1, value2, "gasPriceChannelPay"); + return (Criteria) this; + } + public Criteria andGasOilLitersIsNull() { addCriterion("gas_oil_liters is null"); return (Criteria) this; diff --git a/hai-service/src/main/java/com/hai/entity/HighGasOilPrice.java b/hai-service/src/main/java/com/hai/entity/HighGasOilPrice.java index 202d2494..5e2eb4a5 100644 --- a/hai-service/src/main/java/com/hai/entity/HighGasOilPrice.java +++ b/hai-service/src/main/java/com/hai/entity/HighGasOilPrice.java @@ -58,6 +58,11 @@ public class HighGasOilPrice implements Serializable { */ private BigDecimal priceOfficial; + /** + * 成本价 + */ + private BigDecimal priceCost; + /** * 油品类型 1:汽油:2:柴油;3:天然气 */ @@ -153,6 +158,14 @@ public class HighGasOilPrice implements Serializable { this.priceOfficial = priceOfficial; } + public BigDecimal getPriceCost() { + return priceCost; + } + + public void setPriceCost(BigDecimal priceCost) { + this.priceCost = priceCost; + } + public Integer getOilType() { return oilType; } @@ -222,6 +235,7 @@ public class HighGasOilPrice implements Serializable { && (this.getPriceVip() == null ? other.getPriceVip() == null : this.getPriceVip().equals(other.getPriceVip())) && (this.getPriceGun() == null ? other.getPriceGun() == null : this.getPriceGun().equals(other.getPriceGun())) && (this.getPriceOfficial() == null ? other.getPriceOfficial() == null : this.getPriceOfficial().equals(other.getPriceOfficial())) + && (this.getPriceCost() == null ? other.getPriceCost() == null : this.getPriceCost().equals(other.getPriceCost())) && (this.getOilType() == null ? other.getOilType() == null : this.getOilType().equals(other.getOilType())) && (this.getOilTypeName() == null ? other.getOilTypeName() == null : this.getOilTypeName().equals(other.getOilTypeName())) && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus())) @@ -243,6 +257,7 @@ public class HighGasOilPrice implements Serializable { result = prime * result + ((getPriceVip() == null) ? 0 : getPriceVip().hashCode()); result = prime * result + ((getPriceGun() == null) ? 0 : getPriceGun().hashCode()); result = prime * result + ((getPriceOfficial() == null) ? 0 : getPriceOfficial().hashCode()); + result = prime * result + ((getPriceCost() == null) ? 0 : getPriceCost().hashCode()); result = prime * result + ((getOilType() == null) ? 0 : getOilType().hashCode()); result = prime * result + ((getOilTypeName() == null) ? 0 : getOilTypeName().hashCode()); result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode()); @@ -267,6 +282,7 @@ public class HighGasOilPrice implements Serializable { sb.append(", priceVip=").append(priceVip); sb.append(", priceGun=").append(priceGun); sb.append(", priceOfficial=").append(priceOfficial); + sb.append(", priceCost=").append(priceCost); sb.append(", oilType=").append(oilType); sb.append(", oilTypeName=").append(oilTypeName); sb.append(", status=").append(status); diff --git a/hai-service/src/main/java/com/hai/entity/HighGasOilPriceExample.java b/hai-service/src/main/java/com/hai/entity/HighGasOilPriceExample.java index 313cda7f..59f713d7 100644 --- a/hai-service/src/main/java/com/hai/entity/HighGasOilPriceExample.java +++ b/hai-service/src/main/java/com/hai/entity/HighGasOilPriceExample.java @@ -675,6 +675,66 @@ public class HighGasOilPriceExample { return (Criteria) this; } + public Criteria andPriceCostIsNull() { + addCriterion("price_cost is null"); + return (Criteria) this; + } + + public Criteria andPriceCostIsNotNull() { + addCriterion("price_cost is not null"); + return (Criteria) this; + } + + public Criteria andPriceCostEqualTo(BigDecimal value) { + addCriterion("price_cost =", value, "priceCost"); + return (Criteria) this; + } + + public Criteria andPriceCostNotEqualTo(BigDecimal value) { + addCriterion("price_cost <>", value, "priceCost"); + return (Criteria) this; + } + + public Criteria andPriceCostGreaterThan(BigDecimal value) { + addCriterion("price_cost >", value, "priceCost"); + return (Criteria) this; + } + + public Criteria andPriceCostGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("price_cost >=", value, "priceCost"); + return (Criteria) this; + } + + public Criteria andPriceCostLessThan(BigDecimal value) { + addCriterion("price_cost <", value, "priceCost"); + return (Criteria) this; + } + + public Criteria andPriceCostLessThanOrEqualTo(BigDecimal value) { + addCriterion("price_cost <=", value, "priceCost"); + return (Criteria) this; + } + + public Criteria andPriceCostIn(List values) { + addCriterion("price_cost in", values, "priceCost"); + return (Criteria) this; + } + + public Criteria andPriceCostNotIn(List values) { + addCriterion("price_cost not in", values, "priceCost"); + return (Criteria) this; + } + + public Criteria andPriceCostBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("price_cost between", value1, value2, "priceCost"); + return (Criteria) this; + } + + public Criteria andPriceCostNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("price_cost not between", value1, value2, "priceCost"); + return (Criteria) this; + } + public Criteria andOilTypeIsNull() { addCriterion("oil_type is null"); return (Criteria) this; diff --git a/hai-service/src/main/java/com/hai/enum_type/JinZhuJiaYouOilNo.java b/hai-service/src/main/java/com/hai/enum_type/JinZhuJiaYouOilNo.java index 9105de6b..bf095719 100644 --- a/hai-service/src/main/java/com/hai/enum_type/JinZhuJiaYouOilNo.java +++ b/hai-service/src/main/java/com/hai/enum_type/JinZhuJiaYouOilNo.java @@ -3,7 +3,7 @@ package com.hai.enum_type; import java.util.Objects; /** - * 金猪加油 油号枚举 + * 油号枚举 */ public enum JinZhuJiaYouOilNo { @@ -34,6 +34,13 @@ public enum JinZhuJiaYouOilNo { return null; } + public static JinZhuJiaYouOilNo getDataByOilNo(Integer oilNo) { + for (JinZhuJiaYouOilNo ele : values()) { + if(Objects.equals(oilNo,ele.getOilNo())) return ele; + } + return null; + } + public String getOilNoCode() { return oilNoCode; } diff --git a/hai-service/src/main/java/com/hai/service/impl/HighGasServiceImpl.java b/hai-service/src/main/java/com/hai/service/impl/HighGasServiceImpl.java index 87ba3b26..5a60fa15 100644 --- a/hai-service/src/main/java/com/hai/service/impl/HighGasServiceImpl.java +++ b/hai-service/src/main/java/com/hai/service/impl/HighGasServiceImpl.java @@ -297,7 +297,8 @@ public class HighGasServiceImpl implements HighGasService { highGasOilPrice.setPreferentialMargin(new BigDecimal("0")); highGasOilPrice.setGasStationDrop(oilPriceObject.getBigDecimal("guidancePrice").subtract(oilPriceObject.getBigDecimal("listingPrice"))); - highGasOilPrice.setPriceVip(oilPriceObject.getBigDecimal("merchantStrikePrice")); + highGasOilPrice.setPriceCost(oilPriceObject.getBigDecimal("merchantStrikePrice")); + highGasOilPrice.setPriceVip(oilPriceObject.getBigDecimal("listingPrice")); highGasOilPrice.setPriceGun(oilPriceObject.getBigDecimal("listingPrice")); highGasOilPrice.setPriceOfficial(oilPriceObject.getBigDecimal("guidancePrice")); highGasOilPriceService.editGasOilPrice(highGasOilPrice); @@ -321,7 +322,8 @@ public class HighGasServiceImpl implements HighGasService { } else { highGasOilPrice.setGasStationDrop(oilPriceObject.getBigDecimal("guidancePrice").subtract(oilPriceObject.getBigDecimal("listingPrice"))); - highGasOilPrice.setPriceVip(oilPriceObject.getBigDecimal("merchantStrikePrice")); + highGasOilPrice.setPriceCost(oilPriceObject.getBigDecimal("merchantStrikePrice")); + highGasOilPrice.setPriceVip(oilPriceObject.getBigDecimal("listingPrice")); highGasOilPrice.setPriceGun(oilPriceObject.getBigDecimal("listingPrice")); highGasOilPrice.setPriceOfficial(oilPriceObject.getBigDecimal("guidancePrice")); highGasOilPriceService.editGasOilPrice(highGasOilPrice); @@ -386,7 +388,8 @@ public class HighGasServiceImpl implements HighGasService { highGasOilPrice.setPreferentialMargin(new BigDecimal("0")); highGasOilPrice.setGasStationDrop(oilPriceObject.getBigDecimal("guidancePrice").subtract(oilPriceObject.getBigDecimal("listingPrice"))); - highGasOilPrice.setPriceVip(oilPriceObject.getBigDecimal("merchantStrikePrice")); + highGasOilPrice.setPriceCost(oilPriceObject.getBigDecimal("merchantStrikePrice")); + highGasOilPrice.setPriceVip(oilPriceObject.getBigDecimal("listingPrice")); highGasOilPrice.setPriceGun(oilPriceObject.getBigDecimal("listingPrice")); highGasOilPrice.setPriceOfficial(oilPriceObject.getBigDecimal("guidancePrice")); diff --git a/hai-service/src/main/java/com/hai/service/impl/HighOrderServiceImpl.java b/hai-service/src/main/java/com/hai/service/impl/HighOrderServiceImpl.java index a9671209..415ba2e5 100644 --- a/hai-service/src/main/java/com/hai/service/impl/HighOrderServiceImpl.java +++ b/hai-service/src/main/java/com/hai/service/impl/HighOrderServiceImpl.java @@ -166,6 +166,9 @@ public class HighOrderServiceImpl implements HighOrderService { @Resource private ShellGroupService shellGroupService; + @Resource + private JinZhuJiaYouService jinZhuJiaYouService; + @Override @Transactional( isolation = Isolation.SERIALIZABLE, @@ -255,6 +258,34 @@ public class HighOrderServiceImpl implements HighOrderService { } } + if (childOrder.getGoodsType() == 3) { + // 加油站详情 + HighMerchantStore store = highMerchantStoreService.getDetailById(childOrder.getGoodsId()); + if (store == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.NOT_FOUND_ORDER, ""); + } + + if (store.getSourceType().equals(MerchantStoreSourceType.type4.getNumber())) { + // 查询金猪油品数据 + JinZhuJiaYouOilNo jzOilNo = JinZhuJiaYouOilNo.getDataByOilNo(Integer.valueOf(childOrder.getGasOilNo())); + if (jzOilNo == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "暂时无法提交订单,未知的油品"); + } + // 创建金猪订单 + JSONObject jzOrderObject = jinZhuJiaYouService.createOrder(highOrder.getOrderNo(), + highOrder.getTotalPrice(), + store.getStoreKey(), + jzOilNo.getOilNoCode(), + childOrder.getGasGunNo(), + highOrder.getMemPhone() + ); + childOrder.setGasOrderNo(jzOrderObject.getJSONObject("data").getString("systemOrderNo")); + childOrder.setGasPriceChannelPay(jzOrderObject.getJSONObject("data").getBigDecimal("paymentAmount")); + highChildOrderMapper.updateByPrimaryKey(childOrder); + } + + } + if (childOrder.getGoodsType() == 7) { // 查询库存 List list = discountPackageActualService.getListByPackageId(childOrder.getGoodsId().intValue(), 1); @@ -515,14 +546,24 @@ public class HighOrderServiceImpl implements HighOrderService { } } else if (store.getSourceType().equals(MerchantStoreSourceType.type3.getNumber())) { - // 推送壳牌 - JSONObject syncPayment = shellGroupService.gasSyncPayment(highOrder.getOrderNo(), + // 推送加好油 + shellGroupService.gasSyncPayment(highOrder.getOrderNo(), store.getStoreKey(), highOrder.getPayTime(), highChildOrder.getGasPriceGun(), highChildOrder.getGasOilNo(), highChildOrder.getGasGunNo(), highOrder.getTotalPrice()); + + + } else if (store.getSourceType().equals(MerchantStoreSourceType.type4.getNumber())) { + // 推送金猪加油 + JSONObject jzOrderObject = jinZhuJiaYouService.payOrder(highOrder.getOrderNo(), highChildOrder.getGasPriceChannelPay()); + if (jzOrderObject == null + || !jzOrderObject.getString("type").equals("OK") + || !jzOrderObject.getInteger("status").equals(200)) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, jzOrderObject.getString("title")); + } } } From ad8cdb27cf5a0ac9186d3bcb29e42894e35c3836 Mon Sep 17 00:00:00 2001 From: hurui <177768073@qq.com> Date: Thu, 4 Aug 2022 15:44:22 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/hai/config/CommonSysConfig.java | 29 +++++++++++++++++++ .../com/hai/config/JinZhuJiaYouService.java | 10 +++++-- .../resources/dev/commonConfig.properties | 5 ++++ .../resources/pre/commonConfig.properties | 5 ++++ .../prod-9401/commonConfig.properties | 5 ++++ .../resources/prod/commonConfig.properties | 5 ++++ 6 files changed, 57 insertions(+), 2 deletions(-) diff --git a/hai-service/src/main/java/com/hai/config/CommonSysConfig.java b/hai-service/src/main/java/com/hai/config/CommonSysConfig.java index 9503e86d..44cf0163 100644 --- a/hai-service/src/main/java/com/hai/config/CommonSysConfig.java +++ b/hai-service/src/main/java/com/hai/config/CommonSysConfig.java @@ -27,6 +27,11 @@ public class CommonSysConfig { private String shellPlatMerchantId; private String shellPlatMerchantKey; + // 金猪参数 + private String jzAppId; + private String jzPrivateKeyUrl; + private String jzPublicKeyUrl; + private String qinzhuUrl; private String qinzhuUrlToken; private String qinzhuHtmlUrl; @@ -94,6 +99,30 @@ public class CommonSysConfig { private String unionSecret; private String unionRsaKey; + public String getJzAppId() { + return jzAppId; + } + + public void setJzAppId(String jzAppId) { + this.jzAppId = jzAppId; + } + + public String getJzPrivateKeyUrl() { + return jzPrivateKeyUrl; + } + + public void setJzPrivateKeyUrl(String jzPrivateKeyUrl) { + this.jzPrivateKeyUrl = jzPrivateKeyUrl; + } + + public String getJzPublicKeyUrl() { + return jzPublicKeyUrl; + } + + public void setJzPublicKeyUrl(String jzPublicKeyUrl) { + this.jzPublicKeyUrl = jzPublicKeyUrl; + } + public String getHuiliantongDistributorId() { return huiliantongDistributorId; } diff --git a/hai-service/src/main/java/com/hai/config/JinZhuJiaYouService.java b/hai-service/src/main/java/com/hai/config/JinZhuJiaYouService.java index caf9d88c..8cbb5bc7 100644 --- a/hai-service/src/main/java/com/hai/config/JinZhuJiaYouService.java +++ b/hai-service/src/main/java/com/hai/config/JinZhuJiaYouService.java @@ -28,6 +28,12 @@ public class JinZhuJiaYouService { private final static String reqUrl = "http://api.jianshiyun.com/api/gateway"; + private final static String appId = CommonSysConst.getSysConfig().getJzAppId(); + + private final static String privateKeyUrl = CommonSysConst.getSysConfig().getJzPrivateKeyUrl(); + + private final static String publicKeyUrl = CommonSysConst.getSysConfig().getJzPublicKeyUrl(); + @Resource private BsTripartiteReqLogService reqLogService; @@ -111,7 +117,7 @@ public class JinZhuJiaYouService { private JSONObject request(String service, Map param) throws Exception { // 请求头部 Map heard = new HashMap<>(); - heard.put("Request-App-Id", "app_xiaohan_test_01"); + heard.put("Request-App-Id", appId); heard.put("Request-Service-Name", service); heard.put("Request-Signature", generateSign(param)); @@ -139,7 +145,7 @@ public class JinZhuJiaYouService { * @throws Exception */ private static String generateSign(final Map data) throws IOException { - PrivateKey privateKey = PemUtil.loadPrivateKey(new FileInputStream("/home/project/hsg/jzKey.key")); + PrivateKey privateKey = PemUtil.loadPrivateKey(new FileInputStream(privateKeyUrl)); String signStr = null; try { Signature sign = Signature.getInstance("SHA256withRSA"); diff --git a/hai-service/src/main/resources/dev/commonConfig.properties b/hai-service/src/main/resources/dev/commonConfig.properties index ec2f1aa3..8cb3044b 100644 --- a/hai-service/src/main/resources/dev/commonConfig.properties +++ b/hai-service/src/main/resources/dev/commonConfig.properties @@ -14,6 +14,11 @@ shellGroupPartnerId=S0302208021401950202 shellPlatMerchantId=S0302206141001919666 shellPlatMerchantKey=pic1yj2l3zby5ywpznrtdz7458ce2soj +# JinZhu configuration parameters +jzAppId=app_xiaohan_test_01 +jzPrivateKeyUrl=/home/project/hsg/fileKey/JzPrivateKey.key +jzPublicKeyUrl=/home/project/hsg/fileKey/JzPublicKey.key + # ???? qinzhuUrl=https://live-test.qianzhu8.com qinzhuUrlToken=https://live-test.qianzhu8.com/gateway diff --git a/hai-service/src/main/resources/pre/commonConfig.properties b/hai-service/src/main/resources/pre/commonConfig.properties index f864f1c9..15f3ac1f 100644 --- a/hai-service/src/main/resources/pre/commonConfig.properties +++ b/hai-service/src/main/resources/pre/commonConfig.properties @@ -14,6 +14,11 @@ shellGroupPartnerId=S0302207281600105753 shellPlatMerchantId=S0302206141000105717 shellPlatMerchantKey=wqisfmkzea6mwd7ogbyh3488jv0hqhdj +# JinZhu configuration parameters +jzAppId=app_xiaohan_test_01 +jzPrivateKeyUrl=/home/project/hsg/fileKey/JzPrivateKey.key +jzPublicKeyUrl=/home/project/hsg/fileKey/JzPublicKey.key + qinzhuUrl=https://live.qianzhu8.com qinzhuUrlToken=https://live.qianzhu8.com/gateway qinzhuHtmlUrl=https://qz.dctpay.com diff --git a/hai-service/src/main/resources/prod-9401/commonConfig.properties b/hai-service/src/main/resources/prod-9401/commonConfig.properties index aafdb1b6..717d2462 100644 --- a/hai-service/src/main/resources/prod-9401/commonConfig.properties +++ b/hai-service/src/main/resources/prod-9401/commonConfig.properties @@ -17,6 +17,11 @@ shellGroupPartnerId=S0302208021401950202 shellPlatMerchantId=S0302206141001919666 shellPlatMerchantKey=pic1yj2l3zby5ywpznrtdz7458ce2soj +# JinZhu configuration parameters +jzAppId=app_xiaohan_test_01 +jzPrivateKeyUrl=/home/project/hsg/fileKey/JzPrivateKey.key +jzPublicKeyUrl=/home/project/hsg/fileKey/JzPublicKey.key + qinzhuUrl=https://live.qianzhu8.com qinzhuUrlToken=https://live.qianzhu8.com/gateway qinzhuHtmlUrl=https://qz.dctpay.com diff --git a/hai-service/src/main/resources/prod/commonConfig.properties b/hai-service/src/main/resources/prod/commonConfig.properties index 9814d7af..e6614bf2 100644 --- a/hai-service/src/main/resources/prod/commonConfig.properties +++ b/hai-service/src/main/resources/prod/commonConfig.properties @@ -17,6 +17,11 @@ shellGroupPartnerId=S0302208021401950202 shellPlatMerchantId=S0302206141001919666 shellPlatMerchantKey=pic1yj2l3zby5ywpznrtdz7458ce2soj +# JinZhu configuration parameters +jzAppId=app_xiaohan_test_01 +jzPrivateKeyUrl=/home/project/hsg/fileKey/JzPrivateKey.key +jzPublicKeyUrl=/home/project/hsg/fileKey/JzPublicKey.key + qinzhuUrl=https://live.qianzhu8.com qinzhuUrlToken=https://live.qianzhu8.com/gateway qinzhuHtmlUrl=https://qz.dctpay.com From 37581518e03415e1df4d3319a5d467c38fd4af17 Mon Sep 17 00:00:00 2001 From: hurui <177768073@qq.com> Date: Thu, 4 Aug 2022 16:25:04 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/cweb/controller/pay/OrderController.java | 3 ++- .../src/main/java/com/hai/config/JinZhuJiaYouService.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hai-cweb/src/main/java/com/cweb/controller/pay/OrderController.java b/hai-cweb/src/main/java/com/cweb/controller/pay/OrderController.java index 86a648c6..583037c1 100644 --- a/hai-cweb/src/main/java/com/cweb/controller/pay/OrderController.java +++ b/hai-cweb/src/main/java/com/cweb/controller/pay/OrderController.java @@ -420,7 +420,8 @@ public class OrderController { } // 来源类型 1:平台自建 2:团油 - if (store.getSourceType().equals(MerchantStoreSourceType.type3.getNumber())) { + if (store.getSourceType().equals(MerchantStoreSourceType.type3.getNumber()) + || store.getSourceType().equals(MerchantStoreSourceType.type4.getNumber())) { BigDecimal account = new BigDecimal("0"); // 查询账号余额 HighMerchantAccount merAccount = merchantAccountService.getStoreAccountDetail(store.getMerchantId()); diff --git a/hai-service/src/main/java/com/hai/config/JinZhuJiaYouService.java b/hai-service/src/main/java/com/hai/config/JinZhuJiaYouService.java index 8cbb5bc7..45fe01ba 100644 --- a/hai-service/src/main/java/com/hai/config/JinZhuJiaYouService.java +++ b/hai-service/src/main/java/com/hai/config/JinZhuJiaYouService.java @@ -133,7 +133,7 @@ public class JinZhuJiaYouService { if (repsObject == null || !repsObject.getInteger("status").equals(200) || !repsObject.getString("type").equals("OK")) { - throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, repsObject == null?"请求失败":repsObject.getString("title")); + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, repsObject == null?"请求失败":repsObject.getString("detail")); } return repsObject; } From 49a46488480cbc24ac672c58c636d494bdeea404 Mon Sep 17 00:00:00 2001 From: hurui <177768073@qq.com> Date: Fri, 5 Aug 2022 13:39:28 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cweb/controller/HighOrderController.java | 70 ++++++++++++++++++- .../com/hai/enum_type/DiscountUseScope.java | 1 + .../enum_type/OrderChildGoodsTypeEnum.java | 51 ++++++++++++++ 3 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 hai-service/src/main/java/com/hai/enum_type/OrderChildGoodsTypeEnum.java diff --git a/hai-cweb/src/main/java/com/cweb/controller/HighOrderController.java b/hai-cweb/src/main/java/com/cweb/controller/HighOrderController.java index e6362783..ea5307d0 100644 --- a/hai-cweb/src/main/java/com/cweb/controller/HighOrderController.java +++ b/hai-cweb/src/main/java/com/cweb/controller/HighOrderController.java @@ -20,6 +20,7 @@ import com.hai.config.TuanYouConfig; import com.hai.entity.*; import com.hai.enum_type.DiscountUseScope; import com.hai.enum_type.GasClassGroupTaskStatus; +import com.hai.enum_type.OrderChildGoodsTypeEnum; import com.hai.model.GasPayPriceModel; import com.hai.model.HighMerchantStoreModel; import com.hai.model.HighUserModel; @@ -432,7 +433,7 @@ public class HighOrderController { if (highDiscountUserRel != null) { highOrder.setMemDiscountName(highDiscountUserRel.getHighDiscount().getDiscountName()); - // 交易优惠券使用范围 + // 优惠券使用范围 if (highDiscountUserRel.getHighDiscount().getUseScope().equals(DiscountUseScope.type1.getType())) { // 暂无限制 } else if (highDiscountUserRel.getHighDiscount().getUseScope().equals(DiscountUseScope.type2.getType())) { @@ -617,4 +618,71 @@ public class HighOrderController { return ResponseMsgUtil.exception(e); } } + + @RequestMapping(value="/orderCanUseDiscount",method = RequestMethod.POST) + @ResponseBody + @ApiOperation(value = "订单可以使用的优惠券") + public ResponseData orderCanUseDiscount(@RequestBody JSONObject body) { + try { + // 用户 + HighUserModel userInfoModel = userCenter.getSessionModel(HighUserModel.class); + if (userInfoModel == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMPETENCE_INSUFFICIENT, ""); + } + if (body == null + || body.getInteger("goodsType") == null + || body.getLong("goodsId") == null + || body.getBigDecimal("goodsPrice") == null + ) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); + } + + // 商品类型 + OrderChildGoodsTypeEnum goodsType = OrderChildGoodsTypeEnum.getDataByType(body.getInteger("goodsType")); + if (goodsType == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知的商品类型"); + } + + Map map = new HashMap<>(); + map.put("userId", userInfoModel.getHighUser().getId()); + map.put("status", 1); + // 查询用户的优惠券 + List userDiscountList = highDiscountUserRelService.getDiscountList(map); + + List list = new ArrayList<>(); + + if (userDiscountList.size() > 0) { + + if (goodsType.getType().equals(OrderChildGoodsTypeEnum.type1.getType())) { + // 查询当前卡券有哪些优惠券 + List discountCouponRelList = highDiscountCouponRelService.getRelByCoupon(body.getLong("goodsId")); + if (discountCouponRelList.size() > 0) { + for (HighDiscountCouponRel highDiscountCouponRel : discountCouponRelList) { + List collect = userDiscountList.stream().filter(o -> o.getDiscountId().equals(highDiscountCouponRel.getDiscountId())).collect(Collectors.toList()); + if (collect != null && collect.size() > 0) { + for (HighDiscountUserRel discountUser : collect) { + list.add(discountUser); + } + } + } + } + } + + if (goodsType.getType().equals(OrderChildGoodsTypeEnum.type3.getType())) { + // 过滤出加油服务的加油券 + List collect = userDiscountList.stream().filter(o -> o.getHighDiscount().getUseScope().equals(DiscountUseScope.type7.getType())).collect(Collectors.toList()); + for (HighDiscountUserRel userDiscount : collect) { + + } + } + + list.sort(Comparator.comparing(o -> o.getUseEndTime())); + } + return ResponseMsgUtil.success(list); + + } catch (Exception e) { + log.error("HighDiscountController -> getDiscountListByCoupon() error!",e); + return ResponseMsgUtil.exception(e); + } + } } diff --git a/hai-service/src/main/java/com/hai/enum_type/DiscountUseScope.java b/hai-service/src/main/java/com/hai/enum_type/DiscountUseScope.java index ff85e3ff..856ce611 100644 --- a/hai-service/src/main/java/com/hai/enum_type/DiscountUseScope.java +++ b/hai-service/src/main/java/com/hai/enum_type/DiscountUseScope.java @@ -14,6 +14,7 @@ public enum DiscountUseScope { type4(4 , "肯德基"), type5(5 , "星巴克"), type6(6 , "会员充值"), + type7(7 , "加油服务"), ; private Integer type; diff --git a/hai-service/src/main/java/com/hai/enum_type/OrderChildGoodsTypeEnum.java b/hai-service/src/main/java/com/hai/enum_type/OrderChildGoodsTypeEnum.java new file mode 100644 index 00000000..3dddce2b --- /dev/null +++ b/hai-service/src/main/java/com/hai/enum_type/OrderChildGoodsTypeEnum.java @@ -0,0 +1,51 @@ +package com.hai.enum_type; + +import java.util.Objects; + +/** + * 子订单商品类型 + * @author hurui + */ +public enum OrderChildGoodsTypeEnum { + type1(1 , "卡券"), + type2(2 , "金币充值"), + type3(3 , "加油服务"), + type4(4 , "KFC"), + type5(5 , "电影票"), + type6(6 , "话费充值"), + type7(7 , "优惠券包"), + type8(8 , "贵州汇联通充值"), + ; + + private Integer type; + private String name; + + OrderChildGoodsTypeEnum(int type , String name) { + this.type = type; + this.name = name; + } + + public static OrderChildGoodsTypeEnum getDataByType(Integer type) { + for (OrderChildGoodsTypeEnum ele : values()) { + if(Objects.equals(type,ele.getType())) return ele; + } + return null; + } + + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} From f4b4889413f3a7cdee63c4f2f12c8284ebe23fc7 Mon Sep 17 00:00:00 2001 From: hurui <177768073@qq.com> Date: Fri, 5 Aug 2022 14:49:47 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cweb/controller/HighOrderController.java | 72 ++--------------- .../HighUserDiscountController.java | 81 +++++++++++++++++++ 2 files changed, 87 insertions(+), 66 deletions(-) diff --git a/hai-cweb/src/main/java/com/cweb/controller/HighOrderController.java b/hai-cweb/src/main/java/com/cweb/controller/HighOrderController.java index ea5307d0..953635f6 100644 --- a/hai-cweb/src/main/java/com/cweb/controller/HighOrderController.java +++ b/hai-cweb/src/main/java/com/cweb/controller/HighOrderController.java @@ -409,6 +409,7 @@ public class HighOrderController { totalPrice = totalPrice.add(childOrder.getTotalPrice()); totalActualPrice = totalActualPrice.add(childOrder.getGoodsActualPrice()); } + // 积分抵扣金额 BigDecimal integralDeductionPrice = new BigDecimal(0); if (buyPoints && highOrder.getPayGold() != null) { @@ -447,6 +448,11 @@ public class HighOrderController { log.error("HighOrderController --> addOrder() error!", "此优惠券只能充值话费中使用"); throw ErrorHelp.genException(SysCode.System, ErrorCode.UN_MEMBER_ERROR, "此优惠券只能充值话费中使用"); } + } else if (highDiscountUserRel.getHighDiscount().getUseScope().equals(DiscountUseScope.type3.getType())) { + if (!highOrder.getHighChildOrderList().get(0).getGoodsType().equals(3)) { + log.error("HighOrderController --> addOrder() error!", "此优惠券只能充值话费中使用"); + throw ErrorHelp.genException(SysCode.System, ErrorCode.UN_MEMBER_ERROR, "此优惠券只能充值话费中使用"); + } } else { log.error("HighOrderController --> addOrder() error!", "暂时无法使用此优惠券"); throw ErrorHelp.genException(SysCode.System, ErrorCode.UN_MEMBER_ERROR, "暂时无法使用此优惠券"); @@ -619,70 +625,4 @@ public class HighOrderController { } } - @RequestMapping(value="/orderCanUseDiscount",method = RequestMethod.POST) - @ResponseBody - @ApiOperation(value = "订单可以使用的优惠券") - public ResponseData orderCanUseDiscount(@RequestBody JSONObject body) { - try { - // 用户 - HighUserModel userInfoModel = userCenter.getSessionModel(HighUserModel.class); - if (userInfoModel == null) { - throw ErrorHelp.genException(SysCode.System, ErrorCode.COMPETENCE_INSUFFICIENT, ""); - } - if (body == null - || body.getInteger("goodsType") == null - || body.getLong("goodsId") == null - || body.getBigDecimal("goodsPrice") == null - ) { - throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); - } - - // 商品类型 - OrderChildGoodsTypeEnum goodsType = OrderChildGoodsTypeEnum.getDataByType(body.getInteger("goodsType")); - if (goodsType == null) { - throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知的商品类型"); - } - - Map map = new HashMap<>(); - map.put("userId", userInfoModel.getHighUser().getId()); - map.put("status", 1); - // 查询用户的优惠券 - List userDiscountList = highDiscountUserRelService.getDiscountList(map); - - List list = new ArrayList<>(); - - if (userDiscountList.size() > 0) { - - if (goodsType.getType().equals(OrderChildGoodsTypeEnum.type1.getType())) { - // 查询当前卡券有哪些优惠券 - List discountCouponRelList = highDiscountCouponRelService.getRelByCoupon(body.getLong("goodsId")); - if (discountCouponRelList.size() > 0) { - for (HighDiscountCouponRel highDiscountCouponRel : discountCouponRelList) { - List collect = userDiscountList.stream().filter(o -> o.getDiscountId().equals(highDiscountCouponRel.getDiscountId())).collect(Collectors.toList()); - if (collect != null && collect.size() > 0) { - for (HighDiscountUserRel discountUser : collect) { - list.add(discountUser); - } - } - } - } - } - - if (goodsType.getType().equals(OrderChildGoodsTypeEnum.type3.getType())) { - // 过滤出加油服务的加油券 - List collect = userDiscountList.stream().filter(o -> o.getHighDiscount().getUseScope().equals(DiscountUseScope.type7.getType())).collect(Collectors.toList()); - for (HighDiscountUserRel userDiscount : collect) { - - } - } - - list.sort(Comparator.comparing(o -> o.getUseEndTime())); - } - return ResponseMsgUtil.success(list); - - } catch (Exception e) { - log.error("HighDiscountController -> getDiscountListByCoupon() error!",e); - return ResponseMsgUtil.exception(e); - } - } } diff --git a/hai-cweb/src/main/java/com/cweb/controller/HighUserDiscountController.java b/hai-cweb/src/main/java/com/cweb/controller/HighUserDiscountController.java index 20a01b23..64faa497 100644 --- a/hai-cweb/src/main/java/com/cweb/controller/HighUserDiscountController.java +++ b/hai-cweb/src/main/java/com/cweb/controller/HighUserDiscountController.java @@ -11,6 +11,8 @@ import com.hai.common.security.SessionObject; import com.hai.common.security.UserCenter; import com.hai.common.utils.ResponseMsgUtil; import com.hai.entity.*; +import com.hai.enum_type.DiscountUseScope; +import com.hai.enum_type.OrderChildGoodsTypeEnum; import com.hai.model.HighUserModel; import com.hai.model.ResponseData; import com.hai.service.*; @@ -250,4 +252,83 @@ public class HighUserDiscountController { return ResponseMsgUtil.exception(e); } } + + + @RequestMapping(value="/canUseDiscount",method = RequestMethod.POST) + @ResponseBody + @ApiOperation(value = "商品可以使用的优惠券") + public ResponseData canUseDiscount(@RequestBody JSONObject body) { + try { + // 用户 + HighUserModel userInfoModel = userCenter.getSessionModel(HighUserModel.class); + if (userInfoModel == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMPETENCE_INSUFFICIENT, ""); + } + if (body == null + || body.getInteger("goodsType") == null + || body.getLong("goodsId") == null + || body.getBigDecimal("goodsPrice") == null + ) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); + } + + // 商品类型 + OrderChildGoodsTypeEnum goodsType = OrderChildGoodsTypeEnum.getDataByType(body.getInteger("goodsType")); + if (goodsType == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知的商品类型"); + } + + Map map = new HashMap<>(); + map.put("userId", userInfoModel.getHighUser().getId()); + map.put("status", 1); + // 查询用户的优惠券 + List userDiscountList = highDiscountUserRelService.getDiscountList(map); + + List list = new ArrayList<>(); + + if (userDiscountList.size() > 0) { + + if (goodsType.getType().equals(OrderChildGoodsTypeEnum.type1.getType())) { + // 查询当前卡券有哪些优惠券 + List discountCouponRelList = highDiscountCouponRelService.getRelByCoupon(body.getLong("goodsId")); + if (discountCouponRelList.size() > 0) { + for (HighDiscountCouponRel highDiscountCouponRel : discountCouponRelList) { + List collect = userDiscountList.stream().filter(o -> o.getDiscountId().equals(highDiscountCouponRel.getDiscountId())).collect(Collectors.toList()); + if (collect != null && collect.size() > 0) { + for (HighDiscountUserRel discountUser : collect) { + list.add(discountUser); + } + } + } + } + } + + if (goodsType.getType().equals(OrderChildGoodsTypeEnum.type3.getType())) { + // 过滤出加油服务的加油券 + List collect = userDiscountList.stream().filter(o -> o.getHighDiscount().getUseScope().equals(DiscountUseScope.type7.getType())).collect(Collectors.toList()); + for (HighDiscountUserRel userDiscount : collect) { + // 满减 + if (userDiscount.getHighDiscount().getDiscountType().equals(1)) { + if (body.getBigDecimal("goodsPrice").compareTo(userDiscount.getHighDiscount().getDiscountCondition()) >= 0) { + list.add(userDiscount); + } + } + + if (userDiscount.getHighDiscount().getDiscountType().equals(2) + || userDiscount.getHighDiscount().getDiscountType().equals(3)) { + list.add(userDiscount); + } + + } + } + list.sort(Comparator.comparing(o -> o.getUseEndTime())); + } + return ResponseMsgUtil.success(list); + + } catch (Exception e) { + log.error("HighDiscountController -> getDiscountListByCoupon() error!",e); + return ResponseMsgUtil.exception(e); + } + } + } From 7935dc34ac744d0ad1dc8147ad7fe84732b639ae Mon Sep 17 00:00:00 2001 From: hurui <177768073@qq.com> Date: Mon, 8 Aug 2022 09:59:38 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cweb/controller/HighOrderController.java | 49 +++++++++++++------ .../resources/dev/commonConfig.properties | 2 +- .../prod-9401/commonConfig.properties | 2 +- .../resources/prod/commonConfig.properties | 2 +- 4 files changed, 36 insertions(+), 19 deletions(-) diff --git a/hai-cweb/src/main/java/com/cweb/controller/HighOrderController.java b/hai-cweb/src/main/java/com/cweb/controller/HighOrderController.java index 953635f6..22322294 100644 --- a/hai-cweb/src/main/java/com/cweb/controller/HighOrderController.java +++ b/hai-cweb/src/main/java/com/cweb/controller/HighOrderController.java @@ -320,20 +320,38 @@ public class HighOrderController { // 计算价格 GasPayPriceModel priceModel = gasDiscountOilPriceService.oilPriceDiscountCompute(childOrder.getGoodsPrice(), childOrder.getGoodsId(), childOrder.getGasOilNo(), highOrder.getIsTyAgent()); - // 支付价格 - childOrder.setGoodsActualPrice(priceModel.getPayPrice()); - - // 油价信息 - childOrder.setGasPriceGun(priceModel.getPriceGun()); - childOrder.setGasPriceVip(priceModel.getPriceVip()); - childOrder.setGasPriceOfficial(priceModel.getPriceOfficial()); - childOrder.setGasPricePlatform(priceModel.getPricePlatform()); - childOrder.setGasOilLiters(priceModel.getOilLiters()); - childOrder.setGasDiscount(priceModel.getDiscount()); - childOrder.setExt1(priceModel.getPricePlatform().toString()); - childOrder.setGasOilSubsidy(priceModel.getPreferentialMargin()); - childOrder.setGasLitersPreferences(priceModel.getLitersPreferences()); - childOrder.setGasPricePreferences(priceModel.getPricePreferences()); + + // 使用了优惠价 + if (highDiscountUserRel != null) { + // 支付价格 + childOrder.setGoodsActualPrice(childOrder.getGoodsPrice()); + // 油价信息 + childOrder.setGasPriceGun(priceModel.getPriceGun()); + childOrder.setGasPriceVip(priceModel.getPriceVip()); + childOrder.setGasPriceOfficial(priceModel.getPriceOfficial()); + childOrder.setGasPricePlatform(priceModel.getPriceVip()); + childOrder.setGasOilLiters(priceModel.getOilLiters()); + childOrder.setGasDiscount(new BigDecimal("0")); + childOrder.setExt1(childOrder.getGasPricePlatform().toString()); + childOrder.setGasOilSubsidy(new BigDecimal("0")); + childOrder.setGasLitersPreferences(new BigDecimal("0")); + childOrder.setGasPricePreferences(priceModel.getPriceVip()); + } else { + // 支付价格 + childOrder.setGoodsActualPrice(priceModel.getPayPrice()); + // 油价信息 + childOrder.setGasPriceGun(priceModel.getPriceGun()); + childOrder.setGasPriceVip(priceModel.getPriceVip()); + childOrder.setGasPriceOfficial(priceModel.getPriceOfficial()); + childOrder.setGasPricePlatform(priceModel.getPricePlatform()); + childOrder.setGasOilLiters(priceModel.getOilLiters()); + childOrder.setGasDiscount(priceModel.getDiscount()); + childOrder.setExt1(priceModel.getPricePlatform().toString()); + childOrder.setGasOilSubsidy(priceModel.getPreferentialMargin()); + childOrder.setGasLitersPreferences(priceModel.getLitersPreferences()); + childOrder.setGasPricePreferences(priceModel.getPricePreferences()); + } + // 来源类型 1:平台自建 2:团油 if (store.getSourceType().equals(1)) { @@ -414,7 +432,7 @@ public class HighOrderController { BigDecimal integralDeductionPrice = new BigDecimal(0); if (buyPoints && highOrder.getPayGold() != null) { - integralDeductionPrice = new BigDecimal(highOrder.getPayGold()).divide(new BigDecimal(100)); + integralDeductionPrice = new BigDecimal(highOrder.getPayGold().toString()).divide(new BigDecimal(100)); highUserService.goldHandle(userInfoModel.getHighUser().getId(), highOrder.getPayGold(), 2, 2, highOrder.getId()); BigDecimal payGold = new BigDecimal(highOrder.getPayGold()); @@ -425,7 +443,6 @@ public class HighOrderController { } } - highOrder.setMerchId(request.getHeader("mchId")); highOrder.setTotalPrice(totalPrice); diff --git a/hai-service/src/main/resources/dev/commonConfig.properties b/hai-service/src/main/resources/dev/commonConfig.properties index 8cb3044b..dc2f2eac 100644 --- a/hai-service/src/main/resources/dev/commonConfig.properties +++ b/hai-service/src/main/resources/dev/commonConfig.properties @@ -15,7 +15,7 @@ shellPlatMerchantId=S0302206141001919666 shellPlatMerchantKey=pic1yj2l3zby5ywpznrtdz7458ce2soj # JinZhu configuration parameters -jzAppId=app_xiaohan_test_01 +jzAppId=app_huidui_prod_01 jzPrivateKeyUrl=/home/project/hsg/fileKey/JzPrivateKey.key jzPublicKeyUrl=/home/project/hsg/fileKey/JzPublicKey.key diff --git a/hai-service/src/main/resources/prod-9401/commonConfig.properties b/hai-service/src/main/resources/prod-9401/commonConfig.properties index e3d4a6c6..1ff7bbef 100644 --- a/hai-service/src/main/resources/prod-9401/commonConfig.properties +++ b/hai-service/src/main/resources/prod-9401/commonConfig.properties @@ -18,7 +18,7 @@ shellPlatMerchantId=S0302206141001919666 shellPlatMerchantKey=pic1yj2l3zby5ywpznrtdz7458ce2soj # JinZhu configuration parameters -jzAppId=app_xiaohan_test_01 +jzAppId=app_huidui_prod_01 jzPrivateKeyUrl=/home/project/hsg/fileKey/JzPrivateKey.key jzPublicKeyUrl=/home/project/hsg/fileKey/JzPublicKey.key diff --git a/hai-service/src/main/resources/prod/commonConfig.properties b/hai-service/src/main/resources/prod/commonConfig.properties index c3af7736..148767dc 100644 --- a/hai-service/src/main/resources/prod/commonConfig.properties +++ b/hai-service/src/main/resources/prod/commonConfig.properties @@ -18,7 +18,7 @@ shellPlatMerchantId=S0302206141001919666 shellPlatMerchantKey=pic1yj2l3zby5ywpznrtdz7458ce2soj # JinZhu configuration parameters -jzAppId=app_xiaohan_test_01 +jzAppId=app_huidui_prod_01 jzPrivateKeyUrl=/home/project/hsg/fileKey/JzPrivateKey.key jzPublicKeyUrl=/home/project/hsg/fileKey/JzPublicKey.key From 848fcba6384da50fdbd18a8fcc2e19ac7c72a25a Mon Sep 17 00:00:00 2001 From: hurui <177768073@qq.com> Date: Mon, 8 Aug 2022 16:28:25 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cweb/controller/HighOrderController.java | 40 +-- .../cweb/controller/HighTestController.java | 2 +- .../controller/pay/UnionPayController.java | 11 +- .../com/hai/config/ShellGroupService.java | 13 +- .../java/com/hai/dao/HighOrderMapper.java | 82 ++--- .../com/hai/dao/HighOrderSqlProvider.java | 14 + .../main/java/com/hai/entity/HighOrder.java | 59 ++-- .../java/com/hai/entity/HighOrderExample.java | 60 ++++ .../com/hai/service/HighOrderService.java | 7 + .../service/impl/HighOrderServiceImpl.java | 314 +++++++++++++++++- .../pay/impl/GoodsOrderServiceImpl.java | 10 +- .../resources/dev/commonConfig.properties | 8 +- 12 files changed, 506 insertions(+), 114 deletions(-) diff --git a/hai-cweb/src/main/java/com/cweb/controller/HighOrderController.java b/hai-cweb/src/main/java/com/cweb/controller/HighOrderController.java index 22322294..20631635 100644 --- a/hai-cweb/src/main/java/com/cweb/controller/HighOrderController.java +++ b/hai-cweb/src/main/java/com/cweb/controller/HighOrderController.java @@ -445,7 +445,7 @@ public class HighOrderController { highOrder.setMerchId(request.getHeader("mchId")); highOrder.setTotalPrice(totalPrice); - + highOrder.setPayablePrice(totalActualPrice); // 是否使用了优惠券 if (highDiscountUserRel != null) { @@ -458,21 +458,21 @@ public class HighOrderController { // 1:卡卷 2:金币充值 3:团油【加油站】 4: KFC 5:电影票 6:话费充值 if (!highOrder.getHighChildOrderList().get(0).getGoodsType().equals(1)) { log.error("HighOrderController --> addOrder() error!", "此优惠券只能购买卡券商品使用"); - throw ErrorHelp.genException(SysCode.System, ErrorCode.UN_MEMBER_ERROR, "此优惠券只能购买卡券商品使用"); + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "此优惠券只能购买卡券商品使用"); } } else if (highDiscountUserRel.getHighDiscount().getUseScope().equals(DiscountUseScope.type3.getType())) { if (!highOrder.getHighChildOrderList().get(0).getGoodsType().equals(6)) { log.error("HighOrderController --> addOrder() error!", "此优惠券只能充值话费中使用"); - throw ErrorHelp.genException(SysCode.System, ErrorCode.UN_MEMBER_ERROR, "此优惠券只能充值话费中使用"); + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "此优惠券只能充值话费中使用"); } - } else if (highDiscountUserRel.getHighDiscount().getUseScope().equals(DiscountUseScope.type3.getType())) { + } else if (highDiscountUserRel.getHighDiscount().getUseScope().equals(DiscountUseScope.type7.getType())) { if (!highOrder.getHighChildOrderList().get(0).getGoodsType().equals(3)) { log.error("HighOrderController --> addOrder() error!", "此优惠券只能充值话费中使用"); - throw ErrorHelp.genException(SysCode.System, ErrorCode.UN_MEMBER_ERROR, "此优惠券只能充值话费中使用"); + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "此优惠券只能充值话费中使用"); } } else { log.error("HighOrderController --> addOrder() error!", "暂时无法使用此优惠券"); - throw ErrorHelp.genException(SysCode.System, ErrorCode.UN_MEMBER_ERROR, "暂时无法使用此优惠券"); + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "暂时无法使用此优惠券"); } // 卡卷类型 1:满减 2:抵扣 3:折扣 @@ -483,28 +483,28 @@ public class HighOrderController { throw ErrorHelp.genException(SysCode.System, ErrorCode.UN_MEMBER_ERROR, "订单未达到"+highDiscountUserRel.getHighDiscount().getDiscountCondition()+"元,无法使用此优惠券"); } // 订单总额 - 满减额度 - BigDecimal payPrice = highOrder.getTotalPrice().subtract(highDiscountUserRel.getHighDiscount().getDiscountPrice()); + BigDecimal payablePrice = highOrder.getTotalPrice().subtract(highDiscountUserRel.getHighDiscount().getDiscountPrice()); highOrder.setDeductionPrice(highDiscountUserRel.getHighDiscount().getDiscountPrice()); // 如果总额小于0 - if (payPrice.compareTo(new BigDecimal("0")) < 0) { - highOrder.setPayPrice(new BigDecimal("0")); + if (payablePrice.compareTo(new BigDecimal("0")) < 0) { + highOrder.setPayablePrice(new BigDecimal("0")); } else { - highOrder.setPayPrice(payPrice); + highOrder.setPayablePrice(payablePrice); } } // 卡卷类型 1:满减 2:抵扣 3:折扣 if (highDiscountUserRel.getHighDiscount().getDiscountType() == 2) { // 订单总额 - 满减额度 - BigDecimal payPrice = highOrder.getTotalPrice().subtract(highDiscountUserRel.getHighDiscount().getDiscountPrice()); + BigDecimal payablePrice = highOrder.getTotalPrice().subtract(highDiscountUserRel.getHighDiscount().getDiscountPrice()); highOrder.setDeductionPrice(highDiscountUserRel.getHighDiscount().getDiscountPrice()); // 如果总额小于0 - if (payPrice.compareTo(new BigDecimal("0")) == -1) { - highOrder.setPayPrice(new BigDecimal("0")); + if (payablePrice.compareTo(new BigDecimal("0")) == -1) { + highOrder.setPayablePrice(new BigDecimal("0")); } else { - highOrder.setPayPrice(payPrice); + highOrder.setPayablePrice(payablePrice); } } @@ -513,16 +513,12 @@ public class HighOrderController { // 折扣除100 BigDecimal discountPrice = highDiscountUserRel.getHighDiscount().getDiscountPrice(); // 订单总额 * 折扣 - BigDecimal payPrice = highOrder.getTotalPrice().multiply(discountPrice); - highOrder.setDeductionPrice(highOrder.getTotalPrice().subtract(payPrice)); - highOrder.setPayPrice(payPrice); + BigDecimal payablePrice = highOrder.getTotalPrice().multiply(discountPrice).setScale(2, BigDecimal.ROUND_HALF_DOWN); + highOrder.setDeductionPrice(highOrder.getTotalPrice().subtract(payablePrice)); + highOrder.setPayablePrice(payablePrice); } } - if (highOrder.getPayPrice() == null) { - highOrder.setPayPrice(totalActualPrice); - } - highOrder.setOrderNo("HF" + DateUtil.date2String(new Date(),"yyyyMMddHHmmss") + IDGenerator.nextId(5)); highOrder.setMemId(userInfoModel.getHighUser().getId()); highOrder.setMemName(userInfoModel.getHighUser().getName()); @@ -531,7 +527,7 @@ public class HighOrderController { highOrder.setOrderStatus(1); highOrder.setPrintStatus(false); highOrder.setPrintNum(0); - highOrder.setPayPrice(highOrder.getPayPrice().subtract(integralDeductionPrice)); + highOrder.setPayPrice(highOrder.getPayablePrice().subtract(integralDeductionPrice)); highOrder.setDeductionPrice(highOrder.getTotalPrice().subtract(highOrder.getPayPrice())); highOrderService.insertOrder(highOrder); diff --git a/hai-cweb/src/main/java/com/cweb/controller/HighTestController.java b/hai-cweb/src/main/java/com/cweb/controller/HighTestController.java index e4adcb6d..741f6749 100644 --- a/hai-cweb/src/main/java/com/cweb/controller/HighTestController.java +++ b/hai-cweb/src/main/java/com/cweb/controller/HighTestController.java @@ -1 +1 @@ -package com.cweb.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.cweb.config.SysConst; import com.hai.common.Base64Util; import com.hai.common.exception.ErrorCode; import com.hai.common.exception.ErrorHelp; import com.hai.common.exception.SysCode; import com.hai.common.pay.util.XmlUtil; import com.hai.common.pay.util.sdk.WXPayConstants; import com.hai.common.security.SessionObject; import com.hai.common.utils.*; import com.hai.config.*; import com.hai.dao.HighGasOrderPushMapper; import com.hai.entity.*; import com.hai.enum_type.MerchantStoreSourceType; import com.hai.model.*; import com.hai.service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.ssl.SSLContexts; import org.apache.http.util.EntityUtils; import org.bouncycastle.util.encoders.UrlBase64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.util.IdGenerator; import org.springframework.web.bind.annotation.*; import sun.nio.cs.StreamEncoder; import javax.annotation.Resource; import javax.net.ssl.SSLContext; import javax.servlet.http.HttpServletRequest; import java.io.*; import java.math.BigDecimal; import java.nio.charset.StandardCharsets; import java.security.KeyStore; import java.util.*; /** * @Auther: 胡锐 * @Description: * @Date: 2021/3/26 23:08 */ @Controller @RequestMapping(value = "/test") @Api(value = "订单接口") public class HighTestController { private static Logger log = LoggerFactory.getLogger(HighTestController.class); @Resource private HighMerchantService highMerchantService; @Resource private HighMerchantStoreService highMerchantStoreService; @Resource private HighGasOilPriceService highGasOilPriceService; @Resource private HighOrderService highOrderService; @Resource private HighProfitSharingRecordService highProfitSharingRecordService; @Resource private HighGasOilGunNoService gasOilGunNoService; @Resource private HighGasOrderPushMapper highGasOrderPushMapper; @Resource private HuiLianTongConfig huiLianTongConfig; @Resource private UnionPayConfig unionPayConfig; @Resource private UnionStagingPayConfig unionStagingPayConfig; @Resource private UnionUserConfig unionUserConfig; @Resource private OutRechargeOrderService outRechargeOrderService; @Resource private HighOilCardService oilCardService; @Resource private BaiduVoiceService baiduVoiceService; @Resource private MqttProviderConfig mqttProviderConfig; @Autowired private WebSocket webSocket; @Resource private ShellGroupService shellGroupService; @Resource private HighGasService gasService; @Resource private JinZhuJiaYouService jinZhuJiaYouService; @RequestMapping(value = "/spPrint", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "发送打印机消息") public ResponseData spPrint(@RequestParam(name = "orderNo", required = true) String orderNo, HttpServletRequest request) { try { HighOrder highOrder = highOrderService.getOrderByOrderNo(orderNo); for (HighChildOrder highChildOrder : highOrder.getHighChildOrderList()) { HighMerchantStoreModel store = highMerchantStoreService.getMerchantStoreById(highChildOrder.getGoodsId()); new Thread(() -> { try { SpPrinterConfig sp = new SpPrinterConfig(); sp.print(store.getDeviceSn(), SpPrinterTemplate.oilCashierStubTemp( highChildOrder.getGoodsName(), highOrder.getOrderNo(), DateUtil.date2String(highOrder.getPayTime(), "yyyy-MM-dd HH:mm:ss"), "嗨森逛", highChildOrder.getGasGunNo(), highChildOrder.getGasOilNo(), highChildOrder.getGasOilLiters().toString(), highOrder.getTotalPrice().toString(), new HashMap<>(), false ), 1); Thread.sleep(6000); sp.print(store.getDeviceSn(), SpPrinterTemplate.oilClientStubTemp( highChildOrder.getGoodsName(), highOrder.getOrderNo(), DateUtil.date2String(highOrder.getPayTime(), "yyyy-MM-dd HH:mm:ss"), "嗨森逛", highChildOrder.getGasGunNo(), highChildOrder.getGasOilNo(), highChildOrder.getGasOilLiters().toString(), highOrder.getTotalPrice().toString(), new HashMap<>(), false ), 1); } catch (Exception e) { e.printStackTrace(); } }).start(); } return ResponseMsgUtil.success("发送成功"); } catch (Exception e) { log.error("HighUserCardController --> getHuiLianTongCardInfo() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/queryGasInfoByGasId", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "根据油站 id 拉取最新的油站数据") public ResponseData queryGasInfoByGasId(@RequestParam(name = "gasId", required = true) String gasId, HttpServletRequest request) { try { return ResponseMsgUtil.success(TuanYouConfig.queryGasInfoByGasId(gasId)); } catch (Exception e) { log.error("HighUserCardController --> getHuiLianTongCardInfo() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/initTYMerchantStore", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "初始化加油站") public ResponseData initTYMerchantStore(@RequestParam(name = "merchantId", required = true) Long merchantId) throws Exception { HighMerchantModel merchant = highMerchantService.getMerchantById(merchantId); if (merchant == null) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到商户"); } JSONObject jsonObjectP = TuanYouConfig.queryGasInfoListByPage(1, 1000); JSONObject resultObjectP = jsonObjectP.getObject("result", JSONObject.class); for (int i = 1; i <= resultObjectP.getInteger("totalPageNum").intValue(); i++) { JSONObject jsonObject = TuanYouConfig.queryGasInfoListByPage(i, 1000); JSONObject resultObject = jsonObject.getObject("result", JSONObject.class); JSONArray jsonArray = resultObject.getJSONArray("gasInfoList"); HighMerchantStore highMerchantStore; HighGasOilPrice highGasOilPrice; for (Object gasObject : jsonArray) { JSONObject object = JSONObject.parseObject(JSONObject.toJSONString(gasObject)); HighMerchantStoreModel store = highMerchantStoreService.getMerchantStoreByKey(object.getString("gasId")); if (store != null) { store.setType(1); store.setMerchantId(merchant.getId()); store.setCompanyId(merchant.getCompanyId()); store.setStoreKey(object.getString("gasId")); store.setStoreName(object.getString("gasName")); store.setStoreLogo(object.getString("gasLogoSmall")); store.setRegionId(object.getLong("provinceCode")); store.setRegionName(object.getString("provinceName")); store.setAddress(object.getString("gasAddress")); store.setLongitude(object.getString("gasAddressLongitude")); store.setLatitude(object.getString("gasAddressLatitude")); store.setStatus(object.getInteger("gasStatus")); store.setOperatorId(0L); store.setOperatorName("系统创建"); store.setUpdateTime(new Date()); store.setExt1(object.getString("gasSourceId")); highMerchantStoreService.updateMerchantStoreDetail(store); JSONArray oilPriceList = object.getJSONArray("oilPriceList"); for (Object oilPrice : oilPriceList) { JSONObject oilPriceObject = JSONObject.parseObject(JSONObject.toJSONString(oilPrice)); // 查询门店油号 highGasOilPrice = highGasOilPriceService.getGasOilPriceByStoreAndOilNo(store.getId(), oilPriceObject.getInteger("oilNo")); if (highGasOilPrice == null) { highGasOilPrice = new HighGasOilPrice(); highGasOilPrice.setMerchantStoreId(store.getId()); highGasOilPrice.setOilNo(oilPriceObject.getInteger("oilNo")); highGasOilPrice.setOilNoName(oilPriceObject.getString("oilNoName")); highGasOilPrice.setPriceVip(oilPriceObject.getBigDecimal("priceVip")); highGasOilPrice.setPriceGun(oilPriceObject.getBigDecimal("priceGun")); highGasOilPrice.setPriceOfficial(oilPriceObject.getBigDecimal("priceOfficial")); highGasOilPrice.setOilType(oilPriceObject.getInteger("oilType")); highGasOilPrice.setOilTypeName(oilPriceObject.getString("oilTypeName")); } else { highGasOilPrice.setMerchantStoreId(store.getId()); highGasOilPrice.setOilNo(oilPriceObject.getInteger("oilNo")); highGasOilPrice.setOilNoName(oilPriceObject.getString("oilNoName")); highGasOilPrice.setPriceVip(oilPriceObject.getBigDecimal("priceVip")); highGasOilPrice.setPriceGun(oilPriceObject.getBigDecimal("priceGun")); highGasOilPrice.setPriceOfficial(oilPriceObject.getBigDecimal("priceOfficial")); highGasOilPrice.setOilType(oilPriceObject.getInteger("oilType")); highGasOilPrice.setOilTypeName(oilPriceObject.getString("oilTypeName")); } highGasOilPriceService.editGasOilPrice(highGasOilPrice); } } else { highMerchantStore = new HighMerchantStore(); highMerchantStore.setType(1); highMerchantStore.setMerchantId(merchant.getId()); highMerchantStore.setCompanyId(merchant.getCompanyId()); highMerchantStore.setStoreKey(object.getString("gasId")); highMerchantStore.setStoreName(object.getString("gasName")); highMerchantStore.setStoreLogo(object.getString("gasLogoSmall")); highMerchantStore.setRegionId(object.getLong("provinceCode")); highMerchantStore.setRegionName(object.getString("provinceName")); highMerchantStore.setAddress(object.getString("gasAddress")); highMerchantStore.setLongitude(object.getString("gasAddressLongitude")); highMerchantStore.setLatitude(object.getString("gasAddressLatitude")); highMerchantStore.setStatus(1); highMerchantStore.setOperatorId(0L); highMerchantStore.setOperatorName("系统创建"); highMerchantStore.setCreateTime(new Date()); highMerchantStore.setUpdateTime(new Date()); highMerchantStore.setExt1(object.getString("gasSourceId")); HighMerchantStoreModel merchantStoreModel = new HighMerchantStoreModel(); BeanUtils.copyProperties(highMerchantStore, merchantStoreModel); highMerchantStoreService.insertMerchantStore(merchantStoreModel); JSONArray oilPriceList = object.getJSONArray("oilPriceList"); for (Object oilPrice : oilPriceList) { JSONObject oilPriceObject = JSONObject.parseObject(JSONObject.toJSONString(oilPrice)); highGasOilPrice = new HighGasOilPrice(); highGasOilPrice.setMerchantStoreId(merchantStoreModel.getId()); highGasOilPrice.setOilNo(oilPriceObject.getInteger("oilNo")); highGasOilPrice.setOilNoName(oilPriceObject.getString("oilNoName")); highGasOilPrice.setPriceVip(oilPriceObject.getBigDecimal("priceVip")); highGasOilPrice.setPriceGun(oilPriceObject.getBigDecimal("priceGun")); highGasOilPrice.setPriceOfficial(oilPriceObject.getBigDecimal("priceOfficial")); highGasOilPrice.setOilType(oilPriceObject.getInteger("oilType")); highGasOilPrice.setOilTypeName(oilPriceObject.getString("oilTypeName")); highGasOilPriceService.editGasOilPrice(highGasOilPrice); } } } } return ResponseMsgUtil.success("初始化完成"); } @RequestMapping(value = "/detectTYMerchantStore", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "检测加油站") public ResponseData detectTYMerchantStore(@RequestParam(name = "merchantId", required = true) Long merchantId) throws Exception { HighMerchantModel merchant = highMerchantService.getMerchantById(merchantId); if (merchant == null) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到商户"); } Map param = new HashMap<>(); param.put("merchantId", merchant.getId()); List stores = highMerchantStoreService.getMerchantStoreList(param); for (HighMerchantStore store : stores) { JSONObject jsonObject = TuanYouConfig.queryGasInfoByGasId(store.getStoreKey()); if (jsonObject != null && jsonObject.getString("code").equals("200")) { JSONObject result = jsonObject.getJSONObject("result"); store.setStatus(result.getInteger("gasStatus")); } else { store.setStatus(0); } highMerchantStoreService.updateMerchantStoreDetail(store); } return ResponseMsgUtil.success("初始化完成"); } /* @RequestMapping(value = "/pushTuanYouOrder", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "推送团油订单") public ResponseData pushTuanYouOrder(@RequestParam(name = "orderNo", required = true) String orderNo) { try { HighOrder order = highOrderService.getOrderByOrderNo(orderNo); for (HighChildOrder highChildOrder : order.getHighChildOrderList()) { HighMerchantStoreModel store = highMerchantStoreService.getMerchantStoreById(highChildOrder.getGoodsId()); // 推送团油订单 Map paramMap = new HashMap<>(); paramMap.put("gasId", store.getStoreKey()); paramMap.put("oilNo", highChildOrder.getGasOilNo()); paramMap.put("gunNo", highChildOrder.getGasGunNo()); BigDecimal priceGun = highChildOrder.getGasPriceGun(); BigDecimal priceVip = highChildOrder.getGasPriceVip(); paramMap.put("priceGun", priceGun); // 枪单价 paramMap.put("priceVip", priceVip); // 优惠价 paramMap.put("driverPhone", order.getMemPhone()); // paramMap.put("driverPhone", "17726395120"); paramMap.put("thirdSerialNo", order.getOrderNo()); paramMap.put("refuelingAmount", highChildOrder.getTotalPrice()); // 油品类型 1:汽油:2:柴油;3:天然气 if (highChildOrder.getGasOilType() == 1) { paramMap.put("accountNo", CommonSysConst.getSysConfig().getTuanYouGasolineAccount()); } else if (highChildOrder.getGasOilType() == 2) { paramMap.put("accountNo", CommonSysConst.getSysConfig().getTuanYouDieselAccount()); } JSONObject orderPushObject = TuanYouConfig.refuelingOrderPush(paramMap); // 推送团油订单记录 HighGasOrderPush highGasOrderPush = new HighGasOrderPush(); highGasOrderPush.setCreateTime(new Date()); highGasOrderPush.setCode(orderPushObject.getString("code")); highGasOrderPush.setRequestContent(JSONObject.toJSONString(paramMap)); highGasOrderPush.setReturnContent(orderPushObject.toJSONString()); highGasOrderPushMapper.insert(highGasOrderPush); if (orderPushObject != null && orderPushObject.getString("code").equals("200")) { highChildOrder.setGasOrderNo(orderPushObject.getJSONObject("result").getString("orderNo")); } highOrderService.updateOrder(order); } return ResponseMsgUtil.success(order); } catch (Exception e) { log.error("HighOrderController --> getOrderById() error!", e); return ResponseMsgUtil.exception(e); } } */ @RequestMapping(value = "/queryCompanyAccountInfo2JD", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "查询团油余额") public ResponseData queryCompanyAccountInfo2JD() { try { return ResponseMsgUtil.success(TuanYouConfig.queryCompanyAccountInfo2JD()); } catch (Exception e) { log.error("HighOrderController --> queryCompanyAccountInfo2JD() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/queryCompanyPriceDetail", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "查询团油余额") public ResponseData queryCompanyPriceDetail() { try { return ResponseMsgUtil.success(TuanYouConfig.queryCompanyPriceDetail("LW000115995", "92")); } catch (Exception e) { log.error("HighOrderController --> queryCompanyAccountInfo2JD() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/starbucksOrdersPay", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "星巴克支付") public ResponseData starbucksOrdersPay(@RequestParam(name = "orderNo", required = true) String orderNo) { try { return ResponseMsgUtil.success(QianZhuConfig.starbucksOrdersPay(orderNo)); } catch (Exception e) { log.error("HighOrderController --> getBackendToken() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/payKfcOrder", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "肯德基支付") public ResponseData payKfcOrder(@RequestParam(name = "orderNo", required = true) String orderNo) { try { return ResponseMsgUtil.success(QianZhuConfig.payKfcOrder(orderNo)); } catch (Exception e) { log.error("HighOrderController --> getBackendToken() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/wxSplitAccount", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "微信分账") public ResponseData wxSplitAccount() { try { HighOrder orderNo = highOrderService.getOrderByOrderNo("HF2021101812025050304"); wxProfitsharing(orderNo.getOrderNo(), orderNo.getPaySerialNo(), orderNo.getPayRealPrice()); return ResponseMsgUtil.success("分账成功"); } catch (Exception e) { log.error("HighOrderController --> getOrderById() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/queryStaging", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "分期查询") public ResponseData queryStaging(@RequestParam(name = "oriOrgTrace", required = true) String oriOrgTrace, HttpServletRequest request) { try { String orgTrace = CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(0, 4) + CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length() - 4, CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length()) + DateUtil.format(new Date(), DateUtil.YMDHMS) + IDGenerator.nextId(6); return ResponseMsgUtil.success(UnionStagingPayConfig.queryStaging(orgTrace, oriOrgTrace, "", new Date(), request)); } catch (Exception e) { log.error("HighOrderController --> unionStagingPay() error!", e); return ResponseMsgUtil.exception(e); } } /* @RequestMapping(value = "/orderToRefund", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "退款") public ResponseData orderToRefund(HttpServletRequest request) { try { OrderRefundModel orderRefundModel = WxOrderConfig.orderToRefund("4200001301202202035413938093", new BigDecimal("30.80"), new BigDecimal("16.90")); return ResponseMsgUtil.success(orderRefundModel); } catch (Exception e) { log.error("HighOrderController --> orderToRefund() error!", e); return ResponseMsgUtil.exception(e); } }*/ @RequestMapping(value = "/query", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "订单查询") public ResponseData query(@RequestParam(name = "oriOrgTrace", required = true) String oriOrgTrace, HttpServletRequest request) { try { String orgTrace = CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(0, 4) + CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length() - 4, CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length()) + DateUtil.format(new Date(), DateUtil.YMDHMS) + IDGenerator.nextId(6); return ResponseMsgUtil.success(UnionStagingPayConfig.query(orgTrace, oriOrgTrace, "", new Date(), request)); } catch (Exception e) { log.error("HighOrderController --> unionStagingPay() error!", e); return ResponseMsgUtil.exception(e); } } public void wxProfitsharing(String transaction_id, String out_order_no, BigDecimal amount) { try { Map param = new LinkedHashMap<>(); param.put("appid", "wx637bd6f7314daa46"); param.put("mch_id", "1289663601"); param.put("sub_mch_id", "1609882817"); // 个体户黎杨珍 param.put("transaction_id", transaction_id); param.put("out_order_no", out_order_no); param.put("nonce_str", WxUtils.makeNonStr()); // 分账金额 BigDecimal porofitSharingAmount = amount; List> receiversList = new ArrayList<>(); Map receiversMap = new LinkedHashMap<>(); receiversMap.put("type", "MERCHANT_ID"); receiversMap.put("account", "1603942866"); receiversMap.put("amount", porofitSharingAmount.multiply(new BigDecimal("100")).intValue()); receiversMap.put("description", "分给商户【惠昕石化】"); receiversList.add(receiversMap); param.put("receivers", JSONObject.toJSONString(receiversList)); String signStr = WxUtils.generateSignature(param, "Skufk5oi85wDFGl888i6wsRSTkdd5df5", WXPayConstants.SignType.HMACSHA256); param.put("sign", signStr); String resultXmL = this.doRefundRequest(param.get("mch_id"), null, WxUtils.mapToXml(param)); // 请求分账返回的结果 ResultProfitSharing resultProfitSharing = XmlUtil.getObjectFromXML(resultXmL, ResultProfitSharing.class); if (!resultProfitSharing.getResult_code().equals("FAIL")) { HighProfitSharingRecord sharingRecord = new HighProfitSharingRecord(); sharingRecord.setOutOrderNo(resultProfitSharing.getOut_order_no()); sharingRecord.setTransactionId(resultProfitSharing.getTransaction_id()); sharingRecord.setOrderId(resultProfitSharing.getOrder_id()); sharingRecord.setStatus(resultProfitSharing.getResult_code()); sharingRecord.setPrice(amount); sharingRecord.setCreateTime(new Date()); sharingRecord.setContent(resultXmL); highProfitSharingRecordService.insert(sharingRecord); } } catch (Exception e) { log.error("CmsContentController --> getCorporateAdvertising() error!", e); } } public CloseableHttpClient readCertificate(String mchId) throws Exception { /** * 注意PKCS12证书 是从微信商户平台-》账户设置-》 API安全 中下载的 */ KeyStore keyStore = KeyStore.getInstance("PKCS12"); //P12文件目录 证书路径,这里需要你自己修改,linux下还是windows下的根路径 FileInputStream instream = new FileInputStream("/home/project/wx_cert/1289663601_apiclient_cert.p12"); // FileInputStream instream = new FileInputStream("G:\\hurui-project/hai-parent/hai-service/src/main/java/privatekey/1289663601_apiclient_cert.p12"); try { keyStore.load(instream, "1289663601".toCharArray());//这里写密码..默认是你的MCHID } finally { instream.close(); } SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, "1289663601".toCharArray()).build();//这里也是写密码的 SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, SSLConnectionSocketFactory.getDefaultHostnameVerifier()); // Allow TLSv1 protocol only return HttpClients.custom().setSSLSocketFactory(sslsf).build(); } public String doRefundRequest(String mchId, String url, String data) throws Exception { //小程序退款需要调用双向证书的认证 CloseableHttpClient httpClient = readCertificate(mchId); try { HttpPost httpost = new HttpPost("https://api.mch.weixin.qq.com/secapi/pay/profitsharing"); // 设置响应头信息 httpost.addHeader("Connection", "keep-alive"); httpost.addHeader("Accept", "*/*"); httpost.addHeader("Content-Type", "text/xml"); httpost.addHeader("Host", "api.mch.weixin.qq.com"); httpost.addHeader("X-Requested-With", "XMLHttpRequest"); httpost.addHeader("Cache-Control", "max-age=0"); httpost.addHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) "); httpost.setEntity(new StringEntity(data, "UTF-8")); CloseableHttpResponse response = httpClient.execute(httpost); try { HttpEntity entity = response.getEntity(); String jsonStr = EntityUtils.toString(response.getEntity(), "UTF-8"); EntityUtils.consume(entity); return jsonStr; } finally { response.close(); } } catch (Exception e) { throw new RuntimeException(e); } finally { httpClient.close(); } } @RequestMapping(value = "/websocket", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "websocket") public ResponseData websocket(@RequestParam(name = "orderNo", required = true) String orderNo ) { try { HighOrder order = highOrderService.getOrderByOrderNo(orderNo); if (order.getHighChildOrderList().get(0).getGoodsType().equals(3)) { Map pushMsg = new HashMap<>(); pushMsg.put("userId", order.getHighChildOrderList().get(0).getGoodsId()); Map msgContent = new HashMap<>(); msgContent.put("order", highOrderService.getGasOrderDetail(order.getOrderNo())); msgContent.put("voice", baiduVoiceService.text2audio(order.getHighChildOrderList().get(0).getGoodsName() + "加油站,收款:" + order.getTotalPrice())); pushMsg.put("message", JSONObject.toJSONString(msgContent)); HttpsUtils.doPost("http://127.0.0.1:9901/msg/test/websocket", pushMsg, new HashMap<>()); } return ResponseMsgUtil.success("null"); } catch (Exception e) { log.error("HighOrderController --> unionStagingPay() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/gasStationQueryDetail", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "gasStationQueryDetail") public ResponseData gasStationQueryDetail() { try { return ResponseMsgUtil.success(shellGroupService.gasStationQueryDetail("0001")); } catch (Exception e) { log.error("HighOrderController --> gasStationQueryDetail() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/gasPageQueryAllStation", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "gasPageQueryAllStation") public ResponseData gasPageQueryAllStation() { try { gasService.getJiaHaoYouAllStation(); return ResponseMsgUtil.success(null); } catch (Exception e) { log.error("HighOrderController --> gasPageQueryAllStation() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/gasSyncPayment", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "gasSyncPayment") public ResponseData gasSyncPayment() { try { HighOrder order = highOrderService.getOrderByOrderNo("HF2022071114274054900"); for (HighChildOrder childOrder : order.getHighChildOrderList()) { HighMerchantStoreModel store = highMerchantStoreService.getMerchantStoreById(childOrder.getGoodsId()); // 推送壳牌 JSONObject syncPayment = shellGroupService.gasSyncPayment(order.getOrderNo(), // store.getStoreKey(), "0001", new Date(), order.getTotalPrice(), "92", "1", order.getPayRealPrice()); } return ResponseMsgUtil.success(null); } catch (Exception e) { log.error("HighOrderController --> gasPageQueryAllStation() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/gasSyncRefund", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "gasSyncRefund") public ResponseData gasSyncRefund() { try { shellGroupService.gasSyncRefund(new Date(1659511289000L), "1659511289357"); return ResponseMsgUtil.success(null); } catch (Exception e) { log.error("HighOrderController --> gasSyncRefund() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/getJzStationListPage", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "getJzStationListPage") public ResponseData getJzStationListPage() { try { gasService.getJinZhuAllStation(); return ResponseMsgUtil.success(null); } catch (Exception e) { log.error("HighOrderController --> gasSyncRefund() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/test", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "test") public ResponseData test() { try { JSONObject data = HuiLianTongUnionCardConfig.resolveResponse("Gbkl57c3fECXJRiCSOspjsb3bIyyFrE4TyMKKGsSAMzeXLElQQU00GoYZSYkJYg1G2Xlic2QvOd3\\nhJC7bc6qAg+9aoZr3IJi"); return ResponseMsgUtil.success(data); } catch (Exception e) { log.error("HighOrderController --> gasSyncRefund() error!", e); return ResponseMsgUtil.exception(e); } } public static String hexStringToString(String s) { if (s == null || s.equals("")) { return null; } s = s.replace(" ", ""); byte[] baKeyword = new byte[s.length() / 2]; for (int i = 0; i < baKeyword.length; i++) { try { baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(i * 2, i * 2 + 2), 16)); } catch (Exception e) { e.printStackTrace(); } } try { s = new String(baKeyword, "UTF-8"); } catch (Exception e1) { e1.printStackTrace(); } return s; } /** * 获取打印内容,适用于云打印机 * * @param printText 打印文本 * @param pageCount 打印联数 * @param encodingStr 编码方式,默认UTF-8 * @return */ public byte[] getPrinterBytes(final byte[] printText, final int pageCount, String encodingStr) { try { byte[] array = new byte[printText.length + 9]; array[0] = 30; array[1] = 16; array[2] = (byte) pageCount;//打印份数 int num = array.length - 5; array[3] = (byte) (num >> 8); //array[4] = (byte)((uint)num & 0xFFu); array[4] = (byte) (num & 0xFF); for (int i = 0; i < printText.length; i++) { array[i + 5] = printText[i]; } array[array.length - 4] = 27; array[array.length - 3] = 99; byte[] crc16CodeArray = getCRC(printText); array[array.length - 2] = crc16CodeArray[0]; array[array.length - 1] = crc16CodeArray[1]; return array; /* if(encodingStr.equals("")){ encodingStr="UTF-8"; } byte[] msgByte = printText; // 消息数组 final byte[] dataByte = new byte[msgByte.length + 9]; dataByte[0] = 0x1E; dataByte[1] = 0x10; dataByte[2] = (byte) pageCount;// 打印多联 // 有效数据长度 final int len = dataByte.length - 5; dataByte[3] = (byte) (len >> 8); dataByte[4] = (byte) (len & 0xff); // 数据内容 System.arraycopy(msgByte, 0, dataByte, 5, msgByte.length); // 标识字节 dataByte[dataByte.length - 4] = 0x1b; dataByte[dataByte.length - 3] = 0x63; // 打印内容CRC校验 final byte[] dtCRC = getCRC(msgByte); dataByte[dataByte.length - 2] = (byte) (dtCRC[0]); dataByte[dataByte.length - 1] = (byte) (dtCRC[1]); msgByte = dataByte; return msgByte;*/ } catch (Exception ex) { System.out.println(ex.getStackTrace()); } return null; } /** * 获取打印内容,适用于云打印机 * * @param printText 打印文本 * @param pageCount 打印联数 * @param encodingStr 编码方式,默认UTF-8 * @return */ public byte[] getPrinterBytes(final String printText, final int pageCount, String encodingStr) { try { if (encodingStr.equals("")) { encodingStr = "UTF-8"; } byte[] msgByte = printText.getBytes(encodingStr); // 消息数组 final byte[] dataByte = new byte[msgByte.length + 9]; dataByte[0] = 0x1E; dataByte[1] = 0x10; dataByte[2] = (byte) pageCount;// 打印多联 // 有效数据长度 final int len = dataByte.length - 5; dataByte[3] = (byte) (len >> 8); dataByte[4] = (byte) (len & 0xff); // 数据内容 System.arraycopy(msgByte, 0, dataByte, 5, msgByte.length); // 标识字节 dataByte[dataByte.length - 4] = 0x1b; dataByte[dataByte.length - 3] = 0x63; // 打印内容CRC校验 final byte[] dtCRC = getCRC(msgByte); dataByte[dataByte.length - 2] = (byte) (dtCRC[0]); dataByte[dataByte.length - 1] = (byte) (dtCRC[1]); msgByte = dataByte; return msgByte; } catch (Exception ex) { System.out.println(ex.getStackTrace()); } return null; } private static int[] CRC16Table = {0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78}; private static byte[] getCRC(byte[] bytes) { int crc = 0xFFFF; // 初始值 for (byte b : bytes) { crc = (crc >> 8) ^ CRC16Table[(crc ^ b) & 0xff]; } byte[] b = new byte[2]; b[0] = (byte) ((crc >> 8) ^ 0xff); b[1] = (byte) ((crc & 0xff) ^ 0xff); return b; } private static final char[] HEXES = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; /** * byte数组 转换成 16进制小写字符串 */ private String bytes2Hex(byte[] bytes) { if (bytes == null || bytes.length == 0) { return null; } StringBuilder hex = new StringBuilder(); for (byte b : bytes) { hex.append(HEXES[(b >> 4) & 0x0F]); hex.append(HEXES[b & 0x0F]); } return hex.toString(); } @RequestMapping(value = "/insertV2", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "支付") public ResponseData insertV2() { try { String orderNo = "HF" + DateUtil.date2String(new Date(), "yyyyMMddHHmmss") + IDGenerator.nextId(5); JSONObject object = QianZhuConfig.insertV2("PLM100068", orderNo, "18090580471"); object.put("orderNo", orderNo); return ResponseMsgUtil.success(object); } catch (Exception e) { log.error("HighOrderController --> getBackendToken() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/QueryV2", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "查询订单号") public ResponseData QueryV2(@RequestParam(name = "orderNo", required = true) String orderNo) { try { HighOrder order = highOrderService.getOrderByOrderNo(orderNo); JSONObject orderObject = QianZhuConfig.QueryV2(orderNo); if (orderObject != null && orderObject.getLong("Code") == 999) { // 订单失败 // 订单状态 1:订单正在处理中 2;订单成功: 3 订单失败 if (orderObject.getJSONObject("Data").getInteger("OrderState") == 3) { // 订单失败 if (order.getOrderStatus() == 2) { highOrderService.thirdOrderToRefund(order.getId()); } else { highOrderService.thirdCancelOrder(order.getId()); } } // 订单状态 1:订单正在处理中 2;订单成功: 3 订单失败 if (orderObject.getJSONObject("Data").getInteger("OrderState") == 2) { for (HighChildOrder childOrder : order.getHighChildOrderList()) { childOrder.setChildOrdeStatus(3); } order.setOrderStatus(3); order.setFinishTime(new Date()); highOrderService.updateOrder(order); } } return ResponseMsgUtil.success(QianZhuConfig.QueryV2(orderNo)); } catch (Exception e) { log.error("HighOrderController --> unionStagingPay() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/getKfcOrderByOrderNo", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "查询肯德基订单") public ResponseData getKfcOrderByOrderNo(@RequestParam(name = "orderNo", required = true) String orderNo) { try { return ResponseMsgUtil.success(QianZhuConfig.getKfcOrderByOrderNo(orderNo)); } catch (Exception e) { log.error("HighOrderController -> addOrder() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/starbucksOrderByOrderNo", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "查询星巴克订单") public ResponseData starbucksOrderByOrderNo(@RequestParam(name = "orderNo", required = true) String orderNo) { try { return ResponseMsgUtil.success(QianZhuConfig.starbucksOrderByOrderNo(orderNo)); } catch (Exception e) { log.error("HighOrderController -> addOrder() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/thirdOrderToRefund", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "第三方退款") public ResponseData thirdOrderToRefund(@RequestParam(name = "orderNo", required = true) String orderNo) { try { HighOrder order = highOrderService.getOrderByOrderNo(orderNo); highOrderService.thirdOrderToRefund(order.getId()); return ResponseMsgUtil.success(""); } catch (Exception e) { log.error("HighOrderController -> addOrder() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/rechargeOrderByCy", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "城宇话费充值 ") public ResponseData rechargeOrderByCy() { try { JSONObject object = new JSONObject(); object.put("mobile" , "18090580471"); object.put("productId" , 172); object.put("agentOrderId" , "RCG" + DateUtil.date2String(new Date(), "yyyyMMddHHmmss") + IDGenerator.nextId(5)); return ResponseMsgUtil.success(RechargeConfig.rechargeOrderByCy(object)); } catch (Exception e) { log.error("HighOrderController -> addOrder() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/queryRechargeByCy", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "城宇查询订单") public ResponseData queryRechargeByCy(@RequestParam(name = "orderNo", required = true) String orderNo) { try { JSONObject object = new JSONObject(); object.put("orderNo" , orderNo); return ResponseMsgUtil.success(RechargeConfig.queryRechargeByCy(object)); } catch (Exception e) { log.error("HighOrderController -> addOrder() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/postIp", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "请求ip地址") public ResponseData postIp() { try { return ResponseMsgUtil.success(HttpsUtils.doPost("https://hsgcs.dctpay.com/brest/openApi/test")); } catch (Exception e) { log.error("HighOrderController -> addOrder() error!", e); return ResponseMsgUtil.exception(e); } } } \ No newline at end of file +package com.cweb.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.cweb.config.SysConst; import com.hai.common.Base64Util; import com.hai.common.exception.ErrorCode; import com.hai.common.exception.ErrorHelp; import com.hai.common.exception.SysCode; import com.hai.common.pay.util.XmlUtil; import com.hai.common.pay.util.sdk.WXPayConstants; import com.hai.common.security.SessionObject; import com.hai.common.utils.*; import com.hai.config.*; import com.hai.dao.HighGasOrderPushMapper; import com.hai.entity.*; import com.hai.enum_type.MerchantStoreSourceType; import com.hai.model.*; import com.hai.service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.ssl.SSLContexts; import org.apache.http.util.EntityUtils; import org.bouncycastle.util.encoders.UrlBase64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.util.IdGenerator; import org.springframework.web.bind.annotation.*; import sun.nio.cs.StreamEncoder; import javax.annotation.Resource; import javax.net.ssl.SSLContext; import javax.servlet.http.HttpServletRequest; import java.io.*; import java.math.BigDecimal; import java.nio.charset.StandardCharsets; import java.security.KeyStore; import java.util.*; /** * @Auther: 胡锐 * @Description: * @Date: 2021/3/26 23:08 */ @Controller @RequestMapping(value = "/test") @Api(value = "订单接口") public class HighTestController { private static Logger log = LoggerFactory.getLogger(HighTestController.class); @Resource private HighMerchantService highMerchantService; @Resource private HighMerchantStoreService highMerchantStoreService; @Resource private HighGasOilPriceService highGasOilPriceService; @Resource private HighOrderService highOrderService; @Resource private HighProfitSharingRecordService highProfitSharingRecordService; @Resource private HighGasOilGunNoService gasOilGunNoService; @Resource private HighGasOrderPushMapper highGasOrderPushMapper; @Resource private HuiLianTongConfig huiLianTongConfig; @Resource private UnionPayConfig unionPayConfig; @Resource private UnionStagingPayConfig unionStagingPayConfig; @Resource private UnionUserConfig unionUserConfig; @Resource private OutRechargeOrderService outRechargeOrderService; @Resource private HighOilCardService oilCardService; @Resource private BaiduVoiceService baiduVoiceService; @Resource private MqttProviderConfig mqttProviderConfig; @Autowired private WebSocket webSocket; @Resource private ShellGroupService shellGroupService; @Resource private HighGasService gasService; @Resource private JinZhuJiaYouService jinZhuJiaYouService; @RequestMapping(value = "/spPrint", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "发送打印机消息") public ResponseData spPrint(@RequestParam(name = "orderNo", required = true) String orderNo, HttpServletRequest request) { try { HighOrder highOrder = highOrderService.getOrderByOrderNo(orderNo); for (HighChildOrder highChildOrder : highOrder.getHighChildOrderList()) { HighMerchantStoreModel store = highMerchantStoreService.getMerchantStoreById(highChildOrder.getGoodsId()); new Thread(() -> { try { SpPrinterConfig sp = new SpPrinterConfig(); sp.print(store.getDeviceSn(), SpPrinterTemplate.oilCashierStubTemp( highChildOrder.getGoodsName(), highOrder.getOrderNo(), DateUtil.date2String(highOrder.getPayTime(), "yyyy-MM-dd HH:mm:ss"), "嗨森逛", highChildOrder.getGasGunNo(), highChildOrder.getGasOilNo(), highChildOrder.getGasOilLiters().toString(), highOrder.getTotalPrice().toString(), new HashMap<>(), false ), 1); Thread.sleep(6000); sp.print(store.getDeviceSn(), SpPrinterTemplate.oilClientStubTemp( highChildOrder.getGoodsName(), highOrder.getOrderNo(), DateUtil.date2String(highOrder.getPayTime(), "yyyy-MM-dd HH:mm:ss"), "嗨森逛", highChildOrder.getGasGunNo(), highChildOrder.getGasOilNo(), highChildOrder.getGasOilLiters().toString(), highOrder.getTotalPrice().toString(), new HashMap<>(), false ), 1); } catch (Exception e) { e.printStackTrace(); } }).start(); } return ResponseMsgUtil.success("发送成功"); } catch (Exception e) { log.error("HighUserCardController --> getHuiLianTongCardInfo() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/queryGasInfoByGasId", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "根据油站 id 拉取最新的油站数据") public ResponseData queryGasInfoByGasId(@RequestParam(name = "gasId", required = true) String gasId, HttpServletRequest request) { try { return ResponseMsgUtil.success(TuanYouConfig.queryGasInfoByGasId(gasId)); } catch (Exception e) { log.error("HighUserCardController --> getHuiLianTongCardInfo() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/initTYMerchantStore", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "初始化加油站") public ResponseData initTYMerchantStore(@RequestParam(name = "merchantId", required = true) Long merchantId) throws Exception { HighMerchantModel merchant = highMerchantService.getMerchantById(merchantId); if (merchant == null) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到商户"); } JSONObject jsonObjectP = TuanYouConfig.queryGasInfoListByPage(1, 1000); JSONObject resultObjectP = jsonObjectP.getObject("result", JSONObject.class); for (int i = 1; i <= resultObjectP.getInteger("totalPageNum").intValue(); i++) { JSONObject jsonObject = TuanYouConfig.queryGasInfoListByPage(i, 1000); JSONObject resultObject = jsonObject.getObject("result", JSONObject.class); JSONArray jsonArray = resultObject.getJSONArray("gasInfoList"); HighMerchantStore highMerchantStore; HighGasOilPrice highGasOilPrice; for (Object gasObject : jsonArray) { JSONObject object = JSONObject.parseObject(JSONObject.toJSONString(gasObject)); HighMerchantStoreModel store = highMerchantStoreService.getMerchantStoreByKey(object.getString("gasId")); if (store != null) { store.setType(1); store.setMerchantId(merchant.getId()); store.setCompanyId(merchant.getCompanyId()); store.setStoreKey(object.getString("gasId")); store.setStoreName(object.getString("gasName")); store.setStoreLogo(object.getString("gasLogoSmall")); store.setRegionId(object.getLong("provinceCode")); store.setRegionName(object.getString("provinceName")); store.setAddress(object.getString("gasAddress")); store.setLongitude(object.getString("gasAddressLongitude")); store.setLatitude(object.getString("gasAddressLatitude")); store.setStatus(object.getInteger("gasStatus")); store.setOperatorId(0L); store.setOperatorName("系统创建"); store.setUpdateTime(new Date()); store.setExt1(object.getString("gasSourceId")); highMerchantStoreService.updateMerchantStoreDetail(store); JSONArray oilPriceList = object.getJSONArray("oilPriceList"); for (Object oilPrice : oilPriceList) { JSONObject oilPriceObject = JSONObject.parseObject(JSONObject.toJSONString(oilPrice)); // 查询门店油号 highGasOilPrice = highGasOilPriceService.getGasOilPriceByStoreAndOilNo(store.getId(), oilPriceObject.getInteger("oilNo")); if (highGasOilPrice == null) { highGasOilPrice = new HighGasOilPrice(); highGasOilPrice.setMerchantStoreId(store.getId()); highGasOilPrice.setOilNo(oilPriceObject.getInteger("oilNo")); highGasOilPrice.setOilNoName(oilPriceObject.getString("oilNoName")); highGasOilPrice.setPriceVip(oilPriceObject.getBigDecimal("priceVip")); highGasOilPrice.setPriceGun(oilPriceObject.getBigDecimal("priceGun")); highGasOilPrice.setPriceOfficial(oilPriceObject.getBigDecimal("priceOfficial")); highGasOilPrice.setOilType(oilPriceObject.getInteger("oilType")); highGasOilPrice.setOilTypeName(oilPriceObject.getString("oilTypeName")); } else { highGasOilPrice.setMerchantStoreId(store.getId()); highGasOilPrice.setOilNo(oilPriceObject.getInteger("oilNo")); highGasOilPrice.setOilNoName(oilPriceObject.getString("oilNoName")); highGasOilPrice.setPriceVip(oilPriceObject.getBigDecimal("priceVip")); highGasOilPrice.setPriceGun(oilPriceObject.getBigDecimal("priceGun")); highGasOilPrice.setPriceOfficial(oilPriceObject.getBigDecimal("priceOfficial")); highGasOilPrice.setOilType(oilPriceObject.getInteger("oilType")); highGasOilPrice.setOilTypeName(oilPriceObject.getString("oilTypeName")); } highGasOilPriceService.editGasOilPrice(highGasOilPrice); } } else { highMerchantStore = new HighMerchantStore(); highMerchantStore.setType(1); highMerchantStore.setMerchantId(merchant.getId()); highMerchantStore.setCompanyId(merchant.getCompanyId()); highMerchantStore.setStoreKey(object.getString("gasId")); highMerchantStore.setStoreName(object.getString("gasName")); highMerchantStore.setStoreLogo(object.getString("gasLogoSmall")); highMerchantStore.setRegionId(object.getLong("provinceCode")); highMerchantStore.setRegionName(object.getString("provinceName")); highMerchantStore.setAddress(object.getString("gasAddress")); highMerchantStore.setLongitude(object.getString("gasAddressLongitude")); highMerchantStore.setLatitude(object.getString("gasAddressLatitude")); highMerchantStore.setStatus(1); highMerchantStore.setOperatorId(0L); highMerchantStore.setOperatorName("系统创建"); highMerchantStore.setCreateTime(new Date()); highMerchantStore.setUpdateTime(new Date()); highMerchantStore.setExt1(object.getString("gasSourceId")); HighMerchantStoreModel merchantStoreModel = new HighMerchantStoreModel(); BeanUtils.copyProperties(highMerchantStore, merchantStoreModel); highMerchantStoreService.insertMerchantStore(merchantStoreModel); JSONArray oilPriceList = object.getJSONArray("oilPriceList"); for (Object oilPrice : oilPriceList) { JSONObject oilPriceObject = JSONObject.parseObject(JSONObject.toJSONString(oilPrice)); highGasOilPrice = new HighGasOilPrice(); highGasOilPrice.setMerchantStoreId(merchantStoreModel.getId()); highGasOilPrice.setOilNo(oilPriceObject.getInteger("oilNo")); highGasOilPrice.setOilNoName(oilPriceObject.getString("oilNoName")); highGasOilPrice.setPriceVip(oilPriceObject.getBigDecimal("priceVip")); highGasOilPrice.setPriceGun(oilPriceObject.getBigDecimal("priceGun")); highGasOilPrice.setPriceOfficial(oilPriceObject.getBigDecimal("priceOfficial")); highGasOilPrice.setOilType(oilPriceObject.getInteger("oilType")); highGasOilPrice.setOilTypeName(oilPriceObject.getString("oilTypeName")); highGasOilPriceService.editGasOilPrice(highGasOilPrice); } } } } return ResponseMsgUtil.success("初始化完成"); } @RequestMapping(value = "/detectTYMerchantStore", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "检测加油站") public ResponseData detectTYMerchantStore(@RequestParam(name = "merchantId", required = true) Long merchantId) throws Exception { HighMerchantModel merchant = highMerchantService.getMerchantById(merchantId); if (merchant == null) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到商户"); } Map param = new HashMap<>(); param.put("merchantId", merchant.getId()); List stores = highMerchantStoreService.getMerchantStoreList(param); for (HighMerchantStore store : stores) { JSONObject jsonObject = TuanYouConfig.queryGasInfoByGasId(store.getStoreKey()); if (jsonObject != null && jsonObject.getString("code").equals("200")) { JSONObject result = jsonObject.getJSONObject("result"); store.setStatus(result.getInteger("gasStatus")); } else { store.setStatus(0); } highMerchantStoreService.updateMerchantStoreDetail(store); } return ResponseMsgUtil.success("初始化完成"); } /* @RequestMapping(value = "/pushTuanYouOrder", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "推送团油订单") public ResponseData pushTuanYouOrder(@RequestParam(name = "orderNo", required = true) String orderNo) { try { HighOrder order = highOrderService.getOrderByOrderNo(orderNo); for (HighChildOrder highChildOrder : order.getHighChildOrderList()) { HighMerchantStoreModel store = highMerchantStoreService.getMerchantStoreById(highChildOrder.getGoodsId()); // 推送团油订单 Map paramMap = new HashMap<>(); paramMap.put("gasId", store.getStoreKey()); paramMap.put("oilNo", highChildOrder.getGasOilNo()); paramMap.put("gunNo", highChildOrder.getGasGunNo()); BigDecimal priceGun = highChildOrder.getGasPriceGun(); BigDecimal priceVip = highChildOrder.getGasPriceVip(); paramMap.put("priceGun", priceGun); // 枪单价 paramMap.put("priceVip", priceVip); // 优惠价 paramMap.put("driverPhone", order.getMemPhone()); // paramMap.put("driverPhone", "17726395120"); paramMap.put("thirdSerialNo", order.getOrderNo()); paramMap.put("refuelingAmount", highChildOrder.getTotalPrice()); // 油品类型 1:汽油:2:柴油;3:天然气 if (highChildOrder.getGasOilType() == 1) { paramMap.put("accountNo", CommonSysConst.getSysConfig().getTuanYouGasolineAccount()); } else if (highChildOrder.getGasOilType() == 2) { paramMap.put("accountNo", CommonSysConst.getSysConfig().getTuanYouDieselAccount()); } JSONObject orderPushObject = TuanYouConfig.refuelingOrderPush(paramMap); // 推送团油订单记录 HighGasOrderPush highGasOrderPush = new HighGasOrderPush(); highGasOrderPush.setCreateTime(new Date()); highGasOrderPush.setCode(orderPushObject.getString("code")); highGasOrderPush.setRequestContent(JSONObject.toJSONString(paramMap)); highGasOrderPush.setReturnContent(orderPushObject.toJSONString()); highGasOrderPushMapper.insert(highGasOrderPush); if (orderPushObject != null && orderPushObject.getString("code").equals("200")) { highChildOrder.setGasOrderNo(orderPushObject.getJSONObject("result").getString("orderNo")); } highOrderService.updateOrder(order); } return ResponseMsgUtil.success(order); } catch (Exception e) { log.error("HighOrderController --> getOrderById() error!", e); return ResponseMsgUtil.exception(e); } } */ @RequestMapping(value = "/queryCompanyAccountInfo2JD", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "查询团油余额") public ResponseData queryCompanyAccountInfo2JD() { try { return ResponseMsgUtil.success(TuanYouConfig.queryCompanyAccountInfo2JD()); } catch (Exception e) { log.error("HighOrderController --> queryCompanyAccountInfo2JD() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/queryCompanyPriceDetail", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "查询团油余额") public ResponseData queryCompanyPriceDetail() { try { return ResponseMsgUtil.success(TuanYouConfig.queryCompanyPriceDetail("LW000115995", "92")); } catch (Exception e) { log.error("HighOrderController --> queryCompanyAccountInfo2JD() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/starbucksOrdersPay", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "星巴克支付") public ResponseData starbucksOrdersPay(@RequestParam(name = "orderNo", required = true) String orderNo) { try { return ResponseMsgUtil.success(QianZhuConfig.starbucksOrdersPay(orderNo)); } catch (Exception e) { log.error("HighOrderController --> getBackendToken() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/payKfcOrder", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "肯德基支付") public ResponseData payKfcOrder(@RequestParam(name = "orderNo", required = true) String orderNo) { try { return ResponseMsgUtil.success(QianZhuConfig.payKfcOrder(orderNo)); } catch (Exception e) { log.error("HighOrderController --> getBackendToken() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/wxSplitAccount", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "微信分账") public ResponseData wxSplitAccount() { try { HighOrder orderNo = highOrderService.getOrderByOrderNo("HF2021101812025050304"); wxProfitsharing(orderNo.getOrderNo(), orderNo.getPaySerialNo(), orderNo.getPayRealPrice()); return ResponseMsgUtil.success("分账成功"); } catch (Exception e) { log.error("HighOrderController --> getOrderById() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/queryStaging", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "分期查询") public ResponseData queryStaging(@RequestParam(name = "oriOrgTrace", required = true) String oriOrgTrace, HttpServletRequest request) { try { String orgTrace = CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(0, 4) + CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length() - 4, CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length()) + DateUtil.format(new Date(), DateUtil.YMDHMS) + IDGenerator.nextId(6); return ResponseMsgUtil.success(UnionStagingPayConfig.queryStaging(orgTrace, oriOrgTrace, "", new Date(), request)); } catch (Exception e) { log.error("HighOrderController --> unionStagingPay() error!", e); return ResponseMsgUtil.exception(e); } } /* @RequestMapping(value = "/orderToRefund", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "退款") public ResponseData orderToRefund(HttpServletRequest request) { try { OrderRefundModel orderRefundModel = WxOrderConfig.orderToRefund("4200001301202202035413938093", new BigDecimal("30.80"), new BigDecimal("16.90")); return ResponseMsgUtil.success(orderRefundModel); } catch (Exception e) { log.error("HighOrderController --> orderToRefund() error!", e); return ResponseMsgUtil.exception(e); } }*/ @RequestMapping(value = "/query", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "订单查询") public ResponseData query(@RequestParam(name = "oriOrgTrace", required = true) String oriOrgTrace, HttpServletRequest request) { try { String orgTrace = CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(0, 4) + CommonSysConst.getSysConfig().getUnionStagingPayOrgId().substring(CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length() - 4, CommonSysConst.getSysConfig().getUnionStagingPayOrgId().length()) + DateUtil.format(new Date(), DateUtil.YMDHMS) + IDGenerator.nextId(6); return ResponseMsgUtil.success(UnionStagingPayConfig.query(orgTrace, oriOrgTrace, "", new Date(), request)); } catch (Exception e) { log.error("HighOrderController --> unionStagingPay() error!", e); return ResponseMsgUtil.exception(e); } } public void wxProfitsharing(String transaction_id, String out_order_no, BigDecimal amount) { try { Map param = new LinkedHashMap<>(); param.put("appid", "wx637bd6f7314daa46"); param.put("mch_id", "1289663601"); param.put("sub_mch_id", "1609882817"); // 个体户黎杨珍 param.put("transaction_id", transaction_id); param.put("out_order_no", out_order_no); param.put("nonce_str", WxUtils.makeNonStr()); // 分账金额 BigDecimal porofitSharingAmount = amount; List> receiversList = new ArrayList<>(); Map receiversMap = new LinkedHashMap<>(); receiversMap.put("type", "MERCHANT_ID"); receiversMap.put("account", "1603942866"); receiversMap.put("amount", porofitSharingAmount.multiply(new BigDecimal("100")).intValue()); receiversMap.put("description", "分给商户【惠昕石化】"); receiversList.add(receiversMap); param.put("receivers", JSONObject.toJSONString(receiversList)); String signStr = WxUtils.generateSignature(param, "Skufk5oi85wDFGl888i6wsRSTkdd5df5", WXPayConstants.SignType.HMACSHA256); param.put("sign", signStr); String resultXmL = this.doRefundRequest(param.get("mch_id"), null, WxUtils.mapToXml(param)); // 请求分账返回的结果 ResultProfitSharing resultProfitSharing = XmlUtil.getObjectFromXML(resultXmL, ResultProfitSharing.class); if (!resultProfitSharing.getResult_code().equals("FAIL")) { HighProfitSharingRecord sharingRecord = new HighProfitSharingRecord(); sharingRecord.setOutOrderNo(resultProfitSharing.getOut_order_no()); sharingRecord.setTransactionId(resultProfitSharing.getTransaction_id()); sharingRecord.setOrderId(resultProfitSharing.getOrder_id()); sharingRecord.setStatus(resultProfitSharing.getResult_code()); sharingRecord.setPrice(amount); sharingRecord.setCreateTime(new Date()); sharingRecord.setContent(resultXmL); highProfitSharingRecordService.insert(sharingRecord); } } catch (Exception e) { log.error("CmsContentController --> getCorporateAdvertising() error!", e); } } public CloseableHttpClient readCertificate(String mchId) throws Exception { /** * 注意PKCS12证书 是从微信商户平台-》账户设置-》 API安全 中下载的 */ KeyStore keyStore = KeyStore.getInstance("PKCS12"); //P12文件目录 证书路径,这里需要你自己修改,linux下还是windows下的根路径 FileInputStream instream = new FileInputStream("/home/project/wx_cert/1289663601_apiclient_cert.p12"); // FileInputStream instream = new FileInputStream("G:\\hurui-project/hai-parent/hai-service/src/main/java/privatekey/1289663601_apiclient_cert.p12"); try { keyStore.load(instream, "1289663601".toCharArray());//这里写密码..默认是你的MCHID } finally { instream.close(); } SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, "1289663601".toCharArray()).build();//这里也是写密码的 SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, SSLConnectionSocketFactory.getDefaultHostnameVerifier()); // Allow TLSv1 protocol only return HttpClients.custom().setSSLSocketFactory(sslsf).build(); } public String doRefundRequest(String mchId, String url, String data) throws Exception { //小程序退款需要调用双向证书的认证 CloseableHttpClient httpClient = readCertificate(mchId); try { HttpPost httpost = new HttpPost("https://api.mch.weixin.qq.com/secapi/pay/profitsharing"); // 设置响应头信息 httpost.addHeader("Connection", "keep-alive"); httpost.addHeader("Accept", "*/*"); httpost.addHeader("Content-Type", "text/xml"); httpost.addHeader("Host", "api.mch.weixin.qq.com"); httpost.addHeader("X-Requested-With", "XMLHttpRequest"); httpost.addHeader("Cache-Control", "max-age=0"); httpost.addHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) "); httpost.setEntity(new StringEntity(data, "UTF-8")); CloseableHttpResponse response = httpClient.execute(httpost); try { HttpEntity entity = response.getEntity(); String jsonStr = EntityUtils.toString(response.getEntity(), "UTF-8"); EntityUtils.consume(entity); return jsonStr; } finally { response.close(); } } catch (Exception e) { throw new RuntimeException(e); } finally { httpClient.close(); } } @RequestMapping(value = "/websocket", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "websocket") public ResponseData websocket(@RequestParam(name = "orderNo", required = true) String orderNo ) { try { HighOrder order = highOrderService.getOrderByOrderNo(orderNo); if (order.getHighChildOrderList().get(0).getGoodsType().equals(3)) { Map pushMsg = new HashMap<>(); pushMsg.put("userId", order.getHighChildOrderList().get(0).getGoodsId()); Map msgContent = new HashMap<>(); msgContent.put("order", highOrderService.getGasOrderDetail(order.getOrderNo())); msgContent.put("voice", baiduVoiceService.text2audio(order.getHighChildOrderList().get(0).getGoodsName() + "加油站,收款:" + order.getTotalPrice())); pushMsg.put("message", JSONObject.toJSONString(msgContent)); HttpsUtils.doPost("http://127.0.0.1:9901/msg/test/websocket", pushMsg, new HashMap<>()); } return ResponseMsgUtil.success("null"); } catch (Exception e) { log.error("HighOrderController --> unionStagingPay() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/gasStationQueryDetail", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "gasStationQueryDetail") public ResponseData gasStationQueryDetail() { try { return ResponseMsgUtil.success(shellGroupService.gasStationQueryDetail("0001")); } catch (Exception e) { log.error("HighOrderController --> gasStationQueryDetail() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/gasPageQueryAllStation", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "gasPageQueryAllStation") public ResponseData gasPageQueryAllStation() { try { gasService.getJiaHaoYouAllStation(); return ResponseMsgUtil.success(null); } catch (Exception e) { log.error("HighOrderController --> gasPageQueryAllStation() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/gasSyncPayment", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "gasSyncPayment") public ResponseData gasSyncPayment() { try { HighOrder order = highOrderService.getOrderByOrderNo("HF2022071114274054900"); for (HighChildOrder childOrder : order.getHighChildOrderList()) { HighMerchantStoreModel store = highMerchantStoreService.getMerchantStoreById(childOrder.getGoodsId()); // 推送壳牌 JSONObject syncPayment = shellGroupService.gasSyncPayment(order.getOrderNo(), // store.getStoreKey(), "0001", new Date(), order.getTotalPrice(), "92", "1", order.getPayRealPrice(), childOrder.getGasDiscount() ); } return ResponseMsgUtil.success(null); } catch (Exception e) { log.error("HighOrderController --> gasPageQueryAllStation() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/gasSyncRefund", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "gasSyncRefund") public ResponseData gasSyncRefund() { try { shellGroupService.gasSyncRefund(new Date(1659511289000L), "1659511289357"); return ResponseMsgUtil.success(null); } catch (Exception e) { log.error("HighOrderController --> gasSyncRefund() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/getJzStationListPage", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "getJzStationListPage") public ResponseData getJzStationListPage() { try { gasService.getJinZhuAllStation(); return ResponseMsgUtil.success(null); } catch (Exception e) { log.error("HighOrderController --> gasSyncRefund() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/test", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "test") public ResponseData test() { try { JSONObject data = HuiLianTongUnionCardConfig.resolveResponse("Gbkl57c3fECXJRiCSOspjsb3bIyyFrE4TyMKKGsSAMzeXLElQQU00GoYZSYkJYg1G2Xlic2QvOd3\\nhJC7bc6qAg+9aoZr3IJi"); return ResponseMsgUtil.success(data); } catch (Exception e) { log.error("HighOrderController --> gasSyncRefund() error!", e); return ResponseMsgUtil.exception(e); } } public static String hexStringToString(String s) { if (s == null || s.equals("")) { return null; } s = s.replace(" ", ""); byte[] baKeyword = new byte[s.length() / 2]; for (int i = 0; i < baKeyword.length; i++) { try { baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(i * 2, i * 2 + 2), 16)); } catch (Exception e) { e.printStackTrace(); } } try { s = new String(baKeyword, "UTF-8"); } catch (Exception e1) { e1.printStackTrace(); } return s; } /** * 获取打印内容,适用于云打印机 * * @param printText 打印文本 * @param pageCount 打印联数 * @param encodingStr 编码方式,默认UTF-8 * @return */ public byte[] getPrinterBytes(final byte[] printText, final int pageCount, String encodingStr) { try { byte[] array = new byte[printText.length + 9]; array[0] = 30; array[1] = 16; array[2] = (byte) pageCount;//打印份数 int num = array.length - 5; array[3] = (byte) (num >> 8); //array[4] = (byte)((uint)num & 0xFFu); array[4] = (byte) (num & 0xFF); for (int i = 0; i < printText.length; i++) { array[i + 5] = printText[i]; } array[array.length - 4] = 27; array[array.length - 3] = 99; byte[] crc16CodeArray = getCRC(printText); array[array.length - 2] = crc16CodeArray[0]; array[array.length - 1] = crc16CodeArray[1]; return array; /* if(encodingStr.equals("")){ encodingStr="UTF-8"; } byte[] msgByte = printText; // 消息数组 final byte[] dataByte = new byte[msgByte.length + 9]; dataByte[0] = 0x1E; dataByte[1] = 0x10; dataByte[2] = (byte) pageCount;// 打印多联 // 有效数据长度 final int len = dataByte.length - 5; dataByte[3] = (byte) (len >> 8); dataByte[4] = (byte) (len & 0xff); // 数据内容 System.arraycopy(msgByte, 0, dataByte, 5, msgByte.length); // 标识字节 dataByte[dataByte.length - 4] = 0x1b; dataByte[dataByte.length - 3] = 0x63; // 打印内容CRC校验 final byte[] dtCRC = getCRC(msgByte); dataByte[dataByte.length - 2] = (byte) (dtCRC[0]); dataByte[dataByte.length - 1] = (byte) (dtCRC[1]); msgByte = dataByte; return msgByte;*/ } catch (Exception ex) { System.out.println(ex.getStackTrace()); } return null; } /** * 获取打印内容,适用于云打印机 * * @param printText 打印文本 * @param pageCount 打印联数 * @param encodingStr 编码方式,默认UTF-8 * @return */ public byte[] getPrinterBytes(final String printText, final int pageCount, String encodingStr) { try { if (encodingStr.equals("")) { encodingStr = "UTF-8"; } byte[] msgByte = printText.getBytes(encodingStr); // 消息数组 final byte[] dataByte = new byte[msgByte.length + 9]; dataByte[0] = 0x1E; dataByte[1] = 0x10; dataByte[2] = (byte) pageCount;// 打印多联 // 有效数据长度 final int len = dataByte.length - 5; dataByte[3] = (byte) (len >> 8); dataByte[4] = (byte) (len & 0xff); // 数据内容 System.arraycopy(msgByte, 0, dataByte, 5, msgByte.length); // 标识字节 dataByte[dataByte.length - 4] = 0x1b; dataByte[dataByte.length - 3] = 0x63; // 打印内容CRC校验 final byte[] dtCRC = getCRC(msgByte); dataByte[dataByte.length - 2] = (byte) (dtCRC[0]); dataByte[dataByte.length - 1] = (byte) (dtCRC[1]); msgByte = dataByte; return msgByte; } catch (Exception ex) { System.out.println(ex.getStackTrace()); } return null; } private static int[] CRC16Table = {0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78}; private static byte[] getCRC(byte[] bytes) { int crc = 0xFFFF; // 初始值 for (byte b : bytes) { crc = (crc >> 8) ^ CRC16Table[(crc ^ b) & 0xff]; } byte[] b = new byte[2]; b[0] = (byte) ((crc >> 8) ^ 0xff); b[1] = (byte) ((crc & 0xff) ^ 0xff); return b; } private static final char[] HEXES = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; /** * byte数组 转换成 16进制小写字符串 */ private String bytes2Hex(byte[] bytes) { if (bytes == null || bytes.length == 0) { return null; } StringBuilder hex = new StringBuilder(); for (byte b : bytes) { hex.append(HEXES[(b >> 4) & 0x0F]); hex.append(HEXES[b & 0x0F]); } return hex.toString(); } @RequestMapping(value = "/insertV2", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "支付") public ResponseData insertV2() { try { String orderNo = "HF" + DateUtil.date2String(new Date(), "yyyyMMddHHmmss") + IDGenerator.nextId(5); JSONObject object = QianZhuConfig.insertV2("PLM100068", orderNo, "18090580471"); object.put("orderNo", orderNo); return ResponseMsgUtil.success(object); } catch (Exception e) { log.error("HighOrderController --> getBackendToken() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/QueryV2", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "查询订单号") public ResponseData QueryV2(@RequestParam(name = "orderNo", required = true) String orderNo) { try { HighOrder order = highOrderService.getOrderByOrderNo(orderNo); JSONObject orderObject = QianZhuConfig.QueryV2(orderNo); if (orderObject != null && orderObject.getLong("Code") == 999) { // 订单失败 // 订单状态 1:订单正在处理中 2;订单成功: 3 订单失败 if (orderObject.getJSONObject("Data").getInteger("OrderState") == 3) { // 订单失败 if (order.getOrderStatus() == 2) { highOrderService.thirdOrderToRefund(order.getId()); } else { highOrderService.thirdCancelOrder(order.getId()); } } // 订单状态 1:订单正在处理中 2;订单成功: 3 订单失败 if (orderObject.getJSONObject("Data").getInteger("OrderState") == 2) { for (HighChildOrder childOrder : order.getHighChildOrderList()) { childOrder.setChildOrdeStatus(3); } order.setOrderStatus(3); order.setFinishTime(new Date()); highOrderService.updateOrder(order); } } return ResponseMsgUtil.success(QianZhuConfig.QueryV2(orderNo)); } catch (Exception e) { log.error("HighOrderController --> unionStagingPay() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/getKfcOrderByOrderNo", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "查询肯德基订单") public ResponseData getKfcOrderByOrderNo(@RequestParam(name = "orderNo", required = true) String orderNo) { try { return ResponseMsgUtil.success(QianZhuConfig.getKfcOrderByOrderNo(orderNo)); } catch (Exception e) { log.error("HighOrderController -> addOrder() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/starbucksOrderByOrderNo", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "查询星巴克订单") public ResponseData starbucksOrderByOrderNo(@RequestParam(name = "orderNo", required = true) String orderNo) { try { return ResponseMsgUtil.success(QianZhuConfig.starbucksOrderByOrderNo(orderNo)); } catch (Exception e) { log.error("HighOrderController -> addOrder() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/thirdOrderToRefund", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "第三方退款") public ResponseData thirdOrderToRefund(@RequestParam(name = "orderNo", required = true) String orderNo) { try { HighOrder order = highOrderService.getOrderByOrderNo(orderNo); highOrderService.thirdOrderToRefund(order.getId()); return ResponseMsgUtil.success(""); } catch (Exception e) { log.error("HighOrderController -> addOrder() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/rechargeOrderByCy", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "城宇话费充值 ") public ResponseData rechargeOrderByCy() { try { JSONObject object = new JSONObject(); object.put("mobile" , "18090580471"); object.put("productId" , 172); object.put("agentOrderId" , "RCG" + DateUtil.date2String(new Date(), "yyyyMMddHHmmss") + IDGenerator.nextId(5)); return ResponseMsgUtil.success(RechargeConfig.rechargeOrderByCy(object)); } catch (Exception e) { log.error("HighOrderController -> addOrder() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/queryRechargeByCy", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "城宇查询订单") public ResponseData queryRechargeByCy(@RequestParam(name = "orderNo", required = true) String orderNo) { try { JSONObject object = new JSONObject(); object.put("orderNo" , orderNo); return ResponseMsgUtil.success(RechargeConfig.queryRechargeByCy(object)); } catch (Exception e) { log.error("HighOrderController -> addOrder() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/postIp", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "请求ip地址") public ResponseData postIp() { try { return ResponseMsgUtil.success(HttpsUtils.doPost("https://hsgcs.dctpay.com/brest/openApi/test")); } catch (Exception e) { log.error("HighOrderController -> addOrder() error!", e); return ResponseMsgUtil.exception(e); } } } \ No newline at end of file diff --git a/hai-cweb/src/main/java/com/cweb/controller/pay/UnionPayController.java b/hai-cweb/src/main/java/com/cweb/controller/pay/UnionPayController.java index 2e1d0253..9cb4c356 100644 --- a/hai-cweb/src/main/java/com/cweb/controller/pay/UnionPayController.java +++ b/hai-cweb/src/main/java/com/cweb/controller/pay/UnionPayController.java @@ -347,14 +347,17 @@ public class UnionPayController { } } else if (store.getSourceType().equals(MerchantStoreSourceType.type3.getNumber())) { - // 推送壳牌 - JSONObject syncPayment = shellGroupService.gasSyncPayment(order.getOrderNo(), + // 推送加好油 + shellGroupService.gasSyncPayment(order.getOrderNo(), store.getStoreKey(), order.getPayTime(), - highChildOrder.getGasPriceGun(), + highChildOrder.getTotalPrice(), highChildOrder.getGasOilNo(), highChildOrder.getGasGunNo(), - order.getTotalPrice()); + order.getPayablePrice(), + order.getDeductionPrice() + ); + } } if (highChildOrder.getGoodsType() == 4 || highChildOrder.getGoodsType() == 9) { diff --git a/hai-service/src/main/java/com/hai/config/ShellGroupService.java b/hai-service/src/main/java/com/hai/config/ShellGroupService.java index e5514527..7244a04e 100644 --- a/hai-service/src/main/java/com/hai/config/ShellGroupService.java +++ b/hai-service/src/main/java/com/hai/config/ShellGroupService.java @@ -65,10 +65,11 @@ public class ShellGroupService { * @param orderNo 订单号 * @param stationCode 油站编码 * @param finishTime 完成时间 - * @param oilPrice 油品金额 + * @param oilPrice 加油金额 * @param oilCode 油品编码 * @param oilGun 油枪 - * @param channelSettlementAmount 加油金额 + * @param settlementAmount 支付金额 + * @param favourAmount 优惠金额 * @return */ public JSONObject gasSyncPayment(String orderNo, @@ -77,10 +78,9 @@ public class ShellGroupService { BigDecimal oilPrice, String oilCode, String oilGun, - BigDecimal channelSettlementAmount) { + BigDecimal settlementAmount, + BigDecimal favourAmount) { try { - - Map param = new HashMap<>(); param.put("platMerchantId", CommonSysConst.getSysConfig().getShellPlatMerchantId()); param.put("stationCode", stationCode); @@ -91,7 +91,8 @@ public class ShellGroupService { tradeOilOrder.put("amount", oilPrice); tradeOilOrder.put("code", oilCode); tradeOilOrder.put("oilGun", oilGun); - tradeOilOrder.put("channelSettlementAmount", channelSettlementAmount); + tradeOilOrder.put("channelSettlementAmount", settlementAmount); + tradeOilOrder.put("channelFavourAmount", favourAmount); param.put("tradeOilOrder", JSONObject.toJSONString(tradeOilOrder)); return request(orderNo.replace("HF",""), "gas_sync_payment_notify", param); } catch (Exception e) { diff --git a/hai-service/src/main/java/com/hai/dao/HighOrderMapper.java b/hai-service/src/main/java/com/hai/dao/HighOrderMapper.java index 05c939b1..0c936def 100644 --- a/hai-service/src/main/java/com/hai/dao/HighOrderMapper.java +++ b/hai-service/src/main/java/com/hai/dao/HighOrderMapper.java @@ -44,43 +44,45 @@ public interface HighOrderMapper extends HighOrderMapperExt { "mem_name, mem_phone, ", "mem_card_id, mem_card_type, ", "mem_card_no, pay_model, ", - "pay_type, pay_gold, ", - "pay_price, pay_real_price, ", - "pay_serial_no, deduction_price, ", - "order_status, total_price, ", - "create_time, pay_time, ", - "cancel_time, cancel_remarks, ", - "finish_time, remarks, ", - "refund_no, refund_time, ", - "refund_price, refund_content, ", - "refusal_refund_content, Identification_code, ", - "profit_sharing_status, profit_sharing_ratio, ", - "account_merchant_num, product_type, ", - "print_status, print_num, ", - "whether_check, region_id, ", - "company_id, merch_id, ", - "ext_1, ext_2, ext_3)", + "pay_type, payable_price, ", + "pay_gold, pay_price, ", + "pay_real_price, pay_serial_no, ", + "deduction_price, order_status, ", + "total_price, create_time, ", + "pay_time, cancel_time, ", + "cancel_remarks, finish_time, ", + "remarks, refund_no, ", + "refund_time, refund_price, ", + "refund_content, refusal_refund_content, ", + "Identification_code, profit_sharing_status, ", + "profit_sharing_ratio, account_merchant_num, ", + "product_type, print_status, ", + "print_num, whether_check, ", + "region_id, company_id, ", + "merch_id, ext_1, ext_2, ", + "ext_3)", "values (#{orderNo,jdbcType=VARCHAR}, #{memDiscountId,jdbcType=BIGINT}, ", "#{memDiscountName,jdbcType=VARCHAR}, #{memId,jdbcType=BIGINT}, ", "#{memName,jdbcType=VARCHAR}, #{memPhone,jdbcType=VARCHAR}, ", "#{memCardId,jdbcType=BIGINT}, #{memCardType,jdbcType=INTEGER}, ", "#{memCardNo,jdbcType=VARCHAR}, #{payModel,jdbcType=INTEGER}, ", - "#{payType,jdbcType=INTEGER}, #{payGold,jdbcType=INTEGER}, ", - "#{payPrice,jdbcType=DECIMAL}, #{payRealPrice,jdbcType=DECIMAL}, ", - "#{paySerialNo,jdbcType=VARCHAR}, #{deductionPrice,jdbcType=DECIMAL}, ", - "#{orderStatus,jdbcType=INTEGER}, #{totalPrice,jdbcType=DECIMAL}, ", - "#{createTime,jdbcType=TIMESTAMP}, #{payTime,jdbcType=TIMESTAMP}, ", - "#{cancelTime,jdbcType=TIMESTAMP}, #{cancelRemarks,jdbcType=VARCHAR}, ", - "#{finishTime,jdbcType=TIMESTAMP}, #{remarks,jdbcType=VARCHAR}, ", - "#{refundNo,jdbcType=VARCHAR}, #{refundTime,jdbcType=TIMESTAMP}, ", - "#{refundPrice,jdbcType=DECIMAL}, #{refundContent,jdbcType=VARCHAR}, ", - "#{refusalRefundContent,jdbcType=VARCHAR}, #{identificationCode,jdbcType=BIGINT}, ", - "#{profitSharingStatus,jdbcType=BIT}, #{profitSharingRatio,jdbcType=DECIMAL}, ", - "#{accountMerchantNum,jdbcType=VARCHAR}, #{productType,jdbcType=INTEGER}, ", - "#{printStatus,jdbcType=BIT}, #{printNum,jdbcType=INTEGER}, ", - "#{whetherCheck,jdbcType=BIT}, #{regionId,jdbcType=VARCHAR}, ", - "#{companyId,jdbcType=BIGINT}, #{merchId,jdbcType=VARCHAR}, ", - "#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})" + "#{payType,jdbcType=INTEGER}, #{payablePrice,jdbcType=DECIMAL}, ", + "#{payGold,jdbcType=INTEGER}, #{payPrice,jdbcType=DECIMAL}, ", + "#{payRealPrice,jdbcType=DECIMAL}, #{paySerialNo,jdbcType=VARCHAR}, ", + "#{deductionPrice,jdbcType=DECIMAL}, #{orderStatus,jdbcType=INTEGER}, ", + "#{totalPrice,jdbcType=DECIMAL}, #{createTime,jdbcType=TIMESTAMP}, ", + "#{payTime,jdbcType=TIMESTAMP}, #{cancelTime,jdbcType=TIMESTAMP}, ", + "#{cancelRemarks,jdbcType=VARCHAR}, #{finishTime,jdbcType=TIMESTAMP}, ", + "#{remarks,jdbcType=VARCHAR}, #{refundNo,jdbcType=VARCHAR}, ", + "#{refundTime,jdbcType=TIMESTAMP}, #{refundPrice,jdbcType=DECIMAL}, ", + "#{refundContent,jdbcType=VARCHAR}, #{refusalRefundContent,jdbcType=VARCHAR}, ", + "#{identificationCode,jdbcType=BIGINT}, #{profitSharingStatus,jdbcType=BIT}, ", + "#{profitSharingRatio,jdbcType=DECIMAL}, #{accountMerchantNum,jdbcType=VARCHAR}, ", + "#{productType,jdbcType=INTEGER}, #{printStatus,jdbcType=BIT}, ", + "#{printNum,jdbcType=INTEGER}, #{whetherCheck,jdbcType=BIT}, ", + "#{regionId,jdbcType=VARCHAR}, #{companyId,jdbcType=BIGINT}, ", + "#{merchId,jdbcType=VARCHAR}, #{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, ", + "#{ext3,jdbcType=VARCHAR})" }) @Options(useGeneratedKeys=true,keyProperty="id") int insert(HighOrder record); @@ -103,6 +105,7 @@ public interface HighOrderMapper extends HighOrderMapperExt { @Result(column="mem_card_no", property="memCardNo", jdbcType=JdbcType.VARCHAR), @Result(column="pay_model", property="payModel", jdbcType=JdbcType.INTEGER), @Result(column="pay_type", property="payType", jdbcType=JdbcType.INTEGER), + @Result(column="payable_price", property="payablePrice", jdbcType=JdbcType.DECIMAL), @Result(column="pay_gold", property="payGold", jdbcType=JdbcType.INTEGER), @Result(column="pay_price", property="payPrice", jdbcType=JdbcType.DECIMAL), @Result(column="pay_real_price", property="payRealPrice", jdbcType=JdbcType.DECIMAL), @@ -141,12 +144,13 @@ public interface HighOrderMapper extends HighOrderMapperExt { @Select({ "select", "id, order_no, mem_discount_id, mem_discount_name, mem_id, mem_name, mem_phone, ", - "mem_card_id, mem_card_type, mem_card_no, pay_model, pay_type, pay_gold, pay_price, ", - "pay_real_price, pay_serial_no, deduction_price, order_status, total_price, create_time, ", - "pay_time, cancel_time, cancel_remarks, finish_time, remarks, refund_no, refund_time, ", - "refund_price, refund_content, refusal_refund_content, Identification_code, profit_sharing_status, ", - "profit_sharing_ratio, account_merchant_num, product_type, print_status, print_num, ", - "whether_check, region_id, company_id, merch_id, ext_1, ext_2, ext_3", + "mem_card_id, mem_card_type, mem_card_no, pay_model, pay_type, payable_price, ", + "pay_gold, pay_price, pay_real_price, pay_serial_no, deduction_price, order_status, ", + "total_price, create_time, pay_time, cancel_time, cancel_remarks, finish_time, ", + "remarks, refund_no, refund_time, refund_price, refund_content, refusal_refund_content, ", + "Identification_code, profit_sharing_status, profit_sharing_ratio, account_merchant_num, ", + "product_type, print_status, print_num, whether_check, region_id, company_id, ", + "merch_id, ext_1, ext_2, ext_3", "from high_order", "where id = #{id,jdbcType=BIGINT}" }) @@ -163,6 +167,7 @@ public interface HighOrderMapper extends HighOrderMapperExt { @Result(column="mem_card_no", property="memCardNo", jdbcType=JdbcType.VARCHAR), @Result(column="pay_model", property="payModel", jdbcType=JdbcType.INTEGER), @Result(column="pay_type", property="payType", jdbcType=JdbcType.INTEGER), + @Result(column="payable_price", property="payablePrice", jdbcType=JdbcType.DECIMAL), @Result(column="pay_gold", property="payGold", jdbcType=JdbcType.INTEGER), @Result(column="pay_price", property="payPrice", jdbcType=JdbcType.DECIMAL), @Result(column="pay_real_price", property="payRealPrice", jdbcType=JdbcType.DECIMAL), @@ -220,6 +225,7 @@ public interface HighOrderMapper extends HighOrderMapperExt { "mem_card_no = #{memCardNo,jdbcType=VARCHAR},", "pay_model = #{payModel,jdbcType=INTEGER},", "pay_type = #{payType,jdbcType=INTEGER},", + "payable_price = #{payablePrice,jdbcType=DECIMAL},", "pay_gold = #{payGold,jdbcType=INTEGER},", "pay_price = #{payPrice,jdbcType=DECIMAL},", "pay_real_price = #{payRealPrice,jdbcType=DECIMAL},", diff --git a/hai-service/src/main/java/com/hai/dao/HighOrderSqlProvider.java b/hai-service/src/main/java/com/hai/dao/HighOrderSqlProvider.java index e9cf1ff1..c45da981 100644 --- a/hai-service/src/main/java/com/hai/dao/HighOrderSqlProvider.java +++ b/hai-service/src/main/java/com/hai/dao/HighOrderSqlProvider.java @@ -72,6 +72,10 @@ public class HighOrderSqlProvider { sql.VALUES("pay_type", "#{payType,jdbcType=INTEGER}"); } + if (record.getPayablePrice() != null) { + sql.VALUES("payable_price", "#{payablePrice,jdbcType=DECIMAL}"); + } + if (record.getPayGold() != null) { sql.VALUES("pay_gold", "#{payGold,jdbcType=INTEGER}"); } @@ -221,6 +225,7 @@ public class HighOrderSqlProvider { sql.SELECT("mem_card_no"); sql.SELECT("pay_model"); sql.SELECT("pay_type"); + sql.SELECT("payable_price"); sql.SELECT("pay_gold"); sql.SELECT("pay_price"); sql.SELECT("pay_real_price"); @@ -318,6 +323,10 @@ public class HighOrderSqlProvider { sql.SET("pay_type = #{record.payType,jdbcType=INTEGER}"); } + if (record.getPayablePrice() != null) { + sql.SET("payable_price = #{record.payablePrice,jdbcType=DECIMAL}"); + } + if (record.getPayGold() != null) { sql.SET("pay_gold = #{record.payGold,jdbcType=INTEGER}"); } @@ -466,6 +475,7 @@ public class HighOrderSqlProvider { sql.SET("mem_card_no = #{record.memCardNo,jdbcType=VARCHAR}"); sql.SET("pay_model = #{record.payModel,jdbcType=INTEGER}"); sql.SET("pay_type = #{record.payType,jdbcType=INTEGER}"); + sql.SET("payable_price = #{record.payablePrice,jdbcType=DECIMAL}"); sql.SET("pay_gold = #{record.payGold,jdbcType=INTEGER}"); sql.SET("pay_price = #{record.payPrice,jdbcType=DECIMAL}"); sql.SET("pay_real_price = #{record.payRealPrice,jdbcType=DECIMAL}"); @@ -552,6 +562,10 @@ public class HighOrderSqlProvider { sql.SET("pay_type = #{payType,jdbcType=INTEGER}"); } + if (record.getPayablePrice() != null) { + sql.SET("payable_price = #{payablePrice,jdbcType=DECIMAL}"); + } + if (record.getPayGold() != null) { sql.SET("pay_gold = #{payGold,jdbcType=INTEGER}"); } diff --git a/hai-service/src/main/java/com/hai/entity/HighOrder.java b/hai-service/src/main/java/com/hai/entity/HighOrder.java index 570c9db7..b38811d8 100644 --- a/hai-service/src/main/java/com/hai/entity/HighOrder.java +++ b/hai-service/src/main/java/com/hai/entity/HighOrder.java @@ -75,6 +75,11 @@ public class HighOrder implements Serializable { */ private Integer payType; + /** + * 应付金额 + */ + private BigDecimal payablePrice; + /** * 支付金币 */ @@ -223,6 +228,7 @@ public class HighOrder implements Serializable { private String ext3; + private String payPwd; private List highChildOrderList; @@ -237,12 +243,14 @@ public class HighOrder implements Serializable { */ private Boolean buyPoints; - public String getGasStaffCode() { - return gasStaffCode; + private static final long serialVersionUID = 1L; + + public String getPayPwd() { + return payPwd; } - public void setGasStaffCode(String gasStaffCode) { - this.gasStaffCode = gasStaffCode; + public void setPayPwd(String payPwd) { + this.payPwd = payPwd; } public List getHighChildOrderList() { @@ -269,7 +277,21 @@ public class HighOrder implements Serializable { isTyAgent = tyAgent; } - private static final long serialVersionUID = 1L; + public String getGasStaffCode() { + return gasStaffCode; + } + + public void setGasStaffCode(String gasStaffCode) { + this.gasStaffCode = gasStaffCode; + } + + public Boolean getBuyPoints() { + return buyPoints; + } + + public void setBuyPoints(Boolean buyPoints) { + this.buyPoints = buyPoints; + } public Long getId() { return id; @@ -367,6 +389,14 @@ public class HighOrder implements Serializable { this.payType = payType; } + public BigDecimal getPayablePrice() { + return payablePrice; + } + + public void setPayablePrice(BigDecimal payablePrice) { + this.payablePrice = payablePrice; + } + public Integer getPayGold() { return payGold; } @@ -623,22 +653,6 @@ public class HighOrder implements Serializable { this.ext3 = ext3; } - public Boolean getTyAgent() { - return isTyAgent; - } - - public void setTyAgent(Boolean tyAgent) { - isTyAgent = tyAgent; - } - - public Boolean getBuyPoints() { - return buyPoints; - } - - public void setBuyPoints(Boolean buyPoints) { - this.buyPoints = buyPoints; - } - @Override public boolean equals(Object that) { if (this == that) { @@ -663,6 +677,7 @@ public class HighOrder implements Serializable { && (this.getMemCardNo() == null ? other.getMemCardNo() == null : this.getMemCardNo().equals(other.getMemCardNo())) && (this.getPayModel() == null ? other.getPayModel() == null : this.getPayModel().equals(other.getPayModel())) && (this.getPayType() == null ? other.getPayType() == null : this.getPayType().equals(other.getPayType())) + && (this.getPayablePrice() == null ? other.getPayablePrice() == null : this.getPayablePrice().equals(other.getPayablePrice())) && (this.getPayGold() == null ? other.getPayGold() == null : this.getPayGold().equals(other.getPayGold())) && (this.getPayPrice() == null ? other.getPayPrice() == null : this.getPayPrice().equals(other.getPayPrice())) && (this.getPayRealPrice() == null ? other.getPayRealPrice() == null : this.getPayRealPrice().equals(other.getPayRealPrice())) @@ -713,6 +728,7 @@ public class HighOrder implements Serializable { result = prime * result + ((getMemCardNo() == null) ? 0 : getMemCardNo().hashCode()); result = prime * result + ((getPayModel() == null) ? 0 : getPayModel().hashCode()); result = prime * result + ((getPayType() == null) ? 0 : getPayType().hashCode()); + result = prime * result + ((getPayablePrice() == null) ? 0 : getPayablePrice().hashCode()); result = prime * result + ((getPayGold() == null) ? 0 : getPayGold().hashCode()); result = prime * result + ((getPayPrice() == null) ? 0 : getPayPrice().hashCode()); result = prime * result + ((getPayRealPrice() == null) ? 0 : getPayRealPrice().hashCode()); @@ -766,6 +782,7 @@ public class HighOrder implements Serializable { sb.append(", memCardNo=").append(memCardNo); sb.append(", payModel=").append(payModel); sb.append(", payType=").append(payType); + sb.append(", payablePrice=").append(payablePrice); sb.append(", payGold=").append(payGold); sb.append(", payPrice=").append(payPrice); sb.append(", payRealPrice=").append(payRealPrice); diff --git a/hai-service/src/main/java/com/hai/entity/HighOrderExample.java b/hai-service/src/main/java/com/hai/entity/HighOrderExample.java index 52baeaf0..9ce0b527 100644 --- a/hai-service/src/main/java/com/hai/entity/HighOrderExample.java +++ b/hai-service/src/main/java/com/hai/entity/HighOrderExample.java @@ -896,6 +896,66 @@ public class HighOrderExample { return (Criteria) this; } + public Criteria andPayablePriceIsNull() { + addCriterion("payable_price is null"); + return (Criteria) this; + } + + public Criteria andPayablePriceIsNotNull() { + addCriterion("payable_price is not null"); + return (Criteria) this; + } + + public Criteria andPayablePriceEqualTo(BigDecimal value) { + addCriterion("payable_price =", value, "payablePrice"); + return (Criteria) this; + } + + public Criteria andPayablePriceNotEqualTo(BigDecimal value) { + addCriterion("payable_price <>", value, "payablePrice"); + return (Criteria) this; + } + + public Criteria andPayablePriceGreaterThan(BigDecimal value) { + addCriterion("payable_price >", value, "payablePrice"); + return (Criteria) this; + } + + public Criteria andPayablePriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("payable_price >=", value, "payablePrice"); + return (Criteria) this; + } + + public Criteria andPayablePriceLessThan(BigDecimal value) { + addCriterion("payable_price <", value, "payablePrice"); + return (Criteria) this; + } + + public Criteria andPayablePriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("payable_price <=", value, "payablePrice"); + return (Criteria) this; + } + + public Criteria andPayablePriceIn(List values) { + addCriterion("payable_price in", values, "payablePrice"); + return (Criteria) this; + } + + public Criteria andPayablePriceNotIn(List values) { + addCriterion("payable_price not in", values, "payablePrice"); + return (Criteria) this; + } + + public Criteria andPayablePriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("payable_price between", value1, value2, "payablePrice"); + return (Criteria) this; + } + + public Criteria andPayablePriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("payable_price not between", value1, value2, "payablePrice"); + return (Criteria) this; + } + public Criteria andPayGoldIsNull() { addCriterion("pay_gold is null"); return (Criteria) this; diff --git a/hai-service/src/main/java/com/hai/service/HighOrderService.java b/hai-service/src/main/java/com/hai/service/HighOrderService.java index d5fa708d..5d2b47b9 100644 --- a/hai-service/src/main/java/com/hai/service/HighOrderService.java +++ b/hai-service/src/main/java/com/hai/service/HighOrderService.java @@ -68,6 +68,13 @@ public interface HighOrderService { */ void updateOrderDetail(HighOrder highOrder); + /** + * 订单业务交易处理 + * 注意:支付完成后可以调用此方法 + * @param order + */ + void orderBusinessTransaction(HighOrder order) throws Exception; + /** * @Author 胡锐 * @Description 获取未完成的子订单数量 diff --git a/hai-service/src/main/java/com/hai/service/impl/HighOrderServiceImpl.java b/hai-service/src/main/java/com/hai/service/impl/HighOrderServiceImpl.java index ce562e99..7ea07364 100644 --- a/hai-service/src/main/java/com/hai/service/impl/HighOrderServiceImpl.java +++ b/hai-service/src/main/java/com/hai/service/impl/HighOrderServiceImpl.java @@ -302,10 +302,56 @@ public class HighOrderServiceImpl implements HighOrderService { discountPackageActualService.updateHighDiscountPackageActual(list.get(0)); } } - } - public static void main(String[] args) { - System.out.println(HuiLianTongUnionCardConfig.resolveResponse("Gbkl57c3fEBg+E3HfPuQ52xYXxRnbPnT1CFoWj0AaUCBA2W/qzLuaUXplapIu/Avzt0AmzA/oCA=\\n")); + // 积分抵扣,卡券除外 + if (!highOrder.getHighChildOrderList().get(0).getGoodsType().equals(1) && highOrder.getPayGold() != null) { + // 积分转换成金额 + BigDecimal goldPrice = new BigDecimal(highOrder.getPayGold().toString()).divide(new BigDecimal(100)); + + // 积分金额大于应付金额 + if (goldPrice.compareTo(highOrder.getPayablePrice()) == 1) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "支付的积分金额大于支付金额"); + } + + // 积分金额小于应付金额 + if (goldPrice.compareTo(highOrder.getPayablePrice()) == -1) { + // 应付金额 减去 积分抵扣金额 = 支付金额 + highOrder.setPayPrice(highOrder.getPayablePrice().subtract(goldPrice)); + updateOrderDetail(highOrder); + + // 扣除用户积分 + highUserService.goldHandle(highOrder.getMemId(), highOrder.getPayGold(), 2, 2, highOrder.getId()); + } + + // 积分金额等于应付金额 + if (goldPrice.compareTo(highOrder.getPayablePrice()) == 0) { + if (StringUtils.isBlank(highOrder.getPayPwd())) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.NOT_ENTER_USER_PAY_PWD, ""); + } + // 查询用户密码 + HighUserPayPassword userPayPwd = highUserPayPasswordService.getDetailByUser(highOrder.getMemId()); + if (userPayPwd == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.NOT_SET_USER_PAY_PWD, ""); + } + // 校验支付密码是否正确 + if (userPayPwd.getPassword().equals(AESEncodeUtil.aesEncrypt(highOrder.getPayPwd()))) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.USER_PAY_PWD_ERROR, ""); + } + // 扣除用户积分 + highUserService.goldHandle(highOrder.getMemId(), highOrder.getPayGold(), 2, 2, highOrder.getId()); + + highOrder.setOrderStatus(OrderStatusEnum.type3.getType()); + highOrder.setPayTime(new Date()); + for (HighChildOrder childOrder : highOrder.getHighChildOrderList()) { + childOrder.setChildOrdeStatus(3); + } + updateOrder(highOrder); + + // 订单完成业务处理 + orderBusinessTransaction(highOrder); + } + } + } @Override @@ -517,11 +563,12 @@ public class HighOrderServiceImpl implements HighOrderService { shellGroupService.gasSyncPayment(highOrder.getOrderNo(), store.getStoreKey(), highOrder.getPayTime(), - highChildOrder.getGasPriceGun(), + highChildOrder.getTotalPrice(), highChildOrder.getGasOilNo(), highChildOrder.getGasGunNo(), - highOrder.getTotalPrice()); - + highOrder.getPayablePrice(), + highOrder.getDeductionPrice() + ); } else if (store.getSourceType().equals(MerchantStoreSourceType.type4.getNumber())) { // 推送金猪加油 @@ -799,14 +846,16 @@ public class HighOrderServiceImpl implements HighOrderService { } } else if (store.getSourceType().equals(MerchantStoreSourceType.type3.getNumber())) { - // 推送壳牌 - JSONObject syncPayment = shellGroupService.gasSyncPayment(order.getOrderNo(), + // 推送加好油 + shellGroupService.gasSyncPayment(order.getOrderNo(), store.getStoreKey(), order.getPayTime(), - highChildOrder.getGasPriceGun(), + highChildOrder.getTotalPrice(), highChildOrder.getGasOilNo(), highChildOrder.getGasGunNo(), - order.getTotalPrice()); + order.getPayablePrice(), + order.getDeductionPrice() + ); } } @@ -1112,14 +1161,16 @@ public class HighOrderServiceImpl implements HighOrderService { } } else if (store.getSourceType().equals(MerchantStoreSourceType.type3.getNumber())) { - // 推送壳牌 - JSONObject syncPayment = shellGroupService.gasSyncPayment(order.getOrderNo(), + // 推送加好油 + shellGroupService.gasSyncPayment(order.getOrderNo(), store.getStoreKey(), order.getPayTime(), - highChildOrder.getGasPriceGun(), + highChildOrder.getTotalPrice(), highChildOrder.getGasOilNo(), highChildOrder.getGasGunNo(), - order.getTotalPrice()); + order.getPayablePrice(), + order.getDeductionPrice() + ); } } @@ -1183,6 +1234,241 @@ public class HighOrderServiceImpl implements HighOrderService { highOrderMapper.updateByPrimaryKey(highOrder); } + @Override + public void orderBusinessTransaction(HighOrder order) throws Exception { + for (HighChildOrder highChildOrder : order.getHighChildOrderList()) { + // 商品类型 商品类型 1:卡卷 2:金币充值 + if (highChildOrder.getGoodsType() == 1) { + highChildOrder.setChildOrdeStatus(2); // 子订单状态:1 待支付 2 已支付 3.已完成 4. 已退款 5.已取消 + + HighCoupon coupon = highCouponService.getCouponById(highChildOrder.getGoodsId()); + + // 是否预约 + if (coupon.getReserveStatus() == true) { + HighOrderPre orderPre = new HighOrderPre(); + orderPre.setCompanyId(coupon.getCompanyId()); + orderPre.setMerchantId(coupon.getMerchantId()); + orderPre.setMerchantStoreId(highChildOrder.getStoreId()); + orderPre.setPreOrderNo(System.currentTimeMillis() + ""); + orderPre.setOrderId(order.getId()); + orderPre.setOrderNo(order.getOrderNo()); + orderPre.setChildOrderId(highChildOrder.getId()); + orderPre.setPayRealPrice(order.getPayRealPrice()); + orderPre.setGoodsType(1); + orderPre.setGoodsName(coupon.getCouponName()); + orderPre.setGoodsId(coupon.getId()); + orderPre.setPreUserId(order.getMemId()); + orderPre.setPreUserName(order.getMemName()); + orderPre.setPreUserPhone(order.getMemPhone()); + orderPre.setPreUserRemark(order.getRemarks()); + orderPre.setStatus(1); + highOrderPreService.insertOrderPre(orderPre); + } + + // 贵州中石化 + if (coupon.getCouponSource() == 4) { + Map push = new HashMap<>(); + push.put("couTypeCode", coupon.getCouponKey()); + push.put("distCouCount", highChildOrder.getSaleCount()); + push.put("userPhone", order.getMemPhone()); + push.put("thirdUserId", order.getMerchId()); + + // 推送给高速 + JSONObject returnParam = HuiLianTongConfig.costRechargeOrder(highChildOrder.getExt2()); + if (returnParam != null && returnParam.getString("respCode").equals("0000")) { + // 解密 + JSONObject jsonObject = HuiLianTongUnionCardConfig.resolveResponse(returnParam.getString("data")); + JSONArray dataArray = JSONObject.parseObject(jsonObject.getString("data"), JSONArray.class); + for (Object data : dataArray) { + JSONObject dataObject = (JSONObject) data; + HighCouponCodeOther couponCodeOther = new HighCouponCodeOther(); + couponCodeOther.setType(1); + couponCodeOther.setOrderId(order.getId()); + couponCodeOther.setChildOrderId(highChildOrder.getId()); + couponCodeOther.setCouTypeCode(dataObject.getString("couTypeCode")); + couponCodeOther.setCouNo(dataObject.getString("couNo")); + couponCodeOther.setActiveTime(dataObject.getDate("activeTime")); + couponCodeOther.setValidStartDate(dataObject.getDate("validStartDate")); + couponCodeOther.setValidEndDate(dataObject.getDate("validEndDate")); + couponCodeOther.setStatus(20); + couponCodeOther.setCreateTime(new Date()); + highCouponCodeOtherMapper.insert(couponCodeOther); + + // 卡卷关联用户 + HighUserCoupon highUserCoupon = new HighUserCoupon(); + highUserCoupon.setMerchantId(coupon.getMerchantId()); + highUserCoupon.setCouponId(coupon.getId()); + highUserCoupon.setUserId(order.getMemId()); + highUserCoupon.setCreateTime(new Date()); + highUserCoupon.setQrCodeImg(dataObject.getString("couNo")); + highUserCoupon.setUseEndTime(dataObject.getDate("validEndDate")); + highUserCoupon.setStatus(1); // 状态 0:已过期 1:未使用 2:已使用 + highUserCouponMapper.insert(highUserCoupon); + } + } + + // 推送记录 + HighGasOrderPush highGasOrderPush = new HighGasOrderPush(); + highGasOrderPush.setType(OrderPushType.type6.getType()); + highGasOrderPush.setOrderNo(order.getOrderNo()); + highGasOrderPush.setCreateTime(new Date()); + highGasOrderPush.setCode(returnParam.getString("result")); + highGasOrderPush.setRequestContent(JSONObject.toJSONString(push)); + highGasOrderPush.setReturnContent(returnParam.toJSONString()); + highGasOrderPushMapper.insert(highGasOrderPush); + + } else { + HighCouponCode code = highCouponCodeService.getCouponCodeByOrderId(highChildOrder.getId()); + code.setStatus(2); // 状态:1.待销售 2.未使用 3.已使用 99.预支付 + code.setReceiveTime(new Date()); + highCouponCodeService.updateCouponCode(code); + + // 卡卷关联用户 + HighUserCoupon highUserCoupon = new HighUserCoupon(); + highUserCoupon.setMerchantId(code.getMerchantId()); + highUserCoupon.setCouponId(code.getCouponId()); + highUserCoupon.setUserId(order.getMemId()); + highUserCoupon.setCouponCodeId(code.getId()); + highUserCoupon.setCreateTime(new Date()); + highUserCoupon.setQrCodeImg(code.getExt1()); + + // 计算使用有效期 + Calendar userEndTime = Calendar.getInstance(); + userEndTime.setTime(new Date()); + userEndTime.set(Calendar.HOUR_OF_DAY, 23); + userEndTime.set(Calendar.MINUTE, 59); + userEndTime.set(Calendar.SECOND, 59); + userEndTime.add(Calendar.DATE, coupon.getRecycleDay()); + if (userEndTime.getTime().compareTo(code.getUseEndTime()) == 1) { + highUserCoupon.setUseEndTime(code.getUseEndTime()); + } else { + highUserCoupon.setUseEndTime(userEndTime.getTime()); + } + highUserCoupon.setStatus(1); // 状态 0:已过期 1:未使用 2:已使用 + highUserCouponMapper.insert(highUserCoupon); + } + + // 查询卡券是否有活动 + Map activity = highActivityInfoService.getNewActivityByCouponId(coupon.getId()); + if (activity != null && MapUtils.getLong(activity, "id") != null) { + highActivityUserLotteryNumService.addLotteryNum(MapUtils.getLong(activity, "id"), order.getMemId(), 1); + } + } + + if (highChildOrder.getGoodsType() == 2) { + highChildOrder.setChildOrdeStatus(3); // 子订单状态:1 待支付 2 已支付 3.已完成 4. 已退款 5.已取消 + // 金币 1:100 + Integer goldNum = new BigDecimal(highChildOrder.getTotalPrice().toString()).multiply(new BigDecimal("100")).intValue(); + highUserService.goldHandle(highChildOrder.getGoodsId(), goldNum, 1, 1, highChildOrder.getId()); + } + + if (highChildOrder.getGoodsType() == 3) { + highChildOrder.setChildOrdeStatus(3); + order.setOrderStatus(3); + HighMerchantStoreModel store = highMerchantStoreService.getMerchantStoreById(highChildOrder.getGoodsId()); + + // 来源类型 1:平台自建 2:团油 + if (store.getSourceType().equals(1)) { + + // 预存类型 0:非预存 1:预存门店 + if (store.getPrestoreType() != null && store.getPrestoreType().equals(1)) { + Map pushParam = new HashMap<>(); + pushParam.put("businessType", MerStoreAmountTypeEnum.type2.getType()); + pushParam.put("storeId", highChildOrder.getGoodsId()); + pushParam.put("price", order.getTotalPrice()); + pushParam.put("sourceType", MerStoreAmountSourceTypeEnum.type2.getType()); + pushParam.put("sourceId", order.getId()); + pushParam.put("sourceContent", "订单号:" + order.getOrderNo() + ",加油金额:¥" + order.getTotalPrice()); + pushParam.put("opUserId", order.getMemId()); + pushParam.put("opUserName", order.getMemName()); + // 扣预存款 + this.redisTemplate.boundListOps(MsgTopic.MerStoreAccount.getName()).leftPush(pushParam); + } + } else if (store.getSourceType().equals(2)) { + // 推送团油订单 + Map paramMap = new HashMap<>(); + paramMap.put("gasId", store.getStoreKey()); + paramMap.put("oilNo", highChildOrder.getGasOilNo()); + paramMap.put("gunNo", highChildOrder.getGasGunNo()); + BigDecimal priceGun = highChildOrder.getGasPriceGun(); + BigDecimal priceVip = highChildOrder.getGasPriceVip(); + paramMap.put("priceGun", priceGun); // 枪单价 + paramMap.put("priceVip", priceVip); // 优惠价 + paramMap.put("driverPhone", order.getMemPhone()); + paramMap.put("thirdSerialNo", order.getOrderNo()); + paramMap.put("refuelingAmount", highChildOrder.getTotalPrice()); + + // 油品类型 1:汽油:2:柴油;3:天然气 + if (highChildOrder.getGasOilType() == 1) { + paramMap.put("accountNo", CommonSysConst.getSysConfig().getTuanYouGasolineAccount()); + } else if (highChildOrder.getGasOilType() == 2) { + paramMap.put("accountNo", CommonSysConst.getSysConfig().getTuanYouDieselAccount()); + } + JSONObject orderPushObject = TuanYouConfig.refuelingOrderPush(paramMap); + // 推送团油订单记录 + HighGasOrderPush highGasOrderPush = new HighGasOrderPush(); + highGasOrderPush.setType(OrderPushType.type1.getType()); + highGasOrderPush.setOrderNo(order.getOrderNo()); + highGasOrderPush.setCreateTime(new Date()); + highGasOrderPush.setCode(orderPushObject.getString("code")); + highGasOrderPush.setRequestContent(JSONObject.toJSONString(paramMap)); + highGasOrderPush.setReturnContent(orderPushObject.toJSONString()); + highGasOrderPushMapper.insert(highGasOrderPush); + + if (orderPushObject != null && orderPushObject.getString("code").equals("200")) { + highChildOrder.setGasOrderNo(orderPushObject.getJSONObject("result").getString("orderNo")); + } + } else if (store.getSourceType().equals(MerchantStoreSourceType.type3.getNumber())) { + + // 推送加好油 + shellGroupService.gasSyncPayment(order.getOrderNo(), + store.getStoreKey(), + order.getPayTime(), + highChildOrder.getTotalPrice(), + highChildOrder.getGasOilNo(), + highChildOrder.getGasGunNo(), + order.getPayablePrice(), + order.getDeductionPrice() + ); + } else if (store.getSourceType().equals(MerchantStoreSourceType.type4.getNumber())) { + // 推送金猪加油 + JSONObject jzOrderObject = jinZhuJiaYouService.payOrder(order.getOrderNo(), highChildOrder.getGasPriceChannelPay()); + if (jzOrderObject == null + || !jzOrderObject.getString("type").equals("OK") + || !jzOrderObject.getInteger("status").equals(200)) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, jzOrderObject.getString("title")); + } + } + } + + if (highChildOrder.getGoodsType() == 7) { + HighDiscountPackageActual actual = discountPackageActualService.getDetailByChildOrderId(highChildOrder.getId()); + if (actual != null) { + List discountList = discountPackageDiscountActualService.getHighDiscountPackageDiscountActualList(actual.getId()); + for (HighDiscountPackageDiscountActual discount : discountList) { + highDiscountUserRelService.receiveDiscount(order.getMemId(), discount.getAgentDiscountCodeId()); + } + HighDiscountPackage discountPackage = discountPackageService.findDiscountPackageById(actual.getDiscountPackageId()); + HighDiscountPackageRecord record = new HighDiscountPackageRecord(); + record.setDiscountPackageId(discountPackage.getId()); + record.setDiscountPackageTitle(discountPackage.getTitle()); + record.setUsingAttribution(discountPackage.getUsingAttribution()); + record.setCompanyId(discountPackage.getCompanyId()); + record.setOrderId(order.getId().intValue()); + record.setChildOrderId(highChildOrder.getId().intValue()); + record.setRecordNo(System.currentTimeMillis() + ""); + record.setSalesType(1); + record.setPrice(order.getPayPrice()); + record.setUserId(order.getMemId().intValue()); + discountPackageRecordService.insertRecord(record); + actual.setAllocationTime(new Date()); + actual.setStatus(3); // 状态: 1: 待分配 2:预分配(售卖)3:已分配 + discountPackageActualService.updateHighDiscountPackageActual(actual); + } + } + } + } + @Override public Integer getUndoneChildOrder(Long orderId) { HighOrder order = getOrderById(orderId); diff --git a/hai-service/src/main/java/com/hai/service/pay/impl/GoodsOrderServiceImpl.java b/hai-service/src/main/java/com/hai/service/pay/impl/GoodsOrderServiceImpl.java index bba112c5..4e889f8e 100644 --- a/hai-service/src/main/java/com/hai/service/pay/impl/GoodsOrderServiceImpl.java +++ b/hai-service/src/main/java/com/hai/service/pay/impl/GoodsOrderServiceImpl.java @@ -342,14 +342,16 @@ public class GoodsOrderServiceImpl implements PayService { } } else if (store.getSourceType().equals(MerchantStoreSourceType.type3.getNumber())) { - // 推送壳牌 - JSONObject syncPayment = shellGroupService.gasSyncPayment(order.getOrderNo(), + // 推送加好油 + shellGroupService.gasSyncPayment(order.getOrderNo(), store.getStoreKey(), order.getPayTime(), - highChildOrder.getGasPriceGun(), + highChildOrder.getTotalPrice(), highChildOrder.getGasOilNo(), highChildOrder.getGasGunNo(), - order.getTotalPrice()); + order.getPayablePrice(), + order.getDeductionPrice() + ); } } diff --git a/hai-service/src/main/resources/dev/commonConfig.properties b/hai-service/src/main/resources/dev/commonConfig.properties index dc2f2eac..21340389 100644 --- a/hai-service/src/main/resources/dev/commonConfig.properties +++ b/hai-service/src/main/resources/dev/commonConfig.properties @@ -9,10 +9,10 @@ tuanYouDieselAccount=c009bidg4400 tuanYouGasolineAccount=c009bic04400 # JiaHaoYou configuration parameters -shellGroupUrl=http://api.shenmapay.com/gateway.html -shellGroupPartnerId=S0302208021401950202 -shellPlatMerchantId=S0302206141001919666 -shellPlatMerchantKey=pic1yj2l3zby5ywpznrtdz7458ce2soj +shellGroupUrl=http://openapi.ngrok.xinyebang.cn/gateway.html +shellGroupPartnerId=S0302207281600105753 +shellPlatMerchantId=S0302206141000105717 +shellPlatMerchantKey=wqisfmkzea6mwd7ogbyh3488jv0hqhdj # JinZhu configuration parameters jzAppId=app_huidui_prod_01