ソースを参照

我的记录分页

wuweihao 3 年 前
コミット
a60f7fe8f3
22 ファイル変更424 行追加81 行削除
  1. 3 0
      gis_admin/src/main/java/com/gis/admin/controller/WxLoginController.java
  2. 60 0
      gis_admin/src/main/java/com/gis/admin/controller/WxUserController.java
  3. 33 0
      gis_admin/src/main/java/com/gis/admin/entity/dto/WxUserDto.java
  4. 2 2
      gis_admin/src/main/java/com/gis/admin/entity/po/WxUserEntity.java
  5. 5 4
      gis_admin/src/main/java/com/gis/admin/service/WxUserService.java
  6. 39 0
      gis_admin/src/main/java/com/gis/admin/service/impl/WxUserServiceImpl.java
  7. 11 8
      gis_application/src/main/resources/application-dev.properties
  8. 72 0
      gis_application/src/main/resources/sh/run.sh
  9. 3 5
      gis_cms/src/main/java/com/gis/cms/controller/MyController.java
  10. 7 0
      gis_cms/src/main/java/com/gis/cms/controller/RoomController.java
  11. 16 0
      gis_cms/src/main/java/com/gis/cms/entity/dto/MyPageDto.java
  12. 2 0
      gis_cms/src/main/java/com/gis/cms/entity/dto/RoomDto.java
  13. 4 0
      gis_cms/src/main/java/com/gis/cms/entity/dto/ScoreDto.java
  14. 3 0
      gis_cms/src/main/java/com/gis/cms/entity/po/RoomEntity.java
  15. 3 0
      gis_cms/src/main/java/com/gis/cms/entity/vo/WxUserVo.java
  16. 7 0
      gis_cms/src/main/java/com/gis/cms/mapper/RoomMapper.java
  17. 2 1
      gis_cms/src/main/java/com/gis/cms/service/GameLogService.java
  18. 2 0
      gis_cms/src/main/java/com/gis/cms/service/RoomService.java
  19. 49 21
      gis_cms/src/main/java/com/gis/cms/service/impl/GameLogServiceImpl.java
  20. 83 35
      gis_cms/src/main/java/com/gis/cms/service/impl/RoomServiceImpl.java
  21. 3 3
      gis_common/src/main/java/com/gis/common/base/mapper/provider/BaseProvider.java
  22. 15 2
      gis_common/src/main/java/com/gis/common/util/DateUtils.java

+ 3 - 0
gis_admin/src/main/java/com/gis/admin/controller/WxLoginController.java

@@ -79,6 +79,7 @@ public class WxLoginController {
 
             HashMap<Object, Object> res = new HashMap<>();
             res.put(SysEnum.TOKEN_KEY.getValue(), wxToken);
+            res.put("wxUser", wxUser);
             return Result.success(res);
         } catch (WxErrorException e) {
             log.error(e.getMessage(), e);
@@ -98,4 +99,6 @@ public class WxLoginController {
         }
         return entity;
     }
+
+
 }

+ 60 - 0
gis_admin/src/main/java/com/gis/admin/controller/WxUserController.java

@@ -0,0 +1,60 @@
+package com.gis.admin.controller;
+
+
+import com.gis.admin.entity.dto.WxUserDto;
+import com.gis.admin.entity.po.SysUserEntity;
+import com.gis.admin.service.WxUserService;
+import com.gis.common.base.aop.WebControllerLog;
+import com.gis.common.util.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.Collections;
+
+/**
+ * Created by owen on 2021/12/8 0018 12:17
+ */
+@Api(tags = "wx-用户管理")
+@RestController
+@RequestMapping("/sys/wxUser")
+public class WxUserController {
+
+    @Autowired
+    WxUserService entityService;
+
+
+    @WebControllerLog(description = "微信用户管理-修改用户", addDb = true)
+    @ApiOperation(value = "修改用户信息", notes = "只能新增普通管理员")
+    @PostMapping("save")
+    public Result save(@Valid @RequestBody WxUserDto param) {
+        return entityService.saveEntity(param);
+    }
+
+    @ApiOperation("详情")
+    @GetMapping("detail/{id}")
+    public Result<SysUserEntity> detail(@PathVariable Long id) {
+        return Result.success(entityService.getById(id));
+    }
+
+
+    @WebControllerLog(description = "微信用户管理-删除",addDb = true)
+    @ApiOperation("删除")
+    @GetMapping("removes/{ids}")
+    public Result removes(@PathVariable String ids) {
+        entityService.removeByIds(Collections.singletonList(ids));
+        return Result.success();
+    }
+
+    @ApiOperation(value = "检查token是否有效")
+    @GetMapping("checkToken")
+    public Result checkToken() {
+        return entityService.checkToken();
+
+    }
+
+
+}
+

+ 33 - 0
gis_admin/src/main/java/com/gis/admin/entity/dto/WxUserDto.java

@@ -0,0 +1,33 @@
+package com.gis.admin.entity.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * Created by owen on 2022/4/26 0028 16:36
+ */
+@Data
+public class WxUserDto {
+
+    @NotBlank(message = "Id不能为空")
+    @ApiModelProperty(value = "id", required = true)
+    private String id;
+
+    @NotBlank(message = "昵称不能为空")
+    @ApiModelProperty(value = "昵称", required = true)
+    private String nickName;
+
+    @NotNull(message = "性别不能为空")
+    @ApiModelProperty(value = "性别 0:未知、1:男、2:女", required = true)
+    private Integer gender;
+
+    @NotBlank(message = "头像不能为空")
+    @ApiModelProperty(value = "头像", required = true)
+    private String avatarUrl;
+
+
+
+}

+ 2 - 2
gis_admin/src/main/java/com/gis/admin/entity/po/WxUserEntity.java

@@ -24,8 +24,8 @@ public class WxUserEntity extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "昵称")
     private String nickName;
 
-    @ApiModelProperty(value = "性别 M:男  F:女")
-    private String gender;
+    @ApiModelProperty(value = "性别 0:未知、1:男、2:女")
+    private Integer gender;
 
     @ApiModelProperty(value = "头像")
     private String avatarUrl;

+ 5 - 4
gis_admin/src/main/java/com/gis/admin/service/WxUserService.java

@@ -2,10 +2,7 @@ package com.gis.admin.service;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.gis.admin.entity.dto.PasswordDto;
-import com.gis.admin.entity.dto.RegisterDto;
-import com.gis.admin.entity.dto.ResetPasswordDto;
-import com.gis.admin.entity.dto.UserDto;
+import com.gis.admin.entity.dto.*;
 import com.gis.admin.entity.po.SysUserEntity;
 import com.gis.admin.entity.po.WxUserEntity;
 import com.gis.common.base.entity.dto.PageDateDto;
@@ -19,4 +16,8 @@ public interface WxUserService extends IService<WxUserEntity> {
 
 
     WxUserEntity findByOpenId(String openId);
+
+    Result saveEntity(WxUserDto param);
+
+    Result checkToken();
 }

+ 39 - 0
gis_admin/src/main/java/com/gis/admin/service/impl/WxUserServiceImpl.java

@@ -1,11 +1,22 @@
 package com.gis.admin.service.impl;
 
+import com.alibaba.fastjson.JSONPath;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gis.admin.entity.dto.WxUserDto;
 import com.gis.admin.entity.po.WxUserEntity;
 import com.gis.admin.mapper.WxUserMapper;
 import com.gis.admin.service.WxUserService;
+import com.gis.common.base.exception.BaseRuntimeException;
+import com.gis.common.base.service.IBaseService;
+import com.gis.common.constant.ConfigConstant;
+import com.gis.common.constant.ErrorEnum;
+import com.gis.common.util.RedisUtil;
+import com.gis.common.util.Result;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 
@@ -18,7 +29,14 @@ import org.springframework.stereotype.Service;
 @Slf4j
 @Service
 public class WxUserServiceImpl extends ServiceImpl<WxUserMapper, WxUserEntity> implements WxUserService {
+    @Autowired
+    ConfigConstant configConstant;
 
+    @Autowired
+    RedisUtil redisUtil;
+
+    @Autowired
+    IBaseService iBaseService;
 
     @Override
     public WxUserEntity findByOpenId(String openId) {
@@ -26,4 +44,25 @@ public class WxUserServiceImpl extends ServiceImpl<WxUserMapper, WxUserEntity> i
         wrapper.eq(WxUserEntity::getOpenId, openId);
         return getBaseMapper().selectOne(wrapper);
     }
+
+    @Override
+    public Result saveEntity(WxUserDto param) {
+        WxUserEntity entity = getById(param.getId());
+        BeanUtils.copyProperties(param, entity);
+        this.updateById(entity);
+        return Result.success();
+    }
+
+    @Override
+    public Result checkToken() {
+        String token = iBaseService.getToken();
+        // token为空
+        BaseRuntimeException.isTrue(StringUtils.isBlank(token), ErrorEnum.FAILURE_CODE_3004.code(), ErrorEnum.FAILURE_CODE_3004.message());
+
+        // token过期
+        String redisWxTokenKey = configConstant.redisPrefix + token;
+        BaseRuntimeException.isTrue(!redisUtil.hasKey(redisWxTokenKey), ErrorEnum.FAILURE_CODE_3004.code(), ErrorEnum.FAILURE_CODE_3004.message());
+
+        return Result.success();
+    }
 }

+ 11 - 8
gis_application/src/main/resources/application-dev.properties

@@ -50,8 +50,8 @@ spring.redis.jedis.pool.max-wait=-1ms
 #log
 logging.file.path=E:/log/${project.en}_log
 logging.config=classpath:logback-spring.xml
-logging.level.com.gis=debug
-#logging.level.com.gis=info
+#logging.level.com.gis=debug
+logging.level.com.gis=info
 
 # file info
 server.file.path=E:\\data\\${project.en}_data
@@ -67,17 +67,20 @@ swagger.title=${project.sc}-dev
 swagger.description=${swagger.title}
 swagger.version=1.0
 
-# \u5FAE\u4FE1\u5C0F\u7A0B\u5E8F
+# \u4E49\u4E4C\u5C0F\u7A0B\u5E8F
 #\u5FAE\u4FE1\u5C0F\u7A0B\u5E8F\u7684appid
-wx.miniapp.configs.appid=wx3047d1704b092c5e
-#\u5FAE\u4FE1\u5C0F\u7A0B\u5E8F\u7684Secret
-wx.miniapp.configs.secret=0173b22d521cfa8b15a68ec795e4c52d
+#wx.miniapp.configs.appid=wx3047d1704b092c5e
+##\u5FAE\u4FE1\u5C0F\u7A0B\u5E8F\u7684Secret
+#wx.miniapp.configs.secret=0173b22d521cfa8b15a68ec795e4c52d
 wx.miniapp.configs.token=\u5FAE\u4FE1\u5C0F\u7A0B\u5E8F\u6D88\u606F\u670D\u52A1\u5668\u914D\u7F6E\u7684token
 wx.miniapp.configs.aesKey=\u5FAE\u4FE1\u5C0F\u7A0B\u5E8F\u6D88\u606F\u670D\u52A1\u5668\u914D\u7F6E\u7684EncodingAESKey
 wx.miniapp.configs.msgDataFormat=JSON
 
-
-
+# \u770B\u5C55-\u56DB\u7EF4\u770B\u770B
+#\u5FAE\u4FE1\u5C0F\u7A0B\u5E8F\u7684appid
+wx.miniapp.configs.appid=wxb4c0527aa20a6e9a
+#\u5FAE\u4FE1\u5C0F\u7A0B\u5E8F\u7684Secret
+wx.miniapp.configs.secret=4a1b8439cf38ec2e1a992ff23eb31628
 
 
 

+ 72 - 0
gis_application/src/main/resources/sh/run.sh

@@ -0,0 +1,72 @@
+#!/bin/sh
+APP_NAME=museum_capital_tts.jar
+APP_PORT=8008
+APP_EVN=sit   #执行环境
+APP_ORDER=$1   #执行方法  start|stop|restart
+APP_OS=win  # 系统类型 linux|win
+# 获取线程号
+APP_PID=`netstat -ano | grep $APP_PORT | grep LISTENING | awk '{print $5}'`
+
+
+# 启动命令
+startApp(){
+    if [ ${APP_PID} ];
+    then
+    	echo "程序已经在运行了"
+    else
+    	echo "执行 start 方法"
+    	nohup java -Djava.net.preferIPv4Stack=true -jar -Xmx3072M -Xms512M ./$APP_NAME --spring.profiles.active=$APP_EVN --server.port=$APP_PORT & echo $! > tpid
+	echo Start Success!
+fi
+}
+
+# 停止命令
+stopApp(){
+    echo "执行 stop 方法"
+    if [ ${APP_PID} ]; 
+	then
+		echo $APP_NAME "存在,执行 stop 方法"
+		if [ ${APP_OS} == "linux" ];
+		then
+			kill -9 ${APP_PID} && echo 'Linux Kill Process!'
+		else
+			cmd "/C TASKKILL /F /PID $APP_PID"
+			echo 'Win Kill Process!'
+		fi
+	else
+		echo $APP_NAME 没有运行
+    fi
+}
+
+# 重启命令
+restartApp(){
+    echo " 1 执行 restart 方法"
+	stopApp
+	APP_PID=''  #将进程号置空
+	sleep 2
+	echo "进程号:" ${APP_PID} 
+	echo " 2 执行 restart 方法"
+	startApp
+}
+
+# 判断执行命令 取第一个参数
+case $APP_ORDER in
+    "start")
+        startApp
+		exit 0
+        ;;
+    "stop")
+        stopApp
+		exit 1
+        ;;
+	"restart")
+		restartApp
+		exit 2
+	;;
+    *)
+     echo "Unknown inupt!"
+     exit 3
+     ;;
+esac
+
+

+ 3 - 5
gis_cms/src/main/java/com/gis/cms/controller/MyController.java

@@ -1,10 +1,8 @@
 package com.gis.cms.controller;
 
-import com.gis.cms.entity.dto.RoomDto;
-import com.gis.cms.entity.dto.RoomListDto;
+import com.gis.cms.entity.dto.MyPageDto;
 import com.gis.cms.entity.dto.ScoreDto;
 import com.gis.cms.service.GameLogService;
-import com.gis.cms.service.RoomService;
 import com.gis.common.base.aop.WebControllerLog;
 import com.gis.common.util.Result;
 import io.swagger.annotations.Api;
@@ -28,8 +26,8 @@ public class MyController {
 
     @ApiOperation(value = "记录列表", notes = "时间:yyyy-MM-dd 天")
     @PostMapping("/list")
-    public Result list(String date) {
-        return entityService.list(date);
+    public Result list(@RequestBody MyPageDto param) {
+        return entityService.list(param);
     }
 
 

+ 7 - 0
gis_cms/src/main/java/com/gis/cms/controller/RoomController.java

@@ -44,6 +44,13 @@ public class RoomController {
         return entityService.saveEntity(param);
     }
 
+    @WebControllerLog(description = "房间管理-新增/编辑", addDb = true)
+    @ApiOperation(value = "新增/编辑")
+    @PostMapping("/save1")
+    public Result save1(@Valid @RequestBody RoomDto param) {
+        return entityService.saveEntity1(param);
+    }
+
 
     @ApiOperation("详情")
     @GetMapping("/detail/{id}")

+ 16 - 0
gis_cms/src/main/java/com/gis/cms/entity/dto/MyPageDto.java

@@ -0,0 +1,16 @@
+package com.gis.cms.entity.dto;
+
+import com.gis.common.base.entity.dto.PageDto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+ * Created by owen on 2022/4/26 0026 18:57
+ */
+@Data
+public class MyPageDto extends PageDto {
+
+    @ApiModelProperty(value = "时间:yyyy-MM-dd 天")
+    private String date;
+}

+ 2 - 0
gis_cms/src/main/java/com/gis/cms/entity/dto/RoomDto.java

@@ -1,6 +1,7 @@
 package com.gis.cms.entity.dto;
 
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
 
@@ -8,6 +9,7 @@ import javax.validation.constraints.NotBlank;
 /**
  * Created by owen on 2022/2/22 0022 15:39
  */
+@Data
 public class RoomDto {
 
     @NotBlank(message = "口令不能为空")

+ 4 - 0
gis_cms/src/main/java/com/gis/cms/entity/dto/ScoreDto.java

@@ -14,6 +14,10 @@ import javax.validation.constraints.NotNull;
 @Data
 public class ScoreDto {
 
+
+    @ApiModelProperty(value = "游戏id(活动模式才有)")
+    private Long gameLogId;
+
     @ApiModelProperty(value = "房间id(为空代表普通模式)")
     private Long roomId;
 

+ 3 - 0
gis_cms/src/main/java/com/gis/cms/entity/po/RoomEntity.java

@@ -22,6 +22,9 @@ public class RoomEntity extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "口令")
     private String code;
 
+    @ApiModelProperty(value = "口令")
+    private String name;
+
     @ApiModelProperty(value = "结束时间")
     private LocalDateTime endTime;
 

+ 3 - 0
gis_cms/src/main/java/com/gis/cms/entity/vo/WxUserVo.java

@@ -9,6 +9,9 @@ import lombok.Data;
 @Data
 public class WxUserVo {
 
+    @ApiModelProperty(value = "用户id")
+    private Long id;
+
     @ApiModelProperty(value = "得分")
     private Integer score;
 

+ 7 - 0
gis_cms/src/main/java/com/gis/cms/mapper/RoomMapper.java

@@ -6,6 +6,7 @@ import com.gis.cms.entity.po.RoomEntity;
 import com.gis.cms.entity.vo.WxUserVo;
 import com.gis.common.base.mapper.provider.BaseProvider;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.SelectProvider;
 import org.springframework.stereotype.Component;
 
@@ -24,4 +25,10 @@ public interface RoomMapper extends BaseMapper<RoomEntity> {
 
     @SelectProvider(type = BaseProvider.class, method = "selectSql")
     List<WxUserVo> selectWxUserVo(String toString);
+
+    @Select("SELECT  * FROM tb_room where is_delete=0 and code=#{code} and creator_id=#{creatorId} limit 1")
+    RoomEntity findByCode(String code, Long creatorId);
+
+    @Select("SELECT id FROM tb_room where is_delete=0 and name=#{name} limit 1")
+    Integer findByName(String name);
 }

+ 2 - 1
gis_cms/src/main/java/com/gis/cms/service/GameLogService.java

@@ -2,6 +2,7 @@ package com.gis.cms.service;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.gis.cms.entity.dto.MyPageDto;
 import com.gis.cms.entity.dto.RoomDto;
 import com.gis.cms.entity.dto.RoomListDto;
 import com.gis.cms.entity.dto.ScoreDto;
@@ -18,7 +19,7 @@ public interface GameLogService extends IService<GameLogEntity> {
 
     Result saveScore(ScoreDto param);
 
-    Result list(String date);
+    Result list(MyPageDto date);
 
     Result detail(Long roomId);
 }

+ 2 - 0
gis_cms/src/main/java/com/gis/cms/service/RoomService.java

@@ -26,4 +26,6 @@ public interface RoomService extends IService<RoomEntity> {
     Result detail(Long id);
 
     List<WxUserVo> ranking(Long roomId);
+
+    Result saveEntity1(RoomDto param);
 }

+ 49 - 21
gis_cms/src/main/java/com/gis/cms/service/impl/GameLogServiceImpl.java

@@ -2,9 +2,12 @@ package com.gis.cms.service.impl;
 
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gis.admin.entity.po.WxUserEntity;
 import com.gis.admin.service.WxUserService;
+import com.gis.cms.entity.dto.MyPageDto;
 import com.gis.cms.entity.dto.ScoreDto;
 import com.gis.cms.entity.po.GameLogEntity;
 import com.gis.cms.mapper.GameLogMapper;
@@ -13,6 +16,7 @@ import com.gis.cms.service.RoomService;
 import com.gis.common.base.exception.BaseRuntimeException;
 import com.gis.common.base.service.IBaseService;
 import com.gis.common.constant.ErrorEnum;
+import com.gis.common.util.BaseUtil;
 import com.gis.common.util.Result;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -40,28 +44,49 @@ public class GameLogServiceImpl extends ServiceImpl<GameLogMapper, GameLogEntity
     @Autowired
     RoomService roomService;
 
+//    @Override
+//    public Result saveScore(ScoreDto param) {
+//        Long roomId = param.getRoomId();
+//        // 模式, 活动:activity , 普通:general
+//        String type = "activity";
+//        if (roomId == null){
+//            type = "general";
+//        }
+//        GameLogEntity entity = new GameLogEntity();
+//        BeanUtils.copyProperties(param, entity);
+//        entity.setType(type);
+//        entity.setCreatorId(iBaseService.getUserId());
+//        this.save(entity);
+//        return Result.success();
+//    }
+
     @Override
     public Result saveScore(ScoreDto param) {
         Long roomId = param.getRoomId();
+        GameLogEntity entity;
         // 模式, 活动:activity , 普通:general
-        String type = "activity";
-        if (roomId == null){
-            type = "general";
+        if (roomId == null) {
+            String type = "general";
+            entity = new GameLogEntity();
+            BeanUtils.copyProperties(param, entity);
+            entity.setType(type);
+            entity.setCreatorId(iBaseService.getUserId());
+        } else {
+            entity = this.getById(param.getGameLogId());
+            BeanUtils.copyProperties(param, entity);
         }
-        GameLogEntity entity = new GameLogEntity();
-        BeanUtils.copyProperties(param, entity);
-        entity.setType(type);
-        entity.setCreatorId(iBaseService.getUserId());
-        this.save(entity);
+        this.saveOrUpdate(entity);
+
         return Result.success();
     }
 
+
     @Override
-    public Result list(String date) {
+    public Result list(MyPageDto param) {
         Long userId = iBaseService.getUserId();
         HashMap<Object, Object> map = new HashMap<>();
         map.put("user", getWxUser(userId));
-        map.put("list", getList(date, userId));
+        map.put("page", getPage(param, userId));
         return Result.success(map);
     }
 
@@ -75,7 +100,7 @@ public class GameLogServiceImpl extends ServiceImpl<GameLogMapper, GameLogEntity
         return Result.success(map);
     }
 
-    private WxUserEntity getWxUser(Long userId){
+    private WxUserEntity getWxUser(Long userId) {
         WxUserEntity entity = wxUserService.getById(userId);
         BaseRuntimeException.isNull(entity, ErrorEnum.FAILURE_SYS_2001);
         // 统计得分
@@ -84,20 +109,23 @@ public class GameLogServiceImpl extends ServiceImpl<GameLogMapper, GameLogEntity
     }
 
     // 统计得分
-    private Integer countScore(Long userId){
+    private Integer countScore(Long userId) {
         String sqlStr = StrUtil.format("select sum(score) from tb_game_log where is_delete=0 and creator_id={}", userId);
         return getBaseMapper().sumSql(sqlStr);
     }
 
-    private List<GameLogEntity>  getList(String date, Long userId){
-            LambdaQueryWrapper<GameLogEntity> wrapper = new LambdaQueryWrapper<>();
-            wrapper.eq(GameLogEntity::getCreatorId, userId);
-            if (StringUtils.isNotBlank(date)){
-                // 写入拼接sql
-                wrapper.apply(StrUtil.format("DATE_FORMAT( create_time, '%Y%m' ) = DATE_FORMAT('{}' , '%Y%m' )", date));
-            }
-            wrapper.orderByDesc(GameLogEntity::getCreateTime);
-            return this.list(wrapper);
+    private IPage<GameLogEntity> getPage(MyPageDto param, Long userId) {
+        BaseUtil.startPage(param);
+        LambdaQueryWrapper<GameLogEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(GameLogEntity::getCreatorId, userId);
+        String date = param.getDate();
+        if (StringUtils.isNotBlank(date)) {
+            // 写入拼接sql
+            wrapper.apply(StrUtil.format("DATE_FORMAT( create_time, '%Y%m' ) = DATE_FORMAT('{}' , '%Y%m' )", date));
+        }
+        wrapper.orderByDesc(GameLogEntity::getCreateTime);
+        IPage<GameLogEntity> page = new Page<>(param.getPageNum(), param.getPageSize());
+        return this.page(page, wrapper);
 
     }
 

+ 83 - 35
gis_cms/src/main/java/com/gis/cms/service/impl/RoomServiceImpl.java

@@ -1,7 +1,7 @@
 package com.gis.cms.service.impl;
 
+import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.StrUtil;
-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.gis.cms.entity.dto.RoomDto;
@@ -12,7 +12,9 @@ import com.gis.cms.entity.vo.WxUserVo;
 import com.gis.cms.mapper.RoomMapper;
 import com.gis.cms.service.GameLogService;
 import com.gis.cms.service.RoomService;
+import com.gis.common.base.exception.BaseRuntimeException;
 import com.gis.common.base.service.IBaseService;
+import com.gis.common.util.BaseUtil;
 import com.gis.common.util.RedisUtil;
 import com.gis.common.util.Result;
 import lombok.extern.slf4j.Slf4j;
@@ -22,9 +24,11 @@ import org.springframework.stereotype.Service;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
 
 
 /**
@@ -37,7 +41,7 @@ public class RoomServiceImpl extends ServiceImpl<RoomMapper, RoomEntity> impleme
 
 
     @Autowired
-    IBaseService baseUtil;
+    IBaseService iBaseService;
 
     @Autowired
     RedisUtil redisUtil;
@@ -47,6 +51,10 @@ public class RoomServiceImpl extends ServiceImpl<RoomMapper, RoomEntity> impleme
 
 
 
+    // 房间序号, 当大于99时从1开始
+    private static final AtomicInteger ATOMIC_INTEGER = new AtomicInteger();
+
+
     /**redis 房间key*/
     final static String ROOM_STATUS_KEY = "room:status";
 
@@ -56,27 +64,54 @@ public class RoomServiceImpl extends ServiceImpl<RoomMapper, RoomEntity> impleme
         RoomEntity entity = new RoomEntity();
         BeanUtils.copyProperties(param, entity);
         entity.setStatus(0);  // 新建默认进行中, 0:进行中
-        entity.setCreatorId(baseUtil.getUserId());
+        entity.setName(getAtomicNum());
+        entity.setEndTime(LocalDateTime.parse(param.getEndTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")));
+        Long userId = iBaseService.getUserId();
+        entity.setCreatorId(userId);
+
+        //检查房间号唯一性
+        RoomEntity room = baseMapper.findByCode(param.getCode(), userId);
+        BaseRuntimeException.isTrue(room != null, null, "房间口令已存在");
+
+        this.save(entity);
+        return Result.success(entity);
+    }
+
+
+    @Override
+    public Result saveEntity1(RoomDto param) {
+        RoomEntity entity = new RoomEntity();
+        BeanUtils.copyProperties(param, entity);
+        entity.setStatus(0);  // 新建默认进行中, 0:进行中
+        entity.setName(getAtomicNum());
+        entity.setEndTime(LocalDateTime.parse(param.getEndTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")));
+        Long userId = iBaseService.getUserId();
+        entity.setCreatorId(userId);
+
+        //检查房间号唯一性
+        RoomEntity room = baseMapper.findByCode(param.getCode(), userId);
+        BaseRuntimeException.isTrue(room != null, null, "房间口令已存在");
+
         this.save(entity);
-        return Result.success();
+        return Result.success(entity);
     }
 
     @Override
     public Result join(String code, Long creatorId) {
-        RoomEntity roomEntity = findByCode(code, creatorId);
+        RoomEntity roomEntity = baseMapper.findByCode(code, creatorId);
         if (roomEntity==null){
             log.error("该房间号不存在: {}", code);
             return Result.failure("该房间不存在: " + code );
         }
 
-//        // 加入房间记录
-//        GameLogEntity entity = new GameLogEntity();
-//        entity.setRoomId(roomEntity.getId());
-//        entity.setType("activity");
-//        entity.setUserId(baseUtil.getUserId());
-//        // 需要知道谁创建
-//        entity.setCreatorId(creatorId);
-//        gameLogService.save(entity);
+        // 加入房间记录
+        GameLogEntity entity = new GameLogEntity();
+        entity.setRoomId(roomEntity.getId());
+        entity.setType("activity");
+        // 用户加入房间
+        entity.setCreatorId(iBaseService.getUserId());
+        entity.setScore(0);
+        gameLogService.save(entity);
         return Result.success(roomEntity);
     }
 
@@ -105,7 +140,7 @@ public class RoomServiceImpl extends ServiceImpl<RoomMapper, RoomEntity> impleme
     @Override
     public List<WxUserVo> ranking(Long roomId) {
         StringBuffer sql = new StringBuffer();
-        sql.append("select a.score, a.creator_id ,a.time, b.nick_name from tb_game_log a left join wx_user b on b.id=a.creator_id");
+        sql.append("select a.score, a.creator_id ,a.time, b.nick_name,b.id from tb_game_log a left join wx_user b on b.id=a.creator_id");
         sql.append(" where a.is_delete=0 and a.type='activity' ");
 
         if (roomId != null){
@@ -129,22 +164,9 @@ public class RoomServiceImpl extends ServiceImpl<RoomMapper, RoomEntity> impleme
     }
 
 
-//    private List<RoomEntity> countByCreatorIdAndDate(RoomListDto param){
-//        Long creatorId = baseUtil.getUserId();
-//        StringBuffer sql = new StringBuffer();
-//        sql.append("select a.id, a.create_time, a.name, a.creator_id, a.end_time, a.code, b.count, IF(end_time < NOW(),0,1) as status from tb_room a LEFT JOIN ");
-//        sql.append(StrUtil.format("(select COUNT(id) as count, room_id from tb_game_log WHERE is_delete=0 " +
-//                "and type='activity' and creator_id={} GROUP BY room_id) b ", creatorId));
-//        sql.append(StrUtil.format("on b.room_id=a.id WHERE a.is_delete=0 and a.creator_id={} ", creatorId));
-//        // 格式化日期需要使用yyyy-mm-dd , 没有日会异常
-//        sql.append(StrUtil.format(" and a.create_time > {}", beforeDate(param.getDate())));
-//        sql.append(" ORDER BY a.create_time desc");
-//
-//        return getBaseMapper().selectEntitys(sql.toString());
-//    }
 
     private List<RoomEntity> countByCreatorIdAndDate(RoomListDto param){
-        Long creatorId = baseUtil.getUserId();
+        Long creatorId = iBaseService.getUserId();
         StringBuffer sql = new StringBuffer();
         sql.append("select a.*,b.count  from ");
 
@@ -167,13 +189,6 @@ public class RoomServiceImpl extends ServiceImpl<RoomMapper, RoomEntity> impleme
         return getBaseMapper().selectList(sql.toString());
     }
 
-    private RoomEntity findByCode(String code, Long creatorId){
-        LambdaQueryWrapper<RoomEntity> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(RoomEntity::getCode, code);
-        wrapper.eq(RoomEntity::getCreatorId, creatorId);
-        return getBaseMapper().selectOne(wrapper);
-
-    }
 
     // 获取最近时间日期
     private LocalDate beforeDate(Integer num){
@@ -208,4 +223,37 @@ public class RoomServiceImpl extends ServiceImpl<RoomMapper, RoomEntity> impleme
         this.update(ew);
 
     }
+
+    // 房间id, 规则年月日-数字
+    private String getAtomicNum(){
+        int num = ATOMIC_INTEGER.incrementAndGet();
+        if (num>=9999){
+            ATOMIC_INTEGER.set(0);
+            num = ATOMIC_INTEGER.incrementAndGet();
+        }
+        String yyyymmdd = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
+        String code = yyyymmdd + "-" + num;
+        // 检查房间id是否重复, 从100
+        if (num == 1){
+            Integer id = baseMapper.findByName(code);
+            if (id != null){
+                num = 100;
+                while (true){
+                    num = num + 10;
+                    code = yyyymmdd + "-" + num;
+                    id = baseMapper.findByName(code);
+                    if (id == null){
+                        break;
+                    }
+                }
+                ATOMIC_INTEGER.set(num);
+                log.info("重置ATOMIC num: {}", num);
+            }
+
+        }
+        return yyyymmdd + "-" + num;
+    }
+
+
+
 }

+ 3 - 3
gis_common/src/main/java/com/gis/common/base/mapper/provider/BaseProvider.java

@@ -9,9 +9,9 @@ import lombok.extern.slf4j.Slf4j;
 @Slf4j
 public class BaseProvider {
 
-    public String selectSql(String sql){
-        log.info("sqlStr: {}", sql);
-        return sql;
+    public String selectSql(String sqlStr){
+        log.info("sqlStr: {}", sqlStr);
+        return sqlStr;
     }
 
 

+ 15 - 2
gis_common/src/main/java/com/gis/common/util/DateUtils.java

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
 import org.junit.Test;
 
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * Created by owen on 2022/4/8 0008 14:32
@@ -12,11 +13,13 @@ public class DateUtils extends DateUtil {
 
     private static String YYYY_MM = "yyyy-MM";
 
-
     private static String YYYYMM = "yyyyMM";
 
     private static String YYYY_MM_DD = "yyyy-MM-dd";
 
+    private static String YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm";
+
+
     private static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
 
     private static String YYYYMMDD_HHMMSSSSS = "yyyyMMdd_HHmmssSSS";
@@ -49,8 +52,18 @@ public class DateUtils extends DateUtil {
         return format(LocalDateTime.now(), YYYYMMDD_HHMMSSSSS);
     }
 
+
+    /**
+     * 字符串转LocalDateTime
+     * @param time 字符串
+     * @return LocalDateTime
+     */
+    public static LocalDateTime srtToLocalDateTime(String time){
+        return LocalDateTime.parse(time, DateTimeFormatter.ofPattern(YYYY_MM_DD_HH_MM));
+    }
+
     @Test
     public void test(){
-        System.out.println(getDateTime());
+        System.out.println(srtToLocalDateTime("2022-02-16 12:26"));
     }
 }