yq преди 3 години
родител
ревизия
ec61c86f77

+ 1 - 1
src/main/java/com/usky/dxtop/framework/config/SecurityConfig.java

@@ -100,7 +100,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
                 .antMatchers("/login", "/register", "/captchaImage","/top/notify","/dxtop/order/topScanPayApi","/loginApi",
                         "/dxtop/charge/page","/dxtop/dish/page","/wxLogin","/wxPayParam","/dxtop/order/callUnifiedPay"
-                        ).anonymous()
+                        ).permitAll()
                 .antMatchers(
                         HttpMethod.GET,
                         "/",

+ 1 - 1
src/main/java/com/usky/dxtop/model/Order.java

@@ -64,7 +64,7 @@ public class Order extends BaseEntity implements Serializable {
     /**
      * 渠道名称
      */
-    private Integer channelName;
+    private String channelName;
 
     /**
      * 支付方式

+ 2 - 2
src/main/java/com/usky/dxtop/service/OrderService.java

@@ -50,7 +50,7 @@ public interface OrderService extends IService<Order> {
     String getTopScanPayApi(Order order);
 
     /**
-     * 生成扫码支付二维码
+     * 生成扫码支付二维码(后台充值)
      * @param order
      * @return
      */
@@ -113,7 +113,7 @@ public interface OrderService extends IService<Order> {
     void reportExport(Date startTime,Date endTime,Integer type,HttpServletResponse response);
 
     /**
-     * 调用统一支付api
+     * 调用统一支付api(app充值)
      * @param order
      * @return
      */

+ 45 - 17
src/main/java/com/usky/dxtop/service/impl/OrderServiceImpl.java

@@ -16,10 +16,8 @@ import com.usky.dxtop.common.utils.*;
 import com.usky.dxtop.common.utils.http.HttpUtils;
 import com.usky.dxtop.common.utils.sign.Base64;
 import com.usky.dxtop.mapper.OrderMapper;
-import com.usky.dxtop.model.CallApiLog;
-import com.usky.dxtop.model.Order;
-import com.usky.dxtop.service.CallApiLogService;
-import com.usky.dxtop.service.OrderService;
+import com.usky.dxtop.model.*;
+import com.usky.dxtop.service.*;
 import com.usky.dxtop.service.api.TopApi;
 import com.usky.dxtop.service.config.rabbitmq.charge.ChargeConsumeConfig;
 import com.usky.dxtop.service.emun.OrderPayType;
@@ -75,14 +73,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     @Qualifier(ChargeConsumeConfig.TEMPLATE)
     private RabbitTemplate rabbitTemplate;
 
+    @Autowired
+    private StaffRadioService staffRadioService;
+    @Autowired
+    private TopRadioService topRadioService;
+    @Autowired
+    private TopChannelService topChannelService;
 
     @Transactional(rollbackFor = Exception.class)
     @Override
     public boolean add(Order order) {
-        String orderNumber = TopApi.getOrderNumber();
-        order.setOrderNumber(orderNumber);
-        order.setOrderFlag(OrderStatus.NO_PAYMENT.getCode());
         order.setPayType(OrderPayType.XJ.getPayCode());
+        order.setScene(OrderSceneCode.BACK_STAGE.getCode());
         verifyOrder(order);
         callCardTopApi(order);
         return this.updateById(order);
@@ -132,20 +134,24 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     @Transactional(rollbackFor = Exception.class)
     @Override
     public String getTopScanPayApi(Order order){
-        String orderNumber = TopApi.getOrderNumber();
-        order.setOrderNumber(orderNumber);
+        verifyOrder(order);
         TreeMap<String, String> params = TopApi.generateScanPayApiParam(order.getOrderNumber(),
                                         new Double(Arith.mul(order.getMoney().doubleValue(),100)).intValue(), null,
                 null,null,null,null,null,null);
-        verifyOrder(order);
         //记录调用日志
-        callApiLogService.saveOrUpdate(orderNumber,SCAN_PAY,TopApi.SCAN_TO_PAY_URL,JSONObject.toJSONString(params),null);
+        callApiLogService.saveOrUpdate(order.getOrderNumber(),SCAN_PAY,TopApi.SCAN_TO_PAY_URL,JSONObject.toJSONString(params),null);
         return String.format("%s?%s",TopApi.SCAN_TO_PAY_URL,TopApi.generateParam(params));
     }
 
+    /**
+     * 后台充值(支付宝或者现金)
+     * @param order
+     * @return
+     */
     @Transactional(rollbackFor = Exception.class)
     @Override
     public String getTopScanPayQr(Order order) {
+        order.setScene(OrderSceneCode.BACK_STAGE.getCode());
         String encode;
         try {
             //获取url
@@ -187,7 +193,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         try {
             ChargeVO chargeVo = new ChargeVO();
             chargeVo.setSeq(order.getId());
-            chargeVo.setAmt(order.getMoney().doubleValue());
+            Optional.ofNullable(order.getTopRadio())
+                    .ifPresent(radio -> {
+                        double mul = Arith.mul(order.getMoney().doubleValue(), order.getTopRadio());
+                        order.setMoney(BigDecimal.valueOf(Arith.div(mul,100)));
+                    });
+            chargeVo.setAmt(order.getMoney());
             chargeVo.setCard("h");
             chargeVo.setMob(order.getOrderNumber());
             chargeVo.setName("test");
@@ -517,12 +528,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
      * @param order
      */
     public void verifyOrder(Order order){
-        Assert.check(null == order.getPayType(),"请选择支付方式");
-        Assert.check(null == order.getMoney() || order.getMoney().compareTo(BigDecimal.ZERO)  == 0,"请输入订单金额");
-        Assert.check(null == order.getScene(),"充值场景不能为空");
+        String orderNumber = TopApi.getOrderNumber();
+        order.setOrderNumber(orderNumber);
+        Assert.check(null != order.getPayType(),"请选择支付方式");
+        Assert.check(null != order.getMoney() && order.getMoney().compareTo(BigDecimal.ZERO)  != 0,"请输入订单金额");
+        Assert.check(null != order.getScene(),"充值场景不能为空");
         //非游客充值
         if (!OrderSceneCode.VISITOR.getCode().equals(order.getScene())){
-            Assert.check(null == order.getUserId() || 0 == order.getUserId(),"用户编号不能为空");
+            Assert.check(null != order.getUserId() && 0 != order.getUserId(),"用户编号不能为空");
             Assert.check(StringUtils.isNotBlank(order.getUserName()),"用户名称不能为空");
             Assert.check(StringUtils.isNotBlank(order.getUserPhone()),"用户手机号不能为空");
             //app充值
@@ -532,8 +545,23 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                     Assert.check(StringUtils.isNotBlank(order.getOpenId()), "openId不能为空");
                 }
             }
+            //添加身份信息和充值到账比例
+            LambdaQueryWrapper<StaffRadio> queryWrapper = Wrappers.lambdaQuery();
+            queryWrapper.eq(StaffRadio::getStaffId,order.getUserId())
+                    .eq(StaffRadio::isDelFlag,0);
+            StaffRadio staffRadio = staffRadioService.getOne(queryWrapper);
+            Optional.ofNullable(staffRadio).ifPresent(sf ->{
+                TopRadio topRadio = topRadioService.getById(staffRadio.getRadioId());
+                Optional.ofNullable(topRadio).ifPresent(tr ->{
+                    order.setIdentity(tr.getIdentity());
+                    order.setTopRadio(tr.getProportion());
+                });
+            });
+
         }else {
-            Assert.check(null == order.getChannelId() || 0 == order.getChannelId(),"渠道编号不能为空");
+            Assert.check(null != order.getChannelId() && 0 != order.getChannelId(),"渠道编号不能为空");
+            TopChannel topChannel = topChannelService.getById(order.getChannelId());
+            order.setChannelName(topChannel.getName());
         }
         this.save(order);
     }

+ 1 - 1
src/main/java/com/usky/dxtop/service/impl/QrCodeServiceImpl.java

@@ -55,7 +55,7 @@ public class QrCodeServiceImpl extends ServiceImpl<QrCodeMapper, QrCode> impleme
             Optional.ofNullable(qrCode.getTopChannelId())
                     .orElseThrow(() ->new CustomException("渠道不能为空"));
             TopChannel topChannel = topChannelService.getById(qrCode.getTopChannelId());
-            String payPath = String.format("%s%s",s,topChannel.getName());
+            String payPath = String.format("%s%s",s,topChannel.getId());
             //生成二维码
             BufferedImage image = QRCodeUtil.encode(payPath, null, true);
             // 转换流信息写出

+ 3 - 1
src/main/java/com/usky/dxtop/service/vo/ChargeVO.java

@@ -2,6 +2,8 @@ package com.usky.dxtop.service.vo;
 
 import lombok.Data;
 
+import java.math.BigDecimal;
+
 /**
  * @author yq
  * @date 2021/9/15 11:37
@@ -13,7 +15,7 @@ public class ChargeVO {
 
     private String card;
 
-    private Double amt;
+    private BigDecimal amt;
 
     private String name;