Browse Source

Merge branch 'master' into lih

# Conflicts:
#	yt-question/yt-question-service/src/main/java/com/ytpm/question/service/AppUserService.java
#	yt-question/yt-question-service/src/main/java/com/ytpm/question/service/impl/AppUserServiceImpl.java
#	yt-question/yt-question-service/src/main/java/com/ytpm/question/service/impl/QuestionServiceImpl.java
hidewnd 2 weeks ago
parent
commit
067f7fc2df

+ 14 - 0
ReadMe.md

@@ -783,6 +783,20 @@ warehouseios-service.jar > warehouseios.log 2>&1 &
 ```
 
 
+#### 速算大比拼 quick
+
+``` shell
+# 速算大比拼 quick-service
+# 10.206.16.10
+# 10.206.16.15
+nohup java -jar -Xms1024m -Xmx1024m -XX:MaxMetaspaceSize=256M -XX:+UseCompressedOops \
+-XX:+UseG1GC -XX:ConcGCThreads=2 -XX:InitiatingHeapOccupancyPercent=35 \
+-XX:G1ReservePercent=10 -XX:MaxGCPauseMillis=300 \
+-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/www/app/ytpm/service-quick/quick.hprof \
+question-service.jar > quick.log 2>&1 &
+```
+
+
 ## 数据处理
 
 > 删除指定appid风控规则

+ 1 - 0
yt-common/src/main/java/com/ytpm/advertise/enums/AdPlatformTypeEnum.java

@@ -14,6 +14,7 @@ public enum AdPlatformTypeEnum {
     KUAI_SHOU(28, "快手"),
     SIGMOB(29, "Sigmob"),
     HUAWEI(39, "华为广告"),
+    GROMORE(46, "gromore"),
     Mi_Uion(49, "米盟"),
     JAN(72, "京媒平台"),
     QM(74, "趣盟"),

+ 5 - 0
yt-ios-lemon/lemon-ios-service/src/main/java/com/ytpm/lemonios/dao/LoginRecordMapper.java

@@ -22,4 +22,9 @@ public interface LoginRecordMapper {
     List<YtDyzLoginRecord> getLoginRecordByIds(@Param("userIds")String userIds);
 
     List<String> queryLoginCount(AppUserQueryParam appUserQueryParam);
+
+    /**
+     * 查询最近一次登陆记录
+     */
+    YtDyzLoginRecord getLastLoginRecord(@Param("userId")String userId, @Param("isVisitor") Integer  isVisitor);
 }

+ 15 - 4
yt-ios-lemon/lemon-ios-service/src/main/java/com/ytpm/lemonios/service/impl/AppUserServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ytpm.lemonios.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
@@ -209,7 +210,13 @@ public class AppUserServiceImpl implements AppUserService {
         newUser.setLastLoginIp(param.getLoginIp());
         newUser.setPhone(param.getPhone());
         newUser.setDeviceId(param.getDeviceId());
-        newUser.setLoginDays(old.getLoginDays()+1);
+        YtDyzLoginRecord wxLoginRecord = loginRecordMapper.getLastLoginRecord(old.getUserId(), 0);
+        YtDyzLoginRecord visitorLoginRecord = loginRecordMapper.getLastLoginRecord(old.getUserId(), 1);
+        if (wxLoginRecord == null && visitorLoginRecord == null
+                || wxLoginRecord != null && wxLoginRecord.getLoginTime() != null
+                && DateUtil.compare(wxLoginRecord.getLoginTime(), newUser.getLastLoginTime(), "yyyy-MM-dd") < 0) {
+            newUser.setLoginDays(old.getLoginDays() + 1);
+        }
         appUserMapper.updateUser(newUser);
     }
 
@@ -240,10 +247,14 @@ public class AppUserServiceImpl implements AppUserService {
         newUser.setLastLoginIp(param.getLoginIp());
         newUser.setPhone(param.getPhone());
         newUser.setDeviceId(param.getDeviceId());
-        newUser.setLoginDays(old.getLoginDays()+1);
+        YtDyzLoginRecord wxLoginRecord = loginRecordMapper.getLastLoginRecord(old.getUserId(), 0);
+        YtDyzLoginRecord visitorLoginRecord = loginRecordMapper.getLastLoginRecord(old.getUserId(), 1);
+        if (wxLoginRecord == null && visitorLoginRecord == null
+                || wxLoginRecord != null && wxLoginRecord.getLoginTime() != null
+                && DateUtil.compare(wxLoginRecord.getLoginTime(), newUser.getLastLoginTime(), "yyyy-MM-dd") < 0) {
+            newUser.setLoginDays(old.getLoginDays() + 1);
+        }
         appUserMapper.updateUser(newUser);
-        YtDyzUser oldUser = appUserMapper.selectById(newUser.getUserId());
-        System.out.println(oldUser);
     }
 
     /**

+ 3 - 0
yt-ios-lemon/lemon-ios-service/src/main/java/com/ytpm/lemonios/service/impl/QuestionServiceImpl.java

@@ -56,6 +56,9 @@ public class QuestionServiceImpl implements QuestionService {
         if(!UserStatusEnum.NORMAL.getCode().equals(user.getUserStatus())){
             return new Result<>(StatusCode.ACCESS_ERR,"当前用户处于风控中");
         }
+        if (user.getPower() == null || user.getPower() <= 0) {
+            return new Result<>(StatusCode.ACCESS_ERR, "用户体力不足,无法答题");
+        }
         YtDyzAnswerRecord record = new YtDyzAnswerRecord();
         BeanUtil.copyProperties(param,record);
         record.setRecordId(IdUtil.fastSimpleUUID());

+ 14 - 1
yt-ios-lemon/lemon-ios-service/src/main/resources/mapper/LoginRecordMapper.xml

@@ -71,5 +71,18 @@
         </foreach>
     </select>
 
-
+    <select id="getLastLoginRecord" resultType="com.ytpm.app.model.YtDyzLoginRecord">
+        select
+        record_id, user_id, login_time, device_brand, device_model, login_ip, operator, ip_addr
+        from yt_dyz_login_record
+        where user_id = #{userId}
+        <if test="isVisitor != null and isVisitor == 1">
+            and login_type = 'VISITOR'
+        </if>
+        <if test="isVisitor != null and isVisitor == 0">
+            and (login_type is null or login_type = '')
+        </if>
+        order by login_time desc
+        limit 1
+    </select>
 </mapper>

+ 10 - 0
yt-question/yt-question-feign/src/main/java/com/ytpm/question/feign/QuickFeign.java

@@ -0,0 +1,10 @@
+
+package com.ytpm.question.feign;
+
+import com.ytpm.question.base.BaseFeign;
+import org.springframework.cloud.openfeign.FeignClient;
+
+@FeignClient(name = "quick-service")
+public interface QuickFeign extends BaseFeign {
+
+}

+ 9 - 10
yt-question/yt-question-service/src/main/java/com/ytpm/question/controller/WxController.java

@@ -1,7 +1,6 @@
 package com.ytpm.question.controller;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
@@ -9,7 +8,6 @@ import com.alibaba.fastjson.JSONObject;
 import com.ytpm.app.enums.AppTypeEnums;
 import com.ytpm.app.enums.LoginType;
 import com.ytpm.app.model.YtAppDefaultConfig;
-import com.ytpm.app.model.YtDyzPowerRecord;
 import com.ytpm.app.model.YtDyzUser;
 import com.ytpm.app.param.AppConfigUpdateParam;
 import com.ytpm.app.param.WxLoginParam;
@@ -150,15 +148,16 @@ public class WxController {
     @ApiOperation("体力增加")
     @GetMapping("/addPower")
     @Transactional(rollbackFor = Exception.class)
+    @Deprecated
     public Result<YtDyzUser> addPower(@RequestParam("userId") String userId) {
-        appUserMapper.addOnePower(userId);
-        YtDyzPowerRecord record = new YtDyzPowerRecord();
-        record.setUserId(userId);
-        record.setRecordId(IdUtil.fastSimpleUUID());
-        record.setAddTime(new Date());
-        record.setType(1);
-        record.setRemark("增加体力");
-        appUserMapper.addPowerRecord(record);
+//        appUserMapper.addOnePower(userId);
+//        YtDyzPowerRecord record = new YtDyzPowerRecord();
+//        record.setUserId(userId);
+//        record.setRecordId(IdUtil.fastSimpleUUID());
+//        record.setAddTime(new Date());
+//        record.setType(1);
+//        record.setRemark("增加体力");
+//        appUserMapper.addPowerRecord(record);
         return Result.resultOk(RepMessage.ADD_SUCCESS);
     }
 

+ 5 - 0
yt-question/yt-question-service/src/main/java/com/ytpm/question/service/AppUserService.java

@@ -22,4 +22,9 @@ public interface AppUserService {
      * 获取配置项 用户红包收益换算比例
      */
     BigDecimal getUserRevenueRate(String appId);
+
+    /**
+     * 新增体力
+     */
+    void addPower(String userId);
 }

+ 3 - 0
yt-question/yt-question-service/src/main/java/com/ytpm/question/service/impl/AdServiceImpl.java

@@ -69,6 +69,8 @@ public class AdServiceImpl implements AdService {
     private AppUserService appUserService;
     @Autowired
     private RiskFeign riskFeign;
+    @Resource
+    private AppUserService appUserService;
 
     @Value(" ${risk.config.banned.tips:}")
     private String tips;
@@ -90,6 +92,7 @@ public class AdServiceImpl implements AdService {
         saveRecordAndChangeUser(param, user);
         //调用风控广告校验
         if (AdSourceTypeEnum.rewarded_video.getAdSourceType() == param.getAdSourceType()) {
+            appUserService.addPower(user.getUserId());
             WxDefaultConfig config = appUserMapper.getDefaultConfigByAppId(user.getAppId());
             String format = StrUtil.emptyToDefault(config.getTaskLimitTip(), "当前设备完成任务次数过多,请{}后重试!");
             user.setPowerLimitTip(format);

+ 13 - 0
yt-question/yt-question-service/src/main/java/com/ytpm/question/service/impl/AppUserServiceImpl.java

@@ -6,6 +6,7 @@ import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
 import com.ytpm.agent.enums.UserStatusEnum;
 import com.ytpm.app.model.YtDyzLoginRecord;
+import com.ytpm.app.model.YtDyzPowerRecord;
 import com.ytpm.app.model.YtDyzUser;
 import com.ytpm.app.param.WxLoginParam;
 import com.ytpm.app.view.WxDefaultConfig;
@@ -97,6 +98,18 @@ public class AppUserServiceImpl implements AppUserService {
         return revenueRate;
     }
 
+    @Override
+    public void addPower(String userId) {
+        appUserMapper.addOnePower(userId);
+        YtDyzPowerRecord record = new YtDyzPowerRecord();
+        record.setUserId(userId);
+        record.setRecordId(IdUtil.fastSimpleUUID());
+        record.setAddTime(new Date());
+        record.setType(2);
+        record.setRemark("增加体力");
+        appUserMapper.addPowerRecord(record);
+    }
+
     /**
      * 设置扩展信息
      */

+ 3 - 0
yt-question/yt-question-service/src/main/java/com/ytpm/question/service/impl/QuestionServiceImpl.java

@@ -52,6 +52,9 @@ public class QuestionServiceImpl implements QuestionService {
         if (!UserStatusEnum.NORMAL.getCode().equals(user.getUserStatus())) {
             return new Result<>(StatusCode.ACCESS_ERR, "当前用户处于风控中");
         }
+        if (user.getPower() == null || user.getPower() <= 0) {
+            return new Result<>(StatusCode.ACCESS_ERR, "用户体力不足,无法答题");
+        }
         // 计算本次红包收益
         YtDyzAnswerRecord record = new YtDyzAnswerRecord();
         BeanUtil.copyProperties(param, record);

+ 8 - 1
yt-question/yt-question-service/src/main/java/com/ytpm/question/service/impl/WxLoginServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ytpm.question.service.impl;
 
 
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpUtil;
@@ -202,7 +203,13 @@ public class WxLoginServiceImpl extends AbstractLoginService {
         newUser.setLastLoginIp(param.getLoginIp());
         newUser.setPhone(param.getPhone());
         newUser.setDeviceId(param.getDeviceId());
-        newUser.setLoginDays(old.getLoginDays() + 1);
+        YtDyzLoginRecord wxLoginRecord = loginRecordMapper.getLastLoginRecord(old.getUserId(), 0);
+        YtDyzLoginRecord visitorLoginRecord = loginRecordMapper.getLastLoginRecord(old.getUserId(), 1);
+        if (wxLoginRecord == null && visitorLoginRecord == null
+                || wxLoginRecord != null && wxLoginRecord.getLoginTime() != null
+                && DateUtil.compare(wxLoginRecord.getLoginTime(), newUser.getLastLoginTime(), "yyyy-MM-dd") < 0) {
+            newUser.setLoginDays(old.getLoginDays() + 1);
+        }
         newUser.setPhoneJson(param.getPhoneJson());
         appUserMapper.updateUser(newUser);
     }

+ 2 - 0
yt-question/yt-question-service/src/main/resources/bootstrap.yml

@@ -68,6 +68,8 @@ spring:
     #name-zh: '色彩大冒险'
     #name: poetry-service
     #name-zh: '古诗填空秀'
+    #name: '速算大比拼'
+    #name-zh: quick-service
   profiles:
     # 当前为本地模式
     active: local