|
@@ -0,0 +1,73 @@
|
|
|
+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.manage.pojo.params.UserAppletSubmitParam;
|
|
|
+import com.zanxiang.game.module.manage.service.IGameAppletService;
|
|
|
+import com.zanxiang.game.module.manage.service.IGameExtService;
|
|
|
+import com.zanxiang.game.module.manage.service.IUserAppletService;
|
|
|
+import com.zanxiang.game.module.manage.utils.SignUtil;
|
|
|
+import com.zanxiang.game.module.mybatis.entity.GameApplet;
|
|
|
+import com.zanxiang.game.module.mybatis.entity.GameExt;
|
|
|
+import com.zanxiang.game.module.mybatis.entity.UserApplet;
|
|
|
+import com.zanxiang.game.module.mybatis.mapper.UserAppletMapper;
|
|
|
+import com.zanxiang.module.util.JsonUtil;
|
|
|
+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 java.time.LocalDateTime;
|
|
|
+import java.util.Objects;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author : lingfeng
|
|
|
+ * @time : 2024-04-29
|
|
|
+ * @description : 投放小程序用户信息
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+public class UserAppletServiceImpl extends ServiceImpl<UserAppletMapper, UserApplet> implements IUserAppletService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IGameAppletService gameAppletService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IGameExtService gameExtService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean userAppletSubmit(UserAppletSubmitParam param) {
|
|
|
+ GameApplet gameApplet = gameAppletService.getOne(new LambdaQueryWrapper<GameApplet>()
|
|
|
+ .eq(GameApplet::getAppId, param.getAppId())
|
|
|
+ .last("limit 1"));
|
|
|
+ if (gameApplet == null) {
|
|
|
+ log.error("非法参数, 小程序信息不存在, param : {}", JsonUtil.toString(param));
|
|
|
+ throw new BaseException("非法参数, 小程序信息不存在");
|
|
|
+ }
|
|
|
+ GameExt gameExt = gameExtService.getByGameId(gameApplet.getGameId());
|
|
|
+ this.signCheck(gameExt.getLoginKey(), param);
|
|
|
+ return super.save(this.transform(param));
|
|
|
+ }
|
|
|
+
|
|
|
+ private UserApplet transform(UserAppletSubmitParam param) {
|
|
|
+ return UserApplet.builder()
|
|
|
+ .appId(param.getAppId())
|
|
|
+ .openId(param.getOpenId())
|
|
|
+ .channel(param.getChannel())
|
|
|
+ .isDelete(DeleteEnum.NO.getCode())
|
|
|
+ .createTime(LocalDateTime.now())
|
|
|
+ .updateTime(LocalDateTime.now())
|
|
|
+ .build();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void signCheck(String loginKey, UserAppletSubmitParam param) {
|
|
|
+ String signStr = "cpServerKey=" + loginKey + "appId=" + param.getAppId()
|
|
|
+ + "openId=" + param.getOpenId() + "signTime=" + param.getSignTime();
|
|
|
+ String mySign = SignUtil.md5(signStr, Boolean.TRUE);
|
|
|
+ if (Objects.equals(mySign, param.getSign())) {
|
|
|
+ log.error("加密验证失败, sign : {}, mySign : {}", param.getSign(), mySign);
|
|
|
+ throw new BaseException("加密标识错误");
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|