diff --git a/src/main/java/com/example/demo/controller/coin/AuditController.java b/src/main/java/com/example/demo/controller/coin/AuditController.java index be9821d..48561d1 100644 --- a/src/main/java/com/example/demo/controller/coin/AuditController.java +++ b/src/main/java/com/example/demo/controller/coin/AuditController.java @@ -3,6 +3,7 @@ package com.example.demo.controller.coin; import com.example.demo.Util.JWTUtil; import com.example.demo.config.interfac.Log; import com.example.demo.domain.entity.Admin; +import com.example.demo.exception.SystemException; import com.example.demo.service.coin.AuditService; import com.github.pagehelper.PageInfo; import jakarta.servlet.http.HttpServletRequest; @@ -40,10 +41,13 @@ public class AuditController { //审核订单 @Log("审核订单") @PostMapping("audit") - public ResponseEntity auditOrder( + public Result auditOrder( @RequestBody AuditRequest request) { - boolean result = auditService.auditOrder(request.getToken(),request.getOrderCode(), request.getAuditId(), request.getAction(),request.getRejectReason()); - return ResponseEntity.ok(result); + try { + return auditService.auditOrder(request.getToken(),request.getOrderCode(), request.getAuditId(), request.getAction(),request.getRejectReason()); + }catch (SystemException e){ + return Result.error(e.getMessage()); + } } //多条件查询充值审核订单列表 @Log("查询充值审核订单列表") diff --git a/src/main/java/com/example/demo/mapper/coin/AuditMapper.java b/src/main/java/com/example/demo/mapper/coin/AuditMapper.java index e5f9409..f6a07d1 100644 --- a/src/main/java/com/example/demo/mapper/coin/AuditMapper.java +++ b/src/main/java/com/example/demo/mapper/coin/AuditMapper.java @@ -46,4 +46,6 @@ public interface AuditMapper { String getName(Integer auditId); //更新首充日期 void updateFirstRecharge(Integer jwcode); + //添加错误订单 + void addErrorRecord(UserGoldRecord order); } diff --git a/src/main/java/com/example/demo/service/coin/AuditService.java b/src/main/java/com/example/demo/service/coin/AuditService.java index 0ccd564..d266b8d 100644 --- a/src/main/java/com/example/demo/service/coin/AuditService.java +++ b/src/main/java/com/example/demo/service/coin/AuditService.java @@ -3,6 +3,7 @@ package com.example.demo.service.coin; import com.example.demo.domain.vo.coin.Gold; import com.example.demo.domain.vo.coin.RechargeAudit; import com.example.demo.domain.vo.coin.RefundAudit; +import com.example.demo.domain.vo.coin.Result; import com.github.pagehelper.PageInfo; /** @@ -17,7 +18,7 @@ import com.github.pagehelper.PageInfo; public interface AuditService { //审核订单并修改用户余额等 - boolean auditOrder(String token, String orderCode, Integer auditId,Integer action,String rejectReason); + Result auditOrder(String token, String orderCode, Integer auditId, Integer action, String rejectReason); //多条件查询充值审核订单 PageInfo selectRechargeBy(Integer pageNum, Integer pageSize, RechargeAudit rechargeAudit); //多条件查询退款审核订单 diff --git a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java index 5a0fc9c..d763ca2 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java @@ -3,10 +3,8 @@ package com.example.demo.serviceImpl.coin; import com.example.demo.Util.GoldTistV2; import com.example.demo.domain.entity.User; import com.example.demo.domain.entity.UserGoldRecord; -import com.example.demo.domain.vo.coin.Gold; -import com.example.demo.domain.vo.coin.GoldUser; -import com.example.demo.domain.vo.coin.RechargeAudit; -import com.example.demo.domain.vo.coin.RefundAudit; +import com.example.demo.domain.vo.coin.*; +import com.example.demo.exception.SystemException; import com.example.demo.mapper.coin.AuditMapper; import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.mapper.coin.UserMapper; @@ -15,6 +13,8 @@ import com.example.demo.service.coin.AuditService; import com.example.demo.service.coin.GeneralService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -36,6 +36,7 @@ import java.util.List; @Service public class AuditServiceImpl implements AuditService { + private static final Logger log = LoggerFactory.getLogger(AuditServiceImpl.class); @Autowired private AuditMapper auditMapper; @Autowired @@ -51,35 +52,35 @@ public class AuditServiceImpl implements AuditService { */ @Transactional @Override - public boolean auditOrder(String token, String orderCode, Integer auditId, Integer action,String rejectReason) { - UserGoldRecord order=auditMapper.selectOrderByOrderCode(orderCode); - Date date =new Date(); - if (order == null || order.getAuditStatus() != 0) { - throw new IllegalArgumentException("订单不存在或已被审核"); - } - //更新订单的审核状态和审核人 - UserGoldRecord updateOrder = new UserGoldRecord(); - updateOrder.setOrderCode(orderCode); - updateOrder.setAuditId(auditId); - String auditName = auditMapper.getName(auditId); - //判断是通过还是驳回 - if (action==2){ //驳回 - - if (order.getType()==2) { //退款 - //2.获取对应的订单(退款订单号去掉开头"TK"即为对应原始订单) - String oldOrderCode = order.getOrderCode().replaceFirst("TK_", ""); - //3.更新消费订单是否已退款状态为0 - UserGoldRecord oldOrder = auditMapper.selectAllOrderByOrderCode(oldOrderCode); - if (oldOrderCode != null&&(oldOrder.getType()==1||oldOrder.getType()==0)){ //确保是消费或充值订单 - auditMapper.updateOrderRefund(oldOrderCode,(byte)0); + public Result auditOrder(String token, String orderCode, Integer auditId, Integer action, String rejectReason) { + UserGoldRecord order=auditMapper.selectOrderByOrderCode(orderCode); + Date date =new Date(); + if (order == null || order.getAuditStatus() != 0) { + throw new IllegalArgumentException("订单不存在或已被审核"); + } + //更新订单的审核状态和审核人 + UserGoldRecord updateOrder = new UserGoldRecord(); + updateOrder.setOrderCode(orderCode); + updateOrder.setAuditId(auditId); + String auditName = auditMapper.getName(auditId); + //判断是通过还是驳回 + if (action==2){ //驳回 + if (order.getType()==2) { //退款 + //2.获取对应的订单(退款订单号去掉开头"TK"即为对应原始订单) + String oldOrderCode = order.getOrderCode().replaceFirst("TK_", ""); + //3.更新消费订单是否已退款状态为0 + UserGoldRecord oldOrder = auditMapper.selectAllOrderByOrderCode(oldOrderCode); + if (oldOrderCode != null&&(oldOrder.getType()==1||oldOrder.getType()==0)){ //确保是消费或充值订单 + auditMapper.updateOrderRefund(oldOrderCode,(byte)0); }else { throw new IllegalArgumentException("找不到对应的订单或不是有效订单"); - } } - updateOrder.setAuditStatus(2); - updateOrder.setRejectReason(rejectReason); - updateOrder.setAuditTime(new Date()); - // 执行审核更新 - auditMapper.updateOrder(updateOrder); + } + } + updateOrder.setAuditStatus(2); + updateOrder.setRejectReason(rejectReason); + updateOrder.setAuditTime(new Date()); + // 执行审核更新 + auditMapper.updateOrder(updateOrder); }else if (action==1) { //通过 @@ -107,18 +108,45 @@ public class AuditServiceImpl implements AuditService { */ // 构造 2020-01-01 00:00:00 Date placeholder = new GregorianCalendar(2020, Calendar.JANUARY, 1, 0, 0).getTime(); - if(oldFirstRecharge== null||oldFirstRecharge.after(date)||placeholder.equals(oldFirstRecharge)){ - auditMapper.updateFirstRecharge(order.getJwcode());//设置首充时间为当前时间 - } - auditMapper.updateUserGold(update); //erp增加充值数据 // if(update.getJwcode().equals(94226013)){ - GoldTistV2.addCoinNew(order.getJwcode().toString(), 64, //充值永久金币 + String resultPermanent=GoldTistV2.addCoinNew(order.getJwcode().toString(), 64, //充值永久金币 (double) (order.getPermanentGold() ) /100, order.getRemark(),(double) (order.getPermanentGold() ) /100, auditName, "金币充值"); - GoldTistV2.addCoinNew(order.getJwcode().toString(), 63, //充值免费 + resultPermanent = resultPermanent.replaceAll("[\r\n]", ""); // 去除换行符 + //判断数据是否正常进入erp + if(!resultPermanent.equals("1")){ + resultPermanent=GoldTistV2.addCoinNew(order.getJwcode().toString(), 64, //充值永久金币 + (double) (order.getPermanentGold() ) /100, + order.getRemark(),(double) (order.getPermanentGold() ) /100, auditName, "金币充值"); + if (!resultPermanent.equals("1")&&order.getPermanentGold()!=0){ + String errorMsg = "充值永久金币出错,数据erp返回错误,返回状态:"+resultPermanent; + log.error(errorMsg); + throw new SystemException(errorMsg); + } + } + String resultFree=GoldTistV2.addCoinNew(order.getJwcode().toString(), 63, //充值免费 (double) (order.getFreeDecember()+order.getFreeJune() ) /100, order.getRemark(),0, auditName, "金币充值"); + //返回状态 1加成功;2减成功其他失败;-5 金币不足;-6 类型错误;-7签名错误;-10其他异常 + + resultFree = resultFree.replaceAll("[\r\n]", ""); + + if(!resultFree.equals("1")&&order.getFreeDecember()+order.getFreeJune()!=0){ + resultFree=GoldTistV2.addCoinNew(order.getJwcode().toString(), 63, //充值免费 + (double) (order.getFreeDecember()+order.getFreeJune() ) /100, + order.getRemark(),0, auditName, "金币充值"); + if (!resultFree.equals("1")){ + //没存成功,但上面的已经加到erp了,这条订单先通过,添加一条错误记录,后续根据记录补充erp数据 + order.setPermanentGold(0); + order.setRemark("金币充值"); + auditMapper.addErrorRecord(order); + } + } + if(oldFirstRecharge== null||oldFirstRecharge.after(date)||placeholder.equals(oldFirstRecharge)){ + auditMapper.updateFirstRecharge(order.getJwcode());//设置首充时间为当前时间 + } + auditMapper.updateUserGold(update); // } }else if (order.getType()==2) { //退款 //2.获取对应的订单(退款订单号去掉开头"TK"即为对应原始订单) @@ -134,24 +162,60 @@ public class AuditServiceImpl implements AuditService { auditMapper.updateUserGold(update); //erp增加退款数据 if(oldOrder.getType()==1){ //消费 - GoldTistV2.addCoinNew(order.getJwcode().toString(), 55, //退款免费-商品 - (double) (order.getFreeDecember()+order.getFreeJune()) /100, - order.getRemark(),0, auditName, "退款商品"+order.getGoodsName()); - GoldTistV2.addCoinNew(order.getJwcode().toString(), 56, //退款永久-商品 + String resultPermanent=GoldTistV2.addCoinNew(order.getJwcode().toString(), 56, //退款永久-商品 (double) (order.getPermanentGold()) /100, order.getRemark(),order.getPermanentGold(), auditName, "退款商品"+order.getGoodsName()); - GoldTistV2.addCoinNew(order.getJwcode().toString(), 57, //退款任务-商品 + resultPermanent = resultPermanent.replaceAll("[\r\n]", ""); + if (!resultPermanent.equals("1")&&order.getPermanentGold()!=0){ + String errorMsg = "退款永久金币出错,数据erp返回错误,返回状态:"+resultPermanent; + log.error(errorMsg); + throw new SystemException(errorMsg); + } + String resultFree=GoldTistV2.addCoinNew(order.getJwcode().toString(), 55, //退款免费-商品 + (double) (order.getFreeDecember()+order.getFreeJune()) /100, + order.getRemark(),0, auditName, "退款商品"+order.getGoodsName()); + resultFree = resultFree.replaceAll("[\r\n]", ""); + if (!resultFree.equals("1")&&order.getFreeDecember()+order.getFreeJune()!=0){ + order.setPermanentGold(0); + order.setTaskGold(0); + order.setRemark("退款商品-免费金币"); + auditMapper.addErrorRecord(order); + } + String resultTask=GoldTistV2.addCoinNew(order.getJwcode().toString(), 57, //退款任务-商品 (double) (order.getTaskGold() ) /100, order.getRemark(),0, auditName, "退款商品"+order.getGoodsName()); + resultTask = resultTask.replaceAll("[\r\n]", ""); + if (!resultTask.equals("1")&&order.getTaskGold()!=0){ + order.setPermanentGold(0); + order.setFreeJune(0); + order.setFreeDecember(0); + order.setRemark("退款商品-任务金币"); + auditMapper.addErrorRecord(order); + } + } else if (oldOrder.getType()==0){//充值金币 if(order.getTaskGold()==0){ //无任务金币统一走免费+永久 - GoldTistV2.addCoinNew(order.getJwcode().toString(), 58, //退款免费+永久金币-充值 + String result=GoldTistV2.addCoinNew(order.getJwcode().toString(), 58, //退款免费+永久金币-充值 (double) (order.getFreeDecember()+order.getFreeJune()+order.getPermanentGold() ) /100, - order.getRemark(),(double) order.getPermanentGold() / 100, auditName, "退款金币充值");} - if (order.getTaskGold()!=0) - GoldTistV2.addCoinNew(order.getJwcode().toString(), 59, //退款任务+永久金币-充值 + order.getRemark(),(double) order.getPermanentGold() / 100, auditName, "退款金币充值"); + result = result.replaceAll("[\r\n]", ""); + if (!result.equals("2")){ + String errorMsg = "退款免费+永久金币出错,数据erp返回错误,返回状态:"+result; + log.error(errorMsg); + throw new SystemException(errorMsg); + } + } + if (order.getTaskGold()!=0){ + String result=GoldTistV2.addCoinNew(order.getJwcode().toString(), 59, //退款任务+永久金币-充值 (double) (order.getTaskGold()+order.getPermanentGold() ) /100, order.getRemark(),(double) order.getPermanentGold() / 100, auditName, "退款金币充值"); + result = result.replaceAll("[\r\n]", ""); + if (!result.equals("2")){ + String errorMsg = "退款任务+永久金币出错,数据erp返回错误,返回状态:"+result; + log.error(errorMsg); + throw new SystemException(errorMsg); + } + } } } @@ -161,7 +225,7 @@ public class AuditServiceImpl implements AuditService { auditMapper.updateOrder(updateOrder); } - return true; + return Result.success("审核成功"); } /* * 多条件查询充值订单列表 diff --git a/src/main/resources/mapper/AuditMapper.xml b/src/main/resources/mapper/AuditMapper.xml index c50b277..4bc3f81 100644 --- a/src/main/resources/mapper/AuditMapper.xml +++ b/src/main/resources/mapper/AuditMapper.xml @@ -1,7 +1,17 @@ - + + insert into error_record ( + order_code,jwcode,error_type,permanent_gold,free_june, + free_december,task_gold,origin_create_time + ) values ( + #{orderCode},#{jwcode},#{remark}, + #{permanentGold},#{freeJune},#{freeDecember},#{taskGold}, + #{createTime} + ) + + update user_gold_record set audit_id = #{auditId},