Sfoglia il codice sorgente

Merge branch 'package' of GameCenter/game-center into dev

zhimo 1 anno fa
parent
commit
2c6bb244ac

+ 1 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/ManageApplication.java

@@ -21,7 +21,7 @@ public class ManageApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(ManageApplication.class, args);
-        System.out.println("赞象Manage服务启动成功 <客服系统, 新增接口> ( ´・・)ノ(._.`) \n" +
+        System.out.println("赞象Manage服务启动成功 <客服系统, 新增授权接口3> ( ´・・)ノ(._.`) \n" +
                 "___  ___  ___   _   _   ___  _____  _____ \n" +
                 "|  \\/  | / _ \\ | \\ | | / _ \\|  __ \\|  ___|\n" +
                 "| .  . |/ /_\\ \\|  \\| |/ /_\\ \\ |  \\/| |__  \n" +

+ 21 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/KfMsgController.java

@@ -2,8 +2,10 @@ package com.zanxiang.game.module.manage.controller;
 
 import com.zanxiang.erp.security.annotation.PreAuthorize;
 import com.zanxiang.game.module.manage.pojo.params.KfApiParam;
+import com.zanxiang.game.module.manage.pojo.params.KfUserUpdateParam;
 import com.zanxiang.game.module.manage.pojo.vo.KfGameVO;
 import com.zanxiang.game.module.manage.service.IKfMsgContentService;
+import com.zanxiang.game.module.manage.service.IKfUserService;
 import com.zanxiang.module.util.JsonUtil;
 import com.zanxiang.module.util.pojo.ResultVO;
 import io.swagger.annotations.Api;
@@ -33,6 +35,9 @@ public class KfMsgController {
     @Autowired
     private IKfMsgContentService kfMsgContentService;
 
+    @Autowired
+    private IKfUserService kfUserService;
+
     @ApiOperation(value = "发送图片消息 (参数按照发送消息的参数给, 外加图片文件)")
     @PostMapping(value = "/upload/msg")
     @PreAuthorize(permissionKey = "manage:kf:uploadMsg")
@@ -56,4 +61,20 @@ public class KfMsgController {
     public ResultVO<String> list(@Validated @RequestBody KfApiParam param) {
         return ResultVO.ok(kfMsgContentService.kfApi(param));
     }
+
+    @ApiOperation(value = "获取小游戏授权码")
+    @GetMapping(value = "/auth/code")
+    @PreAuthorize(permissionKey = "manage:kf:authCode")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = KfGameVO.class)})
+    public ResultVO<String> getAuthCode(@RequestParam String appId) {
+        return ResultVO.ok(kfUserService.getAuthCode(appId));
+    }
+
+    @ApiOperation(value = "授权信息回调")
+    @PostMapping(value = "/user/update")
+    @PreAuthorize(permissionKey = "manage:kf:userUpdate")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = String.class)})
+    public ResultVO<Boolean> kfUserUpdate(@Validated @RequestBody KfUserUpdateParam param) {
+        return ResultVO.ok(kfUserService.kfUserUpdate(param));
+    }
 }

+ 32 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/KfUserUpdateParam.java

@@ -0,0 +1,32 @@
+package com.zanxiang.game.module.manage.pojo.params;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-12-28
+ * @description : 授权更新参数
+ */
+@Data
+public class KfUserUpdateParam {
+
+    /**
+     * 应用id
+     */
+    @NotBlank(message = "应用id不可为空")
+    private String appId;
+
+    /**
+     * 授权token
+     */
+    @NotBlank(message = "授权token不可为空")
+    private String token;
+
+    /**
+     * 授权cookie
+     */
+    @NotBlank(message = "授权cookie不可为空")
+    private String cookie;
+}

+ 17 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IKfUserService.java

@@ -1,6 +1,7 @@
 package com.zanxiang.game.module.manage.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.module.manage.pojo.params.KfUserUpdateParam;
 import com.zanxiang.game.module.mybatis.entity.KfUser;
 
 /**
@@ -18,4 +19,20 @@ public interface IKfUserService extends IService<KfUser> {
      * @return : 返回用户信息
      */
     KfUser getKfUser(Long kfUserId, String appId);
+
+    /**
+     * 获取授权信息
+     *
+     * @param appId : 应用id
+     * @return : 返回授权信息
+     */
+    String getAuthCode(String appId);
+
+    /**
+     * 授权信息更新
+     *
+     * @param param : 授权参数
+     * @return : 返回更新结果
+     */
+    Boolean kfUserUpdate(KfUserUpdateParam param);
 }

+ 58 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/KfUserServiceImpl.java

@@ -1,13 +1,25 @@
 package com.zanxiang.game.module.manage.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.erp.security.util.SecurityUtil;
+import com.zanxiang.game.module.manage.pojo.params.KfUserUpdateParam;
+import com.zanxiang.game.module.manage.service.IGameAppletService;
 import com.zanxiang.game.module.manage.service.IKfUserService;
+import com.zanxiang.game.module.mybatis.entity.GameApplet;
 import com.zanxiang.game.module.mybatis.entity.KfUser;
 import com.zanxiang.game.module.mybatis.mapper.KfUserMapper;
+import com.zanxiang.module.util.URIUtil;
 import com.zanxiang.module.util.exception.BaseException;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * @author : lingfeng
@@ -18,6 +30,12 @@ import org.springframework.stereotype.Service;
 @Service
 public class KfUserServiceImpl extends ServiceImpl<KfUserMapper, KfUser> implements IKfUserService {
 
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Autowired
+    private IGameAppletService gameAppletService;
+
     @Override
     public KfUser getKfUser(Long kfUserId, String appId) {
         KfUser kfUser = super.getOne(new LambdaQueryWrapper<KfUser>()
@@ -28,4 +46,44 @@ public class KfUserServiceImpl extends ServiceImpl<KfUserMapper, KfUser> impleme
         }
         return kfUser;
     }
+
+    @Override
+    public String getAuthCode(String appId) {
+        GameApplet gameApplet = gameAppletService.getOne(new LambdaQueryWrapper<GameApplet>()
+                .eq(GameApplet::getAppId, appId));
+        if (gameApplet == null) {
+            throw new BaseException("参数错误, 小游戏信息不存在");
+        }
+        Map<String, String> paramMap = new HashMap<>();
+        paramMap.put("type", "WEIXINKEFU");
+        paramMap.put("Authorization", URIUtil.encodeURIComponent(SecurityUtil.getToken()));
+        paramMap.put("appId", gameApplet.getAppId());
+        paramMap.put("gameName", gameApplet.getAppName());
+        String uri = URIUtil.fillUrlParams("http://47.99.91.240:9001/scan/code/auto", paramMap, false);
+        return restTemplate.getForObject(uri, String.class);
+    }
+
+    @Override
+    public Boolean kfUserUpdate(KfUserUpdateParam param) {
+        Long userId = SecurityUtil.getUserId();
+        KfUser kfUser = super.getOne(new LambdaQueryWrapper<KfUser>()
+                .eq(KfUser::getKfUserId, userId)
+                .eq(KfUser::getAppId, param.getAppId()));
+        if (kfUser == null) {
+            return super.save(KfUser.builder()
+                    .kfUserId(userId)
+                    .appId(param.getAppId())
+                    .token(param.getToken())
+                    .cookie(param.getCookie())
+                    .createTime(LocalDateTime.now())
+                    .updateTime(LocalDateTime.now())
+                    .build());
+        }
+        return super.update(new LambdaUpdateWrapper<KfUser>()
+                .set(KfUser::getToken, param.getToken())
+                .set(KfUser::getCookie, param.getCookie())
+                .set(KfUser::getUpdateTime, LocalDateTime.now())
+                .eq(KfUser::getKfUserId, userId)
+                .eq(KfUser::getAppId, param.getAppId()));
+    }
 }

+ 22 - 1
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/AliApiServiceImpl.java

@@ -1,5 +1,6 @@
 package com.zanxiang.game.module.sdk.service.impl;
 
+import cn.hutool.http.ContentType;
 import com.zanxiang.game.module.sdk.pojo.result.CardCheckResult;
 import com.zanxiang.game.module.sdk.pojo.result.IpCheckResult;
 import com.zanxiang.game.module.sdk.service.IAliApiService;
@@ -36,7 +37,27 @@ public class AliApiServiceImpl implements IAliApiService {
      */
     private final String APP_CODE = "f395b1587fc04a49a975f908660fb1e9";
 
-
+    public void phoneCall(String param) {
+        RestTemplate restTemplate = new RestTemplate();
+        String host = "https://jumfixed.market.alicloudapi.com/voice-notify/send";
+        HttpHeaders headers = new HttpHeaders();
+        headers.set("Authorization", "APPCODE " + this.APP_CODE);
+        headers.set("Content-Type", ContentType.FORM_URLENCODED.getValue());
+        //参数
+        MultiValueMap<String, String> requestParams = new LinkedMultiValueMap<>();
+        requestParams.add("mobile", "13100690278");
+        requestParams.add("templateId", "JMJNAWUQOJP9");
+        requestParams.add("param", param);
+        String result = null;
+        try {
+            ResponseEntity<String> responseEntity = restTemplate.exchange(host, HttpMethod.POST,
+                    new HttpEntity<>(requestParams, headers), String.class);
+            result = responseEntity.getBody();
+        } catch (Exception e) {
+            log.error("阿里语音呼叫失败, requestParams : {}, e : {}", JsonUtil.toString(requestParams), e.getMessage());
+        }
+        log.error("阿里语音呼叫结果, result : {}", result);
+    }
 
     @Override
     public Tuple2<Boolean, String> authenticationCheck(String cardName, String cardId) {