bilingfeng пре 2 година
родитељ
комит
16681b7dc9

+ 18 - 39
game-module/game-manage/src/main/java/com/zanxiang/manage/controller/GamePayWayController.java

@@ -3,12 +3,9 @@ package com.zanxiang.manage.controller;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.zanxiang.common.domain.ResultVO;
 import com.zanxiang.erp.security.annotation.PreAuthorize;
-import com.zanxiang.manage.domain.params.GameAnalogPayParam;
 import com.zanxiang.manage.domain.params.GamePayWayListParam;
-import com.zanxiang.manage.domain.params.GamePayWayParam;
-import com.zanxiang.manage.domain.vo.AllGamePayWayByGameIdVO;
-import com.zanxiang.manage.domain.vo.GameAnalogPayVO;
 import com.zanxiang.manage.domain.vo.GamePayWayListVO;
+import com.zanxiang.manage.domain.vo.PayApplicationVO;
 import com.zanxiang.manage.service.IGamePayWayService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -23,7 +20,7 @@ import org.springframework.web.bind.annotation.*;
  * @time : 2022-11-25
  * @description : 游戏支付配置管理
  */
-@Api(tags = "游戏支付配置管理")
+@Api(tags = "支付配置管理")
 @RestController
 @RequestMapping("/game/pay/way")
 public class GamePayWayController {
@@ -31,45 +28,27 @@ public class GamePayWayController {
     @Autowired
     private IGamePayWayService gamePayWayService;
 
-    @ApiOperation(value = "新增/编辑/删除")
-    @PostMapping(value = "/save")
-    @PreAuthorize(permissionKey = "sdk:gamePayWay:save")
-    public ResultVO<Boolean> save(@Validated @RequestBody GamePayWayParam param) {
-        return ResultVO.ok(gamePayWayService.saveOrUpdate(param));
-    }
-
-    @ApiOperation(value = "列表")
+    @ApiOperation(value = "游戏支付配置列表查询")
     @PostMapping(value = "/list")
-    @PreAuthorize(permissionKey = "sdk:gamePayWay:list")
-    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = GamePayWayListVO.class, responseContainer = "list")})
-    public ResultVO<IPage<GamePayWayListVO>> list(@Validated @RequestBody GamePayWayListParam param) {
-        return ResultVO.ok(gamePayWayService.list(param));
+    @PreAuthorize(permissionKey = "manage:gamePayWay:list")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = PayApplicationVO.class)})
+    public ResultVO<IPage<GamePayWayListVO>> pageList(@Validated @RequestBody GamePayWayListParam param) {
+        return new ResultVO<>(gamePayWayService.pageList(param));
     }
 
-    @ApiOperation(value = "游戏详情支付配置展示")
-    @GetMapping(value = "/allGamePayWayByGameId")
-    @PreAuthorize(permissionKey = "sdk:gamePayWay:allGamePayWayByGameId")
-    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = AllGamePayWayByGameIdVO.class)})
-    public ResultVO<AllGamePayWayByGameIdVO> getInfo(@RequestParam Long gameId) {
-//        return new ResultVO<>(gamePayWayService.getAllGamePayWayByGameId(gameId));
-        return null;
-    }
-
-    @ApiOperation(value = "获取游戏虚拟支付配置")
-    @GetMapping(value = "/analog/pay/info")
-    @PreAuthorize(permissionKey = "sdk:gamePayWay:analogPayInfo")
-    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = GameAnalogPayVO.class)})
-    public ResultVO<GameAnalogPayVO> getGameAnalogPay(@RequestParam Long id) {
-//        return new ResultVO<>(gamePayWayService.getGameAnalogPay(id));
-        return null;
+    @ApiOperation(value = "游戏支付配置删除")
+    @DeleteMapping(value = "/delete")
+    @PreAuthorize(permissionKey = "manage:gamePayWay:delete")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+    public ResultVO<Boolean> deleteById(@RequestParam Long id) {
+        return new ResultVO<>(gamePayWayService.deleteById(id));
     }
 
-    @ApiOperation(value = "游戏虚拟支付配置添加或者更新")
-    @PostMapping(value = "/analog/pay/add/or/update")
-    @PreAuthorize(permissionKey = "sdk:gamePayWay:analogPayAddOrUpdate")
+    @ApiOperation(value = "游戏支付配置状态变更")
+    @PatchMapping(value = "/status/update")
+    @PreAuthorize(permissionKey = "manage:gamePayWay:statusUpdate")
     @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
-    public ResultVO<Boolean> gameAnalogPayAddOrUpdate(@Validated @RequestBody GameAnalogPayParam param) {
-//        return new ResultVO<>(gamePayWayService.gameAnalogPayAddOrUpdate(param));
-        return null;
+    public ResultVO<Boolean> statusUpdate(@RequestParam Long id, @RequestParam Integer status) {
+        return new ResultVO<>(gamePayWayService.statusUpdate(id, status));
     }
 }

+ 97 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/dto/GameAppletDTO.java

@@ -0,0 +1,97 @@
+package com.zanxiang.manage.domain.dto;
+
+import lombok.Data;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-02-14
+ * @description : 游戏小程序信息
+ */
+@Data
+public class GameAppletDTO {
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 游戏id
+     */
+    private Long gameId;
+
+    /**
+     * 小程序appId
+     */
+    private String appId;
+
+    /**
+     * 小程序原始id
+     */
+    private String ghId;
+
+    /**
+     * 小程序名称
+     */
+    private String appName;
+
+    /**
+     * 小程序密钥
+     */
+    private String appSecret;
+
+    /**
+     * 米大师应用id
+     */
+    private String miPayAppId;
+
+    /**
+     * 米大师应用密钥
+     */
+    private String miPayAppKey;
+
+    /**
+     * 米大师应用沙箱密钥
+     */
+    private String miPayAppKeyDev;
+
+    /**
+     * 消息推送token
+     */
+    private String msgPushToken;
+
+    /**
+     * 消息推送加密密钥
+     */
+    private String msgPushAesKey;
+
+    /**
+     * 公司主体信息
+     */
+    private String company;
+
+    /**
+     * 登录账号
+     */
+    private String account;
+
+    /**
+     * 登录密码
+     */
+    private String password;
+
+    /**
+     * 管理员
+     */
+    private String manager;
+
+    /**
+     * 管理员微信
+     */
+    private String managerVx;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 0 - 68
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/params/GameAnalogPayParam.java

@@ -1,68 +0,0 @@
-package com.zanxiang.manage.domain.params;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import javax.validation.constraints.NotNull;
-
-/**
- * @author : lingfeng
- * @time : 2022-07-12
- * @description : 游戏虚拟支付提交参数
- */
-@Data
-public class GameAnalogPayParam {
-
-    /**
-     * 主键id
-     */
-    @ApiModelProperty(notes = "主键id, 获取接口拿到的id是啥就传啥")
-    private Long id;
-
-    /**
-     * 游戏id
-     */
-    @NotNull(message = "游戏id不可为空")
-    @ApiModelProperty(notes = "游戏id, 任何时候都能拿到, 不可为空")
-    private Long gameId;
-
-    /**
-     * 配置信息
-     */
-    @ApiModelProperty(notes = "游戏id")
-    private PayConfigBean payConfig;
-
-    @Data
-    public static class PayConfigBean {
-
-        /**
-         * 米大师支付应用id
-         */
-        @ApiModelProperty(notes = "米大师支付应用id")
-        private String appId;
-
-        /**
-         * 米大师现网AppKey
-         */
-        @ApiModelProperty(notes = "米大师现网AppKey")
-        private String appKey;
-
-        /**
-         * 米大师沙箱AppKey
-         */
-        @ApiModelProperty(notes = "米大师沙箱AppKey")
-        private String appKeyDev;
-
-        /**
-         * 人民币元宝比例
-         */
-        @ApiModelProperty(notes = "人民币元宝比例")
-        private String exchangeRate;
-
-        /**
-         * IOS充值提示
-         */
-        @ApiModelProperty(notes = "IOS充值提示")
-        private String iosTips;
-    }
-}

+ 121 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/params/GamePayWayAddUpdateParam.java

@@ -0,0 +1,121 @@
+package com.zanxiang.manage.domain.params;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-07-12
+ * @description : 游戏虚拟支付提交参数
+ */
+@Data
+public class GamePayWayAddUpdateParam {
+
+    /**
+     * 主键id
+     */
+    @ApiModelProperty(notes = "主键id, 获取接口拿到的id是啥就传啥")
+    private Long id;
+
+    /**
+     * 游戏id
+     */
+    @NotNull(message = "游戏id不可为空")
+    @ApiModelProperty(notes = "游戏id, 任何时候都能拿到, 不可为空")
+    private Long gameId;
+
+    /**
+     * 支付方式id
+     */
+    @NotNull(message = "支付方式id不可为空")
+    @ApiModelProperty(notes = "支付方式id")
+    private Long payWayId;
+
+    /**
+     * 支付类型id
+     */
+    @NotNull(message = "支付类型id不可为空")
+    @ApiModelProperty(notes = "支付类型id")
+    private Long payDeviceId;
+
+    /**
+     * 米大师支付配置
+     */
+    @ApiModelProperty(notes = "米大师支付配置")
+    private MiPayConfigBean miPayConfig;
+
+    /**
+     * 微信支付配置
+     */
+    @ApiModelProperty(notes = "微信支付配置")
+    private WxPayConfigBean wxPayConfig;
+
+    /**
+     * 支付宝支付配置
+     */
+    @ApiModelProperty(notes = "支付宝支付配置")
+    private AliPayConfigBean aliPayConfig;
+
+    @Data
+    public static class MiPayConfigBean {
+
+        /**
+         * 米大师支付应用id
+         */
+        @ApiModelProperty(notes = "米大师支付应用id")
+        private String appId;
+
+        /**
+         * 米大师现网AppKey
+         */
+        @ApiModelProperty(notes = "米大师现网AppKey")
+        private String appKey;
+
+        /**
+         * 米大师沙箱AppKey
+         */
+        @ApiModelProperty(notes = "米大师沙箱AppKey")
+        private String appKeyDev;
+    }
+
+    @Data
+    public static class WxPayConfigBean {
+
+        /**
+         * 支付盒子id
+         */
+        @ApiModelProperty(notes = "支付盒子id")
+        private Long payBoxId;
+
+        /**
+         * 客服消息卡片图片地址
+         */
+        @ApiModelProperty(notes = "客服支付, 消息卡片图片地址")
+        private String thumbUrl;
+
+        /**
+         * 微信应用appId
+         */
+        @ApiModelProperty(notes = "支付应用appId")
+        private String appId;
+
+        /**
+         * 商户号
+         */
+        @ApiModelProperty(notes = "商户号")
+        private String merchantNo;
+
+    }
+
+    @Data
+    public static class AliPayConfigBean {
+
+        /**
+         * 支付应用appId
+         */
+        @ApiModelProperty(notes = "支付应用appId")
+        private String appId;
+    }
+}

+ 10 - 1
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/params/GamePayWayListParam.java

@@ -13,12 +13,21 @@ import lombok.Data;
 @Data
 public class GamePayWayListParam extends BasePage<GamePayWay> {
 
+    /**
+     * 游戏id
+     */
     @ApiModelProperty(notes = "游戏id")
     private Long gameId;
 
+    /**
+     * 支付方式id
+     */
     @ApiModelProperty(notes = "支付方式id")
-    private Integer payWayId;
+    private Long payWayId;
 
+    /**
+     * 状态 1 不可用 0 可用
+     */
     @ApiModelProperty(notes = "状态 1 不可用 0 可用")
     private Integer status;
 

+ 122 - 18
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/vo/GamePayWayListVO.java

@@ -11,43 +11,147 @@ import lombok.Data;
 @Data
 public class GamePayWayListVO {
 
-    @ApiModelProperty(notes = "主键id")
+    /**
+     * 主键id
+     */
+    @ApiModelProperty(notes = "主键id, 获取接口拿到的id是啥就传啥")
     private Long id;
 
-    @ApiModelProperty(notes = "游戏id")
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "游戏id, 任何时候都能拿到, 不可为空")
     private Long gameId;
 
+    /**
+     * 游戏名称
+     */
     @ApiModelProperty(notes = "游戏名称")
     private String gameName;
 
-    @ApiModelProperty(notes = "游戏应用类型id")
+    /**
+     * 游戏类型id
+     */
+    @ApiModelProperty(notes = "游戏类型id")
     private Long gameCategoryId;
 
-    @ApiModelProperty(notes = "游戏应用类型名称")
+    /**
+     * 游戏类型名称
+     */
+    @ApiModelProperty(notes = "游戏类型名称")
     private String gameCategory;
 
+    /**
+     * 支付方式id
+     */
     @ApiModelProperty(notes = "支付方式id")
     private Long payWayId;
 
-    @ApiModelProperty(notes = "支付方式名称")
+    /**
+     * 支付方式
+     */
+    @ApiModelProperty(notes = "支付方式")
     private String payWayName;
 
-    @ApiModelProperty(notes = "商户号")
-    private String merchantNo;
-
-    @ApiModelProperty(notes = "商户名称")
-    private String merchantName;
-
-    @ApiModelProperty(notes = "支付盒子id")
-    private Long payBoxId;
-
-    @ApiModelProperty(notes = "支付盒子")
-    private String payBoxName;
-
+    /**
+     * 支付类型id
+     */
+    @ApiModelProperty(notes = "支付类型id")
+    private Long payDeviceId;
+
+    /**
+     * 支付类型名称
+     */
+    @ApiModelProperty(notes = "支付类型名称")
+    private String payDeviceName;
+
+    /**
+     * 备注
+     */
     @ApiModelProperty(notes = "备注")
     private String remark;
 
-    @ApiModelProperty(notes = "状态 1 不可用 0 可用")
+    /**
+     * 状态, 0 : 可用, 1 : 不可用
+     */
+    @ApiModelProperty(notes = "状态, 0 : 可用, 1 : 不可用")
     private Integer status;
 
+    /**
+     * 米大师支付配置
+     */
+    @ApiModelProperty(notes = "米大师支付配置")
+    private MiPayConfigBean miPayConfig;
+
+    /**
+     * 微信支付配置
+     */
+    @ApiModelProperty(notes = "微信支付配置")
+    private WxPayConfigBean wxPayConfig;
+
+    /**
+     * 支付宝支付配置
+     */
+    @ApiModelProperty(notes = "支付宝支付配置")
+    private AliPayConfigBean aliPayConfig;
+
+    @Data
+    public static class AliPayConfigBean {
+
+        /**
+         * 支付应用appId
+         */
+        @ApiModelProperty(notes = "支付应用appId")
+        private String appId;
+    }
+
+    @Data
+    public static class WxPayConfigBean {
+
+        /**
+         * 支付盒子id
+         */
+        @ApiModelProperty(notes = "支付盒子id")
+        private Long payBoxId;
+
+        /**
+         * 客服消息卡片图片地址
+         */
+        @ApiModelProperty(notes = "客服支付, 消息卡片图片地址")
+        private String thumbUrl;
+
+        /**
+         * 微信应用appId
+         */
+        @ApiModelProperty(notes = "支付应用appId")
+        private String appId;
+
+        /**
+         * 商户号
+         */
+        @ApiModelProperty(notes = "商户号")
+        private String merchantNo;
+    }
+
+    @Data
+    public static class MiPayConfigBean {
+
+        /**
+         * 米大师支付应用id
+         */
+        @ApiModelProperty(notes = "米大师支付应用id")
+        private String appId;
+
+        /**
+         * 米大师现网AppKey
+         */
+        @ApiModelProperty(notes = "米大师现网AppKey")
+        private String appKey;
+
+        /**
+         * 米大师沙箱AppKey
+         */
+        @ApiModelProperty(notes = "米大师沙箱AppKey")
+        private String appKeyDev;
+    }
 }

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

@@ -1,6 +1,7 @@
 package com.zanxiang.manage.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.manage.domain.dto.GameAppletDTO;
 import com.zanxiang.manage.domain.params.GameAccountUpdateParam;
 import com.zanxiang.manage.domain.vo.GameAccountVO;
 import com.zanxiang.mybatis.entity.GameApplet;
@@ -12,6 +13,14 @@ import com.zanxiang.mybatis.entity.GameApplet;
  */
 public interface IGameAppletService extends IService<GameApplet> {
 
+    /**
+     * 通过游戏id
+     *
+     * @param gameId 游戏id
+     * @return {@link GameAppletDTO}
+     */
+    GameAppletDTO getByGameId(Long gameId);
+
     /**
      * 获取账号信息配置
      *

+ 13 - 37
game-module/game-manage/src/main/java/com/zanxiang/manage/service/IGamePayWayService.java

@@ -3,7 +3,6 @@ package com.zanxiang.manage.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zanxiang.manage.domain.params.GamePayWayListParam;
-import com.zanxiang.manage.domain.params.GamePayWayParam;
 import com.zanxiang.manage.domain.vo.GamePayWayListVO;
 import com.zanxiang.manage.domain.vo.GamePayWayVO;
 import com.zanxiang.mybatis.entity.GamePayWay;
@@ -25,21 +24,22 @@ public interface IGamePayWayService extends IService<GamePayWay> {
      */
     List<GamePayWayVO> getByGameId(Long gameId);
 
-//    /**
-//     * 根据游戏id查询(状态yes)
-//     *
-//     * @param gameId
-//     * @return
-//     */
-//    List<GamePayWayVO> getByGameIdForStatusYes(Long gameId);
-
     /**
-     * 保存或更新
+     * 状态更新
      *
-     * @param bo : 参数
+     * @param id     id
+     * @param status 状态
      * @return {@link Boolean}
      */
-    Boolean saveOrUpdate(GamePayWayParam bo);
+    Boolean statusUpdate(Long id, Integer status);
+
+    /**
+     * 删除通过id
+     *
+     * @param id id
+     * @return boolean
+     */
+    boolean deleteById(Long id);
 
     /**
      * 带分页列表
@@ -47,29 +47,5 @@ public interface IGamePayWayService extends IService<GamePayWay> {
      * @param param 参数
      * @return {@link IPage}<{@link GamePayWayListVO}>
      */
-    IPage<GamePayWayListVO> list(GamePayWayListParam param);
-
-//    /**
-//     * 根据游戏id获取虚拟支付配置
-//     *
-//     * @param id : 游戏id
-//     * @return : 返回游戏虚拟支付配置
-//     */
-//    GameAnalogPayVO getGameAnalogPay(Long id);
-
-//    /**
-//     * 虚拟支付更新或者新增
-//     *
-//     * @param payParam : 新增或者更新参数
-//     * @return : 返回新增或者更新的结果
-//     */
-//    Boolean gameAnalogPayAddOrUpdate(GameAnalogPayParam payParam);
-
-//    /**
-//     * 获取游戏所有支付方式
-//     *
-//     * @param gameId 游戏id
-//     * @return
-//     */
-//    AllGamePayWayByGameIdVO getAllGamePayWayByGameId(Long gameId);
+    IPage<GamePayWayListVO> pageList(GamePayWayListParam param);
 }

+ 13 - 1
game-module/game-manage/src/main/java/com/zanxiang/manage/service/impl/GameAppletServiceImpl.java

@@ -4,12 +4,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zanxiang.common.exception.BaseException;
 import com.zanxiang.common.utils.bean.BeanUtils;
+import com.zanxiang.manage.domain.dto.GameAppletDTO;
 import com.zanxiang.manage.domain.dto.GameDTO;
 import com.zanxiang.manage.domain.params.GameAccountUpdateParam;
 import com.zanxiang.manage.domain.vo.GameAccountVO;
 import com.zanxiang.manage.service.IGameAppletService;
 import com.zanxiang.manage.service.IGameService;
 import com.zanxiang.manage.service.api.MiniAppletApiService;
+import com.zanxiang.module.util.bean.BeanUtil;
 import com.zanxiang.mybatis.entity.GameApplet;
 import com.zanxiang.mybatis.mapper.GameAppletMapper;
 import lombok.extern.slf4j.Slf4j;
@@ -34,6 +36,16 @@ public class GameAppletServiceImpl extends ServiceImpl<GameAppletMapper, GameApp
     @Autowired
     private IGameService gameService;
 
+    @Override
+    public GameAppletDTO getByGameId(Long gameId) {
+        GameApplet gameApplet = super.getOne(new LambdaQueryWrapper<GameApplet>()
+                .eq(GameApplet::getGameId, gameId));
+        if (gameApplet == null) {
+            return null;
+        }
+        return BeanUtil.copy(gameApplet, GameAppletDTO.class);
+    }
+
     @Override
     public GameAccountVO getGameAccount(Long id) {
         GameApplet gameApplet = super.getOne(new LambdaQueryWrapper<GameApplet>()
@@ -60,7 +72,7 @@ public class GameAppletServiceImpl extends ServiceImpl<GameAppletMapper, GameApp
         gameApplet.setGhId(param.getGhId());
         gameApplet.setAccount(param.getAccount());
         gameApplet.setPassword(param.getPassword());
-//        gameApplet.setAdminVx(param.getAdminVx());
+        gameApplet.setManagerVx(param.getAdminVx());
         gameApplet.setCompany(param.getCompany());
         gameApplet.setAppSecret(param.getAppSecret());
         gameApplet.setUpdateTime(LocalDateTime.now());

+ 78 - 192
game-module/game-manage/src/main/java/com/zanxiang/manage/service/impl/GamePayWayServiceImpl.java

@@ -1,16 +1,13 @@
 package com.zanxiang.manage.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zanxiang.common.enums.DeleteEnum;
-import com.zanxiang.common.exception.ParamNullException;
+import com.zanxiang.common.enums.PayWayEnum;
 import com.zanxiang.common.utils.bean.BeanUtils;
-import com.zanxiang.manage.domain.dto.GameCategoryDTO;
-import com.zanxiang.manage.domain.dto.GameDTO;
-import com.zanxiang.manage.domain.dto.PayDeviceDTO;
+import com.zanxiang.manage.domain.dto.*;
 import com.zanxiang.manage.domain.params.GamePayWayListParam;
-import com.zanxiang.manage.domain.params.GamePayWayParam;
 import com.zanxiang.manage.domain.vo.GamePayWayListVO;
 import com.zanxiang.manage.domain.vo.GamePayWayVO;
 import com.zanxiang.manage.service.*;
@@ -19,12 +16,11 @@ import com.zanxiang.mybatis.mapper.GamePayWayMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
+import java.time.LocalDateTime;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -37,16 +33,7 @@ import java.util.stream.Collectors;
 public class GamePayWayServiceImpl extends ServiceImpl<GamePayWayMapper, GamePayWay> implements IGamePayWayService {
 
     @Autowired
-    private IPayMerchantService payMerchantService;
-
-    @Autowired
-    private IPayBoxService payBoxService;
-
-    @Autowired
-    private IPayApplicationService payApplicationService;
-
-    @Autowired
-    private IGameStrategyService gameStrategyService;
+    private IGameAppletService gameAppletService;
 
     @Autowired
     private IGameCategoryService gameCategoryService;
@@ -57,60 +44,29 @@ public class GamePayWayServiceImpl extends ServiceImpl<GamePayWayMapper, GamePay
     @Autowired
     private IPayDeviceService payDeviceService;
 
-    @Override
-    public List<GamePayWayVO> getByGameId(Long gameId) {
-        List<GamePayWay> gamePayWayList = super.list(new LambdaQueryWrapper<GamePayWay>()
-                .eq(GamePayWay::getGameId, gameId));
-        if (CollectionUtils.isEmpty(gamePayWayList)) {
-            return Collections.emptyList();
-        }
-        List<Long> payDeviceIdList = gamePayWayList.stream().map(GamePayWay::getPayDeviceId).distinct().collect(Collectors.toList());
-        Map<Long, PayDeviceDTO> payDeviceMap = payDeviceService.payDeviceMap();
-        List<GamePayWayVO> list = new ArrayList<>();
-        payDeviceIdList.forEach(payDeviceId -> list.add(GamePayWayVO.builder()
-                .id(payDeviceId)
-                .payWayName(payDeviceMap.get(payDeviceId).getPayDeviceName())
-                .build()));
-        return list;
-    }
-
-
-//    @Override
-//    public List<GamePayWayVO> getByGameIdForStatusYes(Long gameId) {
-//        List<GamePayWay> gamePayWayList = super.list(new LambdaQueryWrapper<GamePayWay>()
-//                .eq(GamePayWay::getGameId, gameId)
-//                .eq(GamePayWay::getStatus, StatusEnum.YES.getCode())
-//                .select(GamePayWay::getId, GamePayWay::getPayName));
-//        return BeanUtils.copyList(gamePayWayList, GamePayWayVO.class);
-//    }
-
-    @Override
-    public Boolean saveOrUpdate(GamePayWayParam bo) {
-        if (bo.getIsDelete() != null && bo.getIsDelete() == DeleteEnum.YES.getCode()) {
-            if (bo.getId() == null) {
-                throw new ParamNullException("Id");
-            }
-            return removeById(bo.getId());
-        }
-        return saveOrUpdate(BeanUtils.copy(bo, GamePayWay.class));
-    }
+    @Autowired
+    private IPayWayService payWayService;
 
     @Override
-    public IPage<GamePayWayListVO> list(GamePayWayListParam param) {
+    public IPage<GamePayWayListVO> pageList(GamePayWayListParam param) {
         Map<Long, GameCategoryDTO> gameCategoryMap = gameCategoryService.gameCategoryMap();
         Map<Long, GameDTO> gameMap = gameService.gameMap();
+        Map<Long, PayDeviceDTO> payDeviceMap = payDeviceService.payDeviceMap();
+        Map<Long, PayWayDTO> payWayMap = payWayService.payWayMap();
         return super.page(param.toPage(), new LambdaQueryWrapper<GamePayWay>()
                 .eq(param.getGameId() != null, GamePayWay::getGameId, param.getGameId())
                 .eq(param.getPayWayId() != null, GamePayWay::getPayWayId, param.getPayWayId())
-                .eq(param.getStatus() != null, GamePayWay::getStatus, param.getStatus()))
-                .convert(gamePayWay -> this.toVO(gameMap, gameCategoryMap, gamePayWay));
+                .eq(param.getStatus() != null, GamePayWay::getStatus, param.getStatus())
+                .orderByDesc(GamePayWay::getCreateTime))
+                .convert(gamePayWay -> this.toVO(gameMap, gameCategoryMap, gamePayWay, payWayMap, payDeviceMap));
     }
 
-    private GamePayWayListVO toVO(Map<Long, GameDTO> gameMap, Map<Long, GameCategoryDTO> gameCategoryMap, GamePayWay gamePayWay) {
+    private GamePayWayListVO toVO(Map<Long, GameDTO> gameMap, Map<Long, GameCategoryDTO> gameCategoryMap,
+                                  GamePayWay gamePayWay, Map<Long, PayWayDTO> payWayMap, Map<Long, PayDeviceDTO> payDeviceMap) {
+        GamePayWayListVO gamePayWayListVO = BeanUtils.copy(gamePayWay, GamePayWayListVO.class);
         if (gamePayWay == null) {
             return null;
         }
-        GamePayWayListVO gamePayWayListVO = BeanUtils.copy(gamePayWay, GamePayWayListVO.class);
         GameDTO gameDTO = gameMap.get(gamePayWayListVO.getGameId());
         if (gameDTO != null) {
             gamePayWayListVO.setGameName(gameDTO.getName());
@@ -120,138 +76,68 @@ public class GamePayWayServiceImpl extends ServiceImpl<GamePayWayMapper, GamePay
                 gamePayWayListVO.setGameCategory(gameCategoryDTO.getName());
             }
         }
+        Long payWayId = gamePayWay.getPayWayId();
+        PayWayDTO payWayDTO = payWayMap.get(payWayId);
+        if (payWayDTO != null) {
+            gamePayWayListVO.setPayWayName(payWayDTO.getPayWayName());
+        }
+        PayDeviceDTO payDeviceDTO = payDeviceMap.get(gamePayWay.getPayDeviceId());
+        if (payDeviceDTO != null) {
+            gamePayWayListVO.setPayDeviceName(payDeviceDTO.getPayDeviceName());
+        }
+        if (Objects.equals(PayWayEnum.ALI_PAY.getPayWayId(), payWayId.intValue())) {
+            GamePayWayListVO.AliPayConfigBean aliPayConfigBean = new GamePayWayListVO.AliPayConfigBean();
+            aliPayConfigBean.setAppId(gamePayWay.getAppId());
+            gamePayWayListVO.setAliPayConfig(aliPayConfigBean);
+        }
+        if (Objects.equals(PayWayEnum.WX_PAY.getPayWayId(), payWayId.intValue())) {
+            GamePayWayListVO.WxPayConfigBean wxPayConfigBean = new GamePayWayListVO.WxPayConfigBean();
+            wxPayConfigBean.setPayBoxId(gamePayWay.getPayBoxId());
+            wxPayConfigBean.setThumbUrl(gamePayWay.getThumbUrl());
+            wxPayConfigBean.setAppId(gamePayWay.getAppId());
+            wxPayConfigBean.setMerchantNo(gamePayWay.getMerchantNo());
+            gamePayWayListVO.setWxPayConfig(wxPayConfigBean);
+        }
+        if (Objects.equals(PayWayEnum.MI_PAY.getPayWayId(), payWayId.intValue())) {
+            GameAppletDTO gameAppletDTO = gameAppletService.getByGameId(gamePayWay.getGameId());
+            GamePayWayListVO.MiPayConfigBean miPayConfigBean = new GamePayWayListVO.MiPayConfigBean();
+            miPayConfigBean.setAppId(gameAppletDTO.getMiPayAppId());
+            miPayConfigBean.setAppKey(gameAppletDTO.getMiPayAppKey());
+            miPayConfigBean.setAppKeyDev(gameAppletDTO.getMiPayAppKeyDev());
+            gamePayWayListVO.setMiPayConfig(miPayConfigBean);
+        }
         return gamePayWayListVO;
     }
 
-//    /**
-//     * 根据游戏id获取虚拟支付配置
-//     *
-//     * @param id : 游戏id
-//     * @return : 返回游戏虚拟支付配置
-//     */
-//    @Override
-//    public GameAnalogPayVO getGameAnalogPay(Long id) {
-//        GamePayWay gamePayWay = super.getOne(new LambdaQueryWrapper<GamePayWay>()
-//                .eq(GamePayWay::getPayWayId, PayWayEnum.MIPAY.getNum())
-//                .eq(GamePayWay::getGameId, id));
-//        if (gamePayWay == null || Strings.isBlank(gamePayWay.getPayConfig())) {
-//            return GameAnalogPayVO.builder().gameId(id).build();
-//        }
-//        return GameAnalogPayVO.builder()
-//                .id(gamePayWay.getId().toString())
-//                .gameId(id)
-//                .payConfig(JsonUtil.toObj(gamePayWay.getPayConfig(), GameAnalogPayVO.PayConfigBean.class))
-//                .build();
-//    }
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean statusUpdate(Long id, Integer status) {
+        return super.update(new LambdaUpdateWrapper<GamePayWay>()
+                .set(GamePayWay::getStatus, status)
+                .set(GamePayWay::getUpdateTime, LocalDateTime.now())
+                .eq(GamePayWay::getId, id));
+    }
 
-//    /**
-//     * 虚拟支付更新或者新增
-//     *
-//     * @param payParam : 新增或者更新参数
-//     * @return : 返回新增或者更新的结果
-//     */
-//    @Override
-//    public Boolean gameAnalogPayAddOrUpdate(GameAnalogPayParam payParam) {
-//        GamePayWay gamePayWay = super.getOne(new LambdaQueryWrapper<GamePayWay>()
-//                .eq(GamePayWay::getPayWayId, PayWayEnum.MIPAY.getNum())
-//                .eq(GamePayWay::getGameId, payParam.getGameId()));
-//        if (gamePayWay == null) {
-//            gamePayWay = GamePayWay.builder()
-//                    .gameId(payParam.getGameId())
-//                    .payWayId(Long.valueOf(PayWayEnum.MIPAY.getNum()))
-//                    .payWayCode(PayWayEnum.MIPAY.getCode())
-//                    .payWayName(PayWayEnum.MIPAY.getName())
-//                    .payConfig(JsonUtil.toString(payParam.getPayConfig()))
-//                    .createTime(LocalDateTime.now())
-//                    .updateTime(LocalDateTime.now())
-//                    .build();
-//        } else {
-//            gamePayWay.setPayConfig(JsonUtil.toString(payParam.getPayConfig()));
-//            gamePayWay.setUpdateTime(LocalDateTime.now());
-//        }
-//        return super.saveOrUpdate(gamePayWay);
-//    }
-//
-//    @Override
-//    public AllGamePayWayByGameIdVO getAllGamePayWayByGameId(Long gameId) {
-//        List<GamePayWay> gamePayWayList = super.list(new LambdaQueryWrapper<GamePayWay>()
-//                .eq(GamePayWay::getGameId, gameId)
-//                .eq(GamePayWay::getStatus, StatusEnum.YES.getCode())
-//        );
-//        if (CollectionUtils.isEmpty(gamePayWayList)) {
-//            return null;
-//        }
-//        AllGamePayWayByGameIdVO data = new AllGamePayWayByGameIdVO();
-//        gamePayWayList.stream().forEach(t -> {
-//            //支付宝
-//            if (PayWayEnum.ALIPAY.getNum().equals(t.getPayWayId())) {
-//                if (Objects.isNull(t.getPayMerchantId()) || t.getPayMerchantId() == 0) {
-//                    //商户号为空则跳过
-//                    return;
-//                }
-//                PayMerchant payMerchantInfo = payMerchantService.getById(t.getPayMerchantId());
-//                if (Objects.isNull(payMerchantInfo)) {
-//                    //商户号内容为空
-//                    return;
-//                }
-//                GameAlipayPayVO alipayPayVO = new GameAlipayPayVO();
-//                alipayPayVO.setMerchantNo(payMerchantInfo.getMerchantNo());
-//                alipayPayVO.setMerchantName(payMerchantInfo.getMerchantName());
-//                alipayPayVO.setLoginName(payMerchantInfo.getLoginName());
-//                alipayPayVO.setManagePerson(payMerchantInfo.getManagePerson());
-//                data.setAlipayPayVO(alipayPayVO);
-//            }
-//            //微信
-//            if (PayWayEnum.WXPAY.getNum().equals(t.getPayWayId())) {
-//
-//                if (Objects.isNull(t.getPayBoxId()) || t.getPayBoxId() == 0) {
-//                    //商户号为空则跳过
-//                    return;
-//                }
-//                PayBox payBoxInfo = payBoxService.getById(t.getPayBoxId());
-//                if (Objects.isNull(payBoxInfo) || Objects.isNull(payBoxInfo.getPayApplicationId()) ||
-//                        payBoxInfo.getPayApplicationId() <= 0) {
-//                    return;
-//                }
-//                PayApplication payApplicationInfo = payApplicationService.getById(payBoxInfo.getPayApplicationId());
-//                if (Objects.isNull(payApplicationInfo)) {
-//                    return;
-//                }
-//                GameWxpayPayVO gameWxpayPayVO = new GameWxpayPayVO();
-//                gameWxpayPayVO.setBoxName(payBoxInfo.getName());
-//                gameWxpayPayVO.setApplicationName(payApplicationInfo.getName());
-//                gameWxpayPayVO.setAppId(payApplicationInfo.getAppId());
-//                gameWxpayPayVO.setPrimevalId(payApplicationInfo.getPrimevalId());
-//                gameWxpayPayVO.setCompany(payApplicationInfo.getCompany());
-//                gameWxpayPayVO.setManagePerson(payApplicationInfo.getManagePerson());
-//
-//                //获取商户号列表
-//                List<PayMerchant> payMerchantList = payMerchantService.list();
-//                Map<String, PayMerchant> payMerchantData = payMerchantList.stream().collect(Collectors.toMap(PayMerchant::getMerchantNo, PayMerchant -> PayMerchant));
-//                if (StringUtils.isNotEmpty(payBoxInfo.getPayMerchantId())) {
-//                    String merchantDetail = payBoxService.getMerchantDetail(payMerchantData, payBoxInfo.getPayMerchantId());
-//                    gameWxpayPayVO.setPayMerchantDetail(merchantDetail);
-//                }
-//                data.setWxpayPayVO(gameWxpayPayVO);
-//            }
-//            //米大师虚拟支付
-//            if (PayWayEnum.MIPAY.getNum().equals(t.getPayWayId())) {
-//                GameAnalogPayVO.PayConfigBean payConfigBean = JsonUtil.toObj(t.getPayConfig(), GameAnalogPayVO.PayConfigBean.class);
-//                data.setAnalogPayVO(payConfigBean);
-//            }
-//            //支付策略配置
-//            GameStrategy gameStrategy = gameStrategyService.getOne(new LambdaQueryWrapper<GameStrategy>()
-//                    .eq(GameStrategy::getGameId, gameId)
-//                    .eq(GameStrategy::getStatus, StatusEnum.YES.getCode()).last("limit 1")
-//            );
-//            if (!Objects.isNull(gameStrategy)) {
-//                GameStrategyInfoVO gameStrategyInfo = BeanUtils.copy(gameStrategy, GameStrategyInfoVO.class);
-//                if (StringUtils.isNotEmpty(gameStrategy.getConfig())) {
-//                    gameStrategyInfo.setConfig(BeanUtils.copy(gameStrategy.getConfig(), GameStrategyOrderVO.class));
-//                }
-//                data.setGameStrategyVO(gameStrategyInfo);
-//            }
-//        });
-//        return data;
-//    }
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean deleteById(Long id) {
+        return super.removeById(id);
+    }
+
+    @Override
+    public List<GamePayWayVO> getByGameId(Long gameId) {
+        List<GamePayWay> gamePayWayList = super.list(new LambdaQueryWrapper<GamePayWay>()
+                .eq(GamePayWay::getGameId, gameId));
+        if (CollectionUtils.isEmpty(gamePayWayList)) {
+            return Collections.emptyList();
+        }
+        List<Long> payDeviceIdList = gamePayWayList.stream().map(GamePayWay::getPayDeviceId).distinct().collect(Collectors.toList());
+        Map<Long, PayDeviceDTO> payDeviceMap = payDeviceService.payDeviceMap();
+        List<GamePayWayVO> list = new ArrayList<>();
+        payDeviceIdList.forEach(payDeviceId -> list.add(GamePayWayVO.builder()
+                .id(payDeviceId)
+                .payWayName(payDeviceMap.get(payDeviceId).getPayDeviceName())
+                .build()));
+        return list;
+    }
 }

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

@@ -72,6 +72,11 @@ public class GamePayWay {
      */
     private String thumbUrl;
 
+    /**
+     * 描述
+     */
+    private String remark;
+
     /**
      * 状态 1 不可用 0 可用
      */