From 59da087d7f1d56a97ff7ac9375cda3781d3072ca Mon Sep 17 00:00:00 2001 From: hurui <177768073@qq.com> Date: Mon, 5 Aug 2024 14:58:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BsAgentMerAccountController.java | 164 ++++++++++++++++++ .../hfkj/dao/BsAgentMerAccountMapperExt.java | 32 +++- .../agent/BsAgentMerAccountService.java | 12 +- .../BsAgentMerAccountRecordServiceImpl.java | 29 ++++ .../impl/BsAgentMerAccountServiceImpl.java | 63 ++++++- .../agent/impl/BsAgentMerServiceImpl.java | 29 ++++ .../service/order/OrderCancelService.java | 26 +++ .../service/order/OrderCreateService.java | 3 + .../service/order/OrderRefundBusiness.java | 14 ++ .../MerchantAccountRecordSourceTypeEnum.java | 5 + 10 files changed, 373 insertions(+), 4 deletions(-) create mode 100644 bweb/src/main/java/com/bweb/controller/BsAgentMerAccountController.java diff --git a/bweb/src/main/java/com/bweb/controller/BsAgentMerAccountController.java b/bweb/src/main/java/com/bweb/controller/BsAgentMerAccountController.java new file mode 100644 index 0000000..08240bc --- /dev/null +++ b/bweb/src/main/java/com/bweb/controller/BsAgentMerAccountController.java @@ -0,0 +1,164 @@ +package com.bweb.controller; + +import com.alibaba.fastjson.JSONObject; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.hfkj.common.exception.ErrorCode; +import com.hfkj.common.exception.ErrorHelp; +import com.hfkj.common.exception.SysCode; +import com.hfkj.common.security.UserCenter; +import com.hfkj.common.utils.ResponseMsgUtil; +import com.hfkj.entity.BsAgentMerAccount; +import com.hfkj.entity.BsAgentStaff; +import com.hfkj.model.ResponseData; +import com.hfkj.model.SecUserSessionObject; +import com.hfkj.service.agent.BsAgentMerAccountRecordService; +import com.hfkj.service.agent.BsAgentMerAccountService; +import com.hfkj.service.agent.BsAgentStaffService; +import com.hfkj.service.merchant.BsMerchantAccountRecordService; +import com.hfkj.service.merchant.BsMerchantAccountService; +import com.hfkj.sysenum.SecUserObjectTypeEnum; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; + +/** + * @className: BsMerchantAccountController + * @author: HuRui + * @date: 2024/7/2 + **/ +@Controller +@RequestMapping(value = "/agentMerAccount") +@Api(value = "代理商商户账户") +public class BsAgentMerAccountController { + private static Logger log = LoggerFactory.getLogger(BsAgentMerAccountController.class); + @Resource + private BsAgentMerAccountService agentMerAccountService; + @Resource + private BsAgentMerAccountRecordService agentMerAccountRecordService; + @Resource + private BsAgentStaffService agentStaffService; + @Resource + private UserCenter userCenter; + + @RequestMapping(value = "/getAccount", method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "查询账户") + public ResponseData getAccount(@RequestParam(value = "agentId", required = true) Long agentId, + @RequestParam(value = "merNo", required = true) String merNo) { + try { + + // 查询账户 + return ResponseMsgUtil.success(agentMerAccountService.getAccount(agentId, merNo)); + + } catch (Exception e) { + log.error("BsAgentMerAccountController --> getAccount() error!", e); + return ResponseMsgUtil.exception(e); + } + } + + @RequestMapping(value = "/recharge", method = RequestMethod.POST) + @ResponseBody + @ApiOperation(value = "充值") + public ResponseData recharge(@RequestBody JSONObject body) { + try { + SecUserSessionObject userSession = userCenter.getSessionModel(SecUserSessionObject.class); + if (SecUserObjectTypeEnum.type1.getCode() != userSession.getAccount().getObjectType()) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.ROLE_NOT_PERMISSIONS, ""); + } + if (body == null + || body.getLong("agentId") == null + || StringUtils.isBlank(body.getString("merNo")) + || body.getBigDecimal("amount") == null + ) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); + } + + // 账户充值 + agentMerAccountService.recharge(body.getLong("agentId"), body.getString("merNo"), body.getBigDecimal("amount")); + + return ResponseMsgUtil.success("操作成功"); + + } catch (Exception e) { + log.error("BsAgentMerAccountController --> recharge() error!", e); + return ResponseMsgUtil.exception(e); + } + } + + @RequestMapping(value = "/getMerList", method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "查询商户列表") + public ResponseData getMerList(@RequestParam(value = "agentId", required = false) Long agentId, + @RequestParam(value = "merNo", required = false) String merNo, + @RequestParam(value = "merName", required = false) String merName, + @RequestParam(value = "provinceCode", required = false) Long provinceCode, + @RequestParam(value = "cityCode", required = false) Long cityCode, + @RequestParam(value = "areaCode", required = false) Long areaCode, + @RequestParam(value = "pageNum", required = true) Integer pageNum, + @RequestParam(value = "pageSize", required = true) Integer pageSize) { + try { + + SecUserSessionObject userSession = userCenter.getSessionModel(SecUserSessionObject.class); + Map param = new HashMap<>(); + if (SecUserObjectTypeEnum.type1.getCode() == userSession.getAccount().getObjectType()) { + param.put("agentId", agentId); + + } else if (SecUserObjectTypeEnum.type4.getCode() == userSession.getAccount().getObjectType()) { + param.put("agentId", userSession.getAccount().getObjectId()); + + } else if (SecUserObjectTypeEnum.type5.getCode() == userSession.getAccount().getObjectType()) { + // 查询代理商工作人员 + BsAgentStaff agentStaff = agentStaffService.getStaffDetailById(userSession.getAccount().getId()); + if (agentStaff == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.ROLE_NOT_PERMISSIONS, ""); + } + param.put("agentId", agentStaff.getAgentId()); + } else { + throw ErrorHelp.genException(SysCode.System, ErrorCode.ROLE_NOT_PERMISSIONS, ""); + } + param.put("merNo", merNo); + param.put("merName", merName); + param.put("provinceCode", provinceCode); + param.put("cityCode", cityCode); + param.put("areaCode", areaCode); + + PageHelper.startPage(pageNum,pageSize); + return ResponseMsgUtil.success(new PageInfo<>(agentMerAccountService.getMerList(param))); + + } catch (Exception e) { + log.error("BsMerchantAccountController --> getRecordList() error!", e); + return ResponseMsgUtil.exception(e); + } + } + + @RequestMapping(value = "/getRecordList", method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "记录列表") + public ResponseData getRecordList(@RequestParam(value = "agentId", required = true) Long agentId, + @RequestParam(value = "merNo", required = true) String merNo, + @RequestParam(value = "pageNum", required = true) Integer pageNum, + @RequestParam(value = "pageSize", required = true) Integer pageSize) { + try { + + Map param = new HashMap<>(); + param.put("agentId", agentId); + param.put("merNo", merNo); + + PageHelper.startPage(pageNum,pageSize); + return ResponseMsgUtil.success(new PageInfo<>(agentMerAccountRecordService.getList(param))); + + } catch (Exception e) { + log.error("BsAgentMerAccountController --> getRecordList() error!", e); + return ResponseMsgUtil.exception(e); + } + } + +} diff --git a/service/src/main/java/com/hfkj/dao/BsAgentMerAccountMapperExt.java b/service/src/main/java/com/hfkj/dao/BsAgentMerAccountMapperExt.java index 6a09a42..ed73340 100644 --- a/service/src/main/java/com/hfkj/dao/BsAgentMerAccountMapperExt.java +++ b/service/src/main/java/com/hfkj/dao/BsAgentMerAccountMapperExt.java @@ -1,7 +1,37 @@ package com.hfkj.dao; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; + /** * mapper扩展类 */ public interface BsAgentMerAccountMapperExt { -} \ No newline at end of file + + @Select("") + List> selectMerList(@Param("param") Map param); + +} diff --git a/service/src/main/java/com/hfkj/service/agent/BsAgentMerAccountService.java b/service/src/main/java/com/hfkj/service/agent/BsAgentMerAccountService.java index 07e742e..75c09d7 100644 --- a/service/src/main/java/com/hfkj/service/agent/BsAgentMerAccountService.java +++ b/service/src/main/java/com/hfkj/service/agent/BsAgentMerAccountService.java @@ -45,7 +45,17 @@ public interface BsAgentMerAccountService { * @param amount 金额 * @param otherParam 其他参数 */ - void consume(Long agentId,String merNo, BigDecimal amount, Map otherParam) throws Exception; + void consume(Long agentId, String merNo, BigDecimal amount, Map otherParam) throws Exception; + + /** + * 订单取消 + * + * @param agentId 代理商id + * @param merNo 商户号 + * @param amount 金额 + * @param otherParam 其他参数 + */ + void orderCancel(Long agentId, String merNo, BigDecimal amount, Map otherParam) throws Exception; /** * 退款 diff --git a/service/src/main/java/com/hfkj/service/agent/impl/BsAgentMerAccountRecordServiceImpl.java b/service/src/main/java/com/hfkj/service/agent/impl/BsAgentMerAccountRecordServiceImpl.java index a45b6ac..ff5b4d7 100644 --- a/service/src/main/java/com/hfkj/service/agent/impl/BsAgentMerAccountRecordServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/agent/impl/BsAgentMerAccountRecordServiceImpl.java @@ -1,8 +1,11 @@ package com.hfkj.service.agent.impl; +import com.hfkj.common.security.UserCenter; import com.hfkj.dao.BsAgentMerAccountRecordMapper; import com.hfkj.entity.BsAgentMerAccountRecord; import com.hfkj.entity.BsAgentMerAccountRecordExample; +import com.hfkj.model.SecUserSessionObject; +import com.hfkj.model.UserSessionObject; import com.hfkj.service.agent.BsAgentMerAccountRecordService; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; @@ -23,9 +26,35 @@ import java.util.Map; public class BsAgentMerAccountRecordServiceImpl implements BsAgentMerAccountRecordService { @Resource private BsAgentMerAccountRecordMapper agentMerAccountRecordMapper; + @Resource + private UserCenter userCenter; @Override public void create(BsAgentMerAccountRecord data) { + try { + SecUserSessionObject secUserSessionObject = userCenter.getSessionModel(SecUserSessionObject.class); + if (secUserSessionObject != null) { + data.setOpUserType(1); + data.setOpUserId(secUserSessionObject.getAccount().getId()); + data.setOpUserName(secUserSessionObject.getAccount().getUserName()); + data.setOpUserPhone(secUserSessionObject.getAccount().getTelephone()); + } + } catch (Exception e) { + System.out.println("获取管理员信息失败"); + } + + try { + UserSessionObject userModel = userCenter.getSessionModel(UserSessionObject.class); + if (userModel != null) { + data.setOpUserType(2); + data.setOpUserId(userModel.getUser().getId()); + data.setOpUserName(userModel.getUser().getUserName()); + data.setOpUserPhone(userModel.getUser().getPhone()); + } + } catch (Exception e) { + System.out.println("获取客户信息失败"); + } + data.setStatus(1); data.setCreateTime(new Date()); agentMerAccountRecordMapper.insert(data); } diff --git a/service/src/main/java/com/hfkj/service/agent/impl/BsAgentMerAccountServiceImpl.java b/service/src/main/java/com/hfkj/service/agent/impl/BsAgentMerAccountServiceImpl.java index a9de96e..f2ec9bd 100644 --- a/service/src/main/java/com/hfkj/service/agent/impl/BsAgentMerAccountServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/agent/impl/BsAgentMerAccountServiceImpl.java @@ -1,5 +1,6 @@ package com.hfkj.service.agent.impl; +import com.hfkj.common.exception.BaseException; import com.hfkj.common.exception.ErrorCode; import com.hfkj.common.exception.ErrorHelp; import com.hfkj.common.exception.SysCode; @@ -150,6 +151,63 @@ public class BsAgentMerAccountServiceImpl implements BsAgentMerAccountService { // 释放锁 redisTemplate.delete(lockKey); + } catch (BaseException e) { + // 释放锁 + redisTemplate.delete(lockKey); + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, e.getErrorMsg()); + + } catch (Exception e) { + // 释放锁 + redisTemplate.delete(lockKey); + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知错误"); + } + } else { + Thread.sleep(100); + consume(agentId, merNo, amount, otherParam); + } + } + + @Override + public void orderCancel(Long agentId, String merNo, BigDecimal amount, Map otherParam) throws Exception { + // 锁编号 + String lockKey = LOCK_KEY+agentId+"_"+merNo; + // 获取锁 + Boolean lock = redisTemplate.opsForValue().setIfAbsent(lockKey, ""); + if (Boolean.TRUE.equals(lock)) { + try { + // 获取锁成功 + // 查询账户 + BsAgentMerAccount merAccount = getAccount(agentId, merNo); + // 余额 是否小于 消费余额 + if (merAccount.getAmount().compareTo(amount) == -1) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "余额不足,暂时无法交易"); + } + // 变更前金额 + BigDecimal beforeAmount = merAccount.getAmount(); + // 计算消费后金额 + merAccount.setAmount(merAccount.getAmount().add(amount)); + // 累积消费金额 + merAccount.setAmountConsume(merAccount.getAmountConsume().subtract(amount)); + editData(merAccount); + // 变更后金额 + BigDecimal afterAmount = merAccount.getAmount(); + + BsAgentMerAccountRecord record = new BsAgentMerAccountRecord(); + record.setAgentId(agentId); + record.setAgentMerAccountId(merAccount.getId()); + record.setMerNo(merAccount.getMerNo()); + record.setType(MerchantAccountRecordTypeEnum.type1.getType()); + record.setTransactionAmount(amount); + record.setBeforeAmount(beforeAmount); + record.setAfterAmount(afterAmount); + record.setSourceType(MapUtils.getInteger(otherParam, "sourceType")); + record.setSourceId(MapUtils.getLong(otherParam, "sourceId")); + record.setSourceOrderNo(MapUtils.getString(otherParam, "sourceOrderNo")); + record.setSourceContent(MapUtils.getString(otherParam, "sourceContent")); + agentMerAccountRecordService.create(record); + // 释放锁 + redisTemplate.delete(lockKey); + } catch (Exception e) { e.printStackTrace(); // 释放锁 @@ -170,7 +228,7 @@ public class BsAgentMerAccountServiceImpl implements BsAgentMerAccountService { if (Boolean.TRUE.equals(lock)) { try { // 获取锁成功 - // 查询车队油卡 + // 查询账户 BsAgentMerAccount merAccount = getAccount(agentId, merNo); // 变更前金额 BigDecimal beforeAmount = merAccount.getAmount(); @@ -210,6 +268,7 @@ public class BsAgentMerAccountServiceImpl implements BsAgentMerAccountService { @Override public List> getMerList(Map param) { - return null; + return agentMerAccountMapper.selectMerList(param); } + } diff --git a/service/src/main/java/com/hfkj/service/agent/impl/BsAgentMerServiceImpl.java b/service/src/main/java/com/hfkj/service/agent/impl/BsAgentMerServiceImpl.java index c38a1ea..dc6e7bd 100644 --- a/service/src/main/java/com/hfkj/service/agent/impl/BsAgentMerServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/agent/impl/BsAgentMerServiceImpl.java @@ -6,16 +6,19 @@ import com.hfkj.common.exception.SysCode; import com.hfkj.dao.BsAgentMerMapper; import com.hfkj.entity.*; import com.hfkj.model.AgentMerAllot; +import com.hfkj.service.agent.BsAgentMerAccountService; import com.hfkj.service.merchant.BsMerchantService; import com.hfkj.service.agent.BsAgentMerService; import com.hfkj.service.agent.BsAgentService; import com.hfkj.service.agent.BsAgentStaffService; +import com.hfkj.sysenum.MerchantSourceTypeEnum; import org.apache.commons.collections4.MapUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; import java.util.stream.LongStream; @@ -37,6 +40,8 @@ public class BsAgentMerServiceImpl implements BsAgentMerService { private BsAgentStaffService agentStaffService; @Resource private BsMerchantService merchantService; + @Resource + private BsAgentMerAccountService agentMerAccountService; @Override public void editData(BsAgentMer data) { data.setUpdateTime(new Date()); @@ -89,6 +94,17 @@ public class BsAgentMerServiceImpl implements BsAgentMerService { agentMer.setCreateTime(new Date()); agentMer.setUpdateTime(new Date()); dataList.add(agentMer); + + if (merchant.getSourceType().equals(MerchantSourceTypeEnum.type1.getNumber())) { + BsAgentMerAccount account = new BsAgentMerAccount(); + account.setAgentId(agentId); + account.setMerId(merchant.getId()); + account.setMerNo(merchant.getMerNo()); + account.setAmount(new BigDecimal("0")); + account.setAmountConsume(new BigDecimal("0")); + account.setStatus(1); + agentMerAccountService.editData(account); + } } } agentMerService.addData(dataList); @@ -112,6 +128,19 @@ public class BsAgentMerServiceImpl implements BsAgentMerService { example.clear(); example.createCriteria().andAgentStaffIdIn(staffIdList).andMerNoIn(merNoArray).andStatusNotEqualTo(0); agentMerMapper.updateByExampleSelective(agentMer, example); + + for (String merNo : merNoArray) { + // 查询门店 + BsMerchant merchant = merchantService.getMerchant(merNo); + if (merchant != null && MerchantSourceTypeEnum.type1.getNumber().equals(merchant.getSourceType())) { + // 删除代理商下的商户账户 + BsAgentMerAccount account = agentMerAccountService.getAccount(agentId, merchant.getMerNo()); + if (account != null) { + account.setStatus(0); + agentMerAccountService.editData(account); + } + } + } } @Override diff --git a/service/src/main/java/com/hfkj/service/order/OrderCancelService.java b/service/src/main/java/com/hfkj/service/order/OrderCancelService.java index 4c5cfad..efe6545 100644 --- a/service/src/main/java/com/hfkj/service/order/OrderCancelService.java +++ b/service/src/main/java/com/hfkj/service/order/OrderCancelService.java @@ -1,11 +1,17 @@ package com.hfkj.service.order; +import com.hfkj.common.exception.BaseException; +import com.hfkj.common.exception.ErrorCode; +import com.hfkj.common.exception.ErrorHelp; +import com.hfkj.common.exception.SysCode; import com.hfkj.common.utils.RedisUtil; import com.hfkj.entity.*; import com.hfkj.model.order.OrderChildModel; import com.hfkj.model.order.OrderModel; +import com.hfkj.service.agent.BsAgentMerAccountService; import com.hfkj.service.gas.BsGasOrderService; import com.hfkj.sysenum.gas.OrderOilStatus; +import com.hfkj.sysenum.merchant.MerchantAccountRecordSourceTypeEnum; import com.hfkj.sysenum.order.OrderChildProductTypeEnum; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,6 +23,8 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Date; +import java.util.HashMap; +import java.util.Map; /** * 取消订单业务 @@ -35,6 +43,8 @@ public class OrderCancelService { private BsOrderChildService orderChildService; @Resource private BsGasOrderService gasOrderService; + @Resource + private BsAgentMerAccountService agentMerAccountService; /** * 订单业务处理 * @param order @@ -61,6 +71,22 @@ public class OrderCancelService { gasOrder.setStatus(OrderOilStatus.STATUS3.getNumber()); gasOrder.setCancelTime(new Date()); gasOrderService.updateGasOrder(gasOrder); + + if (gasOrder.getAgentId() != null) { + try { + // 家辉代理商商户金额 + Map param = new HashMap<>(); + param.put("sourceType", MerchantAccountRecordSourceTypeEnum.type4.getType()); + param.put("sourceOrderNo", gasOrder.getOrderNo()); + param.put("sourceOrderContent", "取消加油订单:"+gasOrder.getOrderNo()+",金额:¥" + gasOrder.getGasRefuelPrice()); + agentMerAccountService.orderCancel(gasOrder.getAgentId(), gasOrder.getMerNo(), gasOrder.getGasRefuelPrice(), param); + } catch (BaseException e) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, e.getErrorMsg()); + } catch (Exception e) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "扣款失败,请稍后重新提交订单"); + } + + } } } diff --git a/service/src/main/java/com/hfkj/service/order/OrderCreateService.java b/service/src/main/java/com/hfkj/service/order/OrderCreateService.java index 723c020..6059b1d 100644 --- a/service/src/main/java/com/hfkj/service/order/OrderCreateService.java +++ b/service/src/main/java/com/hfkj/service/order/OrderCreateService.java @@ -1,5 +1,6 @@ package com.hfkj.service.order; +import com.hfkj.common.exception.BaseException; import com.hfkj.common.exception.ErrorCode; import com.hfkj.common.exception.ErrorHelp; import com.hfkj.common.exception.SysCode; @@ -113,6 +114,8 @@ public class OrderCreateService { param.put("sourceOrderNo", gasOrder.getOrderNo()); param.put("sourceOrderContent", "创建加油订单:"+gasOrder.getOrderNo()+",加油金额:¥" +orderChild.getProductPrice()); agentMerAccountService.consume(agentMer.getAgentId(), agentMer.getMerNo(), orderChild.getProductPrice(), param); + } catch (BaseException e) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, e.getErrorMsg()); } catch (Exception e) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "扣款失败,请稍后重新提交订单"); } diff --git a/service/src/main/java/com/hfkj/service/order/OrderRefundBusiness.java b/service/src/main/java/com/hfkj/service/order/OrderRefundBusiness.java index f631f95..8f86054 100644 --- a/service/src/main/java/com/hfkj/service/order/OrderRefundBusiness.java +++ b/service/src/main/java/com/hfkj/service/order/OrderRefundBusiness.java @@ -12,6 +12,7 @@ import com.hfkj.entity.BsMerchantAccount; import com.hfkj.entity.BsOrderChild; import com.hfkj.entity.BsOrderRefund; import com.hfkj.model.order.OrderChildModel; +import com.hfkj.service.agent.BsAgentMerAccountService; import com.hfkj.service.gas.BsGasOrderService; import com.hfkj.service.merchant.BsMerchantAccountService; import com.hfkj.sysenum.MerchantSourceTypeEnum; @@ -39,6 +40,8 @@ public class OrderRefundBusiness { private BsGasOrderService gasOrderService; @Resource private BsMerchantAccountService merchantAccountService; + @Resource + private BsAgentMerAccountService agentMerAccountService; /** * 前置业务处理 @@ -87,6 +90,17 @@ public class OrderRefundBusiness { gasOrder.setRefundRemarks(refund.getRefundRemark()); gasOrderService.updateGasOrder(gasOrder); + if (MerchantSourceTypeEnum.type1.getNumber().equals(gasOrder.getChannelType())) { + try { + // 代理商商户账户退款 + agentMerAccountService.refund(gasOrder.getAgentId(), gasOrder.getMerNo(), gasOrder.getGasRefuelPrice(), refund); + + } catch (BaseException e) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, e.getErrorMsg()); + } catch (Exception e) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "扣款失败,请稍后重新提交订单"); + } + } try { // 订单是否异常 false:无异常 true:有异常 if (gasOrder.getAbnormal().equals(false)) { diff --git a/service/src/main/java/com/hfkj/sysenum/merchant/MerchantAccountRecordSourceTypeEnum.java b/service/src/main/java/com/hfkj/sysenum/merchant/MerchantAccountRecordSourceTypeEnum.java index 1df767f..410d18f 100644 --- a/service/src/main/java/com/hfkj/sysenum/merchant/MerchantAccountRecordSourceTypeEnum.java +++ b/service/src/main/java/com/hfkj/sysenum/merchant/MerchantAccountRecordSourceTypeEnum.java @@ -22,6 +22,11 @@ public enum MerchantAccountRecordSourceTypeEnum { * 订单退款 */ type3(3 , "订单退款"), + + /** + * 订单取消 + */ + type4(4 , "订单取消"), ; private Integer type;