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 6fdbb898..3a47d802 100644 --- a/hai-order/src/main/java/com/web/controller/OrderController.java +++ b/hai-order/src/main/java/com/web/controller/OrderController.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 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 a6be74eb..194df09e 100644 --- a/hai-order/src/main/java/com/web/controller/OrderPayController.java +++ b/hai-order/src/main/java/com/web/controller/OrderPayController.java @@ -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"); - return ResponseMsgUtil.success(null); + // 查询用户与卡号的关系 + 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(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); } - }*/ + } } diff --git a/hai-order/src/main/java/com/web/controller/TestController.java b/hai-order/src/main/java/com/web/controller/TestController.java index a5117d74..4994ce5b 100644 --- a/hai-order/src/main/java/com/web/controller/TestController.java +++ b/hai-order/src/main/java/com/web/controller/TestController.java @@ -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 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");*/ } } } \ No newline at end of file +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 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");*/ } } } \ No newline at end of file diff --git a/hai-order/src/main/resources/dev/logback.xml b/hai-order/src/main/resources/dev/logback.xml index a7602e3d..de5f5bae 100644 --- a/hai-order/src/main/resources/dev/logback.xml +++ b/hai-order/src/main/resources/dev/logback.xml @@ -69,4 +69,27 @@ + + + + + log/HltCardLog.log + + log/HltCardLog.log.%d.%i + + + 64 MB + + + + + %d %p (%file:%line\)- %m%n + + UTF-8 + + + + + diff --git a/hai-service/src/main/java/com/hai/config/HuiLianTongUnionCardConfig.java b/hai-service/src/main/java/com/hai/config/HuiLianTongUnionCardConfig.java index dd49efbb..ad390d75 100644 --- a/hai-service/src/main/java/com/hai/config/HuiLianTongUnionCardConfig.java +++ b/hai-service/src/main/java/com/hai/config/HuiLianTongUnionCardConfig.java @@ -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 param) throws Exception { 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 ac5ea585..23d77491 100644 --- a/hai-service/src/main/java/com/hai/dao/HighOrderMapper.java +++ b/hai-service/src/main/java/com/hai/dao/HighOrderMapper.java @@ -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},", diff --git a/hai-service/src/main/java/com/hai/dao/HighOrderRefundMapper.java b/hai-service/src/main/java/com/hai/dao/HighOrderRefundMapper.java index 99730637..d8c6465d 100644 --- a/hai-service/src/main/java/com/hai/dao/HighOrderRefundMapper.java +++ b/hai-service/src/main/java/com/hai/dao/HighOrderRefundMapper.java @@ -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},", diff --git a/hai-service/src/main/java/com/hai/dao/HighOrderRefundSqlProvider.java b/hai-service/src/main/java/com/hai/dao/HighOrderRefundSqlProvider.java index f85cc48c..6853a7d7 100644 --- a/hai-service/src/main/java/com/hai/dao/HighOrderRefundSqlProvider.java +++ b/hai-service/src/main/java/com/hai/dao/HighOrderRefundSqlProvider.java @@ -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) { 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 a1389abe..d8e5661f 100644 --- a/hai-service/src/main/java/com/hai/dao/HighOrderSqlProvider.java +++ b/hai-service/src/main/java/com/hai/dao/HighOrderSqlProvider.java @@ -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}"); } 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 b628aff2..2a443745 100644 --- a/hai-service/src/main/java/com/hai/entity/HighOrder.java +++ b/hai-service/src/main/java/com/hai/entity/HighOrder.java @@ -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); 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 88a74a71..026543fb 100644 --- a/hai-service/src/main/java/com/hai/entity/HighOrderExample.java +++ b/hai-service/src/main/java/com/hai/entity/HighOrderExample.java @@ -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 values) { + addCriterion("surplus_refund_integral in", values, "surplusRefundIntegral"); + return (Criteria) this; + } + + public Criteria andSurplusRefundIntegralNotIn(List 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; diff --git a/hai-service/src/main/java/com/hai/entity/HighOrderRefund.java b/hai-service/src/main/java/com/hai/entity/HighOrderRefund.java index 41051292..27c7ab0b 100644 --- a/hai-service/src/main/java/com/hai/entity/HighOrderRefund.java +++ b/hai-service/src/main/java/com/hai/entity/HighOrderRefund.java @@ -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); diff --git a/hai-service/src/main/java/com/hai/entity/HighOrderRefundExample.java b/hai-service/src/main/java/com/hai/entity/HighOrderRefundExample.java index 8f2d15f8..e06f0fa1 100644 --- a/hai-service/src/main/java/com/hai/entity/HighOrderRefundExample.java +++ b/hai-service/src/main/java/com/hai/entity/HighOrderRefundExample.java @@ -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 values) { + addCriterion("refund_goods_num in", values, "refundGoodsNum"); + return (Criteria) this; + } + + public Criteria andRefundGoodsNumNotIn(List 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 values) { - addCriterion("refund_gold in", values, "refundGold"); + public Criteria andRefundIntegralIn(List values) { + addCriterion("refund_integral in", values, "refundIntegral"); return (Criteria) this; } - public Criteria andRefundGoldNotIn(List values) { - addCriterion("refund_gold not in", values, "refundGold"); + public Criteria andRefundIntegralNotIn(List 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; } 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 0b938506..56bc315e 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 @@ -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 diff --git a/hai-service/src/main/java/com/hai/order/service/OrderRefundService.java b/hai-service/src/main/java/com/hai/order/service/OrderRefundService.java index 7efa8285..100a43f4 100644 --- a/hai-service/src/main/java/com/hai/order/service/OrderRefundService.java +++ b/hai-service/src/main/java/com/hai/order/service/OrderRefundService.java @@ -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 remarks 退款备注 + * @param orderChild 子订单 + * @param refundGoodsCount 退款商品数量 + * @param remarks 退款备注 */ - HighChildOrder createOrderChildRefund(HighChildOrder orderChild,Integer refundCount, String remarks); + HighOrderRefund createOrderChildRefund(HighChildOrder orderChild, String refundNo, Integer refundGoodsCount, String remarks) throws Exception; } diff --git a/hai-service/src/main/java/com/hai/order/service/OrderService.java b/hai-service/src/main/java/com/hai/order/service/OrderService.java index 77a238b0..c77e3cf1 100644 --- a/hai-service/src/main/java/com/hai/order/service/OrderService.java +++ b/hai-service/src/main/java/com/hai/order/service/OrderService.java @@ -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 getOrderList(Map param); } diff --git a/hai-service/src/main/java/com/hai/order/service/impl/OrderPayService.java b/hai-service/src/main/java/com/hai/order/service/impl/OrderPayService.java new file mode 100644 index 00000000..168d767f --- /dev/null +++ b/hai-service/src/main/java/com/hai/order/service/impl/OrderPayService.java @@ -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); + +} 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 new file mode 100644 index 00000000..a93c4fe0 --- /dev/null +++ b/hai-service/src/main/java/com/hai/order/service/impl/OrderPayServiceImpl.java @@ -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 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; + } +} 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 ea8bd5e6..40d2a6ed 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,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 { diff --git a/hai-service/src/main/java/com/hai/order/service/impl/OrderRefundServiceImpl.java b/hai-service/src/main/java/com/hai/order/service/impl/OrderRefundServiceImpl.java index 99c19c25..c7875b47 100644 --- a/hai-service/src/main/java/com/hai/order/service/impl/OrderRefundServiceImpl.java +++ b/hai-service/src/main/java/com/hai/order/service/impl/OrderRefundServiceImpl.java @@ -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); - } - 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())) { - + 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()); } } - - 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; } } 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 88f90d56..7f3f5c48 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 @@ -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 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 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()); + // 校验购买的订单是否都已退款 + 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 getOrderList(Map param) { return null; diff --git a/hai-service/src/main/java/com/hai/order/utils/OrderUtil.java b/hai-service/src/main/java/com/hai/order/utils/OrderUtil.java index 2b782b32..14e5b10b 100644 --- a/hai-service/src/main/java/com/hai/order/utils/OrderUtil.java +++ b/hai-service/src/main/java/com/hai/order/utils/OrderUtil.java @@ -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; + } + }