提交代码

dev-discount
胡锐 3 years ago
parent b124eb007e
commit e06b245562
  1. 4
      hai-order/src/main/java/com/web/controller/OrderController.java
  2. 155
      hai-order/src/main/java/com/web/controller/OrderPayController.java
  3. 2
      hai-order/src/main/java/com/web/controller/TestController.java
  4. 23
      hai-order/src/main/resources/dev/logback.xml
  5. 12
      hai-service/src/main/java/com/hai/config/HuiLianTongUnionCardConfig.java
  6. 45
      hai-service/src/main/java/com/hai/dao/HighOrderMapper.java
  7. 41
      hai-service/src/main/java/com/hai/dao/HighOrderRefundMapper.java
  8. 30
      hai-service/src/main/java/com/hai/dao/HighOrderRefundSqlProvider.java
  9. 14
      hai-service/src/main/java/com/hai/dao/HighOrderSqlProvider.java
  10. 16
      hai-service/src/main/java/com/hai/entity/HighOrder.java
  11. 60
      hai-service/src/main/java/com/hai/entity/HighOrderExample.java
  12. 32
      hai-service/src/main/java/com/hai/entity/HighOrderRefund.java
  13. 108
      hai-service/src/main/java/com/hai/entity/HighOrderRefundExample.java
  14. 14
      hai-service/src/main/java/com/hai/order/service/OrderPaySuccessService.java
  15. 7
      hai-service/src/main/java/com/hai/order/service/OrderRefundService.java
  16. 20
      hai-service/src/main/java/com/hai/order/service/OrderService.java
  17. 30
      hai-service/src/main/java/com/hai/order/service/impl/OrderPayService.java
  18. 132
      hai-service/src/main/java/com/hai/order/service/impl/OrderPayServiceImpl.java
  19. 52
      hai-service/src/main/java/com/hai/order/service/impl/OrderPaySuccessServiceImpl.java
  20. 89
      hai-service/src/main/java/com/hai/order/service/impl/OrderRefundServiceImpl.java
  21. 106
      hai-service/src/main/java/com/hai/order/service/impl/OrderServiceImpl.java
  22. 12
      hai-service/src/main/java/com/hai/order/utils/OrderUtil.java

@ -144,7 +144,7 @@ public class OrderController {
return ResponseMsgUtil.exception(e);
}
}
/*
@RequestMapping(value="/paySuccess",method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "支付成功")
@ -160,7 +160,7 @@ public class OrderController {
log.error("OrderController -> paySuccess() error!",e);
return ResponseMsgUtil.exception(e);
}
}
}*/
@RequestMapping(value="/getDetailByOrderNo",method = RequestMethod.GET)
@ResponseBody

@ -1,6 +1,5 @@
package com.web.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hai.common.exception.ErrorCode;
import com.hai.common.exception.ErrorHelp;
@ -10,10 +9,8 @@ import com.hai.common.pay.entity.WeChatPayReqInfo;
import com.hai.common.pay.util.MD5Util;
import com.hai.common.security.AESEncodeUtil;
import com.hai.common.security.UserCenter;
import com.hai.common.utils.MathUtils;
import com.hai.common.utils.ResponseMsgUtil;
import com.hai.config.CommonSysConst;
import com.hai.config.TuanYouConfig;
import com.hai.config.UnionPayConfig;
import com.hai.config.WxOrderConfig;
import com.hai.entity.*;
@ -23,14 +20,10 @@ import com.hai.enum_type.MerchantStoreSourceType;
import com.hai.model.HighMerchantStoreModel;
import com.hai.model.HighUserModel;
import com.hai.model.ResponseData;
import com.hai.model.UserInfoModel;
import com.hai.order.model.CreateOrderChildModel;
import com.hai.order.model.CreateOrderModel;
import com.hai.order.service.OrderService;
import com.hai.order.type.OrderChildGoodsType;
import com.hai.order.service.impl.OrderPayService;
import com.hai.order.type.OrderProductType;
import com.hai.order.type.OrderStatus;
import com.hai.order.utils.OrderUtil;
import com.hai.service.*;
import com.web.config.SysConst;
import io.swagger.annotations.Api;
@ -66,10 +59,10 @@ public class OrderPayController {
private static Logger log = LoggerFactory.getLogger(OrderPayController.class);
@Resource
private OrderService orderService;
private UserCenter userCenter;
@Resource
private UserCenter userCenter;
private HighUserCardService userCardService;
@Resource
private HighUserPayPasswordService userPayPasswordService;
@ -77,6 +70,15 @@ public class OrderPayController {
@Resource
private HighMerchantStoreService merchantStoreService;
@Resource
private OrderService orderService;
@Resource
private OrderPayService orderPayService;
@Resource
private UnionPayConfig unionPayConfig;
@Resource
private HighGasService gasService;
@ -89,10 +91,10 @@ public class OrderPayController {
@Resource
private WechatPayUtil wechatPayUtil;
@RequestMapping(value="/wxPay",method = RequestMethod.POST)
@RequestMapping(value="/weixinPay",method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "微信支付")
public ResponseData wxPay(@RequestBody JSONObject body) {
public ResponseData weixinPay(@RequestBody JSONObject body) {
try {
if (body == null
@ -258,6 +260,12 @@ public class OrderPayController {
}
String password = body.getString("password");
// 查询用户与卡号的关系
HighUserCard userCard = userCardService.getDetailByUserCardNo(userInfoModel.getHighUser().getId(), body.getString("cardNo"));
if (userCard == null) {
log.error("OrderController --> orderToPay() ERROR", "未绑定卡号");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未绑定卡号");
}
// 查询用户支付密码
HighUserPayPassword userPayPassword = userPayPasswordService.getDetailByUser(userInfoModel.getHighUser().getId());
if (userPayPassword == null) {
@ -273,7 +281,6 @@ public class OrderPayController {
log.error("orderToPay error!", "");
throw ErrorHelp.genException(SysCode.System, ErrorCode.USER_PAY_PWD_ERROR, "");
}
// 查询订单
HighOrder order = orderService.getOrderDetailByNo(body.getString("orderNo"));
if(!order.getOrderStatus().equals(OrderStatus.STATUS1.getNumber())) {
@ -281,7 +288,7 @@ public class OrderPayController {
throw ErrorHelp.genException(SysCode.System, ErrorCode.ORDER_NO_STAY_PAY, "");
}
return ResponseMsgUtil.success(null);
return ResponseMsgUtil.success(orderPayService.oilCardPay(order, userCard));
} catch (Exception e) {
log.error("OrderPayController -> oilCardPay() error!",e);
@ -297,109 +304,81 @@ public class OrderPayController {
if (body == null
|| StringUtils.isBlank(body.getString("orderNo"))
// || body.getInteger("openIdType") == null
|| StringUtils.isBlank(body.getString("orderScene"))
|| StringUtils.isBlank(body.getString("openId"))
) {
log.error("wxPay error!", "参数错误");
|| StringUtils.isBlank(body.getString("cardNo"))
|| StringUtils.isBlank(body.getString("password"))) {
log.error("oilCardPay error!", "参数错误");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
// 获取当前操作人信息
HighUserModel userInfoModel = userCenter.getSessionModel(HighUserModel.class);
if (userInfoModel == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.SEC_USER_EXPIRED, "");
}
String password = body.getString("password");
// 查询用户与卡号的关系
HighUserCard userCard = userCardService.getDetailByUserCardNo(userInfoModel.getHighUser().getId(), body.getString("cardNo"));
if (userCard == null) {
log.error("OrderController --> orderToPay() ERROR", "未绑定卡号");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未绑定卡号");
}
// 查询用户支付密码
HighUserPayPassword userPayPassword = userPayPasswordService.getDetailByUser(userInfoModel.getHighUser().getId());
if (userPayPassword == null) {
log.error("orderToPay error!", "未设置支付密码");
throw ErrorHelp.genException(SysCode.System, ErrorCode.NOT_SET_USER_PAY_PWD, "");
}
if (StringUtils.isBlank(password)) {
log.error("orderToPay error!", "未输入支付密码");
throw ErrorHelp.genException(SysCode.System, ErrorCode.NOT_ENTER_USER_PAY_PWD, "");
}
// 支付密码是否正确
if (!AESEncodeUtil.aesEncrypt(password).equals(userPayPassword.getPassword())) {
log.error("orderToPay error!", "");
throw ErrorHelp.genException(SysCode.System, ErrorCode.USER_PAY_PWD_ERROR, "");
}
// 查询订单
HighOrder order = orderService.getOrderDetailByNo(body.getString("orderNo"));
if(!order.getOrderStatus().equals(OrderStatus.STATUS1.getNumber())) {
log.error("OrderController --> orderToPay() ERROR", "订单不处于待支付状态");
throw ErrorHelp.genException(SysCode.System, ErrorCode.ORDER_NO_STAY_PAY, "");
}
return ResponseMsgUtil.success(null);
return ResponseMsgUtil.success(orderPayService.hltCardPay(order, userCard));
} catch (Exception e) {
log.error("OrderController -> create() error!",e);
log.error("OrderController -> hltCardPay() error!",e);
return ResponseMsgUtil.exception(e);
}
}
/*
@RequestMapping(value="/unionPay",method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "银联支付")
public ResponseData unionPay(@RequestBody String reqBodyStr, HttpServletRequest request) {
public ResponseData unionPay(@RequestBody JSONObject body, HttpServletRequest request) {
try {
if (StringUtils.isBlank(reqBodyStr)) {
log.error("orderToPay error!", "参数错误");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
JSONObject jsonObject = JSONObject.parseObject(reqBodyStr);
Long orderId = jsonObject.getLong("orderId");
if ( orderId == null) {
if (body == null || StringUtils.isBlank(body.getString("orderNo"))) {
log.error("orderToPay error!", "参数错误");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
HighOrder order = highOrderService.getOrderById(orderId);
HighOrder order = orderService.getOrderDetailByNo(body.getString("orderNo"));
if(order == null) {
log.error("OrderController --> orderToPay() ERROR", "未找到订单信息");
throw ErrorHelp.genException(SysCode.System, ErrorCode.NOT_FOUND_ORDER, "");
}
//校验订单状态 订单状态:1 待支付 2 已支付 3.已完成 4. 已退款 5.已取消
if(order.getOrderStatus() != 1) {
if(!order.getOrderStatus().equals(OrderStatus.STATUS1.getNumber())) {
log.error("OrderController --> orderToPay() ERROR", "订单不处于待支付状态");
throw ErrorHelp.genException(SysCode.System, ErrorCode.ORDER_NO_STAY_PAY, "");
}
// 商品类型 1:卡卷 2:金币充值 3:加油站
for (HighChildOrder childOrder : order.getHighChildOrderList()) {
if (childOrder.getGiveawayType() == false && childOrder.getGoodsType() == 1) {
HighCoupon coupon = highCouponService.getCouponById(childOrder.getGoodsId());
// 支付类型:1.微信支付 2.金币支付
// if (coupon.getPayType() != 1) {
// log.error("OrderController --> orderToPay() ERROR", "只支持微信支持");
// throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, coupon.getCouponName() + ",只支持微信支付");
// }
}
if (childOrder.getGoodsType() == 3) {
if (highOrderService.getGasTheDayOrderNum(order.getMemId()) >= 1) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "已达到每日加油次数上限");
}
// 查询加油站
HighMerchantStoreModel store = merchantStoreService.getMerchantStoreById(childOrder.getGoodsId());
if (store == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "已达到每日加油次数上限");
}
// 来源类型 1:平台自建 2:团油
if (store.getSourceType().equals(2)) {
// 查询账号余额
JSONObject accountInfo2JD = TuanYouConfig.queryCompanyAccountInfo2JD();
JSONArray result = accountInfo2JD.getJSONArray("result");
for (Object accountObject : result) {
JSONObject account = (JSONObject)accountObject;
*//* // 1:汽油:2:柴油;3:天然气
if (account.getInteger("energyType") == childOrder.getGasOilType()) {
// 支付金额 大于 团油账号余额
if(order.getPayPrice().compareTo(account.getBigDecimal("accountBalance")) == 1){
log.error("OrderController --> orderToPay() ERROR", "无法进行支付,请联系平台客服");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "无法进行支付,请联系平台客服");
}
}*//*
}
}
// 来源类型 1:平台自建 2:团油
if (store.getSourceType().equals(MerchantStoreSourceType.type3.getNumber())) {
BigDecimal account = new BigDecimal("0");
// 查询账号余额
HighMerchantAccount merAccount = merchantAccountService.getMerAccountDetail(store.getMerchantId());
if (merAccount != null) {
account = merAccount.getAmounts().subtract(merchantAccountService.countMerGasOilAmount(store.getMerchantId()));
}
// 客户加油金额 大于 商户账号余额
if(order.getTotalPrice().compareTo(account) == 1) {
log.error("OrderController --> orderToPay() ERROR", "暂时无法进行支付,请联系平台客服");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "暂时无法进行支付,请联系平台客服");
}
}
}
}
return ResponseMsgUtil.success(unionPayConfig.upPreOrder(UnionPayConfig.MER_ID3, UnionPayConfig.TERM_ID3, order.getOrderNo(), order.getPayPrice(), "购买商品", CommonSysConst.getSysConfig().getUnionPayNotifyUrl(), request));
} catch (Exception e) {
log.error("orderToPay error!", e);
return ResponseMsgUtil.exception(e);
}
}*/
}
}

@ -1 +1 @@
package com.web.controller; import com.hai.common.utils.*; import com.hai.entity.HighOrder; import com.hai.model.ResponseData; import com.hai.order.model.CreateOrderModel; import com.hai.order.service.OrderService; import com.hai.service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.rocketmq.client.producer.SendCallback; import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq.common.message.Message; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.integration.support.MessageBuilder; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; /** * @Auther: 胡锐 * @Description: * @Date: 2021/3/26 23:08 */ @Controller @RequestMapping(value = "/test") @Api(value = "订单接口") public class TestController { private static Logger log = LoggerFactory.getLogger(TestController.class); @Autowired private RocketMQTemplate rocketMQTemplate; @Resource private OrderService orderService; @Resource private RedisUtil redisUtil; @Autowired private RedisTemplate redisTemplate; @RequestMapping(value = "/rocketMq", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "") public ResponseData rocketMq(@RequestParam(name = "topicGroup", required = true) String topicGroup, @RequestParam(name = "body", required = true) String body) { try { long startTime = System.currentTimeMillis(); // org.springframework.messaging.Message message = MessageBuilder.withPayload(order).build(); CreateOrderModel createOrder = new CreateOrderModel(); //发送对象消息 HighOrder order = rocketMQTemplate.sendAndReceive("order-topic:create", createOrder, HighOrder.class); System.out.println("订单号:" + order.getOrderNo()); // SendResult sendResult = rocketMQTemplate.syncSend("order-topic:create", message, 3000); /*List<HighOrder> list = new LinkedList<>(); for (int i = 0; i <= 100;i++) { list.add(orderService.getDetailByOrderNo("HF2022080918014365701")); *//* list.add(orderService.getDetailByOrderNo("HF2022080918014365701"));*//* *//* updateUserWithRedisLock("coupon_" + couponKey, i+""); new Thread(() -> {*//* *//* redisTemplate.opsForValue().setIfAbsent("coupon_" + couponKey, i); System.out.println("加入数据" + i);*//* // redisTemplate.delete("coupon" + couponKey); // System.out.println("释放数据" + index); *//* });*//* }*/ System.out.println(System.currentTimeMillis() - startTime); return ResponseMsgUtil.success(null); } catch (Exception e) { log.error("HighUserCardController --> rocketMq() error!", e); return ResponseMsgUtil.exception(e); } } public void updateUserWithRedisLock(String couponKey, String value) throws InterruptedException { // 占分布式锁,去redis占坑 // 1. 分布式锁占坑 Boolean lock = redisTemplate.opsForValue().setIfAbsent("coupon" + couponKey, value); if(lock) { //加锁成功... // todo business System.out.println("加锁成功: " + value); redisTemplate.delete("coupon" + couponKey); //删除key,释放锁 } else { System.out.println("加锁失败"); /* Thread.sleep(100); // 加锁失败,重试 updateUserWithRedisLock("sysUser");*/ } } }
package com.web.controller; import com.hai.common.utils.*; import com.hai.config.HuiLianTongUnionCardConfig; import com.hai.entity.HighOrder; import com.hai.model.ResponseData; import com.hai.order.model.CreateOrderModel; import com.hai.order.service.OrderService; import com.hai.service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.rocketmq.client.producer.SendCallback; import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq.common.message.Message; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.integration.support.MessageBuilder; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; /** * @Auther: 胡锐 * @Description: * @Date: 2021/3/26 23:08 */ @Controller @RequestMapping(value = "/test") @Api(value = "订单接口") public class TestController { private static Logger log = LoggerFactory.getLogger(TestController.class); @Autowired private RocketMQTemplate rocketMQTemplate; @Resource private OrderService orderService; @Resource private RedisUtil redisUtil; @Autowired private RedisTemplate redisTemplate; @RequestMapping(value = "/q", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "") public ResponseData q(@RequestParam(name = "topicGroup", required = true) String topicGroup, @RequestParam(name = "body", required = true) String body) { try { return ResponseMsgUtil.success(HuiLianTongUnionCardConfig.queryBalance("8800030132003656618")); } catch (Exception e) { log.error("HighUserCardController --> rocketMq() error!", e); return ResponseMsgUtil.exception(e); } } @RequestMapping(value = "/rocketMq", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "") public ResponseData rocketMq(@RequestParam(name = "topicGroup", required = true) String topicGroup, @RequestParam(name = "body", required = true) String body) { try { long startTime = System.currentTimeMillis(); // org.springframework.messaging.Message message = MessageBuilder.withPayload(order).build(); CreateOrderModel createOrder = new CreateOrderModel(); //发送对象消息 HighOrder order = rocketMQTemplate.sendAndReceive("order-topic:create", createOrder, HighOrder.class); System.out.println("订单号:" + order.getOrderNo()); // SendResult sendResult = rocketMQTemplate.syncSend("order-topic:create", message, 3000); /*List<HighOrder> list = new LinkedList<>(); for (int i = 0; i <= 100;i++) { list.add(orderService.getDetailByOrderNo("HF2022080918014365701")); *//* list.add(orderService.getDetailByOrderNo("HF2022080918014365701"));*//* *//* updateUserWithRedisLock("coupon_" + couponKey, i+""); new Thread(() -> {*//* *//* redisTemplate.opsForValue().setIfAbsent("coupon_" + couponKey, i); System.out.println("加入数据" + i);*//* // redisTemplate.delete("coupon" + couponKey); // System.out.println("释放数据" + index); *//* });*//* }*/ System.out.println(System.currentTimeMillis() - startTime); return ResponseMsgUtil.success(null); } catch (Exception e) { log.error("HighUserCardController --> rocketMq() error!", e); return ResponseMsgUtil.exception(e); } } public void updateUserWithRedisLock(String couponKey, String value) throws InterruptedException { // 占分布式锁,去redis占坑 // 1. 分布式锁占坑 Boolean lock = redisTemplate.opsForValue().setIfAbsent("coupon" + couponKey, value); if(lock) { //加锁成功... // todo business System.out.println("加锁成功: " + value); redisTemplate.delete("coupon" + couponKey); //删除key,释放锁 } else { System.out.println("加锁失败"); /* Thread.sleep(100); // 加锁失败,重试 updateUserWithRedisLock("sysUser");*/ } } }

@ -69,4 +69,27 @@
<logger name="com.hai" level="ERROR">
<appender-ref ref="errorlog" />
</logger>
<appender name="HltCardLog"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>log/HltCardLog.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>log/HltCardLog.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>
<logger name="com.hai.config.HuiLianTongUnionCardConfig" level="INFO">
<appender-ref ref="HltCardLog" />
</logger>
</configuration>

@ -25,6 +25,8 @@ import java.util.*;
*/
public class HuiLianTongUnionCardConfig {
private static Logger log = LoggerFactory.getLogger(HuiLianTongUnionCardConfig.class);
/**
* 根据手机号查询工会卡
* @param phone
@ -235,7 +237,15 @@ public class HuiLianTongUnionCardConfig {
// MD5加密
map.put("sign", MD5Util.MD5Encode(str, "UTF-8").toUpperCase());
return HttpsUtils.doPost(CommonSysConst.getSysConfig().getHuiLianTongUnionCardUrl(), JSON.toJSONString(map));
log.info("============请求任务Start=============");
log.info("请求参数: " + JSON.toJSONString(map));
JSONObject returnObject = HttpsUtils.doPost(CommonSysConst.getSysConfig().getHuiLianTongUnionCardUrl(), JSON.toJSONString(map));
log.info("响应参数: " + returnObject.toJSONString());
log.info("============请求任务End==============");
return returnObject;
}
private static JSONObject requestMembership(String method,Map<String,Object> param) throws Exception {

@ -53,14 +53,15 @@ public interface HighOrderMapper extends HighOrderMapperExt {
"pay_price, pay_real_price, ",
"order_status, remarks, ",
"create_time, surplus_refund_price, ",
"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)",
"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)",
"values (#{productType,jdbcType=INTEGER}, #{companyId,jdbcType=BIGINT}, ",
"#{companyName,jdbcType=VARCHAR}, #{merId,jdbcType=BIGINT}, ",
"#{merName,jdbcType=VARCHAR}, #{storeId,jdbcType=BIGINT}, ",
@ -75,14 +76,15 @@ public interface HighOrderMapper extends HighOrderMapperExt {
"#{payPrice,jdbcType=DECIMAL}, #{payRealPrice,jdbcType=DECIMAL}, ",
"#{orderStatus,jdbcType=INTEGER}, #{remarks,jdbcType=VARCHAR}, ",
"#{createTime,jdbcType=TIMESTAMP}, #{surplusRefundPrice,jdbcType=DECIMAL}, ",
"#{payTime,jdbcType=TIMESTAMP}, #{finishTime,jdbcType=TIMESTAMP}, ",
"#{cancelTime,jdbcType=TIMESTAMP}, #{cancelRemarks,jdbcType=VARCHAR}, ",
"#{refundTime,jdbcType=TIMESTAMP}, #{accountMerchantNum,jdbcType=VARCHAR}, ",
"#{profitSharingStatus,jdbcType=BIT}, #{profitSharingRecordId,jdbcType=BIGINT}, ",
"#{whetherCheck,jdbcType=BIT}, #{whetherRebate,jdbcType=BIT}, ",
"#{exceptionStatus,jdbcType=BIT}, #{exceptionContent,jdbcType=VARCHAR}, ",
"#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR}, ",
"#{ext4,jdbcType=VARCHAR}, #{ext5,jdbcType=VARCHAR}, #{ext6,jdbcType=VARCHAR})"
"#{surplusRefundIntegral,jdbcType=INTEGER}, #{payTime,jdbcType=TIMESTAMP}, ",
"#{finishTime,jdbcType=TIMESTAMP}, #{cancelTime,jdbcType=TIMESTAMP}, ",
"#{cancelRemarks,jdbcType=VARCHAR}, #{refundTime,jdbcType=TIMESTAMP}, ",
"#{accountMerchantNum,jdbcType=VARCHAR}, #{profitSharingStatus,jdbcType=BIT}, ",
"#{profitSharingRecordId,jdbcType=BIGINT}, #{whetherCheck,jdbcType=BIT}, ",
"#{whetherRebate,jdbcType=BIT}, #{exceptionStatus,jdbcType=BIT}, ",
"#{exceptionContent,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(HighOrder record);
@ -123,6 +125,7 @@ public interface HighOrderMapper extends HighOrderMapperExt {
@Result(column="remarks", property="remarks", jdbcType=JdbcType.VARCHAR),
@Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="surplus_refund_price", property="surplusRefundPrice", jdbcType=JdbcType.DECIMAL),
@Result(column="surplus_refund_integral", property="surplusRefundIntegral", jdbcType=JdbcType.INTEGER),
@Result(column="pay_time", property="payTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="finish_time", property="finishTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="cancel_time", property="cancelTime", jdbcType=JdbcType.TIMESTAMP),
@ -150,10 +153,10 @@ public interface HighOrderMapper extends HighOrderMapperExt {
"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, 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",
"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}"
})
@ -188,6 +191,7 @@ public interface HighOrderMapper extends HighOrderMapperExt {
@Result(column="remarks", property="remarks", jdbcType=JdbcType.VARCHAR),
@Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="surplus_refund_price", property="surplusRefundPrice", jdbcType=JdbcType.DECIMAL),
@Result(column="surplus_refund_integral", property="surplusRefundIntegral", jdbcType=JdbcType.INTEGER),
@Result(column="pay_time", property="payTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="finish_time", property="finishTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="cancel_time", property="cancelTime", jdbcType=JdbcType.TIMESTAMP),
@ -249,6 +253,7 @@ public interface HighOrderMapper extends HighOrderMapperExt {
"remarks = #{remarks,jdbcType=VARCHAR},",
"create_time = #{createTime,jdbcType=TIMESTAMP},",
"surplus_refund_price = #{surplusRefundPrice,jdbcType=DECIMAL},",
"surplus_refund_integral = #{surplusRefundIntegral,jdbcType=INTEGER},",
"pay_time = #{payTime,jdbcType=TIMESTAMP},",
"finish_time = #{finishTime,jdbcType=TIMESTAMP},",
"cancel_time = #{cancelTime,jdbcType=TIMESTAMP},",

@ -46,12 +46,13 @@ public interface HighOrderRefundMapper extends HighOrderRefundMapperExt {
"goods_name, goods_desc, ",
"goods_img, goods_spec_name, ",
"goods_count, refund_order, ",
"return_total_price, refund_price, ",
"refund_gold, refund_remark, ",
"refund_status, refund_fail_reason, ",
"create_time, update_time, ",
"ext_1, ext_2, ext_3, ",
"ext_4, ext_5, ext_6)",
"return_total_price, refund_goods_num, ",
"refund_price, refund_integral, ",
"refund_remark, refund_status, ",
"refund_fail_reason, create_time, ",
"update_time, ext_1, ",
"ext_2, ext_3, ext_4, ",
"ext_5, ext_6)",
"values (#{orderId,jdbcType=BIGINT}, #{orderNo,jdbcType=VARCHAR}, ",
"#{orderChildId,jdbcType=BIGINT}, #{orderChildNo,jdbcType=VARCHAR}, ",
"#{memId,jdbcType=BIGINT}, #{memName,jdbcType=VARCHAR}, #{memPhone,jdbcType=VARCHAR}, ",
@ -59,12 +60,13 @@ public interface HighOrderRefundMapper extends HighOrderRefundMapperExt {
"#{goodsName,jdbcType=VARCHAR}, #{goodsDesc,jdbcType=VARCHAR}, ",
"#{goodsImg,jdbcType=VARCHAR}, #{goodsSpecName,jdbcType=VARCHAR}, ",
"#{goodsCount,jdbcType=INTEGER}, #{refundOrder,jdbcType=VARCHAR}, ",
"#{returnTotalPrice,jdbcType=DECIMAL}, #{refundPrice,jdbcType=DECIMAL}, ",
"#{refundGold,jdbcType=INTEGER}, #{refundRemark,jdbcType=VARCHAR}, ",
"#{refundStatus,jdbcType=INTEGER}, #{refundFailReason,jdbcType=VARCHAR}, ",
"#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, ",
"#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR}, ",
"#{ext4,jdbcType=VARCHAR}, #{ext5,jdbcType=VARCHAR}, #{ext6,jdbcType=VARCHAR})"
"#{returnTotalPrice,jdbcType=DECIMAL}, #{refundGoodsNum,jdbcType=INTEGER}, ",
"#{refundPrice,jdbcType=DECIMAL}, #{refundIntegral,jdbcType=INTEGER}, ",
"#{refundRemark,jdbcType=VARCHAR}, #{refundStatus,jdbcType=INTEGER}, ",
"#{refundFailReason,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, ",
"#{updateTime,jdbcType=TIMESTAMP}, #{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(HighOrderRefund record);
@ -92,8 +94,9 @@ public interface HighOrderRefundMapper extends HighOrderRefundMapperExt {
@Result(column="goods_count", property="goodsCount", jdbcType=JdbcType.INTEGER),
@Result(column="refund_order", property="refundOrder", jdbcType=JdbcType.VARCHAR),
@Result(column="return_total_price", property="returnTotalPrice", jdbcType=JdbcType.DECIMAL),
@Result(column="refund_goods_num", property="refundGoodsNum", jdbcType=JdbcType.INTEGER),
@Result(column="refund_price", property="refundPrice", jdbcType=JdbcType.DECIMAL),
@Result(column="refund_gold", property="refundGold", jdbcType=JdbcType.INTEGER),
@Result(column="refund_integral", property="refundIntegral", jdbcType=JdbcType.INTEGER),
@Result(column="refund_remark", property="refundRemark", jdbcType=JdbcType.VARCHAR),
@Result(column="refund_status", property="refundStatus", jdbcType=JdbcType.INTEGER),
@Result(column="refund_fail_reason", property="refundFailReason", jdbcType=JdbcType.VARCHAR),
@ -112,9 +115,9 @@ public interface HighOrderRefundMapper extends HighOrderRefundMapperExt {
"select",
"id, order_id, order_no, order_child_id, order_child_no, mem_id, mem_name, mem_phone, ",
"goods_type, goods_id, goods_name, goods_desc, goods_img, goods_spec_name, goods_count, ",
"refund_order, return_total_price, refund_price, refund_gold, refund_remark, ",
"refund_status, refund_fail_reason, create_time, update_time, ext_1, ext_2, ext_3, ",
"ext_4, ext_5, ext_6",
"refund_order, return_total_price, refund_goods_num, refund_price, refund_integral, ",
"refund_remark, refund_status, refund_fail_reason, create_time, update_time, ",
"ext_1, ext_2, ext_3, ext_4, ext_5, ext_6",
"from high_order_refund",
"where id = #{id,jdbcType=BIGINT}"
})
@ -136,8 +139,9 @@ public interface HighOrderRefundMapper extends HighOrderRefundMapperExt {
@Result(column="goods_count", property="goodsCount", jdbcType=JdbcType.INTEGER),
@Result(column="refund_order", property="refundOrder", jdbcType=JdbcType.VARCHAR),
@Result(column="return_total_price", property="returnTotalPrice", jdbcType=JdbcType.DECIMAL),
@Result(column="refund_goods_num", property="refundGoodsNum", jdbcType=JdbcType.INTEGER),
@Result(column="refund_price", property="refundPrice", jdbcType=JdbcType.DECIMAL),
@Result(column="refund_gold", property="refundGold", jdbcType=JdbcType.INTEGER),
@Result(column="refund_integral", property="refundIntegral", jdbcType=JdbcType.INTEGER),
@Result(column="refund_remark", property="refundRemark", jdbcType=JdbcType.VARCHAR),
@Result(column="refund_status", property="refundStatus", jdbcType=JdbcType.INTEGER),
@Result(column="refund_fail_reason", property="refundFailReason", jdbcType=JdbcType.VARCHAR),
@ -179,8 +183,9 @@ public interface HighOrderRefundMapper extends HighOrderRefundMapperExt {
"goods_count = #{goodsCount,jdbcType=INTEGER},",
"refund_order = #{refundOrder,jdbcType=VARCHAR},",
"return_total_price = #{returnTotalPrice,jdbcType=DECIMAL},",
"refund_goods_num = #{refundGoodsNum,jdbcType=INTEGER},",
"refund_price = #{refundPrice,jdbcType=DECIMAL},",
"refund_gold = #{refundGold,jdbcType=INTEGER},",
"refund_integral = #{refundIntegral,jdbcType=INTEGER},",
"refund_remark = #{refundRemark,jdbcType=VARCHAR},",
"refund_status = #{refundStatus,jdbcType=INTEGER},",
"refund_fail_reason = #{refundFailReason,jdbcType=VARCHAR},",

@ -92,12 +92,16 @@ public class HighOrderRefundSqlProvider {
sql.VALUES("return_total_price", "#{returnTotalPrice,jdbcType=DECIMAL}");
}
if (record.getRefundGoodsNum() != null) {
sql.VALUES("refund_goods_num", "#{refundGoodsNum,jdbcType=INTEGER}");
}
if (record.getRefundPrice() != null) {
sql.VALUES("refund_price", "#{refundPrice,jdbcType=DECIMAL}");
}
if (record.getRefundGold() != null) {
sql.VALUES("refund_gold", "#{refundGold,jdbcType=INTEGER}");
if (record.getRefundIntegral() != null) {
sql.VALUES("refund_integral", "#{refundIntegral,jdbcType=INTEGER}");
}
if (record.getRefundRemark() != null) {
@ -170,8 +174,9 @@ public class HighOrderRefundSqlProvider {
sql.SELECT("goods_count");
sql.SELECT("refund_order");
sql.SELECT("return_total_price");
sql.SELECT("refund_goods_num");
sql.SELECT("refund_price");
sql.SELECT("refund_gold");
sql.SELECT("refund_integral");
sql.SELECT("refund_remark");
sql.SELECT("refund_status");
sql.SELECT("refund_fail_reason");
@ -268,12 +273,16 @@ public class HighOrderRefundSqlProvider {
sql.SET("return_total_price = #{record.returnTotalPrice,jdbcType=DECIMAL}");
}
if (record.getRefundGoodsNum() != null) {
sql.SET("refund_goods_num = #{record.refundGoodsNum,jdbcType=INTEGER}");
}
if (record.getRefundPrice() != null) {
sql.SET("refund_price = #{record.refundPrice,jdbcType=DECIMAL}");
}
if (record.getRefundGold() != null) {
sql.SET("refund_gold = #{record.refundGold,jdbcType=INTEGER}");
if (record.getRefundIntegral() != null) {
sql.SET("refund_integral = #{record.refundIntegral,jdbcType=INTEGER}");
}
if (record.getRefundRemark() != null) {
@ -345,8 +354,9 @@ public class HighOrderRefundSqlProvider {
sql.SET("goods_count = #{record.goodsCount,jdbcType=INTEGER}");
sql.SET("refund_order = #{record.refundOrder,jdbcType=VARCHAR}");
sql.SET("return_total_price = #{record.returnTotalPrice,jdbcType=DECIMAL}");
sql.SET("refund_goods_num = #{record.refundGoodsNum,jdbcType=INTEGER}");
sql.SET("refund_price = #{record.refundPrice,jdbcType=DECIMAL}");
sql.SET("refund_gold = #{record.refundGold,jdbcType=INTEGER}");
sql.SET("refund_integral = #{record.refundIntegral,jdbcType=INTEGER}");
sql.SET("refund_remark = #{record.refundRemark,jdbcType=VARCHAR}");
sql.SET("refund_status = #{record.refundStatus,jdbcType=INTEGER}");
sql.SET("refund_fail_reason = #{record.refundFailReason,jdbcType=VARCHAR}");
@ -432,12 +442,16 @@ public class HighOrderRefundSqlProvider {
sql.SET("return_total_price = #{returnTotalPrice,jdbcType=DECIMAL}");
}
if (record.getRefundGoodsNum() != null) {
sql.SET("refund_goods_num = #{refundGoodsNum,jdbcType=INTEGER}");
}
if (record.getRefundPrice() != null) {
sql.SET("refund_price = #{refundPrice,jdbcType=DECIMAL}");
}
if (record.getRefundGold() != null) {
sql.SET("refund_gold = #{refundGold,jdbcType=INTEGER}");
if (record.getRefundIntegral() != null) {
sql.SET("refund_integral = #{refundIntegral,jdbcType=INTEGER}");
}
if (record.getRefundRemark() != null) {

@ -144,6 +144,10 @@ public class HighOrderSqlProvider {
sql.VALUES("surplus_refund_price", "#{surplusRefundPrice,jdbcType=DECIMAL}");
}
if (record.getSurplusRefundIntegral() != null) {
sql.VALUES("surplus_refund_integral", "#{surplusRefundIntegral,jdbcType=INTEGER}");
}
if (record.getPayTime() != null) {
sql.VALUES("pay_time", "#{payTime,jdbcType=TIMESTAMP}");
}
@ -255,6 +259,7 @@ public class HighOrderSqlProvider {
sql.SELECT("remarks");
sql.SELECT("create_time");
sql.SELECT("surplus_refund_price");
sql.SELECT("surplus_refund_integral");
sql.SELECT("pay_time");
sql.SELECT("finish_time");
sql.SELECT("cancel_time");
@ -410,6 +415,10 @@ public class HighOrderSqlProvider {
sql.SET("surplus_refund_price = #{record.surplusRefundPrice,jdbcType=DECIMAL}");
}
if (record.getSurplusRefundIntegral() != null) {
sql.SET("surplus_refund_integral = #{record.surplusRefundIntegral,jdbcType=INTEGER}");
}
if (record.getPayTime() != null) {
sql.SET("pay_time = #{record.payTime,jdbcType=TIMESTAMP}");
}
@ -520,6 +529,7 @@ public class HighOrderSqlProvider {
sql.SET("remarks = #{record.remarks,jdbcType=VARCHAR}");
sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}");
sql.SET("surplus_refund_price = #{record.surplusRefundPrice,jdbcType=DECIMAL}");
sql.SET("surplus_refund_integral = #{record.surplusRefundIntegral,jdbcType=INTEGER}");
sql.SET("pay_time = #{record.payTime,jdbcType=TIMESTAMP}");
sql.SET("finish_time = #{record.finishTime,jdbcType=TIMESTAMP}");
sql.SET("cancel_time = #{record.cancelTime,jdbcType=TIMESTAMP}");
@ -664,6 +674,10 @@ public class HighOrderSqlProvider {
sql.SET("surplus_refund_price = #{surplusRefundPrice,jdbcType=DECIMAL}");
}
if (record.getSurplusRefundIntegral() != null) {
sql.SET("surplus_refund_integral = #{surplusRefundIntegral,jdbcType=INTEGER}");
}
if (record.getPayTime() != null) {
sql.SET("pay_time = #{payTime,jdbcType=TIMESTAMP}");
}

@ -174,6 +174,11 @@ public class HighOrder implements Serializable {
*/
private BigDecimal surplusRefundPrice;
/**
* 可退款积分
*/
private Integer surplusRefundIntegral;
/**
* 支付时间
*/
@ -498,6 +503,14 @@ public class HighOrder implements Serializable {
this.surplusRefundPrice = surplusRefundPrice;
}
public Integer getSurplusRefundIntegral() {
return surplusRefundIntegral;
}
public void setSurplusRefundIntegral(Integer surplusRefundIntegral) {
this.surplusRefundIntegral = surplusRefundIntegral;
}
public Date getPayTime() {
return payTime;
}
@ -684,6 +697,7 @@ public class HighOrder implements Serializable {
&& (this.getRemarks() == null ? other.getRemarks() == null : this.getRemarks().equals(other.getRemarks()))
&& (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
&& (this.getSurplusRefundPrice() == null ? other.getSurplusRefundPrice() == null : this.getSurplusRefundPrice().equals(other.getSurplusRefundPrice()))
&& (this.getSurplusRefundIntegral() == null ? other.getSurplusRefundIntegral() == null : this.getSurplusRefundIntegral().equals(other.getSurplusRefundIntegral()))
&& (this.getPayTime() == null ? other.getPayTime() == null : this.getPayTime().equals(other.getPayTime()))
&& (this.getFinishTime() == null ? other.getFinishTime() == null : this.getFinishTime().equals(other.getFinishTime()))
&& (this.getCancelTime() == null ? other.getCancelTime() == null : this.getCancelTime().equals(other.getCancelTime()))
@ -738,6 +752,7 @@ public class HighOrder implements Serializable {
result = prime * result + ((getRemarks() == null) ? 0 : getRemarks().hashCode());
result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
result = prime * result + ((getSurplusRefundPrice() == null) ? 0 : getSurplusRefundPrice().hashCode());
result = prime * result + ((getSurplusRefundIntegral() == null) ? 0 : getSurplusRefundIntegral().hashCode());
result = prime * result + ((getPayTime() == null) ? 0 : getPayTime().hashCode());
result = prime * result + ((getFinishTime() == null) ? 0 : getFinishTime().hashCode());
result = prime * result + ((getCancelTime() == null) ? 0 : getCancelTime().hashCode());
@ -795,6 +810,7 @@ public class HighOrder implements Serializable {
sb.append(", remarks=").append(remarks);
sb.append(", createTime=").append(createTime);
sb.append(", surplusRefundPrice=").append(surplusRefundPrice);
sb.append(", surplusRefundIntegral=").append(surplusRefundIntegral);
sb.append(", payTime=").append(payTime);
sb.append(", finishTime=").append(finishTime);
sb.append(", cancelTime=").append(cancelTime);

@ -2036,6 +2036,66 @@ public class HighOrderExample {
return (Criteria) this;
}
public Criteria andSurplusRefundIntegralIsNull() {
addCriterion("surplus_refund_integral is null");
return (Criteria) this;
}
public Criteria andSurplusRefundIntegralIsNotNull() {
addCriterion("surplus_refund_integral is not null");
return (Criteria) this;
}
public Criteria andSurplusRefundIntegralEqualTo(Integer value) {
addCriterion("surplus_refund_integral =", value, "surplusRefundIntegral");
return (Criteria) this;
}
public Criteria andSurplusRefundIntegralNotEqualTo(Integer value) {
addCriterion("surplus_refund_integral <>", value, "surplusRefundIntegral");
return (Criteria) this;
}
public Criteria andSurplusRefundIntegralGreaterThan(Integer value) {
addCriterion("surplus_refund_integral >", value, "surplusRefundIntegral");
return (Criteria) this;
}
public Criteria andSurplusRefundIntegralGreaterThanOrEqualTo(Integer value) {
addCriterion("surplus_refund_integral >=", value, "surplusRefundIntegral");
return (Criteria) this;
}
public Criteria andSurplusRefundIntegralLessThan(Integer value) {
addCriterion("surplus_refund_integral <", value, "surplusRefundIntegral");
return (Criteria) this;
}
public Criteria andSurplusRefundIntegralLessThanOrEqualTo(Integer value) {
addCriterion("surplus_refund_integral <=", value, "surplusRefundIntegral");
return (Criteria) this;
}
public Criteria andSurplusRefundIntegralIn(List<Integer> values) {
addCriterion("surplus_refund_integral in", values, "surplusRefundIntegral");
return (Criteria) this;
}
public Criteria andSurplusRefundIntegralNotIn(List<Integer> values) {
addCriterion("surplus_refund_integral not in", values, "surplusRefundIntegral");
return (Criteria) this;
}
public Criteria andSurplusRefundIntegralBetween(Integer value1, Integer value2) {
addCriterion("surplus_refund_integral between", value1, value2, "surplusRefundIntegral");
return (Criteria) this;
}
public Criteria andSurplusRefundIntegralNotBetween(Integer value1, Integer value2) {
addCriterion("surplus_refund_integral not between", value1, value2, "surplusRefundIntegral");
return (Criteria) this;
}
public Criteria andPayTimeIsNull() {
addCriterion("pay_time is null");
return (Criteria) this;

@ -109,6 +109,11 @@ public class HighOrderRefund implements Serializable {
*/
private BigDecimal returnTotalPrice;
/**
* 退款商品数量
*/
private Integer refundGoodsNum;
/**
* 退款金额
*/
@ -117,7 +122,7 @@ public class HighOrderRefund implements Serializable {
/**
* 退款积分
*/
private Integer refundGold;
private Integer refundIntegral;
/**
* 退款备注
@ -297,6 +302,14 @@ public class HighOrderRefund implements Serializable {
this.returnTotalPrice = returnTotalPrice;
}
public Integer getRefundGoodsNum() {
return refundGoodsNum;
}
public void setRefundGoodsNum(Integer refundGoodsNum) {
this.refundGoodsNum = refundGoodsNum;
}
public BigDecimal getRefundPrice() {
return refundPrice;
}
@ -305,12 +318,12 @@ public class HighOrderRefund implements Serializable {
this.refundPrice = refundPrice;
}
public Integer getRefundGold() {
return refundGold;
public Integer getRefundIntegral() {
return refundIntegral;
}
public void setRefundGold(Integer refundGold) {
this.refundGold = refundGold;
public void setRefundIntegral(Integer refundIntegral) {
this.refundIntegral = refundIntegral;
}
public String getRefundRemark() {
@ -430,8 +443,9 @@ public class HighOrderRefund implements Serializable {
&& (this.getGoodsCount() == null ? other.getGoodsCount() == null : this.getGoodsCount().equals(other.getGoodsCount()))
&& (this.getRefundOrder() == null ? other.getRefundOrder() == null : this.getRefundOrder().equals(other.getRefundOrder()))
&& (this.getReturnTotalPrice() == null ? other.getReturnTotalPrice() == null : this.getReturnTotalPrice().equals(other.getReturnTotalPrice()))
&& (this.getRefundGoodsNum() == null ? other.getRefundGoodsNum() == null : this.getRefundGoodsNum().equals(other.getRefundGoodsNum()))
&& (this.getRefundPrice() == null ? other.getRefundPrice() == null : this.getRefundPrice().equals(other.getRefundPrice()))
&& (this.getRefundGold() == null ? other.getRefundGold() == null : this.getRefundGold().equals(other.getRefundGold()))
&& (this.getRefundIntegral() == null ? other.getRefundIntegral() == null : this.getRefundIntegral().equals(other.getRefundIntegral()))
&& (this.getRefundRemark() == null ? other.getRefundRemark() == null : this.getRefundRemark().equals(other.getRefundRemark()))
&& (this.getRefundStatus() == null ? other.getRefundStatus() == null : this.getRefundStatus().equals(other.getRefundStatus()))
&& (this.getRefundFailReason() == null ? other.getRefundFailReason() == null : this.getRefundFailReason().equals(other.getRefundFailReason()))
@ -466,8 +480,9 @@ public class HighOrderRefund implements Serializable {
result = prime * result + ((getGoodsCount() == null) ? 0 : getGoodsCount().hashCode());
result = prime * result + ((getRefundOrder() == null) ? 0 : getRefundOrder().hashCode());
result = prime * result + ((getReturnTotalPrice() == null) ? 0 : getReturnTotalPrice().hashCode());
result = prime * result + ((getRefundGoodsNum() == null) ? 0 : getRefundGoodsNum().hashCode());
result = prime * result + ((getRefundPrice() == null) ? 0 : getRefundPrice().hashCode());
result = prime * result + ((getRefundGold() == null) ? 0 : getRefundGold().hashCode());
result = prime * result + ((getRefundIntegral() == null) ? 0 : getRefundIntegral().hashCode());
result = prime * result + ((getRefundRemark() == null) ? 0 : getRefundRemark().hashCode());
result = prime * result + ((getRefundStatus() == null) ? 0 : getRefundStatus().hashCode());
result = prime * result + ((getRefundFailReason() == null) ? 0 : getRefundFailReason().hashCode());
@ -505,8 +520,9 @@ public class HighOrderRefund implements Serializable {
sb.append(", goodsCount=").append(goodsCount);
sb.append(", refundOrder=").append(refundOrder);
sb.append(", returnTotalPrice=").append(returnTotalPrice);
sb.append(", refundGoodsNum=").append(refundGoodsNum);
sb.append(", refundPrice=").append(refundPrice);
sb.append(", refundGold=").append(refundGold);
sb.append(", refundIntegral=").append(refundIntegral);
sb.append(", refundRemark=").append(refundRemark);
sb.append(", refundStatus=").append(refundStatus);
sb.append(", refundFailReason=").append(refundFailReason);

@ -1236,6 +1236,66 @@ public class HighOrderRefundExample {
return (Criteria) this;
}
public Criteria andRefundGoodsNumIsNull() {
addCriterion("refund_goods_num is null");
return (Criteria) this;
}
public Criteria andRefundGoodsNumIsNotNull() {
addCriterion("refund_goods_num is not null");
return (Criteria) this;
}
public Criteria andRefundGoodsNumEqualTo(Integer value) {
addCriterion("refund_goods_num =", value, "refundGoodsNum");
return (Criteria) this;
}
public Criteria andRefundGoodsNumNotEqualTo(Integer value) {
addCriterion("refund_goods_num <>", value, "refundGoodsNum");
return (Criteria) this;
}
public Criteria andRefundGoodsNumGreaterThan(Integer value) {
addCriterion("refund_goods_num >", value, "refundGoodsNum");
return (Criteria) this;
}
public Criteria andRefundGoodsNumGreaterThanOrEqualTo(Integer value) {
addCriterion("refund_goods_num >=", value, "refundGoodsNum");
return (Criteria) this;
}
public Criteria andRefundGoodsNumLessThan(Integer value) {
addCriterion("refund_goods_num <", value, "refundGoodsNum");
return (Criteria) this;
}
public Criteria andRefundGoodsNumLessThanOrEqualTo(Integer value) {
addCriterion("refund_goods_num <=", value, "refundGoodsNum");
return (Criteria) this;
}
public Criteria andRefundGoodsNumIn(List<Integer> values) {
addCriterion("refund_goods_num in", values, "refundGoodsNum");
return (Criteria) this;
}
public Criteria andRefundGoodsNumNotIn(List<Integer> values) {
addCriterion("refund_goods_num not in", values, "refundGoodsNum");
return (Criteria) this;
}
public Criteria andRefundGoodsNumBetween(Integer value1, Integer value2) {
addCriterion("refund_goods_num between", value1, value2, "refundGoodsNum");
return (Criteria) this;
}
public Criteria andRefundGoodsNumNotBetween(Integer value1, Integer value2) {
addCriterion("refund_goods_num not between", value1, value2, "refundGoodsNum");
return (Criteria) this;
}
public Criteria andRefundPriceIsNull() {
addCriterion("refund_price is null");
return (Criteria) this;
@ -1296,63 +1356,63 @@ public class HighOrderRefundExample {
return (Criteria) this;
}
public Criteria andRefundGoldIsNull() {
addCriterion("refund_gold is null");
public Criteria andRefundIntegralIsNull() {
addCriterion("refund_integral is null");
return (Criteria) this;
}
public Criteria andRefundGoldIsNotNull() {
addCriterion("refund_gold is not null");
public Criteria andRefundIntegralIsNotNull() {
addCriterion("refund_integral is not null");
return (Criteria) this;
}
public Criteria andRefundGoldEqualTo(Integer value) {
addCriterion("refund_gold =", value, "refundGold");
public Criteria andRefundIntegralEqualTo(Integer value) {
addCriterion("refund_integral =", value, "refundIntegral");
return (Criteria) this;
}
public Criteria andRefundGoldNotEqualTo(Integer value) {
addCriterion("refund_gold <>", value, "refundGold");
public Criteria andRefundIntegralNotEqualTo(Integer value) {
addCriterion("refund_integral <>", value, "refundIntegral");
return (Criteria) this;
}
public Criteria andRefundGoldGreaterThan(Integer value) {
addCriterion("refund_gold >", value, "refundGold");
public Criteria andRefundIntegralGreaterThan(Integer value) {
addCriterion("refund_integral >", value, "refundIntegral");
return (Criteria) this;
}
public Criteria andRefundGoldGreaterThanOrEqualTo(Integer value) {
addCriterion("refund_gold >=", value, "refundGold");
public Criteria andRefundIntegralGreaterThanOrEqualTo(Integer value) {
addCriterion("refund_integral >=", value, "refundIntegral");
return (Criteria) this;
}
public Criteria andRefundGoldLessThan(Integer value) {
addCriterion("refund_gold <", value, "refundGold");
public Criteria andRefundIntegralLessThan(Integer value) {
addCriterion("refund_integral <", value, "refundIntegral");
return (Criteria) this;
}
public Criteria andRefundGoldLessThanOrEqualTo(Integer value) {
addCriterion("refund_gold <=", value, "refundGold");
public Criteria andRefundIntegralLessThanOrEqualTo(Integer value) {
addCriterion("refund_integral <=", value, "refundIntegral");
return (Criteria) this;
}
public Criteria andRefundGoldIn(List<Integer> values) {
addCriterion("refund_gold in", values, "refundGold");
public Criteria andRefundIntegralIn(List<Integer> values) {
addCriterion("refund_integral in", values, "refundIntegral");
return (Criteria) this;
}
public Criteria andRefundGoldNotIn(List<Integer> values) {
addCriterion("refund_gold not in", values, "refundGold");
public Criteria andRefundIntegralNotIn(List<Integer> values) {
addCriterion("refund_integral not in", values, "refundIntegral");
return (Criteria) this;
}
public Criteria andRefundGoldBetween(Integer value1, Integer value2) {
addCriterion("refund_gold between", value1, value2, "refundGold");
public Criteria andRefundIntegralBetween(Integer value1, Integer value2) {
addCriterion("refund_integral between", value1, value2, "refundIntegral");
return (Criteria) this;
}
public Criteria andRefundGoldNotBetween(Integer value1, Integer value2) {
addCriterion("refund_gold not between", value1, value2, "refundGold");
public Criteria andRefundIntegralNotBetween(Integer value1, Integer value2) {
addCriterion("refund_integral not between", value1, value2, "refundIntegral");
return (Criteria) this;
}

@ -11,6 +11,20 @@ import com.hai.entity.HighOrder;
**/
public interface OrderPaySuccessService {
/**
* 订单支付成功业务
* @param order
* @return
*/
HighOrder orderPaySuccessHandle(HighOrder order);
/**
* 异步处理订单支付成功业务
* @param order
* @return
*/
void asyncOrderPaySuccess(HighOrder order);
/**
* 卡券业务
* @param childOrder

@ -2,6 +2,7 @@ package com.hai.order.service;
import com.hai.entity.HighChildOrder;
import com.hai.entity.HighOrder;
import com.hai.entity.HighOrderRefund;
/**
* 订单退款业务
@ -16,14 +17,14 @@ public interface OrderRefundService {
* @param order 交易订单
* @param remarks 退款备注
*/
HighOrder createOrderRefund(HighOrder order, String remarks);
HighOrder createOrderRefund(HighOrder order, String remarks) throws Exception;
/**
* 子订单退款
* @param orderChild 子订单
* @param refundCount 退款数量
* @param refundGoodsCount 退款商品数量
* @param remarks 退款备注
*/
HighChildOrder createOrderChildRefund(HighChildOrder orderChild,Integer refundCount, String remarks);
HighOrderRefund createOrderChildRefund(HighChildOrder orderChild, String refundNo, Integer refundGoodsCount, String remarks) throws Exception;
}

@ -49,15 +49,16 @@ public interface OrderService {
* @param remarks
* @return
*/
HighOrder refundOrder(String orderNo,String remarks);
HighOrder refundOrder(String orderNo,String remarks) throws Exception;
/**
* 子订单退款
* @param childOrderNo
* @param refundGoodsNum
* @param remarks
* @return
*/
HighOrder refundChildOrder(String childOrderNo,String remarks);
HighOrder refundChildOrder(String orderNo,String childOrderNo,Integer refundGoodsNum,String remarks) throws Exception;
/**
* 根据订单号查询交易订单号详情
@ -73,21 +74,6 @@ public interface OrderService {
*/
HighChildOrder getChildOrderByNo(String childOrderNo);
/**
* 订单支付成功业务
* @param order
* @return
*/
HighOrder orderPaySuccessBus(HighOrder order);
/**
* 异步处理订单支付成功业务
* @param order
* @return
*/
void asyncOrderPaySuccess(HighOrder order);
List<HighOrder> getOrderList(Map<String,Object> param);
}

@ -0,0 +1,30 @@
package com.hai.order.service.impl;
import com.hai.entity.HighOrder;
import com.hai.entity.HighUserCard;
/**
* 订单支付
* @className: OrderPayService
* @author: HuRui
* @date: 2022/9/5
**/
public interface OrderPayService {
/**
* 汇联通工会卡支付
* @param order 订单数据
* @param userCard 用户卡号
* @return
*/
HighOrder hltCardPay(HighOrder order, HighUserCard userCard) throws Exception;
/**
* 嗨森逛油卡支付
* @param order 订单数据
* @param userCard 用户卡号
* @return
*/
HighOrder oilCardPay(HighOrder order, HighUserCard userCard);
}

@ -0,0 +1,132 @@
package com.hai.order.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
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.HuiLianTongUnionCardConfig;
import com.hai.config.TuanYouConfig;
import com.hai.entity.*;
import com.hai.enum_type.OilCardRecordSourceTypeEnum;
import com.hai.enum_type.OrderPayTypeEnum;
import com.hai.enum_type.OrderPushType;
import com.hai.order.service.OrderPaySuccessService;
import com.hai.order.service.OrderService;
import com.hai.order.type.OrderChildStatus;
import com.hai.order.type.OrderPayType;
import com.hai.order.type.OrderProductType;
import com.hai.order.type.OrderStatus;
import com.hai.service.HighOilCardService;
import com.hai.service.HighUserCardService;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* @className: OrderPayServiceImpl
* @author: HuRui
* @date: 2022/9/5
**/
public class OrderPayServiceImpl implements OrderPayService {
@Resource
private OrderPaySuccessService orderPaySuccessService;
@Resource
private HighUserCardService userCardService;
@Resource
private HighOilCardService oilCardService;
@Resource
private OrderService orderService;
@Override
public HighOrder hltCardPay(HighOrder order, HighUserCard userCard) throws Exception {
String goodsDesc = "";
String tranDesc = "";
String instCode = "11101527";
String businessType = "hisen_consume";
if (order.getProductType().equals(OrderProductType.PRODUCT_TYPE5.getNumber())) {
instCode = "11101526";
businessType = "sinopec_oil_code";
goodsDesc = "购买加油券";
tranDesc = order.getHighChildOrderList().get(0).getGoodsName();
} else if (order.getProductType().equals(OrderProductType.PRODUCT_TYPE4.getNumber())) {
goodsDesc = "积分充值" + order.getPayPrice() + "元";
tranDesc = "嗨森逛积分充值" + order.getPayPrice() + "元";
} else if (order.getProductType().equals(OrderProductType.PRODUCT_TYPE6.getNumber())) {
goodsDesc = "加油站加" + order.getPayPrice() + "元油";
tranDesc = "【" + order.getHighChildOrderList().get(0).getGoodsName() + "】加油" + order.getPayPrice() + "元";
} else if (order.getProductType().equals(OrderProductType.PRODUCT_TYPE7.getNumber())) {
goodsDesc = "购买优惠券包";
tranDesc = "购买" + order.getHighChildOrderList().get(0).getGoodsName() + "优惠券包";
} else {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "暂时无法支付,请使用其他支付方式");
}
// 工会卡支付
JSONObject consumption = HuiLianTongUnionCardConfig.consumption(order.getOrderNo(), userCard.getCardNo(), order.getPayPrice(), businessType, instCode, goodsDesc, tranDesc);
if (!consumption.getString("respCode").equals("0000")) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, consumption.getString("respMessage"));
}
// 响应参数
JSONObject consumptionResult = HuiLianTongUnionCardConfig.resolveResponse(consumption.getString("data"));
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;
}
@Override
public HighOrder oilCardPay(HighOrder order, HighUserCard userCard) {
// 油卡扣款
Map<String, Object> consumeMap = new HashMap<>();
consumeMap.put("sourceType", OilCardRecordSourceTypeEnum.type2.getType());
consumeMap.put("sourceId", order.getId());
consumeMap.put("sourceOrderNo", order.getOrderNo());
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;
}
}

@ -1,7 +1,12 @@
package com.hai.order.service.impl;
import com.hai.common.exception.ErrorCode;
import com.hai.common.exception.ErrorHelp;
import com.hai.common.exception.SysCode;
import com.hai.entity.*;
import com.hai.order.service.OrderPaySuccessService;
import com.hai.order.service.OrderService;
import com.hai.order.type.OrderChildGoodsType;
import com.hai.service.*;
import org.springframework.stereotype.Service;
@ -17,6 +22,9 @@ import java.util.Date;
@Service("orderPaySuccessService")
public class OrderPaySuccessServiceImpl implements OrderPaySuccessService {
@Resource
private OrderService orderService;
@Resource
private HighCouponService couponService;
@ -29,6 +37,50 @@ public class OrderPaySuccessServiceImpl implements OrderPaySuccessService {
@Resource
private HighUserService userService;
@Override
public HighOrder orderPaySuccessHandle(HighOrder order) {
try {
for (HighChildOrder childOrder : order.getHighChildOrderList()) {
if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE1.getNumber())) {
couponHandle(order, childOrder);
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE2.getNumber())) {
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE3.getNumber())) {
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE4.getNumber())) {
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE5.getNumber())) {
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE6.getNumber())) {
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE7.getNumber())) {
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE8.getNumber())) {
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE9.getNumber())) {
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE10.getNumber())) {
}
}
return order;
} catch (Exception e) {
order.setExceptionStatus(true);
order.setExceptionContent(e.getMessage());
orderService.updateOrderData(order);
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, e.getMessage());
}
}
@Override
public void asyncOrderPaySuccess(HighOrder order) {
new Thread(() -> {
orderPaySuccessHandle(order);
});
}
@Override
public void couponHandle(HighOrder order,HighChildOrder childOrder) throws Exception {

@ -13,12 +13,15 @@ import com.hai.order.type.OrderChildStatus;
import com.hai.order.type.OrderPayType;
import com.hai.order.type.OrderRefundStatus;
import com.hai.order.type.OrderStatus;
import com.hai.order.utils.OrderUtil;
import com.hai.service.HighUserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @className: OrderRefundServiceImpl
@ -38,45 +41,25 @@ public class OrderRefundServiceImpl implements OrderRefundService {
private OrderService orderService;
@Override
public HighOrder createOrderRefund(HighOrder order, String remarks) {
// 使用了积分抵扣
if (order.getPayGold() != null && order.getPayGold().intValue() > 0) {
// 积分返回
String remark = "订单" + order.getOrderNo() + "退款,退还积分:" + order.getPayGold();
userService.goldHandle(order.getMemId(), order.getPayGold(), 1, 3, order.getId() , remark);
public HighOrder createOrderRefund(HighOrder order, String remarks) throws Exception {
// 退款订单号
String refundOrderNo = OrderUtil.generateRefundOrderNo();
for (HighChildOrder orderChild : order.getHighChildOrderList()) {
// 创建退款记录
HighOrderRefund orderRefund = createOrderChildRefund(orderChild, refundOrderNo, orderChild.getSaleCount(), remarks);
orderChild.setSurplusRefundNum(orderChild.getSurplusRefundNum() - orderRefund.getRefundGoodsNum());
orderChild.setSurplusRefundPrice(orderChild.getSurplusRefundPrice().subtract(orderRefund.getRefundPrice()));
orderChild.setSurplusRefundIntegral(orderChild.getSurplusRefundIntegral() - orderRefund.getRefundIntegral());
if (orderChild.getSurplusRefundNum() == 0) {
orderChild.setChildOrderStatus(OrderChildStatus.STATUS6.getNumber());
}
order.setOrderStatus(OrderStatus.STATUS4.getNumber());
order.setRefundTime(new Date());
for (HighChildOrder childOrder : order.getHighChildOrderList()) {
childOrder.setRefundTime(new Date());
}
if (order.getPayType() != null) {
// 原路退款
if (order.getPayType().equals(OrderPayType.PAY_TYPE1.getNumber())) {
} else if (order.getPayType().equals(OrderPayType.PAY_TYPE2.getNumber())) {
} else if (order.getPayType().equals(OrderPayType.PAY_TYPE4.getNumber())) {
} else if (order.getPayType().equals(OrderPayType.PAY_TYPE5.getNumber())) {
} else if (order.getPayType().equals(OrderPayType.PAY_TYPE6.getNumber())) {
} else if (order.getPayType().equals(OrderPayType.PAY_TYPE7.getNumber())) {
}
}
return orderService.updateOrderData(order);
return order;
}
@Override
public HighChildOrder createOrderChildRefund(HighChildOrder orderChild,Integer refundCount, String remarks) {
public HighOrderRefund createOrderChildRefund(HighChildOrder orderChild,String refundNo,Integer refundGoodsCount, String remarks) throws Exception {
if (orderChild.getChildOrderStatus().equals(OrderChildStatus.STATUS2.getNumber())
|| orderChild.getChildOrderStatus().equals(OrderChildStatus.STATUS3.getNumber())){
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "子订单状态错误");
@ -85,13 +68,19 @@ public class OrderRefundServiceImpl implements OrderRefundService {
&& orderChild.getSurplusRefundPrice().compareTo(new BigDecimal("0")) <= 0) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "子订单余额不足");
}
// 判断剩余可退商品数量
if (orderChild.getSurplusRefundNum() < refundCount) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "退款商品数量过多");
if (orderChild.getSurplusRefundNum() < refundGoodsCount) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "退款商品数量超过剩余退款数量");
}
// 交易订单
HighOrder order = orderService.getOrderDetailByNo(orderChild.getOrderNo());
if (order == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "交易订单不存在");
}
// 退款金额 剩余退款金额 / 退款数量
BigDecimal refundPrice = orderChild.getSurplusRefundPrice().divide(new BigDecimal(refundGoodsCount.toString())).setScale(2, BigDecimal.ROUND_DOWN);
// 退款积分 剩余退款积分 / 退款数量
Integer refundIntegral = new BigDecimal(orderChild.getSurplusRefundIntegral().toString()).divide(new BigDecimal(refundGoodsCount.toString()), 0, BigDecimal.ROUND_DOWN).intValue();
HighOrderRefund orderRefund = new HighOrderRefund();
orderRefund.setOrderId(orderChild.getOrderId());
@ -108,18 +97,26 @@ public class OrderRefundServiceImpl implements OrderRefundService {
orderRefund.setGoodsImg(orderChild.getGoodsImg());
orderRefund.setGoodsSpecName(orderChild.getGoodsSpecName());
orderRefund.setGoodsCount(orderChild.getSaleCount());
orderRefund.setRefundOrder(orderChild.getOrderNo());
orderRefund.setReturnTotalPrice(orderChild.getTotalActualPrice());
orderRefund.setRefundPrice(orderChild.getSurplusRefundPrice());
orderRefund.setRefundGold(orderChild.getSurplusRefundIntegral());
orderRefund.setRefundOrder(refundNo==null?OrderUtil.generateRefundOrderNo():refundNo);
orderRefund.setRefundGoodsNum(refundGoodsCount);
orderRefund.setReturnTotalPrice(refundPrice.add(new BigDecimal(refundIntegral).divide(new BigDecimal("100"))));
orderRefund.setRefundPrice(refundPrice);
orderRefund.setRefundIntegral(refundIntegral);
orderRefund.setRefundRemark(remarks);
orderRefund.setRefundStatus(OrderRefundStatus.STATUS1.getNumber());
orderRefund.setCreateTime(new Date());
orderRefund.setUpdateTime(new Date());
orderRefundMapper.insert(orderRefund);
return orderRefund;
}
/**
* 金额退回用户
* @param orderNo 订单号
* @param refundPrice 退款金额
* @param refundIntegral 退款积分
*/
public void refundPrice(String orderNo,BigDecimal refundPrice,Integer refundIntegral) throws Exception {
return orderChild;
}
}

@ -33,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
* @className: OrderServiceImpl
@ -346,7 +347,7 @@ public class OrderServiceImpl implements OrderService {
} else if (orderData.getOrderStatus().equals(OrderStatus.STATUS2.getNumber())) {
// 异步处理业务
asyncOrderPaySuccess(orderData);
paySuccessService.asyncOrderPaySuccess(orderData);
}
return orderData;
}
@ -405,7 +406,7 @@ public class OrderServiceImpl implements OrderService {
}
@Override
public HighOrder refundOrder(String orderNo, String remarks) {
public HighOrder refundOrder(String orderNo, String remarks) throws Exception {
HighOrder order = getOrderDetailByNo(orderNo);
if (!order.getOrderStatus().equals(OrderStatus.STATUS2.getNumber())
|| !order.getOrderStatus().equals(OrderStatus.STATUS3.getNumber())) {
@ -421,12 +422,62 @@ public class OrderServiceImpl implements OrderService {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "订单无法退款!");
}
return orderRefundService.createOrderRefund(order, remarks);
// 创建退款
order = orderRefundService.createOrderRefund(order, remarks);
// todo 退款金额,原路返回
for (HighChildOrder childOrder : order.getHighChildOrderList()) {
childOrder.setRefundRemarks(remarks);
childOrder.setRefundTime(new Date());
childOrder.setChildOrderStatus(OrderChildStatus.STATUS4.getNumber());
}
order.setRefundTime(new Date());
order.setOrderStatus(OrderStatus.STATUS4.getNumber());
return updateOrderData(order);
}
@Override
public HighOrder refundChildOrder(String childOrderNo, String remarks) {
return null;
public HighOrder refundChildOrder(String orderNo,String childOrderNo,Integer refundGoodsNum, String remarks) throws Exception {
HighOrder order = getOrderDetailByNo(orderNo);
if (order == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "交易订单不存在");
}
List<HighChildOrder> collect = order.getHighChildOrderList().stream().filter(o -> o.getChildOrderNo().equals(childOrderNo)).collect(Collectors.toList());
if (collect == null || collect.size() == 0) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到订单");
}
HighChildOrder orderChild = collect.get(0);
// 创建退款记录
HighOrderRefund orderRefund = orderRefundService.createOrderChildRefund(orderChild, OrderUtil.generateRefundOrderNo(), refundGoodsNum, remarks);
orderChild.setSurplusRefundNum(orderChild.getSurplusRefundNum() - orderRefund.getRefundGoodsNum());
orderChild.setSurplusRefundPrice(orderChild.getSurplusRefundPrice().subtract(orderRefund.getRefundPrice()));
orderChild.setSurplusRefundIntegral(orderChild.getSurplusRefundIntegral() - orderRefund.getRefundIntegral());
if (orderChild.getSurplusRefundNum() == 0) {
orderChild.setChildOrderStatus(OrderChildStatus.STATUS4.getNumber());
}
// todo 退款金额,原路返回
// 购买的订单列表
List<HighChildOrder> buyChildOrderList = order.getHighChildOrderList()
.stream().filter(o -> o.getGiveawayType().equals(false))
.collect(Collectors.toList());
// 已退款的订单列表
List<HighChildOrder> refundList = buyChildOrderList.stream()
.filter(o -> o.getChildOrderStatus().equals(OrderChildStatus.STATUS4.getNumber()))
.collect(Collectors.toList());
// 校验购买的订单是否都已退款
if (refundList.size() >= buyChildOrderList.size()) {
order.setRefundTime(new Date());
order.setOrderStatus(OrderStatus.STATUS4.getNumber());
}
return updateOrderData(order);
}
@Override
@ -458,51 +509,6 @@ public class OrderServiceImpl implements OrderService {
return list.get(0);
}
@Override
public HighOrder orderPaySuccessBus(HighOrder order) {
try {
for (HighChildOrder childOrder : order.getHighChildOrderList()) {
if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE1.getNumber())) {
paySuccessService.couponHandle(order, childOrder);
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE2.getNumber())) {
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE3.getNumber())) {
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE4.getNumber())) {
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE5.getNumber())) {
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE6.getNumber())) {
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE7.getNumber())) {
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE8.getNumber())) {
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE9.getNumber())) {
} else if (childOrder.getGoodsType().equals(OrderChildGoodsType.TYPE10.getNumber())) {
}
}
return order;
} catch (Exception e) {
order.setExceptionStatus(true);
order.setExceptionContent(e.getMessage());
updateOrderData(order);
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, e.getMessage());
}
}
@Override
public void asyncOrderPaySuccess(HighOrder order) {
new Thread(() -> {
orderPaySuccessBus(order);
});
}
@Override
public List<HighOrder> getOrderList(Map<String, Object> param) {
return null;

@ -49,4 +49,16 @@ public class OrderUtil {
return DateUtil.date2String(new Date(),"yyyyMMddHHmmss") + randomNum;
}
/**
* 生成退款订单号
* @return
* @throws Exception
*/
public static String generateRefundOrderNo() throws Exception {
// 5位随机数 + 1位线程生成数
String randomNum = (new Random().nextInt(899999) + 10000) + IDGenerator.nextId(1);
// 生成订单号
return DateUtil.date2String(new Date(),"yyyyMMddHHmmss") + randomNum;
}
}

Loading…
Cancel
Save