提交代码

dev-discount
胡锐 3 years ago
parent 3cfe1aa378
commit 42dc475fb4
  1. 1
      hai-order/src/main/java/com/web/config/AuthConfig.java
  2. 2
      hai-order/src/main/java/com/web/config/SwaggerConfig.java
  3. 5
      hai-order/src/main/java/com/web/config/SysConfig.java
  4. 61
      hai-order/src/main/java/com/web/controller/LoginController.java
  5. 16
      hai-order/src/main/java/com/web/controller/OrderController.java
  6. 6
      hai-order/src/main/java/com/web/controller/OrderPayController.java
  7. 124
      hai-order/src/main/java/com/web/controller/OrderPayNotifyController.java
  8. 234
      hai-order/src/main/java/com/web/rocketmq/consumer/OrderProfitSharingConsumer.java
  9. 6
      hai-order/src/main/resources/dev/config.properties
  10. 49
      hai-order/src/main/resources/dev/logback.xml
  11. 25
      hai-service/src/main/java/com/hai/dao/HighGasOrderMapper.java
  12. 14
      hai-service/src/main/java/com/hai/dao/HighGasOrderSqlProvider.java
  13. 36
      hai-service/src/main/java/com/hai/dao/HighOrderMapper.java
  14. 56
      hai-service/src/main/java/com/hai/dao/HighOrderSqlProvider.java
  15. 16
      hai-service/src/main/java/com/hai/entity/HighGasOrder.java
  16. 60
      hai-service/src/main/java/com/hai/entity/HighGasOrderExample.java
  17. 68
      hai-service/src/main/java/com/hai/entity/HighOrder.java
  18. 260
      hai-service/src/main/java/com/hai/entity/HighOrderExample.java
  19. 6
      hai-service/src/main/java/com/hai/order/service/OrderCancelHandleService.java
  20. 30
      hai-service/src/main/java/com/hai/order/service/OrderPaySuccessService.java
  21. 18
      hai-service/src/main/java/com/hai/order/service/impl/OrderCancelHandleServiceImpl.java
  22. 33
      hai-service/src/main/java/com/hai/order/service/impl/OrderCreateHandleServiceImpl.java
  23. 44
      hai-service/src/main/java/com/hai/order/service/impl/OrderPayServiceImpl.java
  24. 231
      hai-service/src/main/java/com/hai/order/service/impl/OrderPaySuccessServiceImpl.java
  25. 51
      hai-service/src/main/java/com/hai/order/service/impl/OrderServiceImpl.java
  26. 3
      hai-service/src/main/java/com/hai/order/topic/OrderTopic.java
  27. 7
      hai-service/src/main/java/com/hai/service/HighGasOrderService.java
  28. 37
      hai-service/src/main/java/com/hai/service/impl/HighCouponServiceImpl.java
  29. 13
      hai-service/src/main/java/com/hai/service/impl/HighGasOrderServiceImpl.java
  30. 3
      hai-service/src/main/java/com/hai/service/impl/HighMerchantServiceImpl.java
  31. 3
      hai-service/src/main/java/com/hai/service/impl/HighMerchantStoreServiceImpl.java

@ -90,6 +90,7 @@ public class AuthConfig implements WebMvcConfigurer {
.excludePathPatterns("/**/springfox-swagger-ui/**") .excludePathPatterns("/**/springfox-swagger-ui/**")
.excludePathPatterns("/**/swagger-ui.html") .excludePathPatterns("/**/swagger-ui.html")
.excludePathPatterns("/login/*") .excludePathPatterns("/login/*")
.excludePathPatterns("/payNotify/*")
; ;
} }

@ -31,7 +31,7 @@ public class SwaggerConfig
*/ */
ApiInfo apiInfo() ApiInfo apiInfo()
{ {
return new ApiInfoBuilder().title("hgj-CWeb").description("提供给用户端的接口").termsOfServiceUrl("").version("1.0.0") return new ApiInfoBuilder().title("hsg-order").description("订单业务接口").termsOfServiceUrl("").version("1.0.0")
.contact(new Contact("", "", "")).build(); .contact(new Contact("", "", "")).build();
} }

@ -12,7 +12,6 @@ import org.springframework.stereotype.Component;
public class SysConfig { public class SysConfig {
private String fileUrl; private String fileUrl;
private String wxPayMchAppId; private String wxPayMchAppId;
private String wxPayMchId; private String wxPayMchId;
@ -25,4 +24,8 @@ public class SysConfig {
// 微信支付回调地址 // 微信支付回调地址
private String wxPayNotifyUrl; private String wxPayNotifyUrl;
// 银联支付回调地址
private String unionPayNotifyUrl;
} }

@ -1,61 +0,0 @@
package com.web.controller;
import com.alibaba.csp.sentinel.Entry;
import com.alibaba.csp.sentinel.SphU;
import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.alibaba.csp.sentinel.slots.block.RuleConstant;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
import io.swagger.annotations.Api;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.ArrayList;
import java.util.List;
@Controller
@RequestMapping(value = "/login")
@Api(value = "登录")
public class LoginController {
private static Logger log = LoggerFactory.getLogger(LoginController.class);
@SentinelResource("HelloWorld")
public void helloWorld() {
// 资源中的逻辑
System.out.println("hello world");
}
public static void main(String[] args) {
// 配置规则.
initFlowRules();
int i = 0;
while (i <= 100) {
i++;
// 1.5.0 版本开始可以直接利用 try-with-resources 特性
try (Entry entry = SphU.entry("HelloWorld")) {
// 被保护的逻辑
System.out.println("hello world");
} catch (BlockException ex) {
// 处理被流控的逻辑
System.out.println("blocked!");
}
}
}
private static void initFlowRules(){
List<FlowRule> rules = new ArrayList<>();
FlowRule rule = new FlowRule();
rule.setResource("HelloWorld");
rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
// Set limit QPS to 20.
rule.setCount(20);
rules.add(rule);
FlowRuleManager.loadRules(rules);
}
}

@ -9,6 +9,7 @@ import com.hai.common.exception.SysCode;
import com.hai.common.security.UserCenter; import com.hai.common.security.UserCenter;
import com.hai.common.utils.ResponseMsgUtil; import com.hai.common.utils.ResponseMsgUtil;
import com.hai.entity.HighChildOrder; import com.hai.entity.HighChildOrder;
import com.hai.entity.HighOrder;
import com.hai.entity.HighUser; import com.hai.entity.HighUser;
import com.hai.model.HighUserModel; import com.hai.model.HighUserModel;
import com.hai.model.ResponseData; import com.hai.model.ResponseData;
@ -18,6 +19,7 @@ import com.hai.order.service.OrderPaySuccessService;
import com.hai.order.service.OrderService; import com.hai.order.service.OrderService;
import com.hai.order.type.OrderChildGoodsType; import com.hai.order.type.OrderChildGoodsType;
import com.hai.order.type.OrderChildStatus; import com.hai.order.type.OrderChildStatus;
import com.hai.order.type.OrderPayType;
import com.hai.order.utils.OrderUtil; import com.hai.order.utils.OrderUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -30,6 +32,7 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -186,7 +189,7 @@ public class OrderController {
@RequestMapping(value="/getDetailByOrderNo",method = RequestMethod.GET) @RequestMapping(value="/getDetailByOrderNo",method = RequestMethod.GET)
@ResponseBody @ResponseBody
@ApiOperation(value = "根据订单号查询") @ApiOperation(value = "根据订单号查询详情")
public ResponseData getDetailByOrderNo(@RequestParam(name = "orderNo", required = true) String orderNo) { public ResponseData getDetailByOrderNo(@RequestParam(name = "orderNo", required = true) String orderNo) {
try { try {
@ -226,7 +229,6 @@ public class OrderController {
} }
} }
/*
@RequestMapping(value="/paySuccess",method = RequestMethod.POST) @RequestMapping(value="/paySuccess",method = RequestMethod.POST)
@ResponseBody @ResponseBody
@ApiOperation(value = "支付成功") @ApiOperation(value = "支付成功")
@ -236,12 +238,18 @@ public class OrderController {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到订单"); throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到订单");
} }
return ResponseMsgUtil.success(orderService.orderPaySuccessBus(orderService.getOrderDetailByNo(body.getString("orderNo")))); HighOrder order = orderService.getOrderDetailByNo(body.getString("orderNo"));
return ResponseMsgUtil.success(orderPaySuccessService.orderPaySuccessHandle(order.getOrderNo(),
OrderPayType.PAY_TYPE5,
"",
new BigDecimal("0"),
null));
} catch (Exception e) { } catch (Exception e) {
log.error("OrderController -> paySuccess() error!",e); log.error("OrderController -> paySuccess() error!",e);
return ResponseMsgUtil.exception(e); return ResponseMsgUtil.exception(e);
} }
}*/ }
} }

@ -91,10 +91,10 @@ public class OrderPayController {
@Resource @Resource
private WechatPayUtil wechatPayUtil; private WechatPayUtil wechatPayUtil;
@RequestMapping(value="/weixinPay",method = RequestMethod.POST) @RequestMapping(value="/wechatPay",method = RequestMethod.POST)
@ResponseBody @ResponseBody
@ApiOperation(value = "微信支付") @ApiOperation(value = "微信支付")
public ResponseData weixinPay(@RequestBody JSONObject body) { public ResponseData wechatPay(@RequestBody JSONObject body) {
try { try {
if (body == null if (body == null
@ -373,7 +373,7 @@ public class OrderPayController {
throw ErrorHelp.genException(SysCode.System, ErrorCode.ORDER_NO_STAY_PAY, ""); throw ErrorHelp.genException(SysCode.System, ErrorCode.ORDER_NO_STAY_PAY, "");
} }
return ResponseMsgUtil.success(unionPayConfig.upPreOrder(UnionPayConfig.MER_ID3, UnionPayConfig.TERM_ID3, order.getOrderNo(), order.getPayPrice(), "购买商品", CommonSysConst.getSysConfig().getUnionPayNotifyUrl(), request)); return ResponseMsgUtil.success(unionPayConfig.upPreOrder(UnionPayConfig.MER_ID3, UnionPayConfig.TERM_ID3, order.getOrderNo(), order.getPayPrice(), "购买商品", SysConst.getSysConfig().getUnionPayNotifyUrl(), request));
} catch (Exception e) { } catch (Exception e) {
log.error("orderToPay error!", e); log.error("orderToPay error!", e);

@ -0,0 +1,124 @@
package com.web.controller;
import com.alibaba.fastjson.JSONObject;
import com.hai.common.exception.ErrorCode;
import com.hai.common.exception.ErrorHelp;
import com.hai.common.exception.SysCode;
import com.hai.common.pay.util.IOUtil;
import com.hai.common.pay.util.XmlUtil;
import com.hai.entity.*;
import com.hai.order.service.OrderPaySuccessService;
import com.hai.order.service.OrderService;
import com.hai.order.type.OrderPayType;
import com.hai.service.pay.NotifyService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedOutputStream;
import java.math.BigDecimal;
import java.net.URLDecoder;
import java.util.SortedMap;
/**
* @className: OrderPayNotifyController
* @author: HuRui
* @date: 2022/9/8
**/
@Controller
@RequestMapping("/payNotify")
@Api(value = "订单支付")
public class OrderPayNotifyController {
private static final Logger log = LoggerFactory.getLogger(OrderPayNotifyController.class);
@Resource
private NotifyService notifyService;
@Resource
private OrderService orderService;
@Resource
private OrderPaySuccessService paySuccessService;
@RequestMapping(value = "/wechatPay", method = RequestMethod.POST)
@ApiOperation(value = "微信支付 -> 异步回调")
public void wechatPay(HttpServletRequest request, HttpServletResponse response) {
try {
log.info("===============微信支付回调start==================");
String resXml = ""; // 反馈给微信服务器
String notifyXml = null; // 微信支付系统发送的数据(<![CDATA[product_001]]>格式)
notifyXml = IOUtil.inputStreamToString(request.getInputStream(), "UTF-8");
log.info("回调参数: " + notifyXml);
SortedMap<String, String> map = XmlUtil.parseXmlToTreeMap(notifyXml, "UTF-8");
log.info("开始处理订单: " + map.get("out_trade_no"));
// 处理业务
log.info("开始处理业务");
paySuccessService.orderPaySuccessHandle(map.get("out_trade_no"),
OrderPayType.PAY_TYPE2, map.get("out_trade_no"),
new BigDecimal(map.get("total_fee")).divide(new BigDecimal("100")),
null);
log.info("处理业务完成");
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
out.write(resXml.getBytes());
out.flush();
out.close();
} catch (Exception e) {
log.error("订单处理异常", e);
} finally {
log.info("===============微信支付回调end==================");
}
}
@RequestMapping(value = "/unionPay", method = RequestMethod.POST)
@ApiOperation(value = "银联支付 -> 异步回调")
public void unionPay(@RequestBody String params, HttpServletRequest request, HttpServletResponse response) {
try {
log.info("===============银联支付回调start==================");
log.info("回调参数: " + params);
if (StringUtils.isNotBlank(params)) {
// 参数解码
String paramsStr = URLDecoder.decode(params,"utf-8");
JSONObject body = JSONObject.parseObject(paramsStr.substring(0, paramsStr.length() - 1));
log.info("开始处理订单: " + body.getString("tradetrace"));
// 查询订单信息
HighOrder order = orderService.getOrderDetailByNo(body.getString("tradetrace"));
if (order == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.NOT_FOUND_ORDER, "");
}
log.info("开始处理业务");
// 异步处理业务
paySuccessService.orderPaySuccessHandle(order.getOrderNo(),
OrderPayType.PAY_TYPE5,
body.getString("wtorderid"),
order.getPayPrice(),
null);
log.info("处理业务完成");
}
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
JSONObject result = new JSONObject();
result.put("resultcode", "00");
out.write(result.toJSONString().getBytes());
out.flush();
out.close();
} catch (Exception e) {
log.error("订单处理异常", e);
} finally {
log.info("===============银联支付回调end==================");
}
}
}

@ -0,0 +1,234 @@
package com.web.rocketmq.consumer;
import com.alibaba.fastjson.JSONObject;
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.utils.WxUtils;
import com.hai.entity.*;
import com.hai.enum_type.GasChannel;
import com.hai.enum_type.GasChannelPayPlatformType;
import com.hai.enum_type.MerchantStoreSourceType;
import com.hai.model.HighMerchantStoreModel;
import com.hai.model.ResultProfitSharing;
import com.hai.order.service.OrderService;
import com.hai.order.type.OrderChildGoodsType;
import com.hai.order.type.OrderPayType;
import com.hai.order.type.OrderProductType;
import com.hai.order.type.OrderStatus;
import com.hai.service.HighGasChannelConfigService;
import com.hai.service.HighMerchantStoreService;
import com.hai.service.HighProfitSharingRecordService;
import lombok.extern.slf4j.Slf4j;
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.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.net.ssl.SSLContext;
import java.io.FileInputStream;
import java.math.BigDecimal;
import java.security.KeyStore;
import java.util.*;
import java.util.stream.Collectors;
@Component
@Slf4j
@RocketMQMessageListener(consumerGroup = "order-profit-sharing-group", topic = "order-topic",selectorExpression = "profit-sharing")
public class OrderProfitSharingConsumer implements RocketMQListener<HighOrder> {
@Resource
private OrderService orderService;
@Resource
private HighProfitSharingRecordService profitSharingRecordService;
@Resource
private HighMerchantStoreService merchantStoreService;
@Resource
private HighGasChannelConfigService gasChannelConfigService;
@Override
public void onMessage(HighOrder order) {
String resultXml = null;
if (order.getPayType().equals(OrderPayType.PAY_TYPE2.getNumber())) {
List<HighChildOrder> orderList = order.getHighChildOrderList().stream()
.filter(o -> o.getGoodsType().equals(OrderChildGoodsType.TYPE3.getNumber())).collect(Collectors.toList());
if (order.getProductType().equals(OrderProductType.PRODUCT_TYPE6.getNumber())) {
HighMerchantStore store = merchantStoreService.getDetailById(orderList.get(0).getGoodsId());
HighGasChannelConfig gasChannelConfig;
if (store.getSourceType().equals(MerchantStoreSourceType.type1.getNumber())) {
gasChannelConfig = gasChannelConfigService.getConfig(GasChannel.type1, GasChannelPayPlatformType.type1);
} else if (store.getSourceType().equals(MerchantStoreSourceType.type2.getNumber())) {
gasChannelConfig = gasChannelConfigService.getConfig(GasChannel.type2, GasChannelPayPlatformType.type1);
} else if (store.getSourceType().equals(MerchantStoreSourceType.type3.getNumber())) {
gasChannelConfig = gasChannelConfigService.getConfig(GasChannel.type3, GasChannelPayPlatformType.type1);
} else if (store.getSourceType().equals(MerchantStoreSourceType.type4.getNumber())) {
gasChannelConfig = gasChannelConfigService.getConfig(GasChannel.type4, GasChannelPayPlatformType.type1);
} else {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未配置分账参数");
}
BigDecimal rake = new BigDecimal("0.01");
// 计算微信收取的手续费 支付金额 * 0.002 注:如果与两个相邻数字的距离相等,则为上舍入的舍入模式。
BigDecimal wxHandlingFee = order.getPayRealPrice().multiply(new BigDecimal("0.002")).setScale(2, BigDecimal.ROUND_HALF_DOWN);
BigDecimal price = order.getPayRealPrice().subtract(wxHandlingFee);
// 计算分账金额 手续费后的价格 * 0.01 注:如果与两个相邻数字的距离相等,则为上舍入的舍入模式。
BigDecimal profitSharingAmount = price.multiply(rake).setScale(2, BigDecimal.ROUND_DOWN);
resultXml = this.wechatSharingRecord(
order.getExt1(),
order.getAccountMerchantNum(),
gasChannelConfig.getProfitSharingReceiversNo(),
gasChannelConfig.getProfitSharingReceiversName(),
order.getPaySerialNo(),
order.getOrderNo(),
profitSharingAmount);
ResultProfitSharing resultProfitSharing = XmlUtil.getObjectFromXML(resultXml, ResultProfitSharing.class);
HighProfitSharingRecord sharingRecord = new HighProfitSharingRecord();
sharingRecord.setOutOrderNo(order.getOrderNo());
sharingRecord.setTransactionId(order.getPaySerialNo());
sharingRecord.setOrderId(order.getId().toString());
sharingRecord.setStatus(resultProfitSharing.getResult_code());
sharingRecord.setPrice(profitSharingAmount);
sharingRecord.setCreateTime(new Date());
sharingRecord.setContent(resultXml);
profitSharingRecordService.insert(sharingRecord);
} else {
BigDecimal rake = new BigDecimal("0.01");
// 计算微信收取的手续费 支付金额 * 0.002 注:如果与两个相邻数字的距离相等,则为上舍入的舍入模式。
BigDecimal wxHandlingFee = order.getPayRealPrice().multiply(new BigDecimal("0.002")).setScale(2, BigDecimal.ROUND_HALF_DOWN);
BigDecimal price = order.getPayRealPrice().subtract(wxHandlingFee);
// 计算分账金额 手续费后的价格 * 0.01 注:如果与两个相邻数字的距离相等,则为上舍入的舍入模式。
BigDecimal profitSharingAmount = price.multiply(rake).setScale(2, BigDecimal.ROUND_DOWN);
resultXml = this.wechatSharingRecord(
order.getExt1(),
order.getAccountMerchantNum(),
"1603942866",
"惠昕石化",
order.getPaySerialNo(),
order.getOrderNo(),
profitSharingAmount);
ResultProfitSharing resultProfitSharing = XmlUtil.getObjectFromXML(resultXml, ResultProfitSharing.class);
HighProfitSharingRecord sharingRecord = new HighProfitSharingRecord();
sharingRecord.setOutOrderNo(order.getOrderNo());
sharingRecord.setTransactionId(order.getPaySerialNo());
sharingRecord.setOrderId(order.getId().toString());
sharingRecord.setStatus(resultProfitSharing.getResult_code());
sharingRecord.setPrice(profitSharingAmount);
sharingRecord.setCreateTime(new Date());
sharingRecord.setContent(resultXml);
profitSharingRecordService.insert(sharingRecord);
}
}
}
/**
* 微信分账
* @param appid
* @param subMchId
* @param receiversAccount 接收者商户号
* @param receiversAccountName 接收者商户名称
* @param transaction_id 第三方交易订单号
* @param out_order_no 交易订单号
* @param amount 分账金额
*/
public String wechatSharingRecord(String appid, String subMchId, String receiversAccount, String receiversAccountName,String transaction_id,String out_order_no, BigDecimal amount) {
try {
Map<String,String> param = new LinkedHashMap<>();
param.put("appid", appid);
param.put("mch_id", "1289663601");
param.put("sub_mch_id" , subMchId);
param.put("transaction_id" , transaction_id);
param.put("out_order_no" , out_order_no);
param.put("nonce_str" , WxUtils.makeNonStr());
List<Map<String,Object>> receiversList = new ArrayList<>();
Map<String,Object> receiversMap = new LinkedHashMap<>();
receiversMap.put("type", "MERCHANT_ID");
receiversMap.put("account", receiversAccount);
receiversMap.put("amount", amount.multiply(new BigDecimal("100")).intValue());
receiversMap.put("description", "分给商户:" + receiversAccountName);
receiversList.add(receiversMap);
param.put("receivers" , JSONObject.toJSONString(receiversList));
String signStr = WxUtils.generateSignature(param, "Skufk5oi85wDFGl888i6wsRSTkdd5df5" , WXPayConstants.SignType.HMACSHA256);
param.put("sign" , signStr);
// 请求分账返回的结果
return this.wechatRequest(param.get("mch_id"), WxUtils.mapToXml(param));
} catch (Exception e) {
log.error("CmsContentController --> getCorporateAdvertising() error!", e);
}
return null;
}
/**
* 微信分账请求
* @param mchId
* @param data
* @return
* @throws Exception
*/
public String wechatRequest(String mchId, String data) throws Exception {
/**
* 注意PKCS12证书 是从微信商户平台-账户设置- API安全 中下载的
*/
KeyStore keyStore = KeyStore.getInstance("PKCS12");
//P12文件目录 证书路径,这里需要你自己修改,linux下还是windows下的根路径
FileInputStream instream = new FileInputStream("/home/project/wx_cert/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());
//小程序退款需要调用双向证书的认证
CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
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();
}
}
}

@ -5,7 +5,11 @@ wxPayMchAppId=wx637bd6f7314daa46
wxPayMchId=1289663601 wxPayMchId=1289663601
wxPayApiKey=Skufk5oi85wDFGl888i6wsRSTkdd5df5 wxPayApiKey=Skufk5oi85wDFGl888i6wsRSTkdd5df5
wxPayUnifiedOrderUrl=https://api.mch.weixin.qq.com/pay/unifiedorder wxPayUnifiedOrderUrl=https://api.mch.weixin.qq.com/pay/unifiedorder
wxPayNotifyUrl=https://hsgcs.dctpay.com/order/wechatpay/notify
wxPayNotifyUrl=https://hsgcs.dctpay.com/order/payNotify/wechatPay
unionPayNotifyUrl=https://hsgcs.dctpay.com/order/payNotify/unionPay
fileUrl=F:/hurui_probject/filesystem fileUrl=F:/hurui_probject/filesystem
cmsPath=F:/hurui_probject/filesystem cmsPath=F:/hurui_probject/filesystem

@ -56,22 +56,7 @@
</pattern> </pattern>
<charset>UTF-8</charset> <!-- 此处设置字符集 --> <charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder> </encoder>
</appender> </appender>
<root level="DEBUG">
<appender-ref ref="STDOUT" />
</root>
<logger name="com.hai" level="DEBUG">
<appender-ref ref="baselog" />
</logger>
<logger name="com.hai.dao" level="DEBUG">
<appender-ref ref="daolog" />
</logger>
<logger name="com.hai" level="ERROR">
<appender-ref ref="errorlog" />
</logger>
<appender name="HltCardLog" <appender name="HltCardLog"
class="ch.qos.logback.core.rolling.RollingFileAppender"> class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>log/HltCardLog.log</File> <File>log/HltCardLog.log</File>
@ -89,7 +74,39 @@
<charset>UTF-8</charset> <!-- 此处设置字符集 --> <charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder> </encoder>
</appender> </appender>
<appender name="PayNotify"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>log/PayNotify.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>log/PayNotify/PayNotify.log.%d.%i</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 64 MB -->
<maxFileSize>64 MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>
%d %p (%file:%line\)- %m%n
</pattern>
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="STDOUT" />
</root>
<logger name="com.hai" level="DEBUG">
<appender-ref ref="baselog" />
</logger>
<logger name="com.hai.dao" level="DEBUG">
<appender-ref ref="daolog" />
</logger>
<logger name="com.hai" level="ERROR">
<appender-ref ref="errorlog" />
</logger>
<logger name="com.hai.config.HuiLianTongUnionCardConfig" level="INFO"> <logger name="com.hai.config.HuiLianTongUnionCardConfig" level="INFO">
<appender-ref ref="HltCardLog" /> <appender-ref ref="HltCardLog" />
</logger> </logger>
<logger name="com.web.controller.OrderPayNotifyController" level="INFO">
<appender-ref ref="PayNotify" />
</logger>
</configuration> </configuration>

@ -58,10 +58,11 @@ public interface HighGasOrderMapper extends HighGasOrderMapperExt {
"gas_agent_id, gas_agent_name, ", "gas_agent_id, gas_agent_name, ",
"gas_org_id, gas_org_name, ", "gas_org_id, gas_org_name, ",
"`status`, create_time, ", "`status`, create_time, ",
"pay_time, finish_time, ", "cancel_time, pay_time, ",
"refund_time, refund_remarks, ", "finish_time, refund_time, ",
"ext_1, ext_2, ext_3, ", "refund_remarks, ext_1, ",
"ext_4, ext_5, ext_6)", "ext_2, ext_3, ext_4, ",
"ext_5, ext_6)",
"values (#{orderNo,jdbcType=VARCHAR}, #{childOrderNo,jdbcType=VARCHAR}, ", "values (#{orderNo,jdbcType=VARCHAR}, #{childOrderNo,jdbcType=VARCHAR}, ",
"#{channelType,jdbcType=INTEGER}, #{channelOrderNo,jdbcType=VARCHAR}, ", "#{channelType,jdbcType=INTEGER}, #{channelOrderNo,jdbcType=VARCHAR}, ",
"#{memId,jdbcType=BIGINT}, #{memPhone,jdbcType=VARCHAR}, ", "#{memId,jdbcType=BIGINT}, #{memPhone,jdbcType=VARCHAR}, ",
@ -81,10 +82,11 @@ public interface HighGasOrderMapper extends HighGasOrderMapperExt {
"#{gasAgentId,jdbcType=BIGINT}, #{gasAgentName,jdbcType=VARCHAR}, ", "#{gasAgentId,jdbcType=BIGINT}, #{gasAgentName,jdbcType=VARCHAR}, ",
"#{gasOrgId,jdbcType=BIGINT}, #{gasOrgName,jdbcType=VARCHAR}, ", "#{gasOrgId,jdbcType=BIGINT}, #{gasOrgName,jdbcType=VARCHAR}, ",
"#{status,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, ", "#{status,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, ",
"#{payTime,jdbcType=TIMESTAMP}, #{finishTime,jdbcType=TIMESTAMP}, ", "#{cancelTime,jdbcType=TIMESTAMP}, #{payTime,jdbcType=TIMESTAMP}, ",
"#{refundTime,jdbcType=TIMESTAMP}, #{refundRemarks,jdbcType=VARCHAR}, ", "#{finishTime,jdbcType=TIMESTAMP}, #{refundTime,jdbcType=TIMESTAMP}, ",
"#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR}, ", "#{refundRemarks,jdbcType=VARCHAR}, #{ext1,jdbcType=VARCHAR}, ",
"#{ext4,jdbcType=VARCHAR}, #{ext5,jdbcType=VARCHAR}, #{ext6,jdbcType=VARCHAR})" "#{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR}, #{ext4,jdbcType=VARCHAR}, ",
"#{ext5,jdbcType=VARCHAR}, #{ext6,jdbcType=VARCHAR})"
}) })
@Options(useGeneratedKeys=true,keyProperty="id") @Options(useGeneratedKeys=true,keyProperty="id")
int insert(HighGasOrder record); int insert(HighGasOrder record);
@ -135,6 +137,7 @@ public interface HighGasOrderMapper extends HighGasOrderMapperExt {
@Result(column="gas_org_name", property="gasOrgName", jdbcType=JdbcType.VARCHAR), @Result(column="gas_org_name", property="gasOrgName", jdbcType=JdbcType.VARCHAR),
@Result(column="status", property="status", jdbcType=JdbcType.INTEGER), @Result(column="status", property="status", jdbcType=JdbcType.INTEGER),
@Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP), @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="cancel_time", property="cancelTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="pay_time", property="payTime", jdbcType=JdbcType.TIMESTAMP), @Result(column="pay_time", property="payTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="finish_time", property="finishTime", jdbcType=JdbcType.TIMESTAMP), @Result(column="finish_time", property="finishTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="refund_time", property="refundTime", jdbcType=JdbcType.TIMESTAMP), @Result(column="refund_time", property="refundTime", jdbcType=JdbcType.TIMESTAMP),
@ -157,8 +160,8 @@ public interface HighGasOrderMapper extends HighGasOrderMapperExt {
"gas_discount, gas_oil_subsidy, gas_liters_preferences, gas_price_preferences, ", "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_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_staff_name, gas_salesman_id, gas_salesman_name, gas_agent_id, gas_agent_name, ",
"gas_org_id, gas_org_name, `status`, create_time, pay_time, finish_time, refund_time, ", "gas_org_id, gas_org_name, `status`, create_time, cancel_time, pay_time, finish_time, ",
"refund_remarks, ext_1, ext_2, ext_3, ext_4, ext_5, ext_6", "refund_time, refund_remarks, ext_1, ext_2, ext_3, ext_4, ext_5, ext_6",
"from high_gas_order", "from high_gas_order",
"where id = #{id,jdbcType=BIGINT}" "where id = #{id,jdbcType=BIGINT}"
}) })
@ -203,6 +206,7 @@ public interface HighGasOrderMapper extends HighGasOrderMapperExt {
@Result(column="gas_org_name", property="gasOrgName", jdbcType=JdbcType.VARCHAR), @Result(column="gas_org_name", property="gasOrgName", jdbcType=JdbcType.VARCHAR),
@Result(column="status", property="status", jdbcType=JdbcType.INTEGER), @Result(column="status", property="status", jdbcType=JdbcType.INTEGER),
@Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP), @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="cancel_time", property="cancelTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="pay_time", property="payTime", jdbcType=JdbcType.TIMESTAMP), @Result(column="pay_time", property="payTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="finish_time", property="finishTime", jdbcType=JdbcType.TIMESTAMP), @Result(column="finish_time", property="finishTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="refund_time", property="refundTime", jdbcType=JdbcType.TIMESTAMP), @Result(column="refund_time", property="refundTime", jdbcType=JdbcType.TIMESTAMP),
@ -266,6 +270,7 @@ public interface HighGasOrderMapper extends HighGasOrderMapperExt {
"gas_org_name = #{gasOrgName,jdbcType=VARCHAR},", "gas_org_name = #{gasOrgName,jdbcType=VARCHAR},",
"`status` = #{status,jdbcType=INTEGER},", "`status` = #{status,jdbcType=INTEGER},",
"create_time = #{createTime,jdbcType=TIMESTAMP},", "create_time = #{createTime,jdbcType=TIMESTAMP},",
"cancel_time = #{cancelTime,jdbcType=TIMESTAMP},",
"pay_time = #{payTime,jdbcType=TIMESTAMP},", "pay_time = #{payTime,jdbcType=TIMESTAMP},",
"finish_time = #{finishTime,jdbcType=TIMESTAMP},", "finish_time = #{finishTime,jdbcType=TIMESTAMP},",
"refund_time = #{refundTime,jdbcType=TIMESTAMP},", "refund_time = #{refundTime,jdbcType=TIMESTAMP},",

@ -184,6 +184,10 @@ public class HighGasOrderSqlProvider {
sql.VALUES("create_time", "#{createTime,jdbcType=TIMESTAMP}"); sql.VALUES("create_time", "#{createTime,jdbcType=TIMESTAMP}");
} }
if (record.getCancelTime() != null) {
sql.VALUES("cancel_time", "#{cancelTime,jdbcType=TIMESTAMP}");
}
if (record.getPayTime() != null) { if (record.getPayTime() != null) {
sql.VALUES("pay_time", "#{payTime,jdbcType=TIMESTAMP}"); sql.VALUES("pay_time", "#{payTime,jdbcType=TIMESTAMP}");
} }
@ -273,6 +277,7 @@ public class HighGasOrderSqlProvider {
sql.SELECT("gas_org_name"); sql.SELECT("gas_org_name");
sql.SELECT("`status`"); sql.SELECT("`status`");
sql.SELECT("create_time"); sql.SELECT("create_time");
sql.SELECT("cancel_time");
sql.SELECT("pay_time"); sql.SELECT("pay_time");
sql.SELECT("finish_time"); sql.SELECT("finish_time");
sql.SELECT("refund_time"); sql.SELECT("refund_time");
@ -460,6 +465,10 @@ public class HighGasOrderSqlProvider {
sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}"); sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}");
} }
if (record.getCancelTime() != null) {
sql.SET("cancel_time = #{record.cancelTime,jdbcType=TIMESTAMP}");
}
if (record.getPayTime() != null) { if (record.getPayTime() != null) {
sql.SET("pay_time = #{record.payTime,jdbcType=TIMESTAMP}"); sql.SET("pay_time = #{record.payTime,jdbcType=TIMESTAMP}");
} }
@ -548,6 +557,7 @@ public class HighGasOrderSqlProvider {
sql.SET("gas_org_name = #{record.gasOrgName,jdbcType=VARCHAR}"); sql.SET("gas_org_name = #{record.gasOrgName,jdbcType=VARCHAR}");
sql.SET("`status` = #{record.status,jdbcType=INTEGER}"); sql.SET("`status` = #{record.status,jdbcType=INTEGER}");
sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}"); sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}");
sql.SET("cancel_time = #{record.cancelTime,jdbcType=TIMESTAMP}");
sql.SET("pay_time = #{record.payTime,jdbcType=TIMESTAMP}"); sql.SET("pay_time = #{record.payTime,jdbcType=TIMESTAMP}");
sql.SET("finish_time = #{record.finishTime,jdbcType=TIMESTAMP}"); sql.SET("finish_time = #{record.finishTime,jdbcType=TIMESTAMP}");
sql.SET("refund_time = #{record.refundTime,jdbcType=TIMESTAMP}"); sql.SET("refund_time = #{record.refundTime,jdbcType=TIMESTAMP}");
@ -724,6 +734,10 @@ public class HighGasOrderSqlProvider {
sql.SET("create_time = #{createTime,jdbcType=TIMESTAMP}"); sql.SET("create_time = #{createTime,jdbcType=TIMESTAMP}");
} }
if (record.getCancelTime() != null) {
sql.SET("cancel_time = #{cancelTime,jdbcType=TIMESTAMP}");
}
if (record.getPayTime() != null) { if (record.getPayTime() != null) {
sql.SET("pay_time = #{payTime,jdbcType=TIMESTAMP}"); sql.SET("pay_time = #{payTime,jdbcType=TIMESTAMP}");
} }

@ -40,9 +40,7 @@ public interface HighOrderMapper extends HighOrderMapperExt {
@Insert({ @Insert({
"insert into high_order (product_type, company_id, ", "insert into high_order (product_type, company_id, ",
"company_name, mer_id, ", "company_name, promote_code, ",
"mer_name, store_id, ",
"store_name, promote_code, ",
"mem_discount_id, mem_discount_name, ", "mem_discount_id, mem_discount_name, ",
"mem_id, mem_name, mem_phone, ", "mem_id, mem_name, mem_phone, ",
"order_no, pay_serial_no, ", "order_no, pay_serial_no, ",
@ -63,9 +61,7 @@ public interface HighOrderMapper extends HighOrderMapperExt {
"ext_2, ext_3, ext_4, ", "ext_2, ext_3, ext_4, ",
"ext_5, ext_6)", "ext_5, ext_6)",
"values (#{productType,jdbcType=INTEGER}, #{companyId,jdbcType=BIGINT}, ", "values (#{productType,jdbcType=INTEGER}, #{companyId,jdbcType=BIGINT}, ",
"#{companyName,jdbcType=VARCHAR}, #{merId,jdbcType=BIGINT}, ", "#{companyName,jdbcType=VARCHAR}, #{promoteCode,jdbcType=VARCHAR}, ",
"#{merName,jdbcType=VARCHAR}, #{storeId,jdbcType=BIGINT}, ",
"#{storeName,jdbcType=VARCHAR}, #{promoteCode,jdbcType=VARCHAR}, ",
"#{memDiscountId,jdbcType=BIGINT}, #{memDiscountName,jdbcType=VARCHAR}, ", "#{memDiscountId,jdbcType=BIGINT}, #{memDiscountName,jdbcType=VARCHAR}, ",
"#{memId,jdbcType=BIGINT}, #{memName,jdbcType=VARCHAR}, #{memPhone,jdbcType=VARCHAR}, ", "#{memId,jdbcType=BIGINT}, #{memName,jdbcType=VARCHAR}, #{memPhone,jdbcType=VARCHAR}, ",
"#{orderNo,jdbcType=VARCHAR}, #{paySerialNo,jdbcType=VARCHAR}, ", "#{orderNo,jdbcType=VARCHAR}, #{paySerialNo,jdbcType=VARCHAR}, ",
@ -99,10 +95,6 @@ public interface HighOrderMapper extends HighOrderMapperExt {
@Result(column="product_type", property="productType", jdbcType=JdbcType.INTEGER), @Result(column="product_type", property="productType", jdbcType=JdbcType.INTEGER),
@Result(column="company_id", property="companyId", jdbcType=JdbcType.BIGINT), @Result(column="company_id", property="companyId", jdbcType=JdbcType.BIGINT),
@Result(column="company_name", property="companyName", jdbcType=JdbcType.VARCHAR), @Result(column="company_name", property="companyName", jdbcType=JdbcType.VARCHAR),
@Result(column="mer_id", property="merId", jdbcType=JdbcType.BIGINT),
@Result(column="mer_name", property="merName", jdbcType=JdbcType.VARCHAR),
@Result(column="store_id", property="storeId", jdbcType=JdbcType.BIGINT),
@Result(column="store_name", property="storeName", jdbcType=JdbcType.VARCHAR),
@Result(column="promote_code", property="promoteCode", jdbcType=JdbcType.VARCHAR), @Result(column="promote_code", property="promoteCode", jdbcType=JdbcType.VARCHAR),
@Result(column="mem_discount_id", property="memDiscountId", jdbcType=JdbcType.BIGINT), @Result(column="mem_discount_id", property="memDiscountId", jdbcType=JdbcType.BIGINT),
@Result(column="mem_discount_name", property="memDiscountName", jdbcType=JdbcType.VARCHAR), @Result(column="mem_discount_name", property="memDiscountName", jdbcType=JdbcType.VARCHAR),
@ -149,14 +141,14 @@ public interface HighOrderMapper extends HighOrderMapperExt {
@Select({ @Select({
"select", "select",
"id, product_type, company_id, company_name, mer_id, mer_name, store_id, store_name, ", "id, product_type, company_id, company_name, promote_code, mem_discount_id, mem_discount_name, ",
"promote_code, mem_discount_id, mem_discount_name, mem_id, mem_name, mem_phone, ", "mem_id, mem_name, mem_phone, order_no, pay_serial_no, pay_type, mem_card_id, ",
"order_no, pay_serial_no, pay_type, mem_card_id, mem_card_type, mem_card_no, ", "mem_card_type, mem_card_no, total_price, deduction_price, pay_gold, payable_price, ",
"total_price, deduction_price, pay_gold, payable_price, pay_price, pay_real_price, ", "pay_price, pay_real_price, order_status, remarks, create_time, surplus_refund_price, ",
"order_status, remarks, create_time, surplus_refund_price, surplus_refund_integral, ", "surplus_refund_integral, pay_time, finish_time, cancel_time, cancel_remarks, ",
"pay_time, finish_time, cancel_time, cancel_remarks, refund_time, account_merchant_num, ", "refund_time, account_merchant_num, profit_sharing_status, profit_sharing_record_id, ",
"profit_sharing_status, profit_sharing_record_id, whether_check, whether_rebate, ", "whether_check, whether_rebate, exception_status, exception_content, ext_1, ext_2, ",
"exception_status, exception_content, ext_1, ext_2, ext_3, ext_4, ext_5, ext_6", "ext_3, ext_4, ext_5, ext_6",
"from high_order", "from high_order",
"where id = #{id,jdbcType=BIGINT}" "where id = #{id,jdbcType=BIGINT}"
}) })
@ -165,10 +157,6 @@ public interface HighOrderMapper extends HighOrderMapperExt {
@Result(column="product_type", property="productType", jdbcType=JdbcType.INTEGER), @Result(column="product_type", property="productType", jdbcType=JdbcType.INTEGER),
@Result(column="company_id", property="companyId", jdbcType=JdbcType.BIGINT), @Result(column="company_id", property="companyId", jdbcType=JdbcType.BIGINT),
@Result(column="company_name", property="companyName", jdbcType=JdbcType.VARCHAR), @Result(column="company_name", property="companyName", jdbcType=JdbcType.VARCHAR),
@Result(column="mer_id", property="merId", jdbcType=JdbcType.BIGINT),
@Result(column="mer_name", property="merName", jdbcType=JdbcType.VARCHAR),
@Result(column="store_id", property="storeId", jdbcType=JdbcType.BIGINT),
@Result(column="store_name", property="storeName", jdbcType=JdbcType.VARCHAR),
@Result(column="promote_code", property="promoteCode", jdbcType=JdbcType.VARCHAR), @Result(column="promote_code", property="promoteCode", jdbcType=JdbcType.VARCHAR),
@Result(column="mem_discount_id", property="memDiscountId", jdbcType=JdbcType.BIGINT), @Result(column="mem_discount_id", property="memDiscountId", jdbcType=JdbcType.BIGINT),
@Result(column="mem_discount_name", property="memDiscountName", jdbcType=JdbcType.VARCHAR), @Result(column="mem_discount_name", property="memDiscountName", jdbcType=JdbcType.VARCHAR),
@ -227,10 +215,6 @@ public interface HighOrderMapper extends HighOrderMapperExt {
"set product_type = #{productType,jdbcType=INTEGER},", "set product_type = #{productType,jdbcType=INTEGER},",
"company_id = #{companyId,jdbcType=BIGINT},", "company_id = #{companyId,jdbcType=BIGINT},",
"company_name = #{companyName,jdbcType=VARCHAR},", "company_name = #{companyName,jdbcType=VARCHAR},",
"mer_id = #{merId,jdbcType=BIGINT},",
"mer_name = #{merName,jdbcType=VARCHAR},",
"store_id = #{storeId,jdbcType=BIGINT},",
"store_name = #{storeName,jdbcType=VARCHAR},",
"promote_code = #{promoteCode,jdbcType=VARCHAR},", "promote_code = #{promoteCode,jdbcType=VARCHAR},",
"mem_discount_id = #{memDiscountId,jdbcType=BIGINT},", "mem_discount_id = #{memDiscountId,jdbcType=BIGINT},",
"mem_discount_name = #{memDiscountName,jdbcType=VARCHAR},", "mem_discount_name = #{memDiscountName,jdbcType=VARCHAR},",

@ -40,22 +40,6 @@ public class HighOrderSqlProvider {
sql.VALUES("company_name", "#{companyName,jdbcType=VARCHAR}"); sql.VALUES("company_name", "#{companyName,jdbcType=VARCHAR}");
} }
if (record.getMerId() != null) {
sql.VALUES("mer_id", "#{merId,jdbcType=BIGINT}");
}
if (record.getMerName() != null) {
sql.VALUES("mer_name", "#{merName,jdbcType=VARCHAR}");
}
if (record.getStoreId() != null) {
sql.VALUES("store_id", "#{storeId,jdbcType=BIGINT}");
}
if (record.getStoreName() != null) {
sql.VALUES("store_name", "#{storeName,jdbcType=VARCHAR}");
}
if (record.getPromoteCode() != null) { if (record.getPromoteCode() != null) {
sql.VALUES("promote_code", "#{promoteCode,jdbcType=VARCHAR}"); sql.VALUES("promote_code", "#{promoteCode,jdbcType=VARCHAR}");
} }
@ -233,10 +217,6 @@ public class HighOrderSqlProvider {
sql.SELECT("product_type"); sql.SELECT("product_type");
sql.SELECT("company_id"); sql.SELECT("company_id");
sql.SELECT("company_name"); sql.SELECT("company_name");
sql.SELECT("mer_id");
sql.SELECT("mer_name");
sql.SELECT("store_id");
sql.SELECT("store_name");
sql.SELECT("promote_code"); sql.SELECT("promote_code");
sql.SELECT("mem_discount_id"); sql.SELECT("mem_discount_id");
sql.SELECT("mem_discount_name"); sql.SELECT("mem_discount_name");
@ -311,22 +291,6 @@ public class HighOrderSqlProvider {
sql.SET("company_name = #{record.companyName,jdbcType=VARCHAR}"); sql.SET("company_name = #{record.companyName,jdbcType=VARCHAR}");
} }
if (record.getMerId() != null) {
sql.SET("mer_id = #{record.merId,jdbcType=BIGINT}");
}
if (record.getMerName() != null) {
sql.SET("mer_name = #{record.merName,jdbcType=VARCHAR}");
}
if (record.getStoreId() != null) {
sql.SET("store_id = #{record.storeId,jdbcType=BIGINT}");
}
if (record.getStoreName() != null) {
sql.SET("store_name = #{record.storeName,jdbcType=VARCHAR}");
}
if (record.getPromoteCode() != null) { if (record.getPromoteCode() != null) {
sql.SET("promote_code = #{record.promoteCode,jdbcType=VARCHAR}"); sql.SET("promote_code = #{record.promoteCode,jdbcType=VARCHAR}");
} }
@ -503,10 +467,6 @@ public class HighOrderSqlProvider {
sql.SET("product_type = #{record.productType,jdbcType=INTEGER}"); sql.SET("product_type = #{record.productType,jdbcType=INTEGER}");
sql.SET("company_id = #{record.companyId,jdbcType=BIGINT}"); sql.SET("company_id = #{record.companyId,jdbcType=BIGINT}");
sql.SET("company_name = #{record.companyName,jdbcType=VARCHAR}"); sql.SET("company_name = #{record.companyName,jdbcType=VARCHAR}");
sql.SET("mer_id = #{record.merId,jdbcType=BIGINT}");
sql.SET("mer_name = #{record.merName,jdbcType=VARCHAR}");
sql.SET("store_id = #{record.storeId,jdbcType=BIGINT}");
sql.SET("store_name = #{record.storeName,jdbcType=VARCHAR}");
sql.SET("promote_code = #{record.promoteCode,jdbcType=VARCHAR}"); sql.SET("promote_code = #{record.promoteCode,jdbcType=VARCHAR}");
sql.SET("mem_discount_id = #{record.memDiscountId,jdbcType=BIGINT}"); sql.SET("mem_discount_id = #{record.memDiscountId,jdbcType=BIGINT}");
sql.SET("mem_discount_name = #{record.memDiscountName,jdbcType=VARCHAR}"); sql.SET("mem_discount_name = #{record.memDiscountName,jdbcType=VARCHAR}");
@ -570,22 +530,6 @@ public class HighOrderSqlProvider {
sql.SET("company_name = #{companyName,jdbcType=VARCHAR}"); sql.SET("company_name = #{companyName,jdbcType=VARCHAR}");
} }
if (record.getMerId() != null) {
sql.SET("mer_id = #{merId,jdbcType=BIGINT}");
}
if (record.getMerName() != null) {
sql.SET("mer_name = #{merName,jdbcType=VARCHAR}");
}
if (record.getStoreId() != null) {
sql.SET("store_id = #{storeId,jdbcType=BIGINT}");
}
if (record.getStoreName() != null) {
sql.SET("store_name = #{storeName,jdbcType=VARCHAR}");
}
if (record.getPromoteCode() != null) { if (record.getPromoteCode() != null) {
sql.SET("promote_code = #{promoteCode,jdbcType=VARCHAR}"); sql.SET("promote_code = #{promoteCode,jdbcType=VARCHAR}");
} }

@ -220,6 +220,11 @@ public class HighGasOrder implements Serializable {
*/ */
private Date createTime; private Date createTime;
/**
* 取消时间
*/
private Date cancelTime;
/** /**
* 支付时间 * 支付时间
*/ */
@ -574,6 +579,14 @@ public class HighGasOrder implements Serializable {
this.createTime = createTime; this.createTime = createTime;
} }
public Date getCancelTime() {
return cancelTime;
}
public void setCancelTime(Date cancelTime) {
this.cancelTime = cancelTime;
}
public Date getPayTime() { public Date getPayTime() {
return payTime; return payTime;
} }
@ -706,6 +719,7 @@ public class HighGasOrder implements Serializable {
&& (this.getGasOrgName() == null ? other.getGasOrgName() == null : this.getGasOrgName().equals(other.getGasOrgName())) && (this.getGasOrgName() == null ? other.getGasOrgName() == null : this.getGasOrgName().equals(other.getGasOrgName()))
&& (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus())) && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
&& (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime())) && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
&& (this.getCancelTime() == null ? other.getCancelTime() == null : this.getCancelTime().equals(other.getCancelTime()))
&& (this.getPayTime() == null ? other.getPayTime() == null : this.getPayTime().equals(other.getPayTime())) && (this.getPayTime() == null ? other.getPayTime() == null : this.getPayTime().equals(other.getPayTime()))
&& (this.getFinishTime() == null ? other.getFinishTime() == null : this.getFinishTime().equals(other.getFinishTime())) && (this.getFinishTime() == null ? other.getFinishTime() == null : this.getFinishTime().equals(other.getFinishTime()))
&& (this.getRefundTime() == null ? other.getRefundTime() == null : this.getRefundTime().equals(other.getRefundTime())) && (this.getRefundTime() == null ? other.getRefundTime() == null : this.getRefundTime().equals(other.getRefundTime()))
@ -762,6 +776,7 @@ public class HighGasOrder implements Serializable {
result = prime * result + ((getGasOrgName() == null) ? 0 : getGasOrgName().hashCode()); result = prime * result + ((getGasOrgName() == null) ? 0 : getGasOrgName().hashCode());
result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode()); result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode()); result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
result = prime * result + ((getCancelTime() == null) ? 0 : getCancelTime().hashCode());
result = prime * result + ((getPayTime() == null) ? 0 : getPayTime().hashCode()); result = prime * result + ((getPayTime() == null) ? 0 : getPayTime().hashCode());
result = prime * result + ((getFinishTime() == null) ? 0 : getFinishTime().hashCode()); result = prime * result + ((getFinishTime() == null) ? 0 : getFinishTime().hashCode());
result = prime * result + ((getRefundTime() == null) ? 0 : getRefundTime().hashCode()); result = prime * result + ((getRefundTime() == null) ? 0 : getRefundTime().hashCode());
@ -821,6 +836,7 @@ public class HighGasOrder implements Serializable {
sb.append(", gasOrgName=").append(gasOrgName); sb.append(", gasOrgName=").append(gasOrgName);
sb.append(", status=").append(status); sb.append(", status=").append(status);
sb.append(", createTime=").append(createTime); sb.append(", createTime=").append(createTime);
sb.append(", cancelTime=").append(cancelTime);
sb.append(", payTime=").append(payTime); sb.append(", payTime=").append(payTime);
sb.append(", finishTime=").append(finishTime); sb.append(", finishTime=").append(finishTime);
sb.append(", refundTime=").append(refundTime); sb.append(", refundTime=").append(refundTime);

@ -2656,6 +2656,66 @@ public class HighGasOrderExample {
return (Criteria) this; return (Criteria) this;
} }
public Criteria andCancelTimeIsNull() {
addCriterion("cancel_time is null");
return (Criteria) this;
}
public Criteria andCancelTimeIsNotNull() {
addCriterion("cancel_time is not null");
return (Criteria) this;
}
public Criteria andCancelTimeEqualTo(Date value) {
addCriterion("cancel_time =", value, "cancelTime");
return (Criteria) this;
}
public Criteria andCancelTimeNotEqualTo(Date value) {
addCriterion("cancel_time <>", value, "cancelTime");
return (Criteria) this;
}
public Criteria andCancelTimeGreaterThan(Date value) {
addCriterion("cancel_time >", value, "cancelTime");
return (Criteria) this;
}
public Criteria andCancelTimeGreaterThanOrEqualTo(Date value) {
addCriterion("cancel_time >=", value, "cancelTime");
return (Criteria) this;
}
public Criteria andCancelTimeLessThan(Date value) {
addCriterion("cancel_time <", value, "cancelTime");
return (Criteria) this;
}
public Criteria andCancelTimeLessThanOrEqualTo(Date value) {
addCriterion("cancel_time <=", value, "cancelTime");
return (Criteria) this;
}
public Criteria andCancelTimeIn(List<Date> values) {
addCriterion("cancel_time in", values, "cancelTime");
return (Criteria) this;
}
public Criteria andCancelTimeNotIn(List<Date> values) {
addCriterion("cancel_time not in", values, "cancelTime");
return (Criteria) this;
}
public Criteria andCancelTimeBetween(Date value1, Date value2) {
addCriterion("cancel_time between", value1, value2, "cancelTime");
return (Criteria) this;
}
public Criteria andCancelTimeNotBetween(Date value1, Date value2) {
addCriterion("cancel_time not between", value1, value2, "cancelTime");
return (Criteria) this;
}
public Criteria andPayTimeIsNull() { public Criteria andPayTimeIsNull() {
addCriterion("pay_time is null"); addCriterion("pay_time is null");
return (Criteria) this; return (Criteria) this;

@ -44,26 +44,6 @@ public class HighOrder implements Serializable {
*/ */
private String companyName; private String companyName;
/**
* 商户id
*/
private Long merId;
/**
* 商户名称
*/
private String merName;
/**
* 门店id
*/
private Long storeId;
/**
* 门店名称
*/
private String storeName;
/** /**
* 推广码 * 推广码
*/ */
@ -251,6 +231,8 @@ public class HighOrder implements Serializable {
private String ext6; private String ext6;
private static final long serialVersionUID = 1L;
private List<HighChildOrder> highChildOrderList; private List<HighChildOrder> highChildOrderList;
public List<HighChildOrder> getHighChildOrderList() { public List<HighChildOrder> getHighChildOrderList() {
@ -261,8 +243,6 @@ public class HighOrder implements Serializable {
this.highChildOrderList = highChildOrderList; this.highChildOrderList = highChildOrderList;
} }
private static final long serialVersionUID = 1L;
public Long getId() { public Long getId() {
return id; return id;
} }
@ -295,38 +275,6 @@ public class HighOrder implements Serializable {
this.companyName = companyName; this.companyName = companyName;
} }
public Long getMerId() {
return merId;
}
public void setMerId(Long merId) {
this.merId = merId;
}
public String getMerName() {
return merName;
}
public void setMerName(String merName) {
this.merName = merName;
}
public Long getStoreId() {
return storeId;
}
public void setStoreId(Long storeId) {
this.storeId = storeId;
}
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
public String getPromoteCode() { public String getPromoteCode() {
return promoteCode; return promoteCode;
} }
@ -671,10 +619,6 @@ public class HighOrder implements Serializable {
&& (this.getProductType() == null ? other.getProductType() == null : this.getProductType().equals(other.getProductType())) && (this.getProductType() == null ? other.getProductType() == null : this.getProductType().equals(other.getProductType()))
&& (this.getCompanyId() == null ? other.getCompanyId() == null : this.getCompanyId().equals(other.getCompanyId())) && (this.getCompanyId() == null ? other.getCompanyId() == null : this.getCompanyId().equals(other.getCompanyId()))
&& (this.getCompanyName() == null ? other.getCompanyName() == null : this.getCompanyName().equals(other.getCompanyName())) && (this.getCompanyName() == null ? other.getCompanyName() == null : this.getCompanyName().equals(other.getCompanyName()))
&& (this.getMerId() == null ? other.getMerId() == null : this.getMerId().equals(other.getMerId()))
&& (this.getMerName() == null ? other.getMerName() == null : this.getMerName().equals(other.getMerName()))
&& (this.getStoreId() == null ? other.getStoreId() == null : this.getStoreId().equals(other.getStoreId()))
&& (this.getStoreName() == null ? other.getStoreName() == null : this.getStoreName().equals(other.getStoreName()))
&& (this.getPromoteCode() == null ? other.getPromoteCode() == null : this.getPromoteCode().equals(other.getPromoteCode())) && (this.getPromoteCode() == null ? other.getPromoteCode() == null : this.getPromoteCode().equals(other.getPromoteCode()))
&& (this.getMemDiscountId() == null ? other.getMemDiscountId() == null : this.getMemDiscountId().equals(other.getMemDiscountId())) && (this.getMemDiscountId() == null ? other.getMemDiscountId() == null : this.getMemDiscountId().equals(other.getMemDiscountId()))
&& (this.getMemDiscountName() == null ? other.getMemDiscountName() == null : this.getMemDiscountName().equals(other.getMemDiscountName())) && (this.getMemDiscountName() == null ? other.getMemDiscountName() == null : this.getMemDiscountName().equals(other.getMemDiscountName()))
@ -726,10 +670,6 @@ public class HighOrder implements Serializable {
result = prime * result + ((getProductType() == null) ? 0 : getProductType().hashCode()); result = prime * result + ((getProductType() == null) ? 0 : getProductType().hashCode());
result = prime * result + ((getCompanyId() == null) ? 0 : getCompanyId().hashCode()); result = prime * result + ((getCompanyId() == null) ? 0 : getCompanyId().hashCode());
result = prime * result + ((getCompanyName() == null) ? 0 : getCompanyName().hashCode()); result = prime * result + ((getCompanyName() == null) ? 0 : getCompanyName().hashCode());
result = prime * result + ((getMerId() == null) ? 0 : getMerId().hashCode());
result = prime * result + ((getMerName() == null) ? 0 : getMerName().hashCode());
result = prime * result + ((getStoreId() == null) ? 0 : getStoreId().hashCode());
result = prime * result + ((getStoreName() == null) ? 0 : getStoreName().hashCode());
result = prime * result + ((getPromoteCode() == null) ? 0 : getPromoteCode().hashCode()); result = prime * result + ((getPromoteCode() == null) ? 0 : getPromoteCode().hashCode());
result = prime * result + ((getMemDiscountId() == null) ? 0 : getMemDiscountId().hashCode()); result = prime * result + ((getMemDiscountId() == null) ? 0 : getMemDiscountId().hashCode());
result = prime * result + ((getMemDiscountName() == null) ? 0 : getMemDiscountName().hashCode()); result = prime * result + ((getMemDiscountName() == null) ? 0 : getMemDiscountName().hashCode());
@ -784,10 +724,6 @@ public class HighOrder implements Serializable {
sb.append(", productType=").append(productType); sb.append(", productType=").append(productType);
sb.append(", companyId=").append(companyId); sb.append(", companyId=").append(companyId);
sb.append(", companyName=").append(companyName); sb.append(", companyName=").append(companyName);
sb.append(", merId=").append(merId);
sb.append(", merName=").append(merName);
sb.append(", storeId=").append(storeId);
sb.append(", storeName=").append(storeName);
sb.append(", promoteCode=").append(promoteCode); sb.append(", promoteCode=").append(promoteCode);
sb.append(", memDiscountId=").append(memDiscountId); sb.append(", memDiscountId=").append(memDiscountId);
sb.append(", memDiscountName=").append(memDiscountName); sb.append(", memDiscountName=").append(memDiscountName);

@ -376,266 +376,6 @@ public class HighOrderExample {
return (Criteria) this; return (Criteria) this;
} }
public Criteria andMerIdIsNull() {
addCriterion("mer_id is null");
return (Criteria) this;
}
public Criteria andMerIdIsNotNull() {
addCriterion("mer_id is not null");
return (Criteria) this;
}
public Criteria andMerIdEqualTo(Long value) {
addCriterion("mer_id =", value, "merId");
return (Criteria) this;
}
public Criteria andMerIdNotEqualTo(Long value) {
addCriterion("mer_id <>", value, "merId");
return (Criteria) this;
}
public Criteria andMerIdGreaterThan(Long value) {
addCriterion("mer_id >", value, "merId");
return (Criteria) this;
}
public Criteria andMerIdGreaterThanOrEqualTo(Long value) {
addCriterion("mer_id >=", value, "merId");
return (Criteria) this;
}
public Criteria andMerIdLessThan(Long value) {
addCriterion("mer_id <", value, "merId");
return (Criteria) this;
}
public Criteria andMerIdLessThanOrEqualTo(Long value) {
addCriterion("mer_id <=", value, "merId");
return (Criteria) this;
}
public Criteria andMerIdIn(List<Long> values) {
addCriterion("mer_id in", values, "merId");
return (Criteria) this;
}
public Criteria andMerIdNotIn(List<Long> values) {
addCriterion("mer_id not in", values, "merId");
return (Criteria) this;
}
public Criteria andMerIdBetween(Long value1, Long value2) {
addCriterion("mer_id between", value1, value2, "merId");
return (Criteria) this;
}
public Criteria andMerIdNotBetween(Long value1, Long value2) {
addCriterion("mer_id not between", value1, value2, "merId");
return (Criteria) this;
}
public Criteria andMerNameIsNull() {
addCriterion("mer_name is null");
return (Criteria) this;
}
public Criteria andMerNameIsNotNull() {
addCriterion("mer_name is not null");
return (Criteria) this;
}
public Criteria andMerNameEqualTo(String value) {
addCriterion("mer_name =", value, "merName");
return (Criteria) this;
}
public Criteria andMerNameNotEqualTo(String value) {
addCriterion("mer_name <>", value, "merName");
return (Criteria) this;
}
public Criteria andMerNameGreaterThan(String value) {
addCriterion("mer_name >", value, "merName");
return (Criteria) this;
}
public Criteria andMerNameGreaterThanOrEqualTo(String value) {
addCriterion("mer_name >=", value, "merName");
return (Criteria) this;
}
public Criteria andMerNameLessThan(String value) {
addCriterion("mer_name <", value, "merName");
return (Criteria) this;
}
public Criteria andMerNameLessThanOrEqualTo(String value) {
addCriterion("mer_name <=", value, "merName");
return (Criteria) this;
}
public Criteria andMerNameLike(String value) {
addCriterion("mer_name like", value, "merName");
return (Criteria) this;
}
public Criteria andMerNameNotLike(String value) {
addCriterion("mer_name not like", value, "merName");
return (Criteria) this;
}
public Criteria andMerNameIn(List<String> values) {
addCriterion("mer_name in", values, "merName");
return (Criteria) this;
}
public Criteria andMerNameNotIn(List<String> values) {
addCriterion("mer_name not in", values, "merName");
return (Criteria) this;
}
public Criteria andMerNameBetween(String value1, String value2) {
addCriterion("mer_name between", value1, value2, "merName");
return (Criteria) this;
}
public Criteria andMerNameNotBetween(String value1, String value2) {
addCriterion("mer_name not between", value1, value2, "merName");
return (Criteria) this;
}
public Criteria andStoreIdIsNull() {
addCriterion("store_id is null");
return (Criteria) this;
}
public Criteria andStoreIdIsNotNull() {
addCriterion("store_id is not null");
return (Criteria) this;
}
public Criteria andStoreIdEqualTo(Long value) {
addCriterion("store_id =", value, "storeId");
return (Criteria) this;
}
public Criteria andStoreIdNotEqualTo(Long value) {
addCriterion("store_id <>", value, "storeId");
return (Criteria) this;
}
public Criteria andStoreIdGreaterThan(Long value) {
addCriterion("store_id >", value, "storeId");
return (Criteria) this;
}
public Criteria andStoreIdGreaterThanOrEqualTo(Long value) {
addCriterion("store_id >=", value, "storeId");
return (Criteria) this;
}
public Criteria andStoreIdLessThan(Long value) {
addCriterion("store_id <", value, "storeId");
return (Criteria) this;
}
public Criteria andStoreIdLessThanOrEqualTo(Long value) {
addCriterion("store_id <=", value, "storeId");
return (Criteria) this;
}
public Criteria andStoreIdIn(List<Long> values) {
addCriterion("store_id in", values, "storeId");
return (Criteria) this;
}
public Criteria andStoreIdNotIn(List<Long> values) {
addCriterion("store_id not in", values, "storeId");
return (Criteria) this;
}
public Criteria andStoreIdBetween(Long value1, Long value2) {
addCriterion("store_id between", value1, value2, "storeId");
return (Criteria) this;
}
public Criteria andStoreIdNotBetween(Long value1, Long value2) {
addCriterion("store_id not between", value1, value2, "storeId");
return (Criteria) this;
}
public Criteria andStoreNameIsNull() {
addCriterion("store_name is null");
return (Criteria) this;
}
public Criteria andStoreNameIsNotNull() {
addCriterion("store_name is not null");
return (Criteria) this;
}
public Criteria andStoreNameEqualTo(String value) {
addCriterion("store_name =", value, "storeName");
return (Criteria) this;
}
public Criteria andStoreNameNotEqualTo(String value) {
addCriterion("store_name <>", value, "storeName");
return (Criteria) this;
}
public Criteria andStoreNameGreaterThan(String value) {
addCriterion("store_name >", value, "storeName");
return (Criteria) this;
}
public Criteria andStoreNameGreaterThanOrEqualTo(String value) {
addCriterion("store_name >=", value, "storeName");
return (Criteria) this;
}
public Criteria andStoreNameLessThan(String value) {
addCriterion("store_name <", value, "storeName");
return (Criteria) this;
}
public Criteria andStoreNameLessThanOrEqualTo(String value) {
addCriterion("store_name <=", value, "storeName");
return (Criteria) this;
}
public Criteria andStoreNameLike(String value) {
addCriterion("store_name like", value, "storeName");
return (Criteria) this;
}
public Criteria andStoreNameNotLike(String value) {
addCriterion("store_name not like", value, "storeName");
return (Criteria) this;
}
public Criteria andStoreNameIn(List<String> values) {
addCriterion("store_name in", values, "storeName");
return (Criteria) this;
}
public Criteria andStoreNameNotIn(List<String> values) {
addCriterion("store_name not in", values, "storeName");
return (Criteria) this;
}
public Criteria andStoreNameBetween(String value1, String value2) {
addCriterion("store_name between", value1, value2, "storeName");
return (Criteria) this;
}
public Criteria andStoreNameNotBetween(String value1, String value2) {
addCriterion("store_name not between", value1, value2, "storeName");
return (Criteria) this;
}
public Criteria andPromoteCodeIsNull() { public Criteria andPromoteCodeIsNull() {
addCriterion("promote_code is null"); addCriterion("promote_code is null");
return (Criteria) this; return (Criteria) this;

@ -23,4 +23,10 @@ public interface OrderCancelHandleService {
*/ */
void couponHandle(HighChildOrder childOrder) ; void couponHandle(HighChildOrder childOrder) ;
/**
* 加油业务
* @param childOrder
*/
void oilHandle(HighChildOrder childOrder) ;
} }

@ -2,6 +2,10 @@ package com.hai.order.service;
import com.hai.entity.HighChildOrder; import com.hai.entity.HighChildOrder;
import com.hai.entity.HighOrder; import com.hai.entity.HighOrder;
import com.hai.entity.HighUserCard;
import com.hai.order.type.OrderPayType;
import java.math.BigDecimal;
/** /**
* 订单支付成功业务 * 订单支付成功业务
@ -13,28 +17,12 @@ public interface OrderPaySuccessService {
/** /**
* 订单支付成功业务 * 订单支付成功业务
* @param order * @param orderNo 交易订单号
* @return * @param paySerialNo 第三方交易订单号
*/ * @param payRealPrice 实付金额
HighOrder orderPaySuccessHandle(HighOrder order); * @param userCard 用户卡
/**
* 异步处理订单支付成功业务
* @param order
* @return * @return
*/ */
void asyncOrderPaySuccess(HighOrder order); HighOrder orderPaySuccessHandle(String orderNo, OrderPayType payType, String paySerialNo, BigDecimal payRealPrice, HighUserCard userCard);
/**
* 卡券业务
* @param childOrder
*/
void couponHandle(HighOrder order,HighChildOrder childOrder) throws Exception;
/**
* 积分充值
* @param childOrder
*/
void integralRecharge(HighOrder order,HighChildOrder childOrder);
} }

@ -2,11 +2,15 @@ package com.hai.order.service.impl;
import com.hai.entity.HighChildOrder; import com.hai.entity.HighChildOrder;
import com.hai.entity.HighCouponCode; import com.hai.entity.HighCouponCode;
import com.hai.entity.HighGasOrder;
import com.hai.order.service.OrderCancelHandleService; import com.hai.order.service.OrderCancelHandleService;
import com.hai.order.type.OrderChildStatus;
import com.hai.service.HighCouponCodeService; import com.hai.service.HighCouponCodeService;
import com.hai.service.HighGasOrderService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Date;
/** /**
* @className: CancelOrderBusServiceImpl * @className: CancelOrderBusServiceImpl
@ -19,6 +23,9 @@ public class OrderCancelHandleServiceImpl implements OrderCancelHandleService {
@Resource @Resource
private HighCouponCodeService couponCodeService; private HighCouponCodeService couponCodeService;
@Resource
private HighGasOrderService gasOrderService;
@Override @Override
public void couponHandle(HighChildOrder childOrder) { public void couponHandle(HighChildOrder childOrder) {
// 解除兑换码与订单的关系 // 解除兑换码与订单的关系
@ -29,4 +36,15 @@ public class OrderCancelHandleServiceImpl implements OrderCancelHandleService {
couponCodeService.updateCouponCode(couponCode); couponCodeService.updateCouponCode(couponCode);
} }
} }
@Override
public void oilHandle(HighChildOrder childOrder) {
// 查询加油订单
HighGasOrder gasOrder = gasOrderService.getDetailByChildOrderNo(childOrder.getChildOrderNo());
if (gasOrder != null) {
gasOrder.setCancelTime(new Date());
gasOrder.setStatus(OrderChildStatus.STATUS5.getNumber());
gasOrderService.updateGasOrder(gasOrder);
}
}
} }

@ -78,6 +78,9 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService {
@Resource @Resource
private HighMerchantAccountMarketingService merchantAccountMarketingService; private HighMerchantAccountMarketingService merchantAccountMarketingService;
@Resource
private HighGasOrderService gasOrderService;
@Resource @Resource
private HighGasClassGroupTaskService gasClassGroupTaskService; private HighGasClassGroupTaskService gasClassGroupTaskService;
@ -198,15 +201,18 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService {
// 赠送卡卷是否有库存,没有就不赠送 // 赠送卡卷是否有库存,没有就不赠送
if (couponService.assignOrderStock(handselCoupon.getId(), handselChildOrderNo) != null) { if (couponService.assignOrderStock(handselCoupon.getId(), handselChildOrderNo) != null) {
// 生成交易子订单
childOrder= new HighChildOrder(); childOrder= new HighChildOrder();
childOrder.setMemId(createOrderChild.getMemId()); childOrder.setMemId(createOrderChild.getMemId());
childOrder.setMemName(createOrderChild.getMemName());
childOrder.setMemPhone(createOrderChild.getMemPhone());
childOrder.setChildOrderNo(handselChildOrderNo); childOrder.setChildOrderNo(handselChildOrderNo);
childOrder.setGoodsType(OrderChildGoodsType.TYPE1.getNumber()); childOrder.setGoodsType(OrderChildGoodsType.TYPE1.getNumber());
childOrder.setGoodsId(handselCoupon.getId()); childOrder.setGoodsId(handselCoupon.getId());
childOrder.setGoodsName(handselCoupon.getCouponName()); childOrder.setGoodsName(handselCoupon.getCouponName());
childOrder.setGoodsImg(handselCoupon.getCouponImg()); childOrder.setGoodsImg(handselCoupon.getCouponImg());
childOrder.setGoodsSpecName("默认"); childOrder.setGoodsSpecName("默认");
childOrder.setGoodsPrice(handselCoupon.getSalesPrice()); childOrder.setGoodsPrice(new BigDecimal("0"));
childOrder.setGoodsActualPrice(new BigDecimal("0")); childOrder.setGoodsActualPrice(new BigDecimal("0"));
childOrder.setSaleCount(1); childOrder.setSaleCount(1);
childOrder.setGiveawayType(true); childOrder.setGiveawayType(true);
@ -214,6 +220,7 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService {
childOrder.setPraiseStatus(0); childOrder.setPraiseStatus(0);
childOrder.setTotalPrice(childOrder.getGoodsPrice().multiply(new BigDecimal(childOrder.getSaleCount().toString()))); childOrder.setTotalPrice(childOrder.getGoodsPrice().multiply(new BigDecimal(childOrder.getSaleCount().toString())));
childOrder.setTotalActualPrice(childOrder.getGoodsActualPrice().multiply(new BigDecimal(childOrder.getSaleCount().toString()))); childOrder.setTotalActualPrice(childOrder.getGoodsActualPrice().multiply(new BigDecimal(childOrder.getSaleCount().toString())));
childOrder.setCreateTime(new Date());
childOrderList.add(childOrder); childOrderList.add(childOrder);
} }
} }
@ -295,39 +302,46 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService {
childOrder.setGoodsName(store.getStoreName()); childOrder.setGoodsName(store.getStoreName());
childOrder.setGoodsImg(store.getStoreLogo()); childOrder.setGoodsImg(store.getStoreLogo());
childOrder.setGoodsSpecName("默认"); childOrder.setGoodsSpecName("默认");
childOrder.setGoodsPrice(priceModel.getOilLiters()); childOrder.setGoodsPrice(priceModel.getOilingPrice());
childOrder.setGoodsActualPrice(priceModel.getPayPrice()); childOrder.setGoodsActualPrice(priceModel.getPayPrice());
childOrder.setSaleCount(createOrderChild.getSaleCount()); childOrder.setSaleCount(createOrderChild.getSaleCount());
childOrder.setGiveawayType(false); childOrder.setGiveawayType(false);
childOrder.setChildOrderStatus(OrderChildStatus.STATUS1.getNumber()); childOrder.setChildOrderStatus(OrderChildStatus.STATUS1.getNumber());
childOrder.setTotalPrice(new BigDecimal(childOrder.getSaleCount().toString()).multiply(childOrder.getGoodsPrice())); childOrder.setTotalPrice(new BigDecimal(childOrder.getSaleCount().toString()).multiply(childOrder.getGoodsPrice()));
childOrder.setTotalActualPrice(new BigDecimal(childOrder.getSaleCount().toString()).multiply(childOrder.getGoodsActualPrice())); childOrder.setTotalActualPrice(new BigDecimal(childOrder.getSaleCount().toString()).multiply(childOrder.getGoodsActualPrice()));
childOrder.setSurplusRefundNum(childOrder.getSaleCount());
childOrder.setSurplusRefundPrice(new BigDecimal("0"));
childOrder.setSurplusRefundIntegral(0);
childOrder.setPraiseStatus(0); childOrder.setPraiseStatus(0);
childOrder.setCreateTime(new Date()); childOrder.setCreateTime(new Date());
// 生成加油订单 // 生成加油订单
HighGasOrder gasOrder = new HighGasOrder(); HighGasOrder gasOrder = new HighGasOrder();
gasOrder.setChannelType(store.getSourceType());
gasOrder.setOrderNo(order.getOrderNo()); gasOrder.setOrderNo(order.getOrderNo());
gasOrder.setChildOrderNo(createOrderChild.getOrderNo()); gasOrder.setChildOrderNo(childOrder.getChildOrderNo());
gasOrder.setMemId(childOrder.getMemId()); gasOrder.setMemId(childOrder.getMemId());
gasOrder.setMemPhone(childOrder.getMemPhone()); gasOrder.setMemPhone(childOrder.getMemPhone());
gasOrder.setMerId(store.getMerchantId()); gasOrder.setMerId(store.getMerchantId());
gasOrder.setMerName(merchant.getMerchantName()); gasOrder.setMerName(merchant.getMerchantName());
gasOrder.setStoreId(store.getId()); gasOrder.setStoreId(store.getId());
gasOrder.setStoreName(store.getStoreName()); gasOrder.setStoreName(store.getStoreName());
gasOrder.setGasRefuelPrice(childOrder.getGoodsPrice());
gasOrder.setGasOilNo(createOrderChild.getGasOilNo()); gasOrder.setGasOilNo(createOrderChild.getGasOilNo());
gasOrder.setGasGunNo(createOrderChild.getGasGunNo()); gasOrder.setGasGunNo(createOrderChild.getGasGunNo());
gasOrder.setGasOilType(Integer.parseInt(gasOilType.getExt1())); gasOrder.setGasOilType(Integer.parseInt(gasOilType.getExt1()));
gasOrder.setStatus(OrderChildStatus.STATUS1.getNumber());
// 成本价 油站价 减 营销策略价
gasOrder.setGasPriceCost(priceModel.getPriceGun().subtract(marketingPrice));
if (marketingPrice.compareTo(new BigDecimal("0")) <= 0) {
gasOrder.setGasPriceCostTotal(gasOrder.getGasRefuelPrice());
} else {
gasOrder.setGasPriceCostTotal(gasOrder.getGasRefuelPrice().multiply(gasOrder.getGasOilLiters()).setScale(2, BigDecimal.ROUND_HALF_DOWN));
}
// 使用了优惠价 // 使用了优惠价
if (discountUserRel != null) { if (discountUserRel != null) {
// 支付价格 // 支付价格
childOrder.setGoodsActualPrice(childOrder.getGoodsPrice()); childOrder.setGoodsActualPrice(childOrder.getGoodsPrice());
// 油价信息 // 油价信息
gasOrder.setGasRefuelPrice(childOrder.getGoodsPrice());
gasOrder.setGasPriceGun(priceModel.getPriceGun()); gasOrder.setGasPriceGun(priceModel.getPriceGun());
gasOrder.setGasPriceVip(priceModel.getPriceGun()); gasOrder.setGasPriceVip(priceModel.getPriceGun());
gasOrder.setGasPriceOfficial(new BigDecimal("0")); gasOrder.setGasPriceOfficial(new BigDecimal("0"));
@ -341,7 +355,6 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService {
// 支付价格 // 支付价格
childOrder.setGoodsActualPrice(priceModel.getPayPrice()); childOrder.setGoodsActualPrice(priceModel.getPayPrice());
// 油价信息 // 油价信息
gasOrder.setGasRefuelPrice(childOrder.getGoodsPrice());
gasOrder.setGasPriceGun(priceModel.getPriceGun()); gasOrder.setGasPriceGun(priceModel.getPriceGun());
gasOrder.setGasPriceVip(priceModel.getPriceVip()); gasOrder.setGasPriceVip(priceModel.getPriceVip());
gasOrder.setGasPriceOfficial(priceModel.getPriceOfficial()); gasOrder.setGasPriceOfficial(priceModel.getPriceOfficial());
@ -371,6 +384,7 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService {
gasOrder.setGasPriceChannelPay(jzOrderObject.getJSONObject("data").getBigDecimal("paymentAmount")); gasOrder.setGasPriceChannelPay(jzOrderObject.getJSONObject("data").getBigDecimal("paymentAmount"));
} }
// 代理商
if (createOrderChild.getIsTyAgent() != null && createOrderChild.getIsTyAgent().equals(true)) { if (createOrderChild.getIsTyAgent() != null && createOrderChild.getIsTyAgent().equals(true)) {
// 查询加油站 // 查询加油站
HighTyAgentOilStation oilStation = gasTyAgentOilStationService.getDetailByOilStationId(createOrderChild.getGoodsId()); HighTyAgentOilStation oilStation = gasTyAgentOilStationService.getDetailByOilStationId(createOrderChild.getGoodsId());
@ -408,7 +422,7 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService {
} }
} }
// 查询加油站是否开启班组 // 油站是否开启班组
HighGasClassGroupTask groupTask = gasClassGroupTaskService.getCurrentTaskByStoreId(gasOrder.getStoreId()); HighGasClassGroupTask groupTask = gasClassGroupTaskService.getCurrentTaskByStoreId(gasOrder.getStoreId());
if (groupTask != null) { if (groupTask != null) {
gasOrder.setGasClassGroupId(groupTask.getGasClassGroupId()); gasOrder.setGasClassGroupId(groupTask.getGasClassGroupId());
@ -416,6 +430,7 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService {
gasOrder.setGasClassGroupTaskId(groupTask.getId()); gasOrder.setGasClassGroupTaskId(groupTask.getId());
} }
gasOrderService.addGasOrder(gasOrder);
return childOrder; return childOrder;
} }

@ -86,25 +86,14 @@ public class OrderPayServiceImpl implements OrderPayService {
if (consumptionResult.getBoolean("success") != true) { if (consumptionResult.getBoolean("success") != true) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, consumptionResult.getString("message")); throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, consumptionResult.getString("message"));
} }
order.setMemCardId(userCard.getId());
order.setMemCardNo(userCard.getCardNo());
order.setMemCardType(userCard.getType());
order.setPaySerialNo(consumptionResult.getString("orderId")); // 支付流水号
order.setPayTime(new Date());
order.setPayType(OrderPayType.PAY_TYPE4.getNumber());
order.setPayRealPrice(order.getPayPrice());
order.setOrderStatus(OrderStatus.STATUS2.getNumber());
for (HighChildOrder childOrder : order.getHighChildOrderList()) {
childOrder.setChildOrderStatus(OrderChildStatus.STATUS2.getNumber());
childOrder.setPayTime(new Date());
}
HighOrder updateOrderData = orderService.updateOrderData(order);
// 异步处理订单业务
orderPaySuccessService.asyncOrderPaySuccess(order);
return updateOrderData; // 处理订单业务
return orderPaySuccessService.orderPaySuccessHandle(
order.getOrderNo(),
OrderPayType.PAY_TYPE4,
consumptionResult.getString("orderId"),
order.getPayPrice(),
userCard);
} }
@ -118,17 +107,12 @@ public class OrderPayServiceImpl implements OrderPayService {
consumeMap.put("sourceContent", "订单号:" + order.getOrderNo() + ",消费:¥" + order.getPayPrice()); consumeMap.put("sourceContent", "订单号:" + order.getOrderNo() + ",消费:¥" + order.getPayPrice());
oilCardService.consume(userCard.getCardNo(), order.getPayPrice(), consumeMap); oilCardService.consume(userCard.getCardNo(), order.getPayPrice(), consumeMap);
order.setMemCardType(userCard.getType()); // 处理订单业务
order.setMemCardId(userCard.getId()); return orderPaySuccessService.orderPaySuccessHandle(
order.setMemCardNo(userCard.getCardNo()); order.getOrderNo(),
order.setPayTime(new Date()); OrderPayType.PAY_TYPE7,
order.setPayType(OrderPayTypeEnum.type7.getType()); null,
order.setPayRealPrice(order.getPayPrice()); order.getPayPrice(),
order.setOrderStatus(OrderStatus.STATUS2.getNumber()); userCard);
HighOrder updateOrderData = orderService.updateOrderData(order);
// 异步处理业务
orderPaySuccessService.asyncOrderPaySuccess(order);
return updateOrderData;
} }
} }

@ -1,18 +1,41 @@
package com.hai.order.service.impl; package com.hai.order.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.hai.common.exception.ErrorCode; import com.hai.common.exception.ErrorCode;
import com.hai.common.exception.ErrorHelp; import com.hai.common.exception.ErrorHelp;
import com.hai.common.exception.SysCode; import com.hai.common.exception.SysCode;
import com.hai.config.CommonSysConst;
import com.hai.config.JinZhuJiaYouService;
import com.hai.config.ShellGroupService;
import com.hai.config.TuanYouConfig;
import com.hai.entity.*; import com.hai.entity.*;
import com.hai.enum_type.*;
import com.hai.msg.entity.MsgTopic;
import com.hai.order.service.OrderPaySuccessService; import com.hai.order.service.OrderPaySuccessService;
import com.hai.order.service.OrderService; import com.hai.order.service.OrderService;
import com.hai.order.topic.OrderTopic;
import com.hai.order.type.OrderChildGoodsType; import com.hai.order.type.OrderChildGoodsType;
import com.hai.order.type.OrderChildStatus;
import com.hai.order.type.OrderPayType;
import com.hai.order.type.OrderStatus;
import com.hai.service.*; import com.hai.service.*;
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.messaging.Message;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* @className: OrderPaySuccessServiceImpl * @className: OrderPaySuccessServiceImpl
@ -22,9 +45,21 @@ import java.util.Date;
@Service("orderPaySuccessService") @Service("orderPaySuccessService")
public class OrderPaySuccessServiceImpl implements OrderPaySuccessService { public class OrderPaySuccessServiceImpl implements OrderPaySuccessService {
@Resource
private RedisTemplate redisTemplate;
@Resource
private RocketMQTemplate rocketMQTemplate;
@Resource @Resource
private OrderService orderService; private OrderService orderService;
@Resource
private HighOrderPreService orderPreService;
@Resource
private HighMerchantStoreService merchantStoreService;
@Resource @Resource
private HighCouponService couponService; private HighCouponService couponService;
@ -32,57 +67,105 @@ public class OrderPaySuccessServiceImpl implements OrderPaySuccessService {
private HighCouponCodeService couponCodeService; private HighCouponCodeService couponCodeService;
@Resource @Resource
private HighOrderPreService orderPreService; private HighUserService userService;
@Resource @Resource
private HighUserService userService; private HighGasOrderService gasOrderService;
@Resource
private ShellGroupService shellGroupService;
@Resource
private JinZhuJiaYouService jinZhuJiaYouService;
@Override @Override
public HighOrder orderPaySuccessHandle(HighOrder order) { public HighOrder orderPaySuccessHandle(String orderNo, OrderPayType payType, String paySerialNo, BigDecimal payRealPrice, HighUserCard userCard) {
HighOrder order = orderService.getOrderDetailByNo(orderNo);
try { try {
for (HighChildOrder childOrder : order.getHighChildOrderList()) { if (order != null && order.getOrderStatus().equals(OrderStatus.STATUS2.getNumber())) {
if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE1.getNumber())) { order.setPaySerialNo(paySerialNo);
couponHandle(order, childOrder); order.setPayRealPrice(payRealPrice);
order.setPayTime(new Date());
order.setPayType(payType != null?payType.getNumber():null);
order.setOrderStatus(OrderStatusEnum.type2.getType());
if (userCard != null) {
order.setMemCardId(userCard.getId());
order.setMemCardNo(userCard.getCardNo());
order.setMemCardType(userCard.getType());
}
for (HighChildOrder childOrder : order.getHighChildOrderList()) {
childOrder.setPayTime(new Date());
childOrder.setChildOrderStatus(OrderChildStatus.STATUS2.getNumber());
}
orderService.updateOrderData(order);
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE2.getNumber())) { // 分账业务
if (order.getProfitSharingStatus() == true) {
// 延迟3分钟
Message<HighOrder> rocketMsg = MessageBuilder.withPayload(order).build();
rocketMQTemplate.syncSend(OrderTopic.ORDER_TOPIC_PROFIT_SHARING.getTopic(), rocketMsg, 1000,7);
}
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE3.getNumber())) { // 处理订单产品业务
orderBusHandle(order);
}
return order;
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE4.getNumber())) { } catch (Exception e) {
if (order != null) {
order.setExceptionStatus(true);
order.setExceptionContent(e.getMessage());
orderService.updateOrderData(order);
}
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, e.getMessage());
}
}
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE5.getNumber())) { /**
* 订单业务处理
* @param order
* @throws Exception
*/
@Transactional(
propagation= Propagation.REQUIRES_NEW,
isolation = Isolation.READ_COMMITTED,
timeout = 10,
rollbackFor = Exception.class)
public void orderBusHandle(HighOrder order) throws Exception {
for (HighChildOrder childOrder : order.getHighChildOrderList()) {
if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE1.getNumber())) {
couponHandle(order, childOrder);
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE6.getNumber())) { } else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE2.getNumber())) {
integralHandle(order,childOrder);
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE7.getNumber())) { } else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE3.getNumber())) {
oilHandle(order,childOrder);
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE8.getNumber())) { } else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE4.getNumber())) {
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE9.getNumber())) { } else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE5.getNumber())) {
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE10.getNumber())) { } else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE6.getNumber())) {
} } else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE7.getNumber())) {
}
return order; } else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE8.getNumber())) {
} catch (Exception e) { } else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE9.getNumber())) {
order.setExceptionStatus(true);
order.setExceptionContent(e.getMessage());
orderService.updateOrderData(order);
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, e.getMessage());
}
}
@Override } else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE10.getNumber())) {
public void asyncOrderPaySuccess(HighOrder order) {
new Thread(() -> { }
orderPaySuccessHandle(order); }
});
} }
@Override /**
* 卡券业务
* @param order
* @param childOrder
* @throws Exception
*/
public void couponHandle(HighOrder order,HighChildOrder childOrder) throws Exception { public void couponHandle(HighOrder order,HighChildOrder childOrder) throws Exception {
HighCoupon coupon = couponService.getCouponById(childOrder.getGoodsId()); HighCoupon coupon = couponService.getCouponById(childOrder.getGoodsId());
// 是否预约 // 是否预约
@ -112,11 +195,93 @@ public class OrderPaySuccessServiceImpl implements OrderPaySuccessService {
} }
@Override /**
public void integralRecharge(HighOrder order,HighChildOrder childOrder) { * 积分充值业务
* @param order
* @param childOrder
*/
public void integralHandle(HighOrder order,HighChildOrder childOrder) {
// 金币 1:100 // 金币 1:100
Integer goldNum = new BigDecimal(childOrder.getTotalPrice().toString()).multiply(new BigDecimal("100")).intValue(); Integer goldNum = new BigDecimal(childOrder.getTotalPrice().toString()).multiply(new BigDecimal("100")).intValue();
String remark = "订单" + order.getOrderNo() + "积分充值积分:" + goldNum; String remark = "订单" + order.getOrderNo() + "积分充值积分:" + goldNum;
userService.goldHandle(childOrder.getGoodsId(), goldNum, 1, 1, childOrder.getId() , remark); userService.goldHandle(childOrder.getGoodsId(), goldNum, 1, 1, childOrder.getId() , remark);
} }
/**
* 加油业务
* @param order
* @param childOrder
*/
public void oilHandle(HighOrder order,HighChildOrder childOrder) throws Exception {
// 查询加油订单
HighGasOrder gasOrder = gasOrderService.getDetailByChildOrderNo(childOrder.getChildOrderNo());
if (gasOrder != null) {
gasOrder.setPayTime(new Date());
gasOrder.setStatus(OrderChildStatus.STATUS2.getNumber());
gasOrderService.updateGasOrder(gasOrder);
// 查询油站
HighMerchantStore store = merchantStoreService.getDetailById(gasOrder.getStoreId());
if (store == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到门店");
}
if (gasOrder.getChannelType().equals(MerchantStoreSourceType.type1.getNumber())) {
// 预存类型 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", childOrder.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 (gasOrder.getChannelType().equals(MerchantStoreSourceType.type2.getNumber())) {
// 推送团油订单
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("gasId", store.getStoreKey());
paramMap.put("oilNo", gasOrder.getGasOilNo());
paramMap.put("gunNo", gasOrder.getGasGunNo());
paramMap.put("priceGun", gasOrder.getGasPriceGun()); // 枪单价
paramMap.put("priceVip", gasOrder.getGasPriceVip()); // 优惠价
paramMap.put("driverPhone", gasOrder.getMemPhone());
paramMap.put("thirdSerialNo", gasOrder.getOrderNo());
paramMap.put("refuelingAmount", gasOrder.getGasRefuelPrice());
// 油品类型 1:汽油:2:柴油;3:天然气
if (gasOrder.getGasOilType() == 1) {
paramMap.put("accountNo", CommonSysConst.getSysConfig().getTuanYouGasolineAccount());
} else if (gasOrder.getGasOilType() == 2) {
paramMap.put("accountNo", CommonSysConst.getSysConfig().getTuanYouDieselAccount());
}
JSONObject orderPushObject = TuanYouConfig.refuelingOrderPush(paramMap);
if (orderPushObject != null && orderPushObject.getString("code").equals("200")) {
gasOrder.setChannelOrderNo(orderPushObject.getJSONObject("result").getString("orderNo"));
}
} else if (gasOrder.getChannelType().equals(MerchantStoreSourceType.type3.getNumber())) {
// 推送加好油
shellGroupService.gasSyncPayment(gasOrder.getOrderNo(),
store.getStoreKey(),
gasOrder.getPayTime(),
order.getTotalPrice(),
gasOrder.getGasOilNo(),
gasOrder.getGasGunNo(),
order.getPayablePrice(),
order.getDeductionPrice()
);
} else if (gasOrder.getChannelType().equals(MerchantStoreSourceType.type4.getNumber())) {
// 推送金猪加油
jinZhuJiaYouService.payOrder(order.getOrderNo(), gasOrder.getGasPriceChannelPay());
}
}
}
} }

@ -15,6 +15,7 @@ import com.hai.enum_type.OrderStatusEnum;
import com.hai.order.model.CreateOrderChildModel; import com.hai.order.model.CreateOrderChildModel;
import com.hai.order.model.CreateOrderModel; import com.hai.order.model.CreateOrderModel;
import com.hai.order.service.*; import com.hai.order.service.*;
import com.hai.order.topic.OrderTopic;
import com.hai.order.type.*; import com.hai.order.type.*;
import com.hai.order.utils.OrderUtil; import com.hai.order.utils.OrderUtil;
import com.hai.service.HighDiscountAgentCodeService; import com.hai.service.HighDiscountAgentCodeService;
@ -23,6 +24,8 @@ import com.hai.service.HighUserPayPasswordService;
import com.hai.service.HighUserService; import com.hai.service.HighUserService;
import org.apache.commons.collections4.MapUtils; import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.integration.support.MessageBuilder; import org.springframework.integration.support.MessageBuilder;
import org.springframework.messaging.Message; import org.springframework.messaging.Message;
@ -319,7 +322,7 @@ public class OrderServiceImpl implements OrderService {
// 订单入库前处理 // 订单入库前处理
for (HighChildOrder childOrder : order.getHighChildOrderList()) { for (HighChildOrder childOrder : order.getHighChildOrderList()) {
childOrder.setOrderNo(order.getOrderNo()); childOrder.setOrderNo(order.getOrderNo());
childOrder.setSurplusRefundNum(childOrder.getSaleCount());
// 计算子订单退款金额。 // 计算子订单退款金额。
if (order.getPayPrice().compareTo(new BigDecimal("0")) == 1) { if (order.getPayPrice().compareTo(new BigDecimal("0")) == 1) {
childOrder.setSurplusRefundPrice(childOrder.getTotalActualPrice() childOrder.setSurplusRefundPrice(childOrder.getTotalActualPrice()
@ -343,13 +346,24 @@ public class OrderServiceImpl implements OrderService {
HighOrder orderData = insertOrderData(order); HighOrder orderData = insertOrderData(order);
if (orderData.getOrderStatus().equals(OrderStatus.STATUS1.getNumber())) { if (orderData.getOrderStatus().equals(OrderStatus.STATUS1.getNumber())) {
SendCallback sendCallback = new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
System.out.println("发送成功!");
}
@Override
public void onException(Throwable throwable) {
System.out.println("发送失败!");
}
};
// 10分钟后取消订单 // 10分钟后取消订单
Message<HighOrder> rocketMsg = MessageBuilder.withPayload(order).build(); Message<HighOrder> rocketMsg = MessageBuilder.withPayload(order).build();
rocketMQTemplate.syncSend("order-topic:cancel", rocketMsg, 1000,14); rocketMQTemplate.asyncSend(OrderTopic.ORDER_TOPIC_CANCEL.getTopic(), rocketMsg, sendCallback,1000,14);
} else if (orderData.getOrderStatus().equals(OrderStatus.STATUS2.getNumber())) { } else if (orderData.getOrderStatus().equals(OrderStatus.STATUS2.getNumber())) {
// 异步处理业务 // 异步处理业务
paySuccessService.asyncOrderPaySuccess(orderData); paySuccessService.orderPaySuccessHandle(orderData.getOrderNo(), null, null, new BigDecimal("0"), null);
} }
return orderData; return orderData;
} }
@ -394,11 +408,12 @@ public class OrderServiceImpl implements OrderService {
childOrder.setChildOrderStatus(OrderChildStatus.STATUS5.getNumber()); childOrder.setChildOrderStatus(OrderChildStatus.STATUS5.getNumber());
childOrder.setCancelTime(new Date()); childOrder.setCancelTime(new Date());
// 购买卡券
if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE1.getNumber())) { if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE1.getNumber())) {
orderCancelHandleService.couponHandle(childOrder); orderCancelHandleService.couponHandle(childOrder);
// 购买优惠券包 } else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE3.getNumber())) {
orderCancelHandleService.oilHandle(childOrder);
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE7.getNumber())) { } else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE7.getNumber())) {
} }
@ -408,6 +423,11 @@ public class OrderServiceImpl implements OrderService {
} }
@Override @Override
@Transactional(
propagation= Propagation.REQUIRES_NEW,
isolation = Isolation.READ_COMMITTED,
timeout = 10,
rollbackFor = Exception.class)
public HighOrder refundOrder(String orderNo, String remarks) throws Exception { public HighOrder refundOrder(String orderNo, String remarks) throws Exception {
HighOrder order = getOrderDetailByNo(orderNo); HighOrder order = getOrderDetailByNo(orderNo);
if (!order.getOrderStatus().equals(OrderStatus.STATUS2.getNumber()) if (!order.getOrderStatus().equals(OrderStatus.STATUS2.getNumber())
@ -429,18 +449,27 @@ public class OrderServiceImpl implements OrderService {
// todo 退款金额,原路返回 // todo 退款金额,原路返回
for (HighChildOrder childOrder : order.getHighChildOrderList()) { for (HighChildOrder childOrder : order.getHighChildOrderList()) {
childOrder.setRefundRemarks(remarks); childOrder.setRefundRemarks(remarks);
childOrder.setRefundTime(new Date()); childOrder.setRefundTime(new Date());
childOrder.setChildOrderStatus(OrderChildStatus.STATUS4.getNumber()); childOrder.setChildOrderStatus(OrderChildStatus.STATUS4.getNumber());
} }
order.setSurplusRefundIntegral(0);
order.setSurplusRefundPrice(new BigDecimal("0"));
order.setRefundTime(new Date()); order.setRefundTime(new Date());
order.setOrderStatus(OrderStatus.STATUS4.getNumber()); order.setOrderStatus(OrderStatus.STATUS4.getNumber());
return updateOrderData(order); return updateOrderData(order);
} }
@Override @Override
@Transactional(
propagation= Propagation.REQUIRES_NEW,
isolation = Isolation.READ_COMMITTED,
timeout = 10,
rollbackFor = Exception.class)
public HighOrder refundChildOrder(String orderNo,String childOrderNo,Integer refundGoodsNum, String remarks) throws Exception { public HighOrder refundChildOrder(String orderNo,String childOrderNo,Integer refundGoodsNum, String remarks) throws Exception {
HighOrder order = getOrderDetailByNo(orderNo); HighOrder order = getOrderDetailByNo(orderNo);
if (order == null) { if (order == null) {
@ -469,11 +498,21 @@ public class OrderServiceImpl implements OrderService {
List<HighChildOrder> buyChildOrderList = order.getHighChildOrderList() List<HighChildOrder> buyChildOrderList = order.getHighChildOrderList()
.stream().filter(o -> o.getGiveawayType().equals(false)) .stream().filter(o -> o.getGiveawayType().equals(false))
.collect(Collectors.toList()); .collect(Collectors.toList());
// 已退款的订单列表 // 已退款的订单列表
List<HighChildOrder> refundList = buyChildOrderList.stream() List<HighChildOrder> refundList = buyChildOrderList.stream()
.filter(o -> o.getChildOrderStatus().equals(OrderChildStatus.STATUS4.getNumber())) .filter(o -> o.getChildOrderStatus().equals(OrderChildStatus.STATUS4.getNumber()))
.collect(Collectors.toList()); .collect(Collectors.toList());
Integer surplusRefundIntegral = 0;
BigDecimal surplusRefundPrice = new BigDecimal("0");
for (HighChildOrder childOrder : order.getHighChildOrderList()) {
surplusRefundIntegral = surplusRefundIntegral + childOrder.getSurplusRefundIntegral();
surplusRefundPrice = surplusRefundPrice.add(childOrder.getSurplusRefundPrice());
}
order.setSurplusRefundIntegral(surplusRefundIntegral);
order.setSurplusRefundPrice(surplusRefundPrice);
// 校验购买的订单是否都已退款 // 校验购买的订单是否都已退款
if (refundList.size() >= buyChildOrderList.size()) { if (refundList.size() >= buyChildOrderList.size()) {
order.setRefundTime(new Date()); order.setRefundTime(new Date());

@ -8,9 +8,8 @@ package com.hai.order.topic;
**/ **/
public enum OrderTopic { public enum OrderTopic {
ORDER_TOPIC("order-topic", "订单主题"), ORDER_TOPIC("order-topic", "订单主题"),
ORDER_TOPIC_CREATE(ORDER_TOPIC.getTopic() + ":create", "订单创建"),
ORDER_TOPIC_CANCEL(ORDER_TOPIC.getTopic() + ":cancel", "订单取消"), ORDER_TOPIC_CANCEL(ORDER_TOPIC.getTopic() + ":cancel", "订单取消"),
ORDER_TOPIC_BUSINESS(ORDER_TOPIC.getTopic() + ":business", "订单业务处理"), ORDER_TOPIC_PROFIT_SHARING(ORDER_TOPIC.getTopic() + ":profit-sharing", "订单分账业务"),
; ;
private String topic; private String topic;

@ -22,6 +22,11 @@ public interface HighGasOrderService {
*/ */
void updateGasOrder(HighGasOrder gasOrder); void updateGasOrder(HighGasOrder gasOrder);
/**
* 根据子订单编号获取详情
* @param childOrderNo 子订单编号
* @return
*/
HighGasOrder getDetailByChildOrderNo(String childOrderNo);
} }

@ -435,26 +435,29 @@ public class HighCouponServiceImpl implements HighCouponService {
@Override @Override
public HighCouponCode assignOrderStock(Long couponId, String childOrderNo) throws InterruptedException { public HighCouponCode assignOrderStock(Long couponId, String childOrderNo) throws InterruptedException {
String key = "coupon_" + couponId; String key = "coupon_" + couponId;
// 分布式锁占坑 try {
Boolean lock = redisTemplate.opsForValue().setIfAbsent(key, childOrderNo); // 分布式锁占坑
if(lock) { Boolean lock = redisTemplate.opsForValue().setIfAbsent(key, childOrderNo);
// 加锁成功,处理业务 if(lock) {
// 加锁成功,处理业务
// 查询一张可用的兑换码 // 查询一张可用的兑换码
HighCouponCode stockCode = highCouponCodeService.getCouponStockCode(couponId); HighCouponCode stockCode = highCouponCodeService.getCouponStockCode(couponId);
if (stockCode != null) { if (stockCode != null) {
stockCode.setChildOrderNo(childOrderNo); stockCode.setChildOrderNo(childOrderNo);
stockCode.setStatus(99); stockCode.setStatus(99);
highCouponCodeService.updateCouponCode(stockCode); highCouponCodeService.updateCouponCode(stockCode);
}
return stockCode;
} else {
// 加锁失败,重试
Thread.sleep(100);
assignOrderStock(couponId,childOrderNo);
} }
} catch (Exception e) {
return null;
} finally {
// 删除key,释放锁 // 删除key,释放锁
redisTemplate.delete(key); redisTemplate.delete(key);
return stockCode;
} else {
// 加锁失败,重试
Thread.sleep(100);
assignOrderStock(couponId,childOrderNo);
} }
return null; return null;
} }

@ -2,11 +2,13 @@ package com.hai.service.impl;
import com.hai.dao.HighGasOrderMapper; import com.hai.dao.HighGasOrderMapper;
import com.hai.entity.HighGasOrder; import com.hai.entity.HighGasOrder;
import com.hai.entity.HighGasOrderExample;
import com.hai.service.HighGasOrderService; import com.hai.service.HighGasOrderService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @className: HighGasOrderServiceImpl * @className: HighGasOrderServiceImpl
@ -29,4 +31,15 @@ public class HighGasOrderServiceImpl implements HighGasOrderService {
public void updateGasOrder(HighGasOrder gasOrder) { public void updateGasOrder(HighGasOrder gasOrder) {
gasOrderMapper.updateByPrimaryKeySelective(gasOrder); gasOrderMapper.updateByPrimaryKeySelective(gasOrder);
} }
@Override
public HighGasOrder getDetailByChildOrderNo(String childOrderNo) {
HighGasOrderExample example = new HighGasOrderExample();
example.createCriteria().andChildOrderNoEqualTo(childOrderNo);
List<HighGasOrder> list = gasOrderMapper.selectByExample(example);
if (list.size() > 0) {
return list.get(0);
}
return null;
}
} }

@ -1,5 +1,7 @@
package com.hai.service.impl; package com.hai.service.impl;
import com.alicp.jetcache.anno.CacheType;
import com.alicp.jetcache.anno.Cached;
import com.hai.common.exception.ErrorCode; import com.hai.common.exception.ErrorCode;
import com.hai.common.exception.ErrorHelp; import com.hai.common.exception.ErrorHelp;
import com.hai.common.exception.SysCode; import com.hai.common.exception.SysCode;
@ -95,6 +97,7 @@ public class HighMerchantServiceImpl implements HighMerchantService {
} }
@Override @Override
@Cached(cacheType = CacheType.BOTH, name="merchant:", key = "#id", expire = 3600*24*30) // 缓存一个月
public HighMerchant getDetailById(Long id) { public HighMerchant getDetailById(Long id) {
return highMerchantMapper.selectByPrimaryKey(id); return highMerchantMapper.selectByPrimaryKey(id);
} }

@ -1,6 +1,8 @@
package com.hai.service.impl; package com.hai.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alicp.jetcache.anno.CacheType;
import com.alicp.jetcache.anno.Cached;
import com.hai.common.exception.ErrorCode; import com.hai.common.exception.ErrorCode;
import com.hai.common.exception.ErrorHelp; import com.hai.common.exception.ErrorHelp;
import com.hai.common.exception.SysCode; import com.hai.common.exception.SysCode;
@ -179,6 +181,7 @@ public class HighMerchantStoreServiceImpl implements HighMerchantStoreService {
} }
@Override @Override
@Cached(cacheType = CacheType.BOTH, name="store:", key = "#id", expire = 3600*24*30) // 缓存一个月
public HighMerchantStore getDetailById(Long id) { public HighMerchantStore getDetailById(Long id) {
return highMerchantStoreMapper.selectByPrimaryKey(id); return highMerchantStoreMapper.selectByPrimaryKey(id);
} }

Loading…
Cancel
Save