Przeglądaj źródła

用户关联房间。
fix其他相关bug

覃浩 2 lat temu
rodzic
commit
65037ec0e2

+ 171 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusUserRoomRelationController.java

@@ -0,0 +1,171 @@
+package org.jeecg.modules.business.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.business.entity.BusUserRoomRelation;
+import org.jeecg.modules.business.service.IBusUserRoomRelationService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: bus_user_room_relation
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19
+ * @Version: V1.0
+ */
+@Api(tags="bus_user_room_relation")
+@RestController
+@RequestMapping("/business/busUserRoomRelation")
+@Slf4j
+public class BusUserRoomRelationController extends JeecgController<BusUserRoomRelation, IBusUserRoomRelationService> {
+	@Autowired
+	private IBusUserRoomRelationService busUserRoomRelationService;
+	
+	/**
+	 * 获取关联列表
+	 * @return
+	 */
+	//@AutoLog(value = "bus_user_room_relation-分页列表查询")
+	@ApiOperation(value="bus_user_room_relation-分页列表查询", notes="bus_user_room_relation-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<List<BusUserRoomRelation>> queryPageList(String userId) {
+		List<BusUserRoomRelation> pageList = busUserRoomRelationService.list(Wrappers.<BusUserRoomRelation>query().eq("user_id",userId));
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @return
+	 */
+	@AutoLog(value = "bus_user_room_relation-添加")
+	@ApiOperation(value="bus_user_room_relation-添加", notes="bus_user_room_relation-添加")
+	//@RequiresPermissions("business:bus_user_room_relation:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody List<BusUserRoomRelation> busUserRoomRelations,String userId) {
+		busUserRoomRelationService.remove(Wrappers.<BusUserRoomRelation>query().eq("user_id",userId));
+		busUserRoomRelationService.saveBatch(busUserRoomRelations);
+		return Result.OK("保存成功!");
+	}
+
+	
+	/**
+	 *  编辑
+	 *
+	 * @param busUserRoomRelation
+	 * @return
+	 */
+	@AutoLog(value = "bus_user_room_relation-编辑")
+	@ApiOperation(value="bus_user_room_relation-编辑", notes="bus_user_room_relation-编辑")
+	//@RequiresPermissions("business:bus_user_room_relation:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody BusUserRoomRelation busUserRoomRelation) {
+		busUserRoomRelationService.updateById(busUserRoomRelation);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "bus_user_room_relation-通过id删除")
+	@ApiOperation(value="bus_user_room_relation-通过id删除", notes="bus_user_room_relation-通过id删除")
+	//@RequiresPermissions("business:bus_user_room_relation:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		busUserRoomRelationService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "bus_user_room_relation-批量删除")
+	@ApiOperation(value="bus_user_room_relation-批量删除", notes="bus_user_room_relation-批量删除")
+	//@RequiresPermissions("business:bus_user_room_relation:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.busUserRoomRelationService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "bus_user_room_relation-通过id查询")
+	@ApiOperation(value="bus_user_room_relation-通过id查询", notes="bus_user_room_relation-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<BusUserRoomRelation> queryById(@RequestParam(name="id",required=true) String id) {
+		BusUserRoomRelation busUserRoomRelation = busUserRoomRelationService.getById(id);
+		if(busUserRoomRelation==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(busUserRoomRelation);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param busUserRoomRelation
+    */
+    //@RequiresPermissions("business:bus_user_room_relation:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, BusUserRoomRelation busUserRoomRelation) {
+        return super.exportXls(request, busUserRoomRelation, BusUserRoomRelation.class, "bus_user_room_relation");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("business:bus_user_room_relation:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, BusUserRoomRelation.class);
+    }
+
+}

+ 47 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusUserRoomRelation.java

@@ -0,0 +1,47 @@
+package org.jeecg.modules.business.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: bus_user_room_relation
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19
+ * @Version: V1.0
+ */
+@Data
+@TableName("bus_user_room_relation")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="bus_user_room_relation对象", description="bus_user_room_relation")
+public class BusUserRoomRelation implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**key*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "key")
+    private String id;
+	/**用户id*/
+	@Excel(name = "用户id", width = 15)
+    @ApiModelProperty(value = "用户id")
+    private String userId;
+	/**房间id*/
+	@Excel(name = "房间id", width = 15)
+    @ApiModelProperty(value = "房间id")
+    private String roomId;
+}

+ 17 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusUserRoomRelationMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.business.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.business.entity.BusUserRoomRelation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: bus_user_room_relation
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19
+ * @Version: V1.0
+ */
+public interface BusUserRoomRelationMapper extends BaseMapper<BusUserRoomRelation> {
+
+}

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusUserRoomRelationMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.business.mapper.BusUserRoomRelationMapper">
+
+</mapper>

+ 14 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusUserRoomRelationService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.business.service;
+
+import org.jeecg.modules.business.entity.BusUserRoomRelation;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: bus_user_room_relation
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19
+ * @Version: V1.0
+ */
+public interface IBusUserRoomRelationService extends IService<BusUserRoomRelation> {
+
+}

+ 19 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusUserRoomRelationServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.business.service.impl;
+
+import org.jeecg.modules.business.entity.BusUserRoomRelation;
+import org.jeecg.modules.business.mapper.BusUserRoomRelationMapper;
+import org.jeecg.modules.business.service.IBusUserRoomRelationService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: bus_user_room_relation
+ * @Author: jeecg-boot
+ * @Date:   2023-05-19
+ * @Version: V1.0
+ */
+@Service
+public class BusUserRoomRelationServiceImpl extends ServiceImpl<BusUserRoomRelationMapper, BusUserRoomRelation> implements IBusUserRoomRelationService {
+
+}

+ 197 - 11
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/test/Test.java

@@ -1,24 +1,210 @@
 package org.jeecg.modules.business.test;
 
 import lombok.SneakyThrows;
+import org.hibernate.hql.internal.ast.SqlGenerator;
 import org.jeecg.common.util.DateUtils;
 
 import java.util.Calendar;
 import java.util.Date;
 import java.util.GregorianCalendar;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 public class Test {
-    @SneakyThrows
+    private static final Logger logger = LoggerFactory.getLogger(SqlGenerator.class);
+
+    /**
+     * 用来存储Java等属性类型与sql中属性类型的对照
+     * </br>
+     * 例如:java.lang.Integer 对应 integer
+     */
+    public static Map<String, String> map = new HashMap<>();
+
     public static void main(String[] args) {
-        Date date = DateUtils.parseDate("2023-04-26","yyyy-MM-dd");
-        Calendar calendar = new GregorianCalendar();
-        calendar.setTime(date);
-        // 把日期往后增加一天,整数  往后推,负数往前移动
-        calendar.add(Calendar.MONTH, 1);
-        // 这个时间就是日期往后推一天的结果
-        date = calendar.getTime();
-        System.out.println(DateUtils.formatDate(date));
-        double a =  Math.ceil(((10L* 1.0) / 3L));
-        System.out.println(a);
+        map.put("class java.lang.String", "varchar(255)");
+        map.put("class java.lang.Integer", "int");
+        map.put("class java.lang.Long", "integer unsigned");
+        map.put("class java.lang.byte[]", "blob");
+        map.put("class java.lang.Boolean", "bit");
+        map.put("class java.math.BigInteger", "bigint unsigned");
+        map.put("class java.lang.Float", "float");
+        map.put("class java.lang.Double", "float");
+        map.put("class java.sql.Date", "datetime");
+        map.put("class java.sql.Time", "time");
+        map.put("class java.sql.Timestamp", "datetime");
+        map.put("class java.util.Date", "datetime");
+        map.put("class java.lang.Byte", "tinyint");
+        sqlConstruction();
+    }
+
+    /**
+     * 生成sql建库语句
+     */
+    private static void sqlConstruction() {
+        //实体类所在的package在磁盘上的绝对路径
+        String packageName = "E:/dev/work/hotel/hotel-saas-backend/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity";
+        //生成sql的文件夹
+        String filePath = "E:/dev/work/dbsql";
+        //项目中实体类的路径
+        String prefix = "org.jeecg.modules.business.entity.";
+        String className = "";
+
+        StringBuffer sqls = new StringBuffer();
+        //获取包下的所有类名称
+        List<String> list = getAllClasses(packageName);
+        for (String str : list) {
+            className = prefix + str.substring(0, str.lastIndexOf("."));
+            String sql = generateSql(className, filePath);
+            sqls.append(sql);
+        }
+        System.out.println(sqls.toString());
+        StringToSql(sqls.toString(), filePath + ".sql");
+    }
+
+    /**
+     * 根据实体类生成建表语句
+     *
+     * @param className 全类名
+     * @param filePath  磁盘路径
+     * @return
+     */
+    public static String generateSql(String className, String filePath) {
+        try {
+            Class<?> clz = Class.forName(className);
+            className = clz.getSimpleName();
+            className = getStandardFieldsTAB(className);
+            Field[] fields = clz.getDeclaredFields();
+            StringBuffer column = new StringBuffer();
+            String varchar = " CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,";
+            int ia= 1;
+            for (Field f : fields) {
+                if ("class java.lang.String".equals(f.getType().toString())){
+                    if(f.getName().equals("SerialVersionUID")) continue;
+                    String appendPrimary = "";
+                    if(f.getName().equals("id")) {
+                        appendPrimary = " NOT NULL PRIMARY KEY ";
+                    }
+                    column.append(" \n `" + getStandardFields(f.getName()) + "`" + " " + map.get(f.getType().toString())).append(varchar).append(appendPrimary) ;
+                }else {
+                    column.append(" \n `" + getStandardFields(f.getName()) + "`" + " " + map.get(f.getType().toString())).append(",");
+                }
+            }
+            StringBuffer sql = new StringBuffer();
+            sql.append("\n DROP TABLE IF EXISTS `" + className + "`; ")
+                    .append(" \n CREATE TABLE `" + className + "`  (")
+                    .append(" \n " + column)
+                    .append(" \n PRIMARY KEY (`id`) USING BTREE,")
+                    .append("\n INDEX `id`(`id`) USING BTREE")
+                    .append(" \n ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci;");
+            return sql.toString();
+        } catch (ClassNotFoundException e) {
+            logger.debug("该类未找到!");
+            return null;
+        }
+
+    }
+
+    /**
+     * 转换为标准等sql字段 例如 adminUser → admin_user
+     *
+     * @param str 转换为字符串的字段名
+     * @return
+     */
+    public static String getStandardFields(String str) {
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < str.length(); i++) {
+            char c = str.charAt(i);
+            if (i != 0 && (c >= 'A' && c <= 'Z')) {
+                sb.append("_");
+                sb.append((c+"").toLowerCase());
+                continue;
+            }
+            sb.append(c);
+        }
+        return sb.toString();
+    }
+    public static String getStandardFieldsTAB(String str) {
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < str.length(); i++) {
+            char c = str.charAt(i);
+            if ( (c >= 'A' && c <= 'Z')) {
+                if(i != 0) sb.append("_");
+                sb.append((c+"").toLowerCase());
+                continue;
+            }
+            sb.append(c);
+        }
+        return sb.toString();
+    }
+
+    /**
+     * 获取包下面等所有实体类名称,类似于获取 XXX.java
+     *
+     * @param packageName 全类名
+     * @return
+     */
+    public static List<String> getAllClasses(String packageName) {
+        List<String> classList = new ArrayList();
+        String className = "";
+        File f = new File(packageName);
+        if (f.exists() && f.isDirectory()) {
+            File[] files = f.listFiles();
+            // 遍历实体类下面等所有.java文件 获取其类名
+            for (File file : files) {
+                className = file.getName();
+                classList.add(className);
+            }
+            return classList;
+        } else {
+            logger.debug("包路径未找到!");
+            return null;
+        }
+    }
+
+    /**
+     * 将生成等String字符串 写进sql文件
+     *
+     * @param str  String字符串
+     * @param path sql文件路径路径
+     */
+    public static void StringToSql(String str, String path) {
+        byte[] sourceByte = str.getBytes();
+        FileOutputStream os = null;
+        if (null != sourceByte) {
+            try {
+                //文件路径(路径+文件名)
+                File file = new File(path);
+                //文件不存在则创建文件,先创建目录
+                if (!file.exists()) {
+                    File dir = new File(file.getParent());
+                    dir.mkdirs();
+                    file.createNewFile();
+                }
+                //文件输出流用于将数据写入文件
+                os = new FileOutputStream(file);
+                os.write(sourceByte);
+                os.flush();
+                System.out.println("生成成功!!");
+            } catch (Exception e) {
+                e.printStackTrace();
+            } finally {
+                // 关闭文件输出流
+                try {
+                    if (os != null) {
+                        os.close();
+                    }
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
     }
 }