diff --git a/hai-order/src/main/java/com/web/config/AuthConfig.java b/hai-order/src/main/java/com/web/config/AuthConfig.java index 4691e56e..ae57f712 100644 --- a/hai-order/src/main/java/com/web/config/AuthConfig.java +++ b/hai-order/src/main/java/com/web/config/AuthConfig.java @@ -90,6 +90,7 @@ public class AuthConfig implements WebMvcConfigurer { .excludePathPatterns("/**/springfox-swagger-ui/**") .excludePathPatterns("/**/swagger-ui.html") .excludePathPatterns("/login/*") + .excludePathPatterns("/payNotify/*") ; } diff --git a/hai-order/src/main/java/com/web/config/SwaggerConfig.java b/hai-order/src/main/java/com/web/config/SwaggerConfig.java index 928a7d62..02caa7a8 100644 --- a/hai-order/src/main/java/com/web/config/SwaggerConfig.java +++ b/hai-order/src/main/java/com/web/config/SwaggerConfig.java @@ -31,7 +31,7 @@ public class SwaggerConfig */ 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(); } diff --git a/hai-order/src/main/java/com/web/config/SysConfig.java b/hai-order/src/main/java/com/web/config/SysConfig.java index cc76006a..5fd90baa 100644 --- a/hai-order/src/main/java/com/web/config/SysConfig.java +++ b/hai-order/src/main/java/com/web/config/SysConfig.java @@ -12,7 +12,6 @@ import org.springframework.stereotype.Component; public class SysConfig { private String fileUrl; - private String wxPayMchAppId; private String wxPayMchId; @@ -25,4 +24,8 @@ public class SysConfig { // 微信支付回调地址 private String wxPayNotifyUrl; + // 银联支付回调地址 + private String unionPayNotifyUrl; + + } diff --git a/hai-order/src/main/java/com/web/controller/LoginController.java b/hai-order/src/main/java/com/web/controller/LoginController.java deleted file mode 100644 index ff7f0c76..00000000 --- a/hai-order/src/main/java/com/web/controller/LoginController.java +++ /dev/null @@ -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 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); - } -} diff --git a/hai-order/src/main/java/com/web/controller/OrderController.java b/hai-order/src/main/java/com/web/controller/OrderController.java index 784c87bd..a88ad785 100644 --- a/hai-order/src/main/java/com/web/controller/OrderController.java +++ b/hai-order/src/main/java/com/web/controller/OrderController.java @@ -9,6 +9,7 @@ import com.hai.common.exception.SysCode; import com.hai.common.security.UserCenter; import com.hai.common.utils.ResponseMsgUtil; import com.hai.entity.HighChildOrder; +import com.hai.entity.HighOrder; import com.hai.entity.HighUser; import com.hai.model.HighUserModel; 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.type.OrderChildGoodsType; import com.hai.order.type.OrderChildStatus; +import com.hai.order.type.OrderPayType; import com.hai.order.utils.OrderUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -30,6 +32,7 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; @@ -186,7 +189,7 @@ public class OrderController { @RequestMapping(value="/getDetailByOrderNo",method = RequestMethod.GET) @ResponseBody - @ApiOperation(value = "根据订单号查询") + @ApiOperation(value = "根据订单号查询详情") public ResponseData getDetailByOrderNo(@RequestParam(name = "orderNo", required = true) String orderNo) { try { @@ -226,7 +229,6 @@ public class OrderController { } } -/* @RequestMapping(value="/paySuccess",method = RequestMethod.POST) @ResponseBody @ApiOperation(value = "支付成功") @@ -236,12 +238,18 @@ public class OrderController { 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) { log.error("OrderController -> paySuccess() error!",e); return ResponseMsgUtil.exception(e); } - }*/ + } } diff --git a/hai-order/src/main/java/com/web/controller/OrderPayController.java b/hai-order/src/main/java/com/web/controller/OrderPayController.java index 194df09e..44dfcf5b 100644 --- a/hai-order/src/main/java/com/web/controller/OrderPayController.java +++ b/hai-order/src/main/java/com/web/controller/OrderPayController.java @@ -91,10 +91,10 @@ public class OrderPayController { @Resource private WechatPayUtil wechatPayUtil; - @RequestMapping(value="/weixinPay",method = RequestMethod.POST) + @RequestMapping(value="/wechatPay",method = RequestMethod.POST) @ResponseBody @ApiOperation(value = "微信支付") - public ResponseData weixinPay(@RequestBody JSONObject body) { + public ResponseData wechatPay(@RequestBody JSONObject body) { try { if (body == null @@ -373,7 +373,7 @@ public class OrderPayController { 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) { log.error("orderToPay error!", e); diff --git a/hai-order/src/main/java/com/web/controller/OrderPayNotifyController.java b/hai-order/src/main/java/com/web/controller/OrderPayNotifyController.java new file mode 100644 index 00000000..332aa6c3 --- /dev/null +++ b/hai-order/src/main/java/com/web/controller/OrderPayNotifyController.java @@ -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; // 微信支付系统发送的数据(格式) + notifyXml = IOUtil.inputStreamToString(request.getInputStream(), "UTF-8"); + + log.info("回调参数: " + notifyXml); + SortedMap 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=================="); + } + } + +} diff --git a/hai-order/src/main/java/com/web/rocketmq/consumer/OrderProfitSharingConsumer.java b/hai-order/src/main/java/com/web/rocketmq/consumer/OrderProfitSharingConsumer.java new file mode 100644 index 00000000..4486e940 --- /dev/null +++ b/hai-order/src/main/java/com/web/rocketmq/consumer/OrderProfitSharingConsumer.java @@ -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 { + + @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 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 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> receiversList = new ArrayList<>(); + Map 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(); + } + } +} diff --git a/hai-order/src/main/resources/dev/config.properties b/hai-order/src/main/resources/dev/config.properties index 29b3f1f3..0ac44cee 100644 --- a/hai-order/src/main/resources/dev/config.properties +++ b/hai-order/src/main/resources/dev/config.properties @@ -5,7 +5,11 @@ wxPayMchAppId=wx637bd6f7314daa46 wxPayMchId=1289663601 wxPayApiKey=Skufk5oi85wDFGl888i6wsRSTkdd5df5 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 cmsPath=F:/hurui_probject/filesystem diff --git a/hai-order/src/main/resources/dev/logback.xml b/hai-order/src/main/resources/dev/logback.xml index de5f5bae..d93f8861 100644 --- a/hai-order/src/main/resources/dev/logback.xml +++ b/hai-order/src/main/resources/dev/logback.xml @@ -56,22 +56,7 @@ UTF-8 - - - - - - - - - - - - - - - - + log/HltCardLog.log @@ -89,7 +74,39 @@ UTF-8 + + log/PayNotify.log + + log/PayNotify/PayNotify.log.%d.%i + + + 64 MB + + + + + %d %p (%file:%line\)- %m%n + + UTF-8 + + + + + + + + + + + + + + + + + diff --git a/hai-service/src/main/java/com/hai/dao/HighGasOrderMapper.java b/hai-service/src/main/java/com/hai/dao/HighGasOrderMapper.java index 564a4a7f..a7c4d974 100644 --- a/hai-service/src/main/java/com/hai/dao/HighGasOrderMapper.java +++ b/hai-service/src/main/java/com/hai/dao/HighGasOrderMapper.java @@ -58,10 +58,11 @@ public interface HighGasOrderMapper extends HighGasOrderMapperExt { "gas_agent_id, gas_agent_name, ", "gas_org_id, gas_org_name, ", "`status`, create_time, ", - "pay_time, finish_time, ", - "refund_time, refund_remarks, ", - "ext_1, ext_2, ext_3, ", - "ext_4, ext_5, ext_6)", + "cancel_time, pay_time, ", + "finish_time, refund_time, ", + "refund_remarks, ext_1, ", + "ext_2, ext_3, ext_4, ", + "ext_5, ext_6)", "values (#{orderNo,jdbcType=VARCHAR}, #{childOrderNo,jdbcType=VARCHAR}, ", "#{channelType,jdbcType=INTEGER}, #{channelOrderNo,jdbcType=VARCHAR}, ", "#{memId,jdbcType=BIGINT}, #{memPhone,jdbcType=VARCHAR}, ", @@ -81,10 +82,11 @@ public interface HighGasOrderMapper extends HighGasOrderMapperExt { "#{gasAgentId,jdbcType=BIGINT}, #{gasAgentName,jdbcType=VARCHAR}, ", "#{gasOrgId,jdbcType=BIGINT}, #{gasOrgName,jdbcType=VARCHAR}, ", "#{status,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, ", - "#{payTime,jdbcType=TIMESTAMP}, #{finishTime,jdbcType=TIMESTAMP}, ", - "#{refundTime,jdbcType=TIMESTAMP}, #{refundRemarks,jdbcType=VARCHAR}, ", - "#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR}, ", - "#{ext4,jdbcType=VARCHAR}, #{ext5,jdbcType=VARCHAR}, #{ext6,jdbcType=VARCHAR})" + "#{cancelTime,jdbcType=TIMESTAMP}, #{payTime,jdbcType=TIMESTAMP}, ", + "#{finishTime,jdbcType=TIMESTAMP}, #{refundTime,jdbcType=TIMESTAMP}, ", + "#{refundRemarks,jdbcType=VARCHAR}, #{ext1,jdbcType=VARCHAR}, ", + "#{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR}, #{ext4,jdbcType=VARCHAR}, ", + "#{ext5,jdbcType=VARCHAR}, #{ext6,jdbcType=VARCHAR})" }) @Options(useGeneratedKeys=true,keyProperty="id") int insert(HighGasOrder record); @@ -135,6 +137,7 @@ public interface HighGasOrderMapper extends HighGasOrderMapperExt { @Result(column="gas_org_name", property="gasOrgName", jdbcType=JdbcType.VARCHAR), @Result(column="status", property="status", jdbcType=JdbcType.INTEGER), @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="finish_time", property="finishTime", 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_class_group_id, gas_class_group_name, gas_class_group_task_id, gas_staff_id, ", "gas_staff_name, gas_salesman_id, gas_salesman_name, gas_agent_id, gas_agent_name, ", - "gas_org_id, gas_org_name, `status`, create_time, pay_time, finish_time, refund_time, ", - "refund_remarks, ext_1, ext_2, ext_3, ext_4, ext_5, ext_6", + "gas_org_id, gas_org_name, `status`, create_time, cancel_time, pay_time, finish_time, ", + "refund_time, refund_remarks, ext_1, ext_2, ext_3, ext_4, ext_5, ext_6", "from high_gas_order", "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="status", property="status", jdbcType=JdbcType.INTEGER), @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="finish_time", property="finishTime", 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},", "`status` = #{status,jdbcType=INTEGER},", "create_time = #{createTime,jdbcType=TIMESTAMP},", + "cancel_time = #{cancelTime,jdbcType=TIMESTAMP},", "pay_time = #{payTime,jdbcType=TIMESTAMP},", "finish_time = #{finishTime,jdbcType=TIMESTAMP},", "refund_time = #{refundTime,jdbcType=TIMESTAMP},", diff --git a/hai-service/src/main/java/com/hai/dao/HighGasOrderSqlProvider.java b/hai-service/src/main/java/com/hai/dao/HighGasOrderSqlProvider.java index 75ea3f89..d70a6784 100644 --- a/hai-service/src/main/java/com/hai/dao/HighGasOrderSqlProvider.java +++ b/hai-service/src/main/java/com/hai/dao/HighGasOrderSqlProvider.java @@ -184,6 +184,10 @@ public class HighGasOrderSqlProvider { sql.VALUES("create_time", "#{createTime,jdbcType=TIMESTAMP}"); } + if (record.getCancelTime() != null) { + sql.VALUES("cancel_time", "#{cancelTime,jdbcType=TIMESTAMP}"); + } + if (record.getPayTime() != null) { sql.VALUES("pay_time", "#{payTime,jdbcType=TIMESTAMP}"); } @@ -273,6 +277,7 @@ public class HighGasOrderSqlProvider { sql.SELECT("gas_org_name"); sql.SELECT("`status`"); sql.SELECT("create_time"); + sql.SELECT("cancel_time"); sql.SELECT("pay_time"); sql.SELECT("finish_time"); sql.SELECT("refund_time"); @@ -460,6 +465,10 @@ public class HighGasOrderSqlProvider { sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}"); } + if (record.getCancelTime() != null) { + sql.SET("cancel_time = #{record.cancelTime,jdbcType=TIMESTAMP}"); + } + if (record.getPayTime() != null) { 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("`status` = #{record.status,jdbcType=INTEGER}"); 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("finish_time = #{record.finishTime,jdbcType=TIMESTAMP}"); sql.SET("refund_time = #{record.refundTime,jdbcType=TIMESTAMP}"); @@ -724,6 +734,10 @@ public class HighGasOrderSqlProvider { sql.SET("create_time = #{createTime,jdbcType=TIMESTAMP}"); } + if (record.getCancelTime() != null) { + sql.SET("cancel_time = #{cancelTime,jdbcType=TIMESTAMP}"); + } + if (record.getPayTime() != null) { sql.SET("pay_time = #{payTime,jdbcType=TIMESTAMP}"); } diff --git a/hai-service/src/main/java/com/hai/dao/HighOrderMapper.java b/hai-service/src/main/java/com/hai/dao/HighOrderMapper.java index 23d77491..ee104d1f 100644 --- a/hai-service/src/main/java/com/hai/dao/HighOrderMapper.java +++ b/hai-service/src/main/java/com/hai/dao/HighOrderMapper.java @@ -40,9 +40,7 @@ public interface HighOrderMapper extends HighOrderMapperExt { @Insert({ "insert into high_order (product_type, company_id, ", - "company_name, mer_id, ", - "mer_name, store_id, ", - "store_name, promote_code, ", + "company_name, promote_code, ", "mem_discount_id, mem_discount_name, ", "mem_id, mem_name, mem_phone, ", "order_no, pay_serial_no, ", @@ -63,9 +61,7 @@ public interface HighOrderMapper extends HighOrderMapperExt { "ext_2, ext_3, ext_4, ", "ext_5, ext_6)", "values (#{productType,jdbcType=INTEGER}, #{companyId,jdbcType=BIGINT}, ", - "#{companyName,jdbcType=VARCHAR}, #{merId,jdbcType=BIGINT}, ", - "#{merName,jdbcType=VARCHAR}, #{storeId,jdbcType=BIGINT}, ", - "#{storeName,jdbcType=VARCHAR}, #{promoteCode,jdbcType=VARCHAR}, ", + "#{companyName,jdbcType=VARCHAR}, #{promoteCode,jdbcType=VARCHAR}, ", "#{memDiscountId,jdbcType=BIGINT}, #{memDiscountName,jdbcType=VARCHAR}, ", "#{memId,jdbcType=BIGINT}, #{memName,jdbcType=VARCHAR}, #{memPhone,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="company_id", property="companyId", jdbcType=JdbcType.BIGINT), @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="mem_discount_id", property="memDiscountId", jdbcType=JdbcType.BIGINT), @Result(column="mem_discount_name", property="memDiscountName", jdbcType=JdbcType.VARCHAR), @@ -149,14 +141,14 @@ public interface HighOrderMapper extends HighOrderMapperExt { @Select({ "select", - "id, product_type, company_id, company_name, mer_id, mer_name, store_id, store_name, ", - "promote_code, mem_discount_id, mem_discount_name, mem_id, mem_name, mem_phone, ", - "order_no, pay_serial_no, pay_type, mem_card_id, mem_card_type, mem_card_no, ", - "total_price, deduction_price, pay_gold, payable_price, pay_price, pay_real_price, ", - "order_status, remarks, create_time, surplus_refund_price, surplus_refund_integral, ", - "pay_time, finish_time, cancel_time, cancel_remarks, refund_time, account_merchant_num, ", - "profit_sharing_status, profit_sharing_record_id, whether_check, whether_rebate, ", - "exception_status, exception_content, ext_1, ext_2, ext_3, ext_4, ext_5, ext_6", + "id, product_type, company_id, company_name, promote_code, mem_discount_id, mem_discount_name, ", + "mem_id, mem_name, mem_phone, order_no, pay_serial_no, pay_type, mem_card_id, ", + "mem_card_type, mem_card_no, total_price, deduction_price, pay_gold, payable_price, ", + "pay_price, pay_real_price, order_status, remarks, create_time, surplus_refund_price, ", + "surplus_refund_integral, pay_time, finish_time, cancel_time, cancel_remarks, ", + "refund_time, account_merchant_num, profit_sharing_status, profit_sharing_record_id, ", + "whether_check, whether_rebate, exception_status, exception_content, ext_1, ext_2, ", + "ext_3, ext_4, ext_5, ext_6", "from high_order", "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="company_id", property="companyId", jdbcType=JdbcType.BIGINT), @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="mem_discount_id", property="memDiscountId", jdbcType=JdbcType.BIGINT), @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},", "company_id = #{companyId,jdbcType=BIGINT},", "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},", "mem_discount_id = #{memDiscountId,jdbcType=BIGINT},", "mem_discount_name = #{memDiscountName,jdbcType=VARCHAR},", diff --git a/hai-service/src/main/java/com/hai/dao/HighOrderSqlProvider.java b/hai-service/src/main/java/com/hai/dao/HighOrderSqlProvider.java index d8e5661f..596075a5 100644 --- a/hai-service/src/main/java/com/hai/dao/HighOrderSqlProvider.java +++ b/hai-service/src/main/java/com/hai/dao/HighOrderSqlProvider.java @@ -40,22 +40,6 @@ public class HighOrderSqlProvider { 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) { sql.VALUES("promote_code", "#{promoteCode,jdbcType=VARCHAR}"); } @@ -233,10 +217,6 @@ public class HighOrderSqlProvider { sql.SELECT("product_type"); sql.SELECT("company_id"); 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("mem_discount_id"); sql.SELECT("mem_discount_name"); @@ -311,22 +291,6 @@ public class HighOrderSqlProvider { 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) { 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("company_id = #{record.companyId,jdbcType=BIGINT}"); 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("mem_discount_id = #{record.memDiscountId,jdbcType=BIGINT}"); sql.SET("mem_discount_name = #{record.memDiscountName,jdbcType=VARCHAR}"); @@ -570,22 +530,6 @@ public class HighOrderSqlProvider { 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) { sql.SET("promote_code = #{promoteCode,jdbcType=VARCHAR}"); } diff --git a/hai-service/src/main/java/com/hai/entity/HighGasOrder.java b/hai-service/src/main/java/com/hai/entity/HighGasOrder.java index 263f027f..4bec4e73 100644 --- a/hai-service/src/main/java/com/hai/entity/HighGasOrder.java +++ b/hai-service/src/main/java/com/hai/entity/HighGasOrder.java @@ -220,6 +220,11 @@ public class HighGasOrder implements Serializable { */ private Date createTime; + /** + * 取消时间 + */ + private Date cancelTime; + /** * 支付时间 */ @@ -574,6 +579,14 @@ public class HighGasOrder implements Serializable { this.createTime = createTime; } + public Date getCancelTime() { + return cancelTime; + } + + public void setCancelTime(Date cancelTime) { + this.cancelTime = cancelTime; + } + public Date getPayTime() { return payTime; } @@ -706,6 +719,7 @@ public class HighGasOrder implements Serializable { && (this.getGasOrgName() == null ? other.getGasOrgName() == null : this.getGasOrgName().equals(other.getGasOrgName())) && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus())) && (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.getFinishTime() == null ? other.getFinishTime() == null : this.getFinishTime().equals(other.getFinishTime())) && (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 + ((getStatus() == null) ? 0 : getStatus().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 + ((getFinishTime() == null) ? 0 : getFinishTime().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(", status=").append(status); sb.append(", createTime=").append(createTime); + sb.append(", cancelTime=").append(cancelTime); sb.append(", payTime=").append(payTime); sb.append(", finishTime=").append(finishTime); sb.append(", refundTime=").append(refundTime); diff --git a/hai-service/src/main/java/com/hai/entity/HighGasOrderExample.java b/hai-service/src/main/java/com/hai/entity/HighGasOrderExample.java index 345f525c..f9698624 100644 --- a/hai-service/src/main/java/com/hai/entity/HighGasOrderExample.java +++ b/hai-service/src/main/java/com/hai/entity/HighGasOrderExample.java @@ -2656,6 +2656,66 @@ public class HighGasOrderExample { 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 values) { + addCriterion("cancel_time in", values, "cancelTime"); + return (Criteria) this; + } + + public Criteria andCancelTimeNotIn(List 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() { addCriterion("pay_time is null"); return (Criteria) this; diff --git a/hai-service/src/main/java/com/hai/entity/HighOrder.java b/hai-service/src/main/java/com/hai/entity/HighOrder.java index 2a443745..29128f75 100644 --- a/hai-service/src/main/java/com/hai/entity/HighOrder.java +++ b/hai-service/src/main/java/com/hai/entity/HighOrder.java @@ -44,26 +44,6 @@ public class HighOrder implements Serializable { */ 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 static final long serialVersionUID = 1L; + private List highChildOrderList; public List getHighChildOrderList() { @@ -261,8 +243,6 @@ public class HighOrder implements Serializable { this.highChildOrderList = highChildOrderList; } - private static final long serialVersionUID = 1L; - public Long getId() { return id; } @@ -295,38 +275,6 @@ public class HighOrder implements Serializable { 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() { return promoteCode; } @@ -671,10 +619,6 @@ public class HighOrder implements Serializable { && (this.getProductType() == null ? other.getProductType() == null : this.getProductType().equals(other.getProductType())) && (this.getCompanyId() == null ? other.getCompanyId() == null : this.getCompanyId().equals(other.getCompanyId())) && (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.getMemDiscountId() == null ? other.getMemDiscountId() == null : this.getMemDiscountId().equals(other.getMemDiscountId())) && (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 + ((getCompanyId() == null) ? 0 : getCompanyId().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 + ((getMemDiscountId() == null) ? 0 : getMemDiscountId().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(", companyId=").append(companyId); 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(", memDiscountId=").append(memDiscountId); sb.append(", memDiscountName=").append(memDiscountName); diff --git a/hai-service/src/main/java/com/hai/entity/HighOrderExample.java b/hai-service/src/main/java/com/hai/entity/HighOrderExample.java index 026543fb..0c9edcb5 100644 --- a/hai-service/src/main/java/com/hai/entity/HighOrderExample.java +++ b/hai-service/src/main/java/com/hai/entity/HighOrderExample.java @@ -376,266 +376,6 @@ public class HighOrderExample { 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 values) { - addCriterion("mer_id in", values, "merId"); - return (Criteria) this; - } - - public Criteria andMerIdNotIn(List 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 values) { - addCriterion("mer_name in", values, "merName"); - return (Criteria) this; - } - - public Criteria andMerNameNotIn(List 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 values) { - addCriterion("store_id in", values, "storeId"); - return (Criteria) this; - } - - public Criteria andStoreIdNotIn(List 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 values) { - addCriterion("store_name in", values, "storeName"); - return (Criteria) this; - } - - public Criteria andStoreNameNotIn(List 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() { addCriterion("promote_code is null"); return (Criteria) this; diff --git a/hai-service/src/main/java/com/hai/order/service/OrderCancelHandleService.java b/hai-service/src/main/java/com/hai/order/service/OrderCancelHandleService.java index 204da5ee..19c4feb0 100644 --- a/hai-service/src/main/java/com/hai/order/service/OrderCancelHandleService.java +++ b/hai-service/src/main/java/com/hai/order/service/OrderCancelHandleService.java @@ -23,4 +23,10 @@ public interface OrderCancelHandleService { */ void couponHandle(HighChildOrder childOrder) ; + /** + * 加油业务 + * @param childOrder + */ + void oilHandle(HighChildOrder childOrder) ; + } diff --git a/hai-service/src/main/java/com/hai/order/service/OrderPaySuccessService.java b/hai-service/src/main/java/com/hai/order/service/OrderPaySuccessService.java index 56bc315e..fdeb6412 100644 --- a/hai-service/src/main/java/com/hai/order/service/OrderPaySuccessService.java +++ b/hai-service/src/main/java/com/hai/order/service/OrderPaySuccessService.java @@ -2,6 +2,10 @@ package com.hai.order.service; import com.hai.entity.HighChildOrder; 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 - * @return - */ - HighOrder orderPaySuccessHandle(HighOrder order); - - /** - * 异步处理订单支付成功业务 - * @param order + * @param orderNo 交易订单号 + * @param paySerialNo 第三方交易订单号 + * @param payRealPrice 实付金额 + * @param userCard 用户卡 * @return */ - void asyncOrderPaySuccess(HighOrder order); - - /** - * 卡券业务 - * @param childOrder - */ - void couponHandle(HighOrder order,HighChildOrder childOrder) throws Exception; - - /** - * 积分充值 - * @param childOrder - */ - void integralRecharge(HighOrder order,HighChildOrder childOrder); + HighOrder orderPaySuccessHandle(String orderNo, OrderPayType payType, String paySerialNo, BigDecimal payRealPrice, HighUserCard userCard); } diff --git a/hai-service/src/main/java/com/hai/order/service/impl/OrderCancelHandleServiceImpl.java b/hai-service/src/main/java/com/hai/order/service/impl/OrderCancelHandleServiceImpl.java index 35dfb835..b2d58a8b 100644 --- a/hai-service/src/main/java/com/hai/order/service/impl/OrderCancelHandleServiceImpl.java +++ b/hai-service/src/main/java/com/hai/order/service/impl/OrderCancelHandleServiceImpl.java @@ -2,11 +2,15 @@ package com.hai.order.service.impl; import com.hai.entity.HighChildOrder; import com.hai.entity.HighCouponCode; +import com.hai.entity.HighGasOrder; import com.hai.order.service.OrderCancelHandleService; +import com.hai.order.type.OrderChildStatus; import com.hai.service.HighCouponCodeService; +import com.hai.service.HighGasOrderService; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Date; /** * @className: CancelOrderBusServiceImpl @@ -19,6 +23,9 @@ public class OrderCancelHandleServiceImpl implements OrderCancelHandleService { @Resource private HighCouponCodeService couponCodeService; + @Resource + private HighGasOrderService gasOrderService; + @Override public void couponHandle(HighChildOrder childOrder) { // 解除兑换码与订单的关系 @@ -29,4 +36,15 @@ public class OrderCancelHandleServiceImpl implements OrderCancelHandleService { 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); + } + } } diff --git a/hai-service/src/main/java/com/hai/order/service/impl/OrderCreateHandleServiceImpl.java b/hai-service/src/main/java/com/hai/order/service/impl/OrderCreateHandleServiceImpl.java index 5098915e..1e18a234 100644 --- a/hai-service/src/main/java/com/hai/order/service/impl/OrderCreateHandleServiceImpl.java +++ b/hai-service/src/main/java/com/hai/order/service/impl/OrderCreateHandleServiceImpl.java @@ -78,6 +78,9 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService { @Resource private HighMerchantAccountMarketingService merchantAccountMarketingService; + @Resource + private HighGasOrderService gasOrderService; + @Resource private HighGasClassGroupTaskService gasClassGroupTaskService; @@ -198,15 +201,18 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService { // 赠送卡卷是否有库存,没有就不赠送 if (couponService.assignOrderStock(handselCoupon.getId(), handselChildOrderNo) != null) { + // 生成交易子订单 childOrder= new HighChildOrder(); childOrder.setMemId(createOrderChild.getMemId()); + childOrder.setMemName(createOrderChild.getMemName()); + childOrder.setMemPhone(createOrderChild.getMemPhone()); childOrder.setChildOrderNo(handselChildOrderNo); childOrder.setGoodsType(OrderChildGoodsType.TYPE1.getNumber()); childOrder.setGoodsId(handselCoupon.getId()); childOrder.setGoodsName(handselCoupon.getCouponName()); childOrder.setGoodsImg(handselCoupon.getCouponImg()); childOrder.setGoodsSpecName("默认"); - childOrder.setGoodsPrice(handselCoupon.getSalesPrice()); + childOrder.setGoodsPrice(new BigDecimal("0")); childOrder.setGoodsActualPrice(new BigDecimal("0")); childOrder.setSaleCount(1); childOrder.setGiveawayType(true); @@ -214,6 +220,7 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService { childOrder.setPraiseStatus(0); childOrder.setTotalPrice(childOrder.getGoodsPrice().multiply(new BigDecimal(childOrder.getSaleCount().toString()))); childOrder.setTotalActualPrice(childOrder.getGoodsActualPrice().multiply(new BigDecimal(childOrder.getSaleCount().toString()))); + childOrder.setCreateTime(new Date()); childOrderList.add(childOrder); } } @@ -295,39 +302,46 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService { childOrder.setGoodsName(store.getStoreName()); childOrder.setGoodsImg(store.getStoreLogo()); childOrder.setGoodsSpecName("默认"); - childOrder.setGoodsPrice(priceModel.getOilLiters()); + childOrder.setGoodsPrice(priceModel.getOilingPrice()); childOrder.setGoodsActualPrice(priceModel.getPayPrice()); childOrder.setSaleCount(createOrderChild.getSaleCount()); childOrder.setGiveawayType(false); childOrder.setChildOrderStatus(OrderChildStatus.STATUS1.getNumber()); childOrder.setTotalPrice(new BigDecimal(childOrder.getSaleCount().toString()).multiply(childOrder.getGoodsPrice())); 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.setCreateTime(new Date()); // 生成加油订单 HighGasOrder gasOrder = new HighGasOrder(); + gasOrder.setChannelType(store.getSourceType()); gasOrder.setOrderNo(order.getOrderNo()); - gasOrder.setChildOrderNo(createOrderChild.getOrderNo()); + gasOrder.setChildOrderNo(childOrder.getChildOrderNo()); gasOrder.setMemId(childOrder.getMemId()); gasOrder.setMemPhone(childOrder.getMemPhone()); gasOrder.setMerId(store.getMerchantId()); gasOrder.setMerName(merchant.getMerchantName()); gasOrder.setStoreId(store.getId()); gasOrder.setStoreName(store.getStoreName()); + gasOrder.setGasRefuelPrice(childOrder.getGoodsPrice()); gasOrder.setGasOilNo(createOrderChild.getGasOilNo()); gasOrder.setGasGunNo(createOrderChild.getGasGunNo()); 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) { // 支付价格 childOrder.setGoodsActualPrice(childOrder.getGoodsPrice()); // 油价信息 - gasOrder.setGasRefuelPrice(childOrder.getGoodsPrice()); gasOrder.setGasPriceGun(priceModel.getPriceGun()); gasOrder.setGasPriceVip(priceModel.getPriceGun()); gasOrder.setGasPriceOfficial(new BigDecimal("0")); @@ -341,7 +355,6 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService { // 支付价格 childOrder.setGoodsActualPrice(priceModel.getPayPrice()); // 油价信息 - gasOrder.setGasRefuelPrice(childOrder.getGoodsPrice()); gasOrder.setGasPriceGun(priceModel.getPriceGun()); gasOrder.setGasPriceVip(priceModel.getPriceVip()); gasOrder.setGasPriceOfficial(priceModel.getPriceOfficial()); @@ -371,6 +384,7 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService { gasOrder.setGasPriceChannelPay(jzOrderObject.getJSONObject("data").getBigDecimal("paymentAmount")); } + // 代理商 if (createOrderChild.getIsTyAgent() != null && createOrderChild.getIsTyAgent().equals(true)) { // 查询加油站 HighTyAgentOilStation oilStation = gasTyAgentOilStationService.getDetailByOilStationId(createOrderChild.getGoodsId()); @@ -408,7 +422,7 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService { } } - // 查询加油站是否开启班组 + // 油站是否开启班组 HighGasClassGroupTask groupTask = gasClassGroupTaskService.getCurrentTaskByStoreId(gasOrder.getStoreId()); if (groupTask != null) { gasOrder.setGasClassGroupId(groupTask.getGasClassGroupId()); @@ -416,6 +430,7 @@ public class OrderCreateHandleServiceImpl implements OrderCreateHandleService { gasOrder.setGasClassGroupTaskId(groupTask.getId()); } + gasOrderService.addGasOrder(gasOrder); return childOrder; } diff --git a/hai-service/src/main/java/com/hai/order/service/impl/OrderPayServiceImpl.java b/hai-service/src/main/java/com/hai/order/service/impl/OrderPayServiceImpl.java index 4b79104f..414a959e 100644 --- a/hai-service/src/main/java/com/hai/order/service/impl/OrderPayServiceImpl.java +++ b/hai-service/src/main/java/com/hai/order/service/impl/OrderPayServiceImpl.java @@ -86,25 +86,14 @@ public class OrderPayServiceImpl implements OrderPayService { if (consumptionResult.getBoolean("success") != true) { 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()); oilCardService.consume(userCard.getCardNo(), order.getPayPrice(), consumeMap); - order.setMemCardType(userCard.getType()); - order.setMemCardId(userCard.getId()); - order.setMemCardNo(userCard.getCardNo()); - order.setPayTime(new Date()); - order.setPayType(OrderPayTypeEnum.type7.getType()); - order.setPayRealPrice(order.getPayPrice()); - order.setOrderStatus(OrderStatus.STATUS2.getNumber()); - HighOrder updateOrderData = orderService.updateOrderData(order); - - // 异步处理业务 - orderPaySuccessService.asyncOrderPaySuccess(order); - return updateOrderData; + // 处理订单业务 + return orderPaySuccessService.orderPaySuccessHandle( + order.getOrderNo(), + OrderPayType.PAY_TYPE7, + null, + order.getPayPrice(), + userCard); } } diff --git a/hai-service/src/main/java/com/hai/order/service/impl/OrderPaySuccessServiceImpl.java b/hai-service/src/main/java/com/hai/order/service/impl/OrderPaySuccessServiceImpl.java index 40d2a6ed..d1e87b31 100644 --- a/hai-service/src/main/java/com/hai/order/service/impl/OrderPaySuccessServiceImpl.java +++ b/hai-service/src/main/java/com/hai/order/service/impl/OrderPaySuccessServiceImpl.java @@ -1,18 +1,41 @@ package com.hai.order.service.impl; +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.config.CommonSysConst; +import com.hai.config.JinZhuJiaYouService; +import com.hai.config.ShellGroupService; +import com.hai.config.TuanYouConfig; 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.OrderService; +import com.hai.order.topic.OrderTopic; 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 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.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * @className: OrderPaySuccessServiceImpl @@ -22,9 +45,21 @@ import java.util.Date; @Service("orderPaySuccessService") public class OrderPaySuccessServiceImpl implements OrderPaySuccessService { + @Resource + private RedisTemplate redisTemplate; + + @Resource + private RocketMQTemplate rocketMQTemplate; + @Resource private OrderService orderService; + @Resource + private HighOrderPreService orderPreService; + + @Resource + private HighMerchantStoreService merchantStoreService; + @Resource private HighCouponService couponService; @@ -32,57 +67,105 @@ public class OrderPaySuccessServiceImpl implements OrderPaySuccessService { private HighCouponCodeService couponCodeService; @Resource - private HighOrderPreService orderPreService; + private HighUserService userService; @Resource - private HighUserService userService; + private HighGasOrderService gasOrderService; + + @Resource + private ShellGroupService shellGroupService; + + @Resource + private JinZhuJiaYouService jinZhuJiaYouService; @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 { - for (HighChildOrder childOrder : order.getHighChildOrderList()) { - if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE1.getNumber())) { - couponHandle(order, childOrder); + if (order != null && order.getOrderStatus().equals(OrderStatus.STATUS2.getNumber())) { + order.setPaySerialNo(paySerialNo); + 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 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) { - 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.TYPE9.getNumber())) { - @Override - public void asyncOrderPaySuccess(HighOrder order) { - new Thread(() -> { - orderPaySuccessHandle(order); - }); + } else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE10.getNumber())) { + + } + } } - @Override + /** + * 卡券业务 + * @param order + * @param childOrder + * @throws Exception + */ public void couponHandle(HighOrder order,HighChildOrder childOrder) throws Exception { 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 Integer goldNum = new BigDecimal(childOrder.getTotalPrice().toString()).multiply(new BigDecimal("100")).intValue(); String remark = "订单" + order.getOrderNo() + "积分充值积分:" + goldNum; 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 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 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()); + + } + } + } + } diff --git a/hai-service/src/main/java/com/hai/order/service/impl/OrderServiceImpl.java b/hai-service/src/main/java/com/hai/order/service/impl/OrderServiceImpl.java index 778fa407..3ee526e5 100644 --- a/hai-service/src/main/java/com/hai/order/service/impl/OrderServiceImpl.java +++ b/hai-service/src/main/java/com/hai/order/service/impl/OrderServiceImpl.java @@ -15,6 +15,7 @@ import com.hai.enum_type.OrderStatusEnum; import com.hai.order.model.CreateOrderChildModel; import com.hai.order.model.CreateOrderModel; import com.hai.order.service.*; +import com.hai.order.topic.OrderTopic; import com.hai.order.type.*; import com.hai.order.utils.OrderUtil; import com.hai.service.HighDiscountAgentCodeService; @@ -23,6 +24,8 @@ import com.hai.service.HighUserPayPasswordService; import com.hai.service.HighUserService; import org.apache.commons.collections4.MapUtils; 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.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; @@ -319,7 +322,7 @@ public class OrderServiceImpl implements OrderService { // 订单入库前处理 for (HighChildOrder childOrder : order.getHighChildOrderList()) { childOrder.setOrderNo(order.getOrderNo()); - + childOrder.setSurplusRefundNum(childOrder.getSaleCount()); // 计算子订单退款金额。 if (order.getPayPrice().compareTo(new BigDecimal("0")) == 1) { childOrder.setSurplusRefundPrice(childOrder.getTotalActualPrice() @@ -343,13 +346,24 @@ public class OrderServiceImpl implements OrderService { HighOrder orderData = insertOrderData(order); 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分钟后取消订单 Message 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())) { // 异步处理业务 - paySuccessService.asyncOrderPaySuccess(orderData); + paySuccessService.orderPaySuccessHandle(orderData.getOrderNo(), null, null, new BigDecimal("0"), null); } return orderData; } @@ -394,11 +408,12 @@ public class OrderServiceImpl implements OrderService { childOrder.setChildOrderStatus(OrderChildStatus.STATUS5.getNumber()); childOrder.setCancelTime(new Date()); - // 购买卡券 if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE1.getNumber())) { orderCancelHandleService.couponHandle(childOrder); - // 购买优惠券包 + } else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE3.getNumber())) { + orderCancelHandleService.oilHandle(childOrder); + } else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE7.getNumber())) { } @@ -408,6 +423,11 @@ public class OrderServiceImpl implements OrderService { } @Override + @Transactional( + propagation= Propagation.REQUIRES_NEW, + isolation = Isolation.READ_COMMITTED, + timeout = 10, + rollbackFor = Exception.class) public HighOrder refundOrder(String orderNo, String remarks) throws Exception { HighOrder order = getOrderDetailByNo(orderNo); if (!order.getOrderStatus().equals(OrderStatus.STATUS2.getNumber()) @@ -429,18 +449,27 @@ public class OrderServiceImpl implements OrderService { // todo 退款金额,原路返回 + + for (HighChildOrder childOrder : order.getHighChildOrderList()) { childOrder.setRefundRemarks(remarks); childOrder.setRefundTime(new Date()); childOrder.setChildOrderStatus(OrderChildStatus.STATUS4.getNumber()); } + order.setSurplusRefundIntegral(0); + order.setSurplusRefundPrice(new BigDecimal("0")); order.setRefundTime(new Date()); order.setOrderStatus(OrderStatus.STATUS4.getNumber()); return updateOrderData(order); } @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 { HighOrder order = getOrderDetailByNo(orderNo); if (order == null) { @@ -469,11 +498,21 @@ public class OrderServiceImpl implements OrderService { List buyChildOrderList = order.getHighChildOrderList() .stream().filter(o -> o.getGiveawayType().equals(false)) .collect(Collectors.toList()); - // 已退款的订单列表 List refundList = buyChildOrderList.stream() .filter(o -> o.getChildOrderStatus().equals(OrderChildStatus.STATUS4.getNumber())) .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()) { order.setRefundTime(new Date()); diff --git a/hai-service/src/main/java/com/hai/order/topic/OrderTopic.java b/hai-service/src/main/java/com/hai/order/topic/OrderTopic.java index 67690edf..a60635bd 100644 --- a/hai-service/src/main/java/com/hai/order/topic/OrderTopic.java +++ b/hai-service/src/main/java/com/hai/order/topic/OrderTopic.java @@ -8,9 +8,8 @@ package com.hai.order.topic; **/ public enum OrderTopic { ORDER_TOPIC("order-topic", "订单主题"), - ORDER_TOPIC_CREATE(ORDER_TOPIC.getTopic() + ":create", "订单创建"), 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; diff --git a/hai-service/src/main/java/com/hai/service/HighGasOrderService.java b/hai-service/src/main/java/com/hai/service/HighGasOrderService.java index 5df0afd9..b209459c 100644 --- a/hai-service/src/main/java/com/hai/service/HighGasOrderService.java +++ b/hai-service/src/main/java/com/hai/service/HighGasOrderService.java @@ -22,6 +22,11 @@ public interface HighGasOrderService { */ void updateGasOrder(HighGasOrder gasOrder); - + /** + * 根据子订单编号获取详情 + * @param childOrderNo 子订单编号 + * @return + */ + HighGasOrder getDetailByChildOrderNo(String childOrderNo); } diff --git a/hai-service/src/main/java/com/hai/service/impl/HighCouponServiceImpl.java b/hai-service/src/main/java/com/hai/service/impl/HighCouponServiceImpl.java index 6e9e8d35..0d369a00 100644 --- a/hai-service/src/main/java/com/hai/service/impl/HighCouponServiceImpl.java +++ b/hai-service/src/main/java/com/hai/service/impl/HighCouponServiceImpl.java @@ -435,26 +435,29 @@ public class HighCouponServiceImpl implements HighCouponService { @Override public HighCouponCode assignOrderStock(Long couponId, String childOrderNo) throws InterruptedException { String key = "coupon_" + couponId; - // 分布式锁占坑 - Boolean lock = redisTemplate.opsForValue().setIfAbsent(key, childOrderNo); - if(lock) { - // 加锁成功,处理业务 - - // 查询一张可用的兑换码 - HighCouponCode stockCode = highCouponCodeService.getCouponStockCode(couponId); - if (stockCode != null) { - stockCode.setChildOrderNo(childOrderNo); - stockCode.setStatus(99); - highCouponCodeService.updateCouponCode(stockCode); + try { + // 分布式锁占坑 + Boolean lock = redisTemplate.opsForValue().setIfAbsent(key, childOrderNo); + if(lock) { + // 加锁成功,处理业务 + // 查询一张可用的兑换码 + HighCouponCode stockCode = highCouponCodeService.getCouponStockCode(couponId); + if (stockCode != null) { + stockCode.setChildOrderNo(childOrderNo); + stockCode.setStatus(99); + highCouponCodeService.updateCouponCode(stockCode); + } + return stockCode; + } else { + // 加锁失败,重试 + Thread.sleep(100); + assignOrderStock(couponId,childOrderNo); } + } catch (Exception e) { + return null; + } finally { // 删除key,释放锁 redisTemplate.delete(key); - - return stockCode; - } else { - // 加锁失败,重试 - Thread.sleep(100); - assignOrderStock(couponId,childOrderNo); } return null; } diff --git a/hai-service/src/main/java/com/hai/service/impl/HighGasOrderServiceImpl.java b/hai-service/src/main/java/com/hai/service/impl/HighGasOrderServiceImpl.java index f46f37bf..d6b28afe 100644 --- a/hai-service/src/main/java/com/hai/service/impl/HighGasOrderServiceImpl.java +++ b/hai-service/src/main/java/com/hai/service/impl/HighGasOrderServiceImpl.java @@ -2,11 +2,13 @@ package com.hai.service.impl; import com.hai.dao.HighGasOrderMapper; import com.hai.entity.HighGasOrder; +import com.hai.entity.HighGasOrderExample; import com.hai.service.HighGasOrderService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Date; +import java.util.List; /** * @className: HighGasOrderServiceImpl @@ -29,4 +31,15 @@ public class HighGasOrderServiceImpl implements HighGasOrderService { public void updateGasOrder(HighGasOrder gasOrder) { gasOrderMapper.updateByPrimaryKeySelective(gasOrder); } + + @Override + public HighGasOrder getDetailByChildOrderNo(String childOrderNo) { + HighGasOrderExample example = new HighGasOrderExample(); + example.createCriteria().andChildOrderNoEqualTo(childOrderNo); + List list = gasOrderMapper.selectByExample(example); + if (list.size() > 0) { + return list.get(0); + } + return null; + } } diff --git a/hai-service/src/main/java/com/hai/service/impl/HighMerchantServiceImpl.java b/hai-service/src/main/java/com/hai/service/impl/HighMerchantServiceImpl.java index 6bec4c0c..e8adeb3c 100644 --- a/hai-service/src/main/java/com/hai/service/impl/HighMerchantServiceImpl.java +++ b/hai-service/src/main/java/com/hai/service/impl/HighMerchantServiceImpl.java @@ -1,5 +1,7 @@ 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.ErrorHelp; import com.hai.common.exception.SysCode; @@ -95,6 +97,7 @@ public class HighMerchantServiceImpl implements HighMerchantService { } @Override + @Cached(cacheType = CacheType.BOTH, name="merchant:", key = "#id", expire = 3600*24*30) // 缓存一个月 public HighMerchant getDetailById(Long id) { return highMerchantMapper.selectByPrimaryKey(id); } diff --git a/hai-service/src/main/java/com/hai/service/impl/HighMerchantStoreServiceImpl.java b/hai-service/src/main/java/com/hai/service/impl/HighMerchantStoreServiceImpl.java index 98b101df..51ee9bf0 100644 --- a/hai-service/src/main/java/com/hai/service/impl/HighMerchantStoreServiceImpl.java +++ b/hai-service/src/main/java/com/hai/service/impl/HighMerchantStoreServiceImpl.java @@ -1,6 +1,8 @@ package com.hai.service.impl; 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.ErrorHelp; import com.hai.common.exception.SysCode; @@ -179,6 +181,7 @@ public class HighMerchantStoreServiceImpl implements HighMerchantStoreService { } @Override + @Cached(cacheType = CacheType.BOTH, name="store:", key = "#id", expire = 3600*24*30) // 缓存一个月 public HighMerchantStore getDetailById(Long id) { return highMerchantStoreMapper.selectByPrimaryKey(id); }