提交代码

dev-discount
胡锐 2 years ago
parent 7935dc34ac
commit 848fcba638
  1. 40
      hai-cweb/src/main/java/com/cweb/controller/HighOrderController.java
  2. 2
      hai-cweb/src/main/java/com/cweb/controller/HighTestController.java
  3. 11
      hai-cweb/src/main/java/com/cweb/controller/pay/UnionPayController.java
  4. 13
      hai-service/src/main/java/com/hai/config/ShellGroupService.java
  5. 82
      hai-service/src/main/java/com/hai/dao/HighOrderMapper.java
  6. 14
      hai-service/src/main/java/com/hai/dao/HighOrderSqlProvider.java
  7. 59
      hai-service/src/main/java/com/hai/entity/HighOrder.java
  8. 60
      hai-service/src/main/java/com/hai/entity/HighOrderExample.java
  9. 7
      hai-service/src/main/java/com/hai/service/HighOrderService.java
  10. 312
      hai-service/src/main/java/com/hai/service/impl/HighOrderServiceImpl.java
  11. 10
      hai-service/src/main/java/com/hai/service/pay/impl/GoodsOrderServiceImpl.java
  12. 8
      hai-service/src/main/resources/dev/commonConfig.properties

@ -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);

File diff suppressed because one or more lines are too long

@ -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) {

@ -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<String, Object> 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) {

@ -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},",

@ -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}");
}

@ -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<HighChildOrder> 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<HighChildOrder> 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);

@ -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<BigDecimal> values) {
addCriterion("payable_price in", values, "payablePrice");
return (Criteria) this;
}
public Criteria andPayablePriceNotIn(List<BigDecimal> 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;

@ -68,6 +68,13 @@ public interface HighOrderService {
*/
void updateOrderDetail(HighOrder highOrder);
/**
* 订单业务交易处理
* 注意支付完成后可以调用此方法
* @param order
*/
void orderBusinessTransaction(HighOrder order) throws Exception;
/**
* @Author 胡锐
* @Description 获取未完成的子订单数量

@ -302,10 +302,56 @@ public class HighOrderServiceImpl implements HighOrderService {
discountPackageActualService.updateHighDiscountPackageActual(list.get(0));
}
}
// 积分抵扣,卡券除外
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);
}
}
public static void main(String[] args) {
System.out.println(HuiLianTongUnionCardConfig.resolveResponse("Gbkl57c3fEBg+E3HfPuQ52xYXxRnbPnT1CFoWj0AaUCBA2W/qzLuaUXplapIu/Avzt0AmzA/oCA=\\n"));
}
@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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<HighDiscountPackageDiscountActual> 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);

@ -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()
);
}
}

@ -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

Loading…
Cancel
Save