浏览代码

fix : 新增逻辑修改

bilingfeng 1 年之前
父节点
当前提交
0c28ad2a7f
共有 13 个文件被更改,包括 193 次插入317 次删除
  1. 16 20
      game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/pojo/enums/PayDeviceEnum.java
  2. 8 8
      game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/pojo/enums/PayWayEnum.java
  3. 0 63
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/PromoAccountController.java
  4. 0 54
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/PromoChannelController.java
  5. 0 54
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/PromoMediaController.java
  6. 0 54
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/PromoSiteController.java
  7. 9 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IMiPaySumService.java
  8. 27 39
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GamePayWayServiceImpl.java
  9. 26 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/MiPaySumServiceImpl.java
  10. 5 5
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/MiPaySum.java
  11. 9 2
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/listener/OrderPaySuccessListener.java
  12. 8 0
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/IPerformOrderService.java
  13. 85 18
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/PerformOrderServiceImpl.java

+ 16 - 20
game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/pojo/enums/PayDeviceEnum.java

@@ -2,10 +2,9 @@ package com.zanxiang.game.module.base.pojo.enums;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
+import org.apache.logging.log4j.util.Strings;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
+import java.util.Objects;
 
 /**
  * 支付设备类型
@@ -62,24 +61,21 @@ public enum PayDeviceEnum {
      */
     private String payDeviceName;
 
-    public static String getDescByNum(Integer code) {
-        PayDeviceEnum[] values = PayDeviceEnum.values();
-        for (int i = 0; i < values.length; i++) {
-            if (values[i].getPayDeviceId().equals(code)) {
-                return values[i].getPayDeviceName();
-            }
+    /**
+     * 根据支付方式id获取名称
+     *
+     * @param payDeviceId : 支付方式id
+     * @return : 支付类型枚举
+     */
+    public static String getByPayWayId(Long payDeviceId) {
+        if (payDeviceId == null) {
+            return Strings.EMPTY;
         }
-        return "";
-    }
-
-    public static String getDesc(String obj) {
-        List<String> Desc = new ArrayList<>(10);
-        String str = obj.substring(1, obj.length() - 1);
-        String[] strArr = str.split(",");
-        for (int i = 0; i < strArr.length; i++) {
-            String name = PayDeviceEnum.getDescByNum(Integer.valueOf(strArr[i]));
-            Desc.add(name);
+        for (PayDeviceEnum payDeviceEnum : PayDeviceEnum.values()) {
+            if (Objects.equals(payDeviceId, payDeviceEnum.getPayDeviceId())) {
+                return payDeviceEnum.getPayDeviceName();
+            }
         }
-        return Desc.stream().collect(Collectors.joining(","));
+        return Strings.EMPTY;
     }
 }

+ 8 - 8
game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/pojo/enums/PayWayEnum.java

@@ -2,6 +2,7 @@ package com.zanxiang.game.module.base.pojo.enums;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
+import org.apache.logging.log4j.util.Strings;
 
 import java.util.Objects;
 
@@ -46,21 +47,20 @@ public enum PayWayEnum {
     private String payWayName;
 
     /**
-     * 根据书城key获取名称
+     * 根据支付类型id获取名称
      *
-     * @param payType : 支付类型
+     * @param payWayId : 支付类型
      * @return : 支付类型枚举
      */
-    public static String getByPayType(Long payType) {
-        if (payType == null) {
-            return null;
+    public static String getByPayWayId(Long payWayId) {
+        if (payWayId == null) {
+            return Strings.EMPTY;
         }
         for (PayWayEnum payWayEnum : PayWayEnum.values()) {
-            if (Objects.equals(payType.intValue(), payWayEnum.getPayWayId())) {
+            if (Objects.equals(payWayId.intValue(), payWayEnum.getPayWayId())) {
                 return payWayEnum.getPayWayName();
             }
         }
-        return null;
+        return Strings.EMPTY;
     }
-
 }

+ 0 - 63
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/PromoAccountController.java

@@ -1,63 +0,0 @@
-//package com.zanxiang.game.module.manage.controller;
-//
-//import com.baomidou.mybatisplus.core.metadata.IPage;
-//import com.zanxiang.erp.security.annotation.PreAuthorize;
-//import com.zanxiang.game.module.manage.pojo.params.PromoAccountAddUpdateParam;
-//import com.zanxiang.game.module.manage.pojo.params.PromoAccountAssignParam;
-//import com.zanxiang.game.module.manage.pojo.params.PromoAccountListParam;
-//import com.zanxiang.game.module.manage.pojo.vo.PromoAccountListVO;
-//import com.zanxiang.game.module.manage.service.IPromoAccountService;
-//import com.zanxiang.module.util.pojo.ResultVO;
-//import io.swagger.annotations.Api;
-//import io.swagger.annotations.ApiOperation;
-//import io.swagger.annotations.ApiResponse;
-//import io.swagger.annotations.ApiResponses;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.validation.annotation.Validated;
-//import org.springframework.web.bind.annotation.*;
-//
-///**
-// * @author : lingfeng
-// * @time : 2022-11-21
-// * @description : 推广账号
-// */
-//@Api(tags = "推广账号接口")
-//@RestController
-//@RequestMapping("/promo/account")
-//public class PromoAccountController {
-//
-//    @Autowired
-//    private IPromoAccountService promoAccountService;
-//
-//    @ApiOperation(value = "查询推广账号列表")
-//    @PostMapping(value = "/list")
-//    @PreAuthorize(permissionKey = "manage:promoAccount:list")
-//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = PromoAccountListVO.class)})
-//    public ResultVO<IPage<PromoAccountListVO>> list(@Validated @RequestBody PromoAccountListParam param) {
-//        return ResultVO.ok(promoAccountService.list(param));
-//    }
-//
-//    @ApiOperation(value = "推广账号添加或修改")
-//    @PostMapping(value = "/add/or/update")
-//    @PreAuthorize(permissionKey = "manage:promoAccount:addOrUpdate")
-//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
-//    public ResultVO<Boolean> addOrUpdate(@Validated @RequestBody PromoAccountAddUpdateParam param) {
-//        return ResultVO.ok(promoAccountService.addOrUpdate(param));
-//    }
-//
-//    @ApiOperation(value = "推广账号状态变更")
-//    @PatchMapping(value = "/status/update")
-//    @PreAuthorize(permissionKey = "manage:promoAccount:statusUpdate")
-//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
-//    public ResultVO<Boolean> statusUpdate(@RequestParam Long id, @RequestParam Integer status) {
-//        return ResultVO.ok(promoAccountService.statusUpdate(id, status));
-//    }
-//
-//    @ApiOperation(value = "推广账号指派")
-//    @PostMapping(value = "/assign")
-//    @PreAuthorize(permissionKey = "manage:accountAssign:addOrUpdate")
-//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
-//    public ResultVO<Boolean> accountAssign(@Validated @RequestBody PromoAccountAssignParam param) {
-//        return ResultVO.ok(promoAccountService.accountAssign(param));
-//    }
-//}

+ 0 - 54
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/PromoChannelController.java

@@ -1,54 +0,0 @@
-//package com.zanxiang.game.module.manage.controller;
-//
-//import com.baomidou.mybatisplus.core.metadata.IPage;
-//import com.zanxiang.erp.security.annotation.PreAuthorize;
-//import com.zanxiang.game.module.manage.pojo.params.PromoChannelAddUpdateParam;
-//import com.zanxiang.game.module.manage.pojo.params.PromoChannelListParam;
-//import com.zanxiang.game.module.manage.pojo.vo.PromoChannelListVO;
-//import com.zanxiang.game.module.manage.service.IPromoChannelService;
-//import com.zanxiang.module.util.pojo.ResultVO;
-//import io.swagger.annotations.Api;
-//import io.swagger.annotations.ApiOperation;
-//import io.swagger.annotations.ApiResponse;
-//import io.swagger.annotations.ApiResponses;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.validation.annotation.Validated;
-//import org.springframework.web.bind.annotation.*;
-//
-///**
-// * @author : lingfeng
-// * @time : 2022-11-23
-// * @description : 推广渠道
-// */
-//@Api(tags = "推广渠道接口")
-//@RestController
-//@RequestMapping("/promo/channel")
-//public class PromoChannelController {
-//
-//    @Autowired
-//    private IPromoChannelService promoChannelService;
-//
-//    @ApiOperation(value = "查询推广渠道列表")
-//    @PostMapping(value = "/list")
-//    @PreAuthorize(permissionKey = "manage:promoChannel:list")
-//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = PromoChannelListVO.class)})
-//    public ResultVO<IPage<PromoChannelListVO>> list(@Validated @RequestBody PromoChannelListParam param) {
-//        return ResultVO.ok(promoChannelService.list(param));
-//    }
-//
-//    @ApiOperation(value = "推广渠道添加或修改")
-//    @PostMapping(value = "/add/or/update")
-//    @PreAuthorize(permissionKey = "manage:promoChannel:addOrUpdate")
-//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
-//    public ResultVO<Boolean> addOrUpdate(@Validated @RequestBody PromoChannelAddUpdateParam param) {
-//        return ResultVO.ok(promoChannelService.addOrUpdate(param));
-//    }
-//
-//    @ApiOperation(value = "推广渠道状态变更")
-//    @PatchMapping(value = "/status/update")
-//    @PreAuthorize(permissionKey = "manage:promoChannel:statusUpdate")
-//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
-//    public ResultVO<Boolean> statusUpdate(@RequestParam Long id, @RequestParam Integer status) {
-//        return ResultVO.ok(promoChannelService.statusUpdate(id, status));
-//    }
-//}

+ 0 - 54
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/PromoMediaController.java

@@ -1,54 +0,0 @@
-//package com.zanxiang.game.module.manage.controller;
-//
-//import com.baomidou.mybatisplus.core.metadata.IPage;
-//import com.zanxiang.erp.security.annotation.PreAuthorize;
-//import com.zanxiang.game.module.manage.pojo.params.PromoMediaAddUpdateParam;
-//import com.zanxiang.game.module.manage.pojo.params.PromoMediaListParam;
-//import com.zanxiang.game.module.manage.pojo.vo.PromoMediaListVO;
-//import com.zanxiang.game.module.manage.service.IPromoMediaService;
-//import com.zanxiang.module.util.pojo.ResultVO;
-//import io.swagger.annotations.Api;
-//import io.swagger.annotations.ApiOperation;
-//import io.swagger.annotations.ApiResponse;
-//import io.swagger.annotations.ApiResponses;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.validation.annotation.Validated;
-//import org.springframework.web.bind.annotation.*;
-//
-///**
-// * @author : lingfeng
-// * @time : 2022-11-18
-// * @description : 推广媒体
-// */
-//@Api(tags = "推广媒体接口")
-//@RestController
-//@RequestMapping("/promo/media")
-//public class PromoMediaController {
-//
-//    @Autowired
-//    private IPromoMediaService promoMediaService;
-//
-//    @ApiOperation(value = "查询推广媒体列表")
-//    @PostMapping(value = "/list")
-//    @PreAuthorize(permissionKey = "manage:promoMedia:list")
-//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = PromoMediaListVO.class)})
-//    public ResultVO<IPage<PromoMediaListVO>> list(@Validated @RequestBody PromoMediaListParam param) {
-//        return ResultVO.ok(promoMediaService.list(param));
-//    }
-//
-//    @ApiOperation(value = "推广媒体添加或修改")
-//    @PostMapping(value = "/add/or/update")
-//    @PreAuthorize(permissionKey = "manage:promoMedia:addOrUpdate")
-//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
-//    public ResultVO<Boolean> addOrUpdate(@Validated @RequestBody PromoMediaAddUpdateParam param) {
-//        return ResultVO.ok(promoMediaService.addOrUpdate(param));
-//    }
-//
-//    @ApiOperation(value = "推广媒体状态变更")
-//    @PatchMapping(value = "/status/update")
-//    @PreAuthorize(permissionKey = "manage:promoMedia:statusUpdate")
-//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
-//    public ResultVO<Boolean> statusUpdate(@RequestParam Long id, @RequestParam Integer status) {
-//        return ResultVO.ok(promoMediaService.statusUpdate(id, status));
-//    }
-//}

+ 0 - 54
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/PromoSiteController.java

@@ -1,54 +0,0 @@
-//package com.zanxiang.game.module.manage.controller;
-//
-//import com.baomidou.mybatisplus.core.metadata.IPage;
-//import com.zanxiang.erp.security.annotation.PreAuthorize;
-//import com.zanxiang.game.module.manage.pojo.params.PromoSiteAddOrUpdateParam;
-//import com.zanxiang.game.module.manage.pojo.params.PromoSiteListParam;
-//import com.zanxiang.game.module.manage.pojo.vo.PromoSiteListVO;
-//import com.zanxiang.game.module.manage.service.IPromoSiteService;
-//import com.zanxiang.module.util.pojo.ResultVO;
-//import io.swagger.annotations.Api;
-//import io.swagger.annotations.ApiOperation;
-//import io.swagger.annotations.ApiResponse;
-//import io.swagger.annotations.ApiResponses;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.validation.annotation.Validated;
-//import org.springframework.web.bind.annotation.*;
-//
-///**
-// * @author : lingfeng
-// * @time : 2022-11-18
-// * @description : 推广版位
-// */
-//@Api(tags = "推广版位接口")
-//@RestController
-//@RequestMapping("/promo/site")
-//public class PromoSiteController {
-//
-//    @Autowired
-//    private IPromoSiteService promoSiteService;
-//
-//    @ApiOperation(value = "查询推广媒体版位列表")
-//    @PostMapping(value = "/list")
-//    @PreAuthorize(permissionKey = "manage:promoSite:list")
-//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = PromoSiteListVO.class)})
-//    public ResultVO<IPage<PromoSiteListVO>> list(@Validated @RequestBody PromoSiteListParam param) {
-//        return ResultVO.ok(promoSiteService.list(param));
-//    }
-//
-//    @ApiOperation(value = "推广媒体版位添加或修改")
-//    @PostMapping(value = "/add/or/update")
-//    @PreAuthorize(permissionKey = "manage:promoSite:addOrUpdate")
-//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
-//    public ResultVO<Boolean> addOrUpdate(@Validated @RequestBody PromoSiteAddOrUpdateParam param) {
-//        return ResultVO.ok(promoSiteService.addOrUpdate(param));
-//    }
-//
-//    @ApiOperation(value = "推广媒体版位状态变更")
-//    @PatchMapping(value = "/status/update")
-//    @PreAuthorize(permissionKey = "manage:promoSite:statusUpdate")
-//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
-//    public ResultVO<Boolean> statusUpdate(@RequestParam Long id, @RequestParam Integer status) {
-//        return ResultVO.ok(promoSiteService.statusUpdate(id, status));
-//    }
-//}

+ 9 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IMiPaySumService.java

@@ -9,4 +9,13 @@ import com.zanxiang.game.module.mybatis.entity.MiPaySum;
  * @description :
  */
 public interface IMiPaySumService extends IService<MiPaySum> {
+
+    /**
+     * 添加
+     *
+     * @param gameId     游戏id
+     * @param appId      应用程序id
+     * @param miPayAppId mi支付应用程序id
+     */
+    void add(Long gameId, String appId, String miPayAppId);
 }

+ 27 - 39
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GamePayWayServiceImpl.java

@@ -66,29 +66,27 @@ public class GamePayWayServiceImpl extends ServiceImpl<GamePayWayMapper, GamePay
     @Autowired
     private IPayMerchantService payMerchantService;
 
+    @Autowired
+    private IMiPaySumService miPaySumService;
+
     @Override
+    @Transactional(rollbackFor = {RuntimeException.class, Exception.class})
     public boolean addOrUpdate(GamePayWayAddUpdateParam param) {
-        Long id = param.getId();
-        GamePayWay gamePayWay;
-        if (id != null) {
-            gamePayWay = super.getById(id);
-            if (gamePayWay == null) {
-                throw new BaseException("参数错误, 游戏支付配置信息不存在");
-            }
-        } else {
-            gamePayWay = new GamePayWay();
-            gamePayWay.setGameId(param.getGameId());
-            gamePayWay.setPayWayId(param.getPayWayId());
-            gamePayWay.setPayDeviceId(param.getPayDeviceId());
-            gamePayWay.setStatus(StatusEnum.YES.getCode());
-            gamePayWay.setIsDelete(DeleteEnum.NO.getCode());
-            gamePayWay.setCreateTime(LocalDateTime.now());
+        GamePayWay gamePayWay = param.getId() != null ? super.getById(param.getId()) : GamePayWay.builder()
+                .gameId(param.getGameId())
+                .payWayId(param.getPayWayId())
+                .payDeviceId(param.getPayDeviceId())
+                .payName(PayWayEnum.getByPayWayId(param.getPayWayId()) + PayDeviceEnum.getByPayWayId(param.getPayDeviceId()))
+                .remark(param.getRemark())
+                .status(StatusEnum.YES.getCode())
+                .isDelete(DeleteEnum.NO.getCode())
+                .createTime(LocalDateTime.now())
+                .updateTime(LocalDateTime.now())
+                .build();
+        if (gamePayWay == null) {
+            throw new BaseException("参数错误, 游戏支付配置信息不存在");
         }
-        this.gamePayWayUpdate(gamePayWay, param);
-        return super.saveOrUpdate(gamePayWay);
-    }
-
-    private void gamePayWayUpdate(GamePayWay gamePayWay, GamePayWayAddUpdateParam param) {
+        //支付方式
         Long payWayId = gamePayWay.getPayWayId();
         if (Objects.equals(PayWayEnum.ALI_PAY.getPayWayId(), payWayId.intValue())) {
             GamePayWayAddUpdateParam.AliPayConfigBean aliPayConfig = param.getAliPayConfig();
@@ -137,26 +135,16 @@ public class GamePayWayServiceImpl extends ServiceImpl<GamePayWayMapper, GamePay
             if (miPayConfig == null || StringUtils.isAnyEmpty(miPayConfig.getAppId(), miPayConfig.getAppKey(), miPayConfig.getAppKeyDev())) {
                 throw new BaseException("参数错误, 米大师支付参数配置不全");
             }
-            gameAppletService.update(new LambdaUpdateWrapper<GameApplet>()
-                    .set(GameApplet::getMiPayConfig, JsonUtil.toString(miPayConfig))
-                    .set(GameApplet::getUpdateTime, LocalDateTime.now())
-                    .eq(GameApplet::getGameId, gamePayWay.getGameId()));
-        }
-        Map<Long, PayDeviceDTO> payDeviceMap = payDeviceService.payDeviceMap();
-        Map<Long, PayWayDTO> payWayMap = payWayService.payWayMap();
-        String payName = "";
-        if (payWayMap.get(param.getPayWayId()) != null) {
-            payName += payWayMap.get(param.getPayWayId()).getPayWayName();
-        }
-        if (payDeviceMap.get(param.getPayDeviceId()) != null) {
-            payName += payDeviceMap.get(param.getPayDeviceId()).getPayDeviceName();
+            GameAppletDTO gameAppletDTO = gameAppletService.getByGameId(gamePayWay.getGameId());
+            if (gameAppletDTO != null) {
+                gameAppletService.update(new LambdaUpdateWrapper<GameApplet>()
+                        .set(GameApplet::getMiPayConfig, JsonUtil.toString(miPayConfig))
+                        .set(GameApplet::getUpdateTime, LocalDateTime.now())
+                        .eq(GameApplet::getGameId, gamePayWay.getGameId()));
+                miPaySumService.add(param.getGameId(), gameAppletDTO.getAppId(), miPayConfig.getAppId());
+            }
         }
-        gamePayWay.setPayName(payName);
-        gamePayWay.setGameId(param.getGameId());
-        gamePayWay.setPayWayId(param.getPayWayId());
-        gamePayWay.setPayDeviceId(param.getPayDeviceId());
-        gamePayWay.setRemark(param.getRemark());
-        gamePayWay.setUpdateTime(LocalDateTime.now());
+        return super.saveOrUpdate(gamePayWay);
     }
 
     @Override

+ 26 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/MiPaySumServiceImpl.java

@@ -1,12 +1,17 @@
 package com.zanxiang.game.module.manage.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.game.module.base.pojo.enums.DeleteEnum;
+import com.zanxiang.game.module.base.pojo.enums.StatusEnum;
 import com.zanxiang.game.module.manage.service.IMiPaySumService;
 import com.zanxiang.game.module.mybatis.entity.MiPaySum;
 import com.zanxiang.game.module.mybatis.mapper.MiPaySumMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
+
 /**
  * @author : lingfeng
  * @time : 2023-06-21
@@ -15,4 +20,25 @@ import org.springframework.stereotype.Service;
 @Slf4j
 @Service
 public class MiPaySumServiceImpl extends ServiceImpl<MiPaySumMapper, MiPaySum> implements IMiPaySumService {
+
+    @Override
+    public void add(Long gameId, String appId, String miPayAppId) {
+        int count = super.count(new LambdaQueryWrapper<MiPaySum>()
+                .eq(MiPaySum::getGameId, gameId)
+                .eq(MiPaySum::getAppId, appId)
+                .eq(MiPaySum::getMiPayAppId, miPayAppId));
+        if (count > 0) {
+            return;
+        }
+        super.save(MiPaySum.builder()
+                .gameId(gameId)
+                .appId(appId)
+                .miPayAppId(miPayAppId)
+                .maxPayLock(StatusEnum.YES.getCode())
+                .status(StatusEnum.YES.getCode())
+                .isDelete(DeleteEnum.NO.getCode())
+                .createTime(LocalDateTime.now())
+                .updateTime(LocalDateTime.now())
+                .build());
+    }
 }

+ 5 - 5
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/MiPaySum.java

@@ -43,6 +43,11 @@ public class MiPaySum implements Serializable {
      */
     private String appId;
 
+    /**
+     * 米大师应用id
+     */
+    private String miPayAppId;
+
     /**
      * 最大支付额度锁 0 正常 1 锁定
      */
@@ -108,9 +113,4 @@ public class MiPaySum implements Serializable {
      * 更新时间
      */
     private LocalDateTime updateTime;
-
-    /**
-     * 支付方式id列表
-     */
-    private String payDeviceIds;
 }

+ 9 - 2
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/listener/OrderPaySuccessListener.java

@@ -1,5 +1,6 @@
 package com.zanxiang.game.module.sdk.listener;
 
+import com.zanxiang.game.module.base.pojo.enums.PayDeviceEnum;
 import com.zanxiang.game.module.sdk.pojo.dto.PlatformOrderDTO;
 import com.zanxiang.game.module.sdk.service.ICallBackService;
 import com.zanxiang.game.module.sdk.service.IOrderService;
@@ -54,8 +55,14 @@ public class OrderPaySuccessListener {
         performOrderService.userRechargeTotal(platformOrderDTO);
         //用户首冲统计
         performOrderService.checkIsFirstRecharge(platformOrderDTO);
-        //商户号额度统计更新
-        performOrderService.payMerchantTotal(platformOrderDTO);
+        //判断用户是否使用米大师支付
+        if (Objects.equals(platformOrderDTO.getPayDeviceId(), PayDeviceEnum.MI_PAY.getPayDeviceId())) {
+            //米大师收款统计
+            performOrderService.miPayTotal(platformOrderDTO);
+        } else {
+            //商户号额度统计更新
+            performOrderService.payMerchantTotal(platformOrderDTO);
+        }
         //订单回传
         callBackService.orderCallBack(platformOrderDTO);
         log.info("订单:{} 支付成功履约监听逻辑 ------end---------", event.getOrderId());

+ 8 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/IPerformOrderService.java

@@ -41,4 +41,12 @@ public interface IPerformOrderService {
      * @return {@link Boolean}
      */
     Boolean payMerchantTotal(PlatformOrderDTO platformOrderDTO);
+
+    /**
+     * 米大师收款统计
+     *
+     * @param platformOrderDTO 平台订单dto
+     * @return {@link Boolean}
+     */
+    Boolean miPayTotal(PlatformOrderDTO platformOrderDTO);
 }

+ 85 - 18
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/PerformOrderServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.zanxiang.game.module.base.pojo.enums.CpStatusEnum;
 import com.zanxiang.game.module.mybatis.entity.*;
 import com.zanxiang.game.module.sdk.enums.OrderStateEnum;
+import com.zanxiang.game.module.sdk.pojo.dto.GameAppletDTO;
 import com.zanxiang.game.module.sdk.pojo.dto.PayMerchantDTO;
 import com.zanxiang.game.module.sdk.pojo.dto.PlatformOrderDTO;
 import com.zanxiang.game.module.sdk.pojo.result.PushCpResult;
@@ -62,6 +63,12 @@ public class PerformOrderServiceImpl implements IPerformOrderService {
     @Autowired
     private IGameExtService gameExtService;
 
+    @Autowired
+    private IMiPaySumService miPaySumService;
+
+    @Autowired
+    private IGameAppletService gameAppletService;
+
     @Override
     @Transactional(rollbackFor = {RuntimeException.class, Exception.class})
     public Boolean pushCp(PlatformOrderDTO orderInfo) {
@@ -158,6 +165,7 @@ public class PerformOrderServiceImpl implements IPerformOrderService {
                 log.info("订单:{} 验证订单是否为首充成功", platformOrderDTO.getOrderId());
                 return Boolean.TRUE;
             }
+            log.info("订单:{} 检查更新用户是否为首充 ----------end---------", platformOrderDTO.getOrderId());
         } catch (Exception e) {
             log.error("订单:{} 验证订单是否为首充失败 e:{}", platformOrderDTO.getOrderId(), e);
         }
@@ -166,55 +174,56 @@ public class PerformOrderServiceImpl implements IPerformOrderService {
 
     @Override
     @Transactional(rollbackFor = {RuntimeException.class, Exception.class})
-    public Boolean userRechargeTotal(PlatformOrderDTO orderInfo) {
-        log.info("订单:{} 更新用户充值统计 ----------start---------", orderInfo.getOrderId());
+    public Boolean userRechargeTotal(PlatformOrderDTO platformOrderDTO) {
+        log.info("订单:{} 更新用户充值统计 ----------start---------", platformOrderDTO.getOrderId());
         try {
             //订单取消情况 做减法
-            float amount = orderInfo.getAmount().floatValue();
+            float amount = platformOrderDTO.getAmount().floatValue();
             int num = 1;
             //游戏用户角色统计更新
-            if (Strings.isNotBlank(orderInfo.getRoleId()) && !"0".equals(orderInfo.getRoleId())) {
+            if (Strings.isNotBlank(platformOrderDTO.getRoleId()) && !"0".equals(platformOrderDTO.getRoleId())) {
                 GameUserRole gameUserRole = new GameUserRole();
-                gameUserRole.setRoleId(orderInfo.getRoleId());
+                gameUserRole.setRoleId(platformOrderDTO.getRoleId());
                 gameUserRoleService.update(gameUserRole, new UpdateWrapper<GameUserRole>().lambda()
-                        .set(GameUserRole::getLastRechargeTime, orderInfo.getPayTime())
+                        .set(GameUserRole::getLastRechargeTime, platformOrderDTO.getPayTime())
                         .setSql("recharge_count=recharge_count+" + num)
                         .setSql("recharge_money=recharge_money+" + amount)
                         .setEntity(gameUserRole));
             } else {
-                log.info("订单:{} 用户玩家角色RoleId为空,不进行gameUserRole充值统计汇总", orderInfo.getOrderId());
+                log.info("订单:{} 用户玩家角色RoleId为空,不进行gameUserRole充值统计汇总", platformOrderDTO.getOrderId());
             }
             //游戏用户统计更新
-            if (orderInfo.getMgUserId() != null) {
+            if (platformOrderDTO.getMgUserId() != null) {
                 GameUser gameUser = new GameUser();
-                gameUser.setId(orderInfo.getMgUserId());
+                gameUser.setId(platformOrderDTO.getMgUserId());
                 gameUserService.update(gameUser, new UpdateWrapper<GameUser>().lambda()
-                        .set(GameUser::getLastRechargeTime, orderInfo.getPayTime())
+                        .set(GameUser::getLastRechargeTime, platformOrderDTO.getPayTime())
                         .setSql("recharge_count=recharge_count+" + num)
                         .setSql("recharge_money=recharge_money+" + amount)
                         .setEntity(gameUser)
                 );
             } else {
-                log.info("订单:{} 用户玩家MgUserId为空,不进行gameUser充值统计汇总", orderInfo.getOrderId());
+                log.info("订单:{} 用户玩家MgUserId为空,不进行gameUser充值统计汇总", platformOrderDTO.getOrderId());
             }
             //用户统计更新
-            if (orderInfo.getUserId() != null) {
+            if (platformOrderDTO.getUserId() != null) {
                 User user = new User();
-                user.setId(orderInfo.getUserId());
+                user.setId(platformOrderDTO.getUserId());
                 userService.update(user, new UpdateWrapper<User>().lambda()
-                        .set(User::getLastRechargeTime, orderInfo.getPayTime())
+                        .set(User::getLastRechargeTime, platformOrderDTO.getPayTime())
                         .setSql("recharge_count=recharge_count+" + num)
                         .setSql("recharge_money=recharge_money+" + amount)
                         .setEntity(user)
                 );
             } else {
-                log.info("订单:{} 用户UserId为空,不进行User充值统计汇总", orderInfo.getOrderId());
+                log.info("订单:{} 用户UserId为空,不进行User充值统计汇总", platformOrderDTO.getOrderId());
             }
-            return true;
+            log.info("订单:{} 更新用户充值统计 ----------end---------", platformOrderDTO.getOrderId());
+            return Boolean.TRUE;
         } catch (Exception e) {
-            log.error("订单:{} 用户充值统计逻辑操作失败 e:{}", orderInfo.getOrderId(), e);
+            log.error("订单:{} 用户充值统计逻辑操作失败 e:{}", platformOrderDTO.getOrderId(), e);
         }
-        return false;
+        return Boolean.FALSE;
     }
 
     @Override
@@ -264,4 +273,62 @@ public class PerformOrderServiceImpl implements IPerformOrderService {
         }
         return Boolean.FALSE;
     }
+
+    @Override
+    @Transactional(rollbackFor = {RuntimeException.class, Exception.class})
+    public Boolean miPayTotal(PlatformOrderDTO platformOrderDTO) {
+        log.info("订单:{} 更新米大师统计 ----------start---------", platformOrderDTO.getOrderId());
+        try {
+            //获取米大师统计信息
+            GameAppletDTO gameAppletDTO = gameAppletService.getByGameId(platformOrderDTO.getGameId());
+            GameAppletDTO.MiPayConfigBean miPayConfigBean = gameAppletDTO.getMiPayConfigBean();
+            if (miPayConfigBean == null) {
+                log.error("米大师支付统计失败, 米大师配置信息不存在");
+                return Boolean.FALSE;
+            }
+            MiPaySum miPaySum = miPaySumService.getOne(new LambdaQueryWrapper<MiPaySum>()
+                    .eq(MiPaySum::getGameId, gameAppletDTO.getGameId())
+                    .eq(MiPaySum::getAppId, gameAppletDTO.getAppId())
+                    .eq(MiPaySum::getMiPayAppId, miPayConfigBean.getAppId()));
+            //商户额度数据统计
+            BigDecimal amount = platformOrderDTO.getAmount();
+            LocalDateTime updateTime = miPaySum.getDayUpdateDate();
+            LocalDateTime dateTime = LocalDateTime.now();
+            String totalPayAmount, mouthPayAmount, weakerPayAmount, dayPayAmount;
+            //累计
+            totalPayAmount = " total_pay_amount = total_pay_amount + " + amount;
+            dayPayAmount = " day_pay_amount = day_pay_amount + " + amount;
+            weakerPayAmount = " weaker_pay_amount = weaker_pay_amount + " + amount;
+            mouthPayAmount = " mouth_pay_amount = mouth_pay_amount + " + amount;
+            //统计过期限, 重新赋值
+            if (updateTime != null) {
+                if (!DateUtils.isToday(miPaySum.getDayUpdateDate())) {
+                    dayPayAmount = " day_pay_amount = " + amount;
+                }
+                if (!DateUtils.isThisWeek(miPaySum.getWeakerUpdateDate())) {
+                    weakerPayAmount = " weaker_pay_amount = " + amount;
+                }
+                if (!DateUtils.isThisMonth(miPaySum.getMouthUpdateDate())) {
+                    mouthPayAmount = " mouth_pay_amount = " + amount;
+                }
+            }
+            //更新商户表
+            miPaySumService.update(new LambdaUpdateWrapper<MiPaySum>()
+                    .set(MiPaySum::getMouthUpdateDate, dateTime)
+                    .set(MiPaySum::getWeakerUpdateDate, dateTime)
+                    .set(MiPaySum::getDayUpdateDate, dateTime)
+                    .setSql(totalPayAmount)
+                    .setSql(mouthPayAmount)
+                    .setSql(weakerPayAmount)
+                    .setSql(dayPayAmount)
+                    .eq(MiPaySum::getGameId, gameAppletDTO.getGameId())
+                    .eq(MiPaySum::getAppId, gameAppletDTO.getAppId())
+                    .eq(MiPaySum::getMiPayAppId, miPayConfigBean.getAppId()));
+            log.info("订单:{} 更新米大师统计 ----------end---------", platformOrderDTO.getOrderId());
+            return Boolean.TRUE;
+        } catch (Exception e) {
+            log.error("订单:{} 更新米大师统计异常 e:{}", platformOrderDTO.getOrderId(), e);
+        }
+        return Boolean.FALSE;
+    }
 }