server/meeting/meeting_admin/src/main/java/com/doumee/api/cloud/CloudBookingsController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,208 @@ package com.doumee.api.cloud; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.doumee.api.BaseController; import com.doumee.core.annotation.excel.ExcelExporter; import com.doumee.core.annotation.pr.PreventRepeat; import com.doumee.core.model.ApiResponse; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.DateUtil; import com.doumee.dao.business.model.Bookings; import com.doumee.dao.business.vo.RoomStatisticsVo; import com.doumee.dao.system.dto.UserStatisticsDTO; import com.doumee.dao.system.vo.UserStatisticsVo; import com.doumee.dao.web.response.DateTimeResourceDate; import com.doumee.dao.web.response.MeetingDetailResponse; import com.doumee.service.business.BookingsService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; /** * @author æ±è¹è¹ * @date 2023/05/04 18:18 */ @Api(tags = "ä¼è®®å®¤é¢å®ä¿¡æ¯è¡¨") @RestController @RequestMapping("/cloud/bookings") public class CloudBookingsController extends BaseController { @Autowired private BookingsService bookingsService; @ApiOperation("æµè¯ç½ç®¡") @GetMapping("/test") public ApiResponse test() { return ApiResponse.success("ä¼è®®å®¤æµè¯æå"); } @PreventRepeat @ApiOperation("æ°å»º") @PostMapping("/create") public ApiResponse create(@RequestBody Bookings bookings) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); bookings.setCreator(user.getId()); return ApiResponse.success(bookingsService.create(bookings)); } @ApiOperation("æ ¹æ®IDå é¤") @GetMapping("/delete/{id}") public ApiResponse deleteById(@PathVariable Integer id) { bookingsService.deleteById(id); return ApiResponse.success(null); } @ApiOperation("æ¹éå é¤") @GetMapping("/delete/batch") public ApiResponse deleteByIdInBatch(@RequestParam String ids) { String [] idArray = ids.split(","); List<Integer> idList = new ArrayList<>(); for (String id : idArray) { idList.add(Integer.valueOf(id)); } bookingsService.deleteByIdInBatch(idList); return ApiResponse.success(null); } @ApiOperation("æ ¹æ®IDä¿®æ¹") @PostMapping("/updateById") public ApiResponse updateById(@RequestBody Bookings bookings) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); bookings.setCreator(user.getId()); bookingsService.updateById(bookings); return ApiResponse.success(null); } @ApiOperation("å页æ¥è¯¢") @PostMapping("/page") public ApiResponse<PageData<Bookings>> findPage (@RequestBody PageWrap<Bookings> pageWrap) { return ApiResponse.success(bookingsService.findPage(pageWrap)); } @ApiOperation("导åºExcel") @PostMapping("/exportExcel") @RequiresPermissions("business:bookings:exportExcel") public void exportExcel (@RequestBody PageWrap<Bookings> pageWrap, HttpServletResponse response) { ExcelExporter.build(Bookings.class).export(bookingsService.findPage(pageWrap).getRecords(), "ä¼è®®å®¤é¢å®ä¿¡æ¯è¡¨", response); } @ApiOperation("æ ¹æ®IDæ¥è¯¢") @GetMapping("/{id}") public ApiResponse<MeetingDetailResponse> findById(@PathVariable Integer id) { return ApiResponse.success(bookingsService.getMeetingDetail(id)); } @ApiOperation("åæ¶") @PostMapping("/cancelById") public ApiResponse cancelById(@RequestBody Bookings bookings) { bookingsService.cancelById(bookings); return ApiResponse.success(null); } @ApiOperation("ä¼è®®å®¤ä½¿ç¨æ¶é¿ç»è®¡") @GetMapping("/getRoomStatistics") public ApiResponse<List<RoomStatisticsVo>> getRoomStatistics(@RequestParam Integer yearNum, @RequestParam Integer roomId){ return ApiResponse.success(bookingsService.getRoomStatistics(yearNum)); } @ApiOperation("人ååå ä¼è®®æ¶å¸¸") @PostMapping("/getUserStatistics") public ApiResponse<PageData<UserStatisticsVo>> getUserStatistics(@RequestBody PageWrap<UserStatisticsDTO> pageWrap ){ return ApiResponse.success(bookingsService.getUserStatistics(pageWrap)); } @ApiOperation("人åå伿¶é¿ç»è®¡å¯¼åºExcel") @PostMapping("/exportUserStatistics") public void exportUserStatistics (@RequestBody PageWrap<UserStatisticsDTO> pageWrap,HttpServletResponse response) { List<UserStatisticsVo> records = bookingsService.getUserStatistics(pageWrap).getRecords(); if (!CollectionUtils.isEmpty(records)){ JSONArray o = (JSONArray) JSON.toJSON(records); o.forEach(s->{ JSONObject jsonObject = (JSONObject) s; Set<Map.Entry<String, Object>> entries = jsonObject.entrySet(); for (Map.Entry<String, Object> entry:entries){ if (entry.getValue() instanceof BigDecimal){ BigDecimal value = (BigDecimal) entry.getValue(); entry.setValue(value.compareTo(value.setScale(0, RoundingMode.DOWN)) > 0 ? value : value.setScale(0, RoundingMode.DOWN)); } } }); records = o.toJavaList(UserStatisticsVo.class); } ExcelExporter.build(UserStatisticsVo.class).export(records, "人åå伿¶é¿ç»è®¡", response); } @ApiOperation("ä¼è®®å®¤ä½¿ç¨æ¶é¿ç»è®¡å¯¼åºExcel") @PostMapping("/exportRoomStatistics") public void exportRoomStatistics (@RequestBody PageWrap<UserStatisticsDTO> pageWrap,HttpServletResponse response) { List<RoomStatisticsVo> roomStatistics = bookingsService.getRoomStatistics(pageWrap.getModel().getYearNum()); if (!CollectionUtils.isEmpty(roomStatistics)){ JSONArray o = (JSONArray) JSON.toJSON(roomStatistics); o.forEach(s->{ JSONObject jsonObject = (JSONObject) s; Set<Map.Entry<String, Object>> entries = jsonObject.entrySet(); for (Map.Entry<String, Object> entry:entries){ if (entry.getValue() instanceof BigDecimal){ BigDecimal value = (BigDecimal) entry.getValue(); entry.setValue(value.compareTo(value.setScale(0, RoundingMode.DOWN)) > 0 ? value : value.setScale(0, RoundingMode.DOWN)); } } }); roomStatistics = o.toJavaList(RoomStatisticsVo.class); } ExcelExporter.build(RoomStatisticsVo.class).export(roomStatistics, "ä¼è®®å®¤ä½¿ç¨æ¶é¿ç»è®¡", response); } @ApiOperation("åä¸çé¢çº¦ä¼è®®") @GetMapping("/reservationCancel") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "type", value = "1 ä»å¤© 2 æ¬å¨", required = true), }) public ApiResponse<List<Bookings>> getMyJoinBookingMeet(@RequestParam Integer type){ LocalDateTime startTime = LocalDateTime.of(LocalDate.now(), LocalTime.of(00,00,00)); LocalDateTime endTime = LocalDateTime.of(LocalDate.now(), LocalTime.of(23,59,59)); if(Constants.equalsInteger(type,Constants.TWO)){ startTime = DateUtil.getMonday(); endTime = DateUtil.getSunday(); } return ApiResponse.success(bookingsService.getMyJoinBookingMeet(getLoginUser().getId(), null,startTime,endTime)); } /** * è·åç¨æ·å½å½æé¢çº¦ä¼è®®æ åµ * @return */ @ApiOperation("è·åç¨æ·å½å½æé¢çº¦ä¼è®®æ åµ") @PostMapping("/findMothBookingMeet") public ApiResponse<List<DateTimeResourceDate>> findMothBookingMeet( @RequestParam(required = false) Integer roomId,String dateMonth){ return ApiResponse.success(bookingsService.findMothBookingMeet(getLoginUser().getId(),roomId,dateMonth)); } } server/meeting/meeting_admin/src/main/java/com/doumee/config/shiro/ShiroConfig.java
@@ -73,6 +73,7 @@ map.put("/common/captcha", "anon"); //æä»¶ä¸ä¼ åæ¶æ¦æª map.put("/public/**", "anon"); map.put("/cloud/**", "anon"); // - æ¾è¡swagger map.put("/doc.html", "anon"); server/meeting/meeting_admin/src/main/resources/application.yml
@@ -6,12 +6,10 @@ # env: production spring: # application: # name: doumeemes application: name: meetingAdmin profiles: active: dev # JSONè¿åé ç½® jackson: # é»è®¤æ¶åº @@ -23,6 +21,9 @@ max-file-size: 200MB max-request-size: 200MB enabled: true main: allow-circular-references: true # MyBatisé ç½® mybatis-plus: mapper-locations: classpath*:/mappers/**/*.xml @@ -63,6 +64,8 @@ enable: true username: admin password: 111111 main: allow-circular-references: true # WEBæå¡å¨é ç½® server: server/meeting/meeting_admin/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@ spring: application: name: meeting name: meetingAdmin cloud: loadbalancer: enabled: true @@ -17,14 +17,14 @@ password: nacos config: server-addr: http://175.27.187.84:8848 #é ç½®Nacoså°å namespace: meeting namespace: dmvisit username: nacos password: nacos file-extension: yaml group: dev data-id: com.doumee.meeting.admin # file-extension: yaml # group: dev # data-id: com.doumee.meeting.admin discovery: server-addr: http://175.27.187.84:8848 #é ç½®Nacoså°å namespace: meeting namespace: dmvisit username: nacos password: nacos server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/ProjectRel.java
@@ -18,7 +18,7 @@ */ @Data @ApiModel("æå¡é¡¹ç®å ³è表") @TableName("`project_rel`") @TableName("`meeting_project_rel`") public class ProjectRel { @TableId(type = IdType.AUTO) server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Projects.java
@@ -18,7 +18,7 @@ */ @Data @ApiModel("æå¡é¡¹ç®ä¿¡æ¯è¡¨") @TableName("`projects`") @TableName("`meeting_projects`") public class Projects { @TableId(type = IdType.AUTO) server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/RoomRecord.java
@@ -19,7 +19,7 @@ */ @Data @ApiModel("ä¼è®®å®¤å¼é¨è®°å½è¡¨") @TableName("`room_record`") @TableName("`meeting_room_record`") public class RoomRecord { @TableId(type = IdType.AUTO) server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/RoomTime.java
@@ -18,7 +18,7 @@ */ @Data @ApiModel("ä¼è®®å®¤é¢çº¦æ¶é´æ®µä¿¡æ¯è¡¨") @TableName("`room_time`") @TableName("`meeting_room_time`") public class RoomTime { @TableId(type = IdType.AUTO) server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Rooms.java
@@ -22,7 +22,7 @@ */ @Data @ApiModel("ä¼è®®å®¤ä¿¡æ¯è¡¨") @TableName("`rooms`") @TableName("`meeting_rooms`") public class Rooms { @TableId(type = IdType.AUTO) server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/UserRel.java
@@ -19,7 +19,7 @@ */ @Data @ApiModel("ä¼è®®å®¤ç®¡çåååä¼äººåå ³è表") @TableName("`user_rel`") @TableName("`meeting_user_rel`") public class UserRel { @TableId(type = IdType.AUTO) server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
@@ -938,7 +938,7 @@ .eq("ISDELETED",MeetConstants.ZERO) .eq("SEND_NOTICE", MeetConstants.ZERO) .apply(" now() >= SUBDATE(START_TIME,interval + " + minute + " minute) ") .apply(" ROOM_ID in ( select r.id from rooms r where r.ISDELETED = 0 and r.STATUS = 0 )") .apply(" ROOM_ID in ( select r.id from meeting_rooms r where r.ISDELETED = 0 and r.STATUS = 0 )") ); for (Bookings bookings : bookingsList) { bookings.setSendNotice(MeetConstants.ONE); server/meeting/meeting_web/src/main/java/com/doumee/api/web/MeetingApi.java
@@ -123,6 +123,7 @@ QrCodeUtils.encode(content,null, response.getOutputStream(), true); } /* @LoginRequired @ApiOperation("åä¼äººåå页") @PostMapping("/userPage") @@ -133,6 +134,7 @@ IPage<UserResponse> page = systemUserService.getUserPage(pageWrap); return ApiResponse.success("æ¥è¯¢æå", page); } */ @LoginRequired server/meeting/meeting_web/src/main/resources/application.yml
@@ -23,6 +23,8 @@ max-file-size: 200MB max-request-size: 200MB enabled: true main: allow-circular-references: true # MyBatisé ç½® mybatis-plus: mapper-locations: classpath*:/mappers/**/*.xml server/pom.xml
@@ -20,7 +20,36 @@ <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.12.RELEASE</version> </parent> <properties> <java.version>1.8</java.version> <spring-cloud.version>Hoxton.SR12</spring-cloud.version> <spring-cloud-alibaba.version>2.2.7.RELEASE</spring-cloud-alibaba.version> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencyManagement> <dependencies> <!-- Spring Cloud ä¾èµç®¡ç --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- Alibaba Cloud ä¾èµç®¡ç --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!-- <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> @@ -34,20 +63,20 @@ <oshi.version>5.7.0</oshi.version> <jna.version>5.7.0</jna.version> <poi.version>5.0.0</poi.version> <!-- jwtToken --> <!– jwtToken –> <jjwt.version>0.9.1</jjwt.version> <!-- hutool å·¥å ·ç¸å ³--> <!– hutool å·¥å ·ç¸å ³–> <hutool.version>5.5.8</hutool.version> <!-- 微信å°ç¨åº --> <!– 微信å°ç¨åº –> <weixin-java-miniapp.version>4.1.0</weixin-java-miniapp.version> <!-- 微信æ¯ä» --> <!– 微信æ¯ä» –> <weixin-java-pay.version>4.1.0</weixin-java-pay.version> <!-- é¿éäºOSSåå¨ --> <!– é¿éäºOSSåå¨ –> <aliyun-oss.version>3.8.0</aliyun-oss.version> </properties> <dependencies> <!-- Spring Boot --> <!– Spring Boot –> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> @@ -56,7 +85,7 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> <!-- Shiro --> <!– Shiro –> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> @@ -67,21 +96,21 @@ <artifactId>weixin-java-miniapp</artifactId> <version>${weixin-java-miniapp.version}</version> </dependency> <!-- MyBatis plus --> <!– MyBatis plus –> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>${mybatis.plus.version}</version> </dependency> <!-- MyBatiså页 --> <!– MyBatiså页 –> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.3.0</version> <!--使ç¨spring boot2æ´å pagehelper-spring-boot-starterå¿ é¡»æé¤ä¸ä¸ä¾èµ <!–使ç¨spring boot2æ´å pagehelper-spring-boot-starterå¿ é¡»æé¤ä¸ä¸ä¾èµ å 为pagehelper-spring-boot-starterä¹å·²ç»å¨pomä¾èµäºmybatisä¸mybatis-spring æä»¥ä¼ä¸mybatis-plus-boot-starterä¸çmybatisä¸mybatis-springåçå²çª --> –> <exclusions> <exclusion> <groupId>org.mybatis</groupId> @@ -91,14 +120,14 @@ <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> </exclusion> <!-- è§£å³jsqlparser ä¾èµçæ¬å²çª--> <!– è§£å³jsqlparser ä¾èµçæ¬å²çª–> <exclusion> <artifactId>jsqlparser</artifactId> <groupId>com.github.jsqlparser</groupId> </exclusion> </exclusions> </dependency> <!-- è¿æ¥æ± --> <!– è¿æ¥æ± –> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> @@ -110,14 +139,14 @@ <scope>runtime</scope> </dependency> <!-- swagger --> <!– swagger –> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency> <!-- lombok --> <!– lombok –> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> @@ -142,13 +171,13 @@ <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <!--google kaptcha--> <!–google kaptcha–> <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version> </dependency> <!-- å·¥å ·å --> <!– å·¥å ·å –> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> @@ -158,7 +187,7 @@ <artifactId>fastjson</artifactId> <version>${fastjson.version}</version> </dependency> <!-- Excelå¯¼å ¥/导åºä¾èµå --> <!– Excelå¯¼å ¥/导åºä¾èµå –> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> @@ -169,7 +198,7 @@ <artifactId>poi-ooxml</artifactId> <version>${poi.version}</version> </dependency> <!-- è·åç³»ç»ä¿¡æ¯ä¾èµå --> <!– è·åç³»ç»ä¿¡æ¯ä¾èµå –> <dependency> <groupId>com.github.oshi</groupId> <artifactId>oshi-core</artifactId> @@ -185,34 +214,34 @@ <artifactId>jna-platform</artifactId> <version>${jna.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/com.github.yulichang/mybatis-plus-join --> <!– https://mvnrepository.com/artifact/com.github.yulichang/mybatis-plus-join –> <dependency> <groupId>com.github.yulichang</groupId> <artifactId>mybatis-plus-join</artifactId> <version>1.4.2.2</version> </dependency> <!--æ·»å fileuploadä¾èµ--> <!–æ·»å fileuploadä¾èµ–> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> <!-- FILEè½¬æ¢ --> <!– FILEè½¬æ¢ –> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> </dependency> <!--jwt--> <!–jwt–> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>${jjwt.version}</version> </dependency> <!--hutoolå·¥å ·--> <!–hutoolå·¥å ·–> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> @@ -223,27 +252,27 @@ <artifactId>pinyin4j</artifactId> <version>2.5.1</version> </dependency> <!-- <!– WeChat å°ç¨åº –>--> <!-- <dependency>--> <!-- <groupId>com.github.binarywang</groupId>--> <!-- <artifactId>weixin-java-miniapp</artifactId>--> <!-- <version>${weixin-java-miniapp.version}</version>--> <!-- </dependency>--> <!-- <!– WeChat æ¯ä» –>--> <!-- <dependency>--> <!-- <groupId>com.github.binarywang</groupId>--> <!-- <artifactId>weixin-java-pay</artifactId>--> <!-- <version>${weixin-java-pay.version}</version>--> <!-- </dependency>--> <!– <!– WeChat å°ç¨åº –>–> <!– <dependency>–> <!– <groupId>com.github.binarywang</groupId>–> <!– <artifactId>weixin-java-miniapp</artifactId>–> <!– <version>${weixin-java-miniapp.version}</version>–> <!– </dependency>–> <!– <!– WeChat æ¯ä» –>–> <!– <dependency>–> <!– <groupId>com.github.binarywang</groupId>–> <!– <artifactId>weixin-java-pay</artifactId>–> <!– <version>${weixin-java-pay.version}</version>–> <!– </dependency>–> <!-- é¿éäºOSS--> <!– é¿éäºOSS–> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>${aliyun-oss.version}</version> </dependency> <!-- aliyun sms SDK --> <!– aliyun sms SDK –> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> @@ -255,18 +284,18 @@ <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <!-- mqtt --> <!– mqtt –> <dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-mqtt</artifactId> </dependency> <!-- æµ·åº·ç³»ç» --> <!– æµ·åº·ç³»ç» –> <dependency> <groupId>com.hikvision.ga</groupId> <artifactId>artemis-http-client</artifactId> <version>1.1.3</version> </dependency> <!--çæäºç»´ç --> <!–çæäºç»´ç –> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> @@ -282,7 +311,7 @@ <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- WxJavaå ¬ä¼å· --> <!– WxJavaå ¬ä¼å· –> <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-mp</artifactId> @@ -311,7 +340,7 @@ <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencies>--> <build> <plugins> <plugin> server/system_gateway/src/main/java/com/doumee/Main.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,7 @@ package com.doumee; public class Main { public static void main(String[] args) { System.out.println("Hello world!"); } } server/system_gateway/src/main/java/com/doumee/SystemGatewayApplication.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.doumee; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.context.ApplicationContext; /** * å¯å¨ç±» * @author Eva.Caesar Liu * @date 2023/03/21 14:49 */ @SpringBootApplication @EnableDiscoveryClient public class SystemGatewayApplication { public static void main(String[] args) { ApplicationContext context = SpringApplication.run(SystemGatewayApplication.class); context.getEnvironment(); } } server/system_gateway/src/main/java/com/doumee/api/meeting/CloudBookingsController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.doumee.api.meeting; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @author æ±è¹è¹ * @date 2023/05/04 18:18 */ @RestController @RequestMapping("/gateway") public class CloudBookingsController { @GetMapping("/test") public String test() { return ("ç½ç®¡æµè¯æå"); } } server/system_gateway/src/main/resources/META-INF/MANIFEST.MF
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,3 @@ Manifest-Version: 1.0 Main-Class: com.doumee.SystemGatewayApplication server/system_gateway/src/main/resources/application-dev.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,60 @@ spring: # æ°æ®æºé ç½® datasource: url: jdbc:mysql://sh-cdb-aiskr3vy.sql.tencentcdb.com:62443/antaiwuliu?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: doumee password: rtjgfEr@&0c0m driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource jackson: time-zone: GMT+8 date-format: yyyy-MM-dd HH:mm:ss #rocketmq: # namesrvAddr: rmq-cn-pe335rcnn06.cn-shanghai.rmq.aliyuncs.com:8080 # groupId: GID-wakatest # topic: waka-test # username: 4derRb4Sw5EkqUMI # password: v50N97wf4av8Q8I4 knife4j: enable: true basic: enable: true username: admin password: 111111 debug_model: true captcha_check: false # Swaggeré ç½® swagger: host: title: ${project.name}æ¥å£ææ¡£ description: ${project.name}æ¥å£ææ¡£ enabled: true # ç¦ç¨swaggeræ¶çéå®åå°å redirect-uri: / ########################微信æ¯ä»ç¸å ³é ç½®######################## wx: pay: appId: wxfab6da18632e28de appSecret: 4ee3b22afa90287834319fc3c1635271 mchId: 1229817002 mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM notifyUrl: https://dmtest.ahapp.net/smartmeeting_interface/web/api/wxPayNotify keyPath: /usr/local/apiclient_cert.p12 tencent: map: remoteHost: https://apis.map.qq.com appKey: 3AYBZ-I5R3V-2BVP3-UWBDQ-ETBM5-B2BBQ ########################宿¶å¼å¯é ç½®######################## timing: true des_pwd: 123456SDFKDJF server/system_gateway/src/main/resources/application-pro.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,51 @@ spring: # æ°æ®æºé ç½® datasource: url: jdbc:mysql://localhost:3306/smart_meeting?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8 username: root password: Znhys@168.com driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource knife4j: enable: true basic: enable: true username: admin password: doumee@168.com debug_model: true captcha_check: false # Swaggeré ç½® swagger: host: title: ${project.name}æ¥å£ææ¡£ description: ${project.name}æ¥å£ææ¡£ enabled: true # ç¦ç¨swaggeræ¶çéå®åå°å redirect-uri: / ########################微信æ¯ä»ç¸å ³é ç½®######################## wx: pay: appId: wxfab6da18632e28de appSecret: 4ee3b22afa90287834319fc3c1635271 mchId: 1229817002 mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM notifyUrl: https://dmtest.ahapp.net/smartmeeting_interface/web/api/wxPayNotify keyPath: /usr/local/apiclient_cert.p12 tencent: map: remoteHost: https://apis.map.qq.com appKey: 3AYBZ-I5R3V-2BVP3-UWBDQ-ETBM5-B2BBQ ########################宿¶å¼å¯é ç½®######################## timing: true des_pwd: 123456SDFKDJF server/system_gateway/src/main/resources/application-test.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ spring: # æ°æ®æºé ç½® datasource: url: jdbc:mysql://sh-cdb-aiskr3vy.sql.tencentcdb.com:62443/antaiwuliu?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: doumee password: rtjgfEr@&0c0m driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource knife4j: enable: true basic: enable: true username: admin password: test@168.com debug_model: true captcha_check: false # Swaggeré ç½® swagger: host: title: ${project.name}æ¥å£ææ¡£ description: ${project.name}æ¥å£ææ¡£ enabled: true # ç¦ç¨swaggeræ¶çéå®åå°å redirect-uri: / server/system_gateway/src/main/resources/application.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,79 @@ # 项ç®ä¿¡æ¯é ç½® project: name: è®¿å®¢ç³»ç» version: 1.0.0 env: development # env: production spring: application: name: system_gateway profiles: active: dev # JSONè¿åé ç½® jackson: # é»è®¤æ¶åº time-zone: GMT+8 # é»è®¤æ¥ææ ¼å¼å date-format: yyyy-MM-dd HH:mm:ss servlet: multipart: max-file-size: 200MB max-request-size: 200MB enabled: true main: allow-circular-references: true # MyBatisé ç½® mybatis-plus: mapper-locations: classpath*:/mappers/**/*.xml configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # ç¼åå 容设置 cache: session: # ä¼è¯è¿ææ¶é¿(s) expire: 18000 captcha: # éªè¯ç è¿ææ¶é¿(s) expire: 300 # è·è¸ªæ¥å¿ trace: # å¼å¯æºè½è·è¸ªæ¨¡å¼ smart: true # æé¤è·è¸ªçURLæ£å exclude-patterns: .+/list[a-zA-Z0-9\-\_]*$, .+/tree[a-zA-Z0-9\-\_]*$, .+/page[a-zA-Z0-9\-\_]*$, .+/all[a-zA-Z0-9\-\_]*$, /swagger-resources.* # æ¥å¿é ç½® logback: level: INFO appender: ${project.env} # daoå±çæ¥å¿è®¾ç½®ä¸ºdebugï¼æ¹ä¾¿æ¥çsql logging: level: com.doumee.dao: debug knife4j: enable: true basic: enable: true username: admin password: 111111 # WEBæå¡å¨é ç½® server: compression: enabled: true mime-types: application/json port: 10010 tomcat: max-swallow-size: -1 servlet: session: timeout: PT3H #表示12å°æ¶ server/system_gateway/src/main/resources/bootstrap.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,43 @@ spring: application: name: system_gateway cloud: nacos: server-addr: http://175.27.187.84:8848 #é ç½®Nacoså°å username: nacos password: nacos discovery: server-addr: http://175.27.187.84:8848 #é ç½®Nacoså°å namespace: dmvisit username: nacos password: nacos gateway: discovery: locator: #å¼å¯ä»æ³¨åä¸å¿å¨æå建路ç±çåè½ï¼å©ç¨å¾®æå¡åè¿è¡è·¯ç± enabled: true #å¼å¯å°åéªè¯ï¼é»è®¤feignæ ¹æ®æå¡åæ¥æ¾é½æ¯ç¨çå ¨å¤§å lower-case-service-id: true routes: - id: meetingAdmin uri: lb://meetingAdmin # uri: http://localhost:10013 # æè¨,è·¯å¾ç¸å¹é çè¿è¡è·¯ç± predicates: - Path=/meetingAdmin/** filters: - StripPrefix=1 - id: visitsAdmin uri: lb://visitsAdmin # uri: http://localhost:10028 # æè¨,è·¯å¾ç¸å¹é çè¿è¡è·¯ç± predicates: - Path=/visitsAdmin/** filters: - StripPrefix=1 management: endpoints: web: exposure: include: "*" server/visits/admin_timer/src/main/resources/application.yml
@@ -23,6 +23,8 @@ max-file-size: 200MB max-request-size: 200MB enabled: true main: allow-circular-references: true # MyBatisé ç½® mybatis-plus: mapper-locations: classpath*:/mappers/**/*.xml server/visits/dmvisit_admin/src/main/java/com/doumee/VisitsAdminApplication.java
ÎļþÃû´Ó server/visits/dmvisit_admin/src/main/java/com/doumee/AdminApplication.java ÐÞ¸Ä @@ -4,6 +4,7 @@ import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.context.ApplicationContext; import org.springframework.scheduling.annotation.EnableAsync; @@ -16,10 +17,11 @@ @EnableAsync @SpringBootApplication @MapperScan("com.doumee.dao.*") public class AdminApplication { @EnableDiscoveryClient public class VisitsAdminApplication { public static void main(String[] args) { ApplicationContext context = SpringApplication.run(AdminApplication.class); ApplicationContext context = SpringApplication.run(VisitsAdminApplication.class); context.getEnvironment(); } } server/visits/dmvisit_admin/src/main/java/com/doumee/api/cloud/CloudCarsController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,106 @@ package com.doumee.api.cloud; import com.doumee.api.BaseController; import com.doumee.core.annotation.excel.ExcelExporter; import com.doumee.core.annotation.pr.PreventRepeat; import com.doumee.core.model.ApiResponse; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.dao.business.model.Cars; import com.doumee.service.business.CarsService; import com.doumee.service.business.impl.hksync.fhk.HkSyncVehicleFromHKServiceImpl; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; /** * @author æ±è¹è¹ * @date 2023/11/30 15:33 */ @Api(tags = "è½¦è¾æ¥å£") @RestController @RequestMapping("/cloud/cars") public class CloudCarsController extends BaseController { @Autowired private CarsService carsService; @Autowired private HkSyncVehicleFromHKServiceImpl hkSyncVehicleFromHKService; @PreventRepeat @ApiOperation("æµè¯ç½ç®¡") @GetMapping("/test") public ApiResponse test() { return ApiResponse.success("è®¿å®¢ç®¡çæµè¯æå"); } @PreventRepeat @ApiOperation("æ°å»º") @PostMapping("/create") @RequiresPermissions("business:cars:create") public ApiResponse create(@RequestBody Cars cars) { return ApiResponse.success(carsService.create(cars)); } @ApiOperation("æ ¹æ®IDå é¤") @GetMapping("/delete/{id}") @RequiresPermissions("business:cars:delete") public ApiResponse deleteById(@PathVariable Integer id) { carsService.deleteById(id); return ApiResponse.success(null); } @ApiOperation("æ¹éå é¤") @GetMapping("/delete/batch") @RequiresPermissions("business:cars:delete") public ApiResponse deleteByIdInBatch(@RequestParam String ids) { String [] idArray = ids.split(","); List<Integer> idList = new ArrayList<>(); for (String id : idArray) { idList.add(Integer.valueOf(id)); } carsService.deleteByIdInBatch(idList); return ApiResponse.success(null); } @ApiOperation("æ ¹æ®IDä¿®æ¹") @PostMapping("/updateById") @RequiresPermissions("business:cars:update") public ApiResponse updateById(@RequestBody Cars cars) { carsService.updateById(cars); return ApiResponse.success(null); } @ApiOperation("å ¨éåæ¥è½¦è¾ä¿¡æ¯") @PostMapping("/sync") @RequiresPermissions("business:cars:sync") public ApiResponse sync(@RequestBody Cars cars) { hkSyncVehicleFromHKService.syncVehicleData(); return ApiResponse.success(null); } @ApiOperation("å页æ¥è¯¢") @PostMapping("/page") @RequiresPermissions("business:cars:query") public ApiResponse<PageData<Cars>> findPage (@RequestBody PageWrap<Cars> pageWrap) { return ApiResponse.success(carsService.findPage(pageWrap)); } @ApiOperation("导åºExcel") @PostMapping("/exportExcel") @RequiresPermissions("business:cars:exportExcel") public void exportExcel (@RequestBody PageWrap<Cars> pageWrap, HttpServletResponse response) { ExcelExporter.build(Cars.class).export(carsService.findPage(pageWrap).getRecords(), "车è¾ä¿¡æ¯è¡¨", response); } @ApiOperation("æ ¹æ®IDæ¥è¯¢") @GetMapping("/{id}") @RequiresPermissions("business:cars:query") public ApiResponse findById(@PathVariable Integer id) { return ApiResponse.success(carsService.findById(id)); } } server/visits/dmvisit_admin/src/main/java/com/doumee/config/shiro/ShiroConfig.java
@@ -99,6 +99,7 @@ map.put("/system/initCompany", "anon"); map.put("/system/logout", "anon"); map.put("/common/captcha", "anon"); map.put("/cloud/**", "anon"); map.put("/statistics/**", "anon"); map.put("/business/hksync/push/**", "anon"); map.put("/business/member/empowerByList", "anon"); server/visits/dmvisit_admin/src/main/resources/META-INF/MANIFEST.MF
@@ -1,3 +1,3 @@ Manifest-Version: 1.0 Main-Class: com.doumee.AdminApplication Main-Class: com.doumee.VisitsAdminApplication server/visits/dmvisit_admin/src/main/resources/application.yml
@@ -7,8 +7,8 @@ spring: # application: # name: doumeevisit application: name: visitsAdmin profiles: active: dev @@ -23,6 +23,8 @@ max-file-size: 200MB max-request-size: 200MB enabled: true main: allow-circular-references: true # MyBatisé ç½® mybatis-plus: mapper-locations: classpath*:/mappers/**/*.xml server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,30 @@ spring: application: name: visitsAdmin cloud: loadbalancer: enabled: true nacos: # 使ç¨Nacosè´è½½çç¥ï¼å¼åç¯å¢å¯ä»¥å©ç¨å°±è¿è®¿é®æºå¶å®å访é®ï¼å¯å¨åæ°å¦ä¸ï¼ # -Dspring.cloud.nacos.discovery.cluster-name=èªå®ä¹ enabled: true cache: # ææ¶å ³éç¼å enabled: false nacos: server-addr: http://175.27.187.84:8848 #é ç½®Nacoså°å username: nacos password: nacos # config: # server-addr: http://175.27.187.84:8848 #é ç½®Nacoså°å # namespace: dmvisit # username: nacos # password: nacos # file-extension: yaml # group: dev # data-id: com.doumee.meeting.admin discovery: server-addr: http://175.27.187.84:8848 #é ç½®Nacoså°å namespace: dmvisit username: nacos password: nacos server/visits/dmvisit_screen/src/main/resources/application.yml
@@ -23,6 +23,8 @@ max-file-size: 200MB max-request-size: 200MB enabled: true main: allow-circular-references: true # MyBatisé ç½® mybatis-plus: mapper-locations: classpath*:/mappers/**/*.xml server/visits/dmvisit_web/src/main/resources/application.yml
@@ -23,6 +23,8 @@ max-file-size: 200MB max-request-size: 200MB enabled: true main: allow-circular-references: true # MyBatisé ç½® mybatis-plus: mapper-locations: classpath*:/mappers/**/*.xml server/visits/openapi/src/main/resources/application.yml
@@ -22,6 +22,8 @@ max-file-size: 200MB max-request-size: 200MB enabled: true main: allow-circular-references: true # MyBatisé ç½® mybatis-plus: mapper-locations: classpath*:/mappers/**/*.xml