diff --git a/model2d3d-viewer-back-common/src/main/resources/config/language/msg/msg_cn.yml b/model2d3d-viewer-back-common/src/main/resources/config/language/msg/msg_cn.yml index cc5537a..55c301f 100644 --- a/model2d3d-viewer-back-common/src/main/resources/config/language/msg/msg_cn.yml +++ b/model2d3d-viewer-back-common/src/main/resources/config/language/msg/msg_cn.yml @@ -36,4 +36,5 @@ msgcn: oldPwdError: 旧密码错误 newPwdSameOld: 新密码不得与旧密码相同 companyLimit: 最多可创建15个企业 - buildingNameHasExisted: 楼宇已存在 \ No newline at end of file + buildingNameHasExisted: 楼宇名称已存在 + buildingUidHasExisted: 楼宇记号已存在 \ No newline at end of file diff --git a/model2d3d-viewer-back-common/src/main/resources/config/language/msg/msg_en.yml b/model2d3d-viewer-back-common/src/main/resources/config/language/msg/msg_en.yml index e2701a1..6be0aff 100644 --- a/model2d3d-viewer-back-common/src/main/resources/config/language/msg/msg_en.yml +++ b/model2d3d-viewer-back-common/src/main/resources/config/language/msg/msg_en.yml @@ -36,4 +36,5 @@ msgen: oldPwdError: 旧密码错误 newPwdSameOld: 新密码不得与旧密码相同 companyLimit: 最多可创建15个企业 - buildingNameHasExisted: Building already exists. \ No newline at end of file + buildingNameHasExisted: Building already exists. + buildingUidHasExisted: 楼宇记号已存在 \ No newline at end of file diff --git a/model2d3d-viewer-back-common/src/main/resources/config/language/msg/msg_jp.yml b/model2d3d-viewer-back-common/src/main/resources/config/language/msg/msg_jp.yml index 681d55b..b8ee747 100644 --- a/model2d3d-viewer-back-common/src/main/resources/config/language/msg/msg_jp.yml +++ b/model2d3d-viewer-back-common/src/main/resources/config/language/msg/msg_jp.yml @@ -36,4 +36,5 @@ msgjp: oldPwdError: 旧パスワードエラー newPwdSameOld: 注:旧パスワードと同じものを使用しないでください companyLimit: 最大15のエンタープライズを作成可能 - buildingNameHasExisted: 当該ビルは既に存在しています。 \ No newline at end of file + buildingNameHasExisted: 該当ビル名がすでにある + buildingUidHasExisted: 楼宇记号已存在 \ No newline at end of file diff --git a/model2d3d-viewer-back-controller/src/main/java/com/model2d3d/viewer/back/configurator/interceptor/AccessApiInterceptor.java b/model2d3d-viewer-back-controller/src/main/java/com/model2d3d/viewer/back/configurator/interceptor/AccessApiInterceptor.java index bfe2261..eea71cc 100644 --- a/model2d3d-viewer-back-controller/src/main/java/com/model2d3d/viewer/back/configurator/interceptor/AccessApiInterceptor.java +++ b/model2d3d-viewer-back-controller/src/main/java/com/model2d3d/viewer/back/configurator/interceptor/AccessApiInterceptor.java @@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSONObject; import com.model2d3d.viewer.back.common.response.ResponseCode; import com.model2d3d.viewer.back.service.AccountService; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -13,8 +15,6 @@ import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.resource.ResourceHttpRequestHandler; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.lang.reflect.Method; public class AccessApiInterceptor implements HandlerInterceptor { @@ -27,6 +27,7 @@ public class AccessApiInterceptor implements HandlerInterceptor { @Autowired private AccountService accountService; + @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if(handler instanceof HandlerMethod) { HandlerMethod handlerMethod = (HandlerMethod) handler; diff --git a/model2d3d-viewer-back-controller/src/main/java/com/model2d3d/viewer/back/controller/BuildingController.java b/model2d3d-viewer-back-controller/src/main/java/com/model2d3d/viewer/back/controller/BuildingController.java index fc07c3d..9085520 100644 --- a/model2d3d-viewer-back-controller/src/main/java/com/model2d3d/viewer/back/controller/BuildingController.java +++ b/model2d3d-viewer-back-controller/src/main/java/com/model2d3d/viewer/back/controller/BuildingController.java @@ -16,6 +16,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import java.io.FileNotFoundException; +import java.util.List; import jakarta.servlet.http.HttpServletResponse; @@ -61,7 +62,6 @@ public class BuildingController { * @param LanguageType language type (0: Chinese, 1: English, 2: Japanese) * @return a SimpleDataResponse indicating the result of the add operation */ - @AccessRequired @Operation(summary = "Add a building") @RequestMapping(value = "/add", method = RequestMethod.POST) public SimpleDataResponse add( @@ -149,4 +149,16 @@ public class BuildingController { return pageResponse; } + + @Operation(summary = "Get buildings bound to the user", description = "获取用户绑定的楼宇") + @RequestMapping(value = "/getBoundBuildings", method = RequestMethod.POST) + public SimpleDataResponse> getBoundBuildings( + @Parameter(name = "LoginName", description = "Login name", required = true, schema = @Schema(defaultValue = "admin")) @RequestHeader(required = true) String LoginName, + @Parameter(name = "AccessToken", description = "Authentication token", required = true) @RequestHeader(required = true) String AccessToken, + @Parameter(name="UserId",description="用户ID",required=true,schema = @Schema(defaultValue = "1")) @RequestHeader(required=true) String UserId, + @Parameter(name="CompanyId",description="所属企业ID",required=false,schema = @Schema(defaultValue = "1")) @RequestHeader(required=true) String CompanyId, + @Parameter(name = "LanguageType", description = "Language type", required = true, schema = @Schema(defaultValue = "2")) @RequestHeader(required = true) Integer LanguageType) { + return buildingService.getBoundBuildings(UserId, CompanyId, LanguageType); + } + } diff --git a/model2d3d-viewer-back-controller/src/main/resources/config/application.properties b/model2d3d-viewer-back-controller/src/main/resources/config/application.properties index 6ece9cf..62cdcfa 100644 --- a/model2d3d-viewer-back-controller/src/main/resources/config/application.properties +++ b/model2d3d-viewer-back-controller/src/main/resources/config/application.properties @@ -70,15 +70,15 @@ spring.redis.lettuce.shutdown-timeout=100 #邮件发送信息 -mail.smtp.host=email-smtp.ap-northeast-1.amazonaws.com +mail.smtp.host=smtp.163.com mail.smtp.port=465 mail.smtp.auth=true mail.smtp.ssl=true -mail.sender.username=AKIAVRXFMB43Z4Q6WGZN +mail.sender.username=style202206@163.com mail.sender.password_encrypted=true -mail.sender.password=a/52R0rao7ksRMvl1j17fVEmPCw7gC9OreHDqWOE+S7sgmoQT0YgoLRJqOlJqX7e -mail.sender.sendername=datacenter-info -mail.sender.from=alert@ttkdatatechbuild.com +mail.sender.password=hVndud7spllTv1zuqPHPBSOk5mmvtET+ +mail.sender.sendername=admin +mail.sender.from=style202206@163.com #邮件通知服务开关 mail.send.switch=true diff --git a/model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/MyBatisPlusGenerator.java b/model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/MyBatisPlusGenerator.java index 835f005..80a0fc7 100644 --- a/model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/MyBatisPlusGenerator.java +++ b/model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/MyBatisPlusGenerator.java @@ -53,15 +53,19 @@ public class MyBatisPlusGenerator { "login_history", "basic_menu" ); - // uuid算法主键的表 + // 雪花算法主键的表 List assignIdTables = Arrays.asList( - "basic_building", + "basic_building" + ); + // uuid算法主键的表 + List assignUUIdTables = Arrays.asList( "basic_role", "basic_company", "basic_user" ); // 没有主键的表 List noIdTables = Arrays.asList( + "user_building_relation", "basic_role_menu_relation", "basic_role_user_relation" ); @@ -71,10 +75,13 @@ public class MyBatisPlusGenerator { autoIncrementTables, IdType.AUTO); generateForTables(dataSourceConfig, globalConfig, packageConfig, - assignIdTables, IdType.ASSIGN_UUID); + assignIdTables, IdType.ASSIGN_ID); + + generateForTables(dataSourceConfig, globalConfig, packageConfig, + assignUUIdTables, IdType.ASSIGN_UUID); generateForTables(dataSourceConfig, globalConfig, packageConfig, - noIdTables, IdType.NONE); + noIdTables, null); } private static void generateForTables(DataSourceConfig dataSourceConfig, @@ -82,6 +89,10 @@ public class MyBatisPlusGenerator { PackageConfig packageConfig, List tables, IdType idType) { + if (tables == null || tables.isEmpty()){ + System.out.println("表名不能为空"); + return; + } StrategyConfig strategyConfig = GeneratorBuilder.strategyConfigBuilder() .addInclude(tables) diff --git a/model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/auto/UserBuildingRelationMapper.java b/model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/auto/UserBuildingRelationMapper.java new file mode 100644 index 0000000..c71fe51 --- /dev/null +++ b/model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/auto/UserBuildingRelationMapper.java @@ -0,0 +1,17 @@ +package com.model2d3d.viewer.back.dao.auto; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.model2d3d.viewer.back.model.UserBuildingRelation; + +/** + *

+ * Mapper 接口 + *

+ * + * @author jwy + * @since + */ +public interface UserBuildingRelationMapper extends BaseMapper { + +} + diff --git a/model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/ex/BasicBuildingMapperExt.java b/model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/ex/BasicBuildingMapperExt.java index 38d8f72..29b91ba 100644 --- a/model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/ex/BasicBuildingMapperExt.java +++ b/model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/ex/BasicBuildingMapperExt.java @@ -21,7 +21,9 @@ import java.util.Map; @Mapper public interface BasicBuildingMapperExt extends BasicBuildingMapper { - int checkExist(OptBuildingParams optBuildingParams); + Map checkExist(OptBuildingParams optBuildingParams); IPage getListPage(Page page, @Param("params") BuildingSearchParams pageSearchParam); + + List getBoundBuildings(@Param("userId") String userId); } diff --git a/model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/ex/UserBuildingRelationMapperExt.java b/model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/ex/UserBuildingRelationMapperExt.java new file mode 100644 index 0000000..bb326cc --- /dev/null +++ b/model2d3d-viewer-back-dao/src/main/java/com/model2d3d/viewer/back/dao/ex/UserBuildingRelationMapperExt.java @@ -0,0 +1,11 @@ +package com.model2d3d.viewer.back.dao.ex; + +import com.model2d3d.viewer.back.dao.auto.UserBuildingRelationMapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.Map; + +@Mapper +public interface UserBuildingRelationMapperExt extends UserBuildingRelationMapper { + +} diff --git a/model2d3d-viewer-back-dao/src/main/resources/mappers/auto/BasicCompanyMapper.xml b/model2d3d-viewer-back-dao/src/main/resources/mappers/auto/BasicCompanyMapper.xml index a94a5a5..816962c 100644 --- a/model2d3d-viewer-back-dao/src/main/resources/mappers/auto/BasicCompanyMapper.xml +++ b/model2d3d-viewer-back-dao/src/main/resources/mappers/auto/BasicCompanyMapper.xml @@ -10,11 +10,12 @@ + - id, parent_id, company_name, flag, create_time, modify_time + id, parent_id, company_name, flag, create_time, modify_time, apikey diff --git a/model2d3d-viewer-back-dao/src/main/resources/mappers/auto/UserBuildingRelationMapper.xml b/model2d3d-viewer-back-dao/src/main/resources/mappers/auto/UserBuildingRelationMapper.xml new file mode 100644 index 0000000..c200896 --- /dev/null +++ b/model2d3d-viewer-back-dao/src/main/resources/mappers/auto/UserBuildingRelationMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + user_id, building_id, create_time + + + diff --git a/model2d3d-viewer-back-dao/src/main/resources/mappers/ex/BasicBuildingMapperExt.xml b/model2d3d-viewer-back-dao/src/main/resources/mappers/ex/BasicBuildingMapperExt.xml index e783440..a995323 100644 --- a/model2d3d-viewer-back-dao/src/main/resources/mappers/ex/BasicBuildingMapperExt.xml +++ b/model2d3d-viewer-back-dao/src/main/resources/mappers/ex/BasicBuildingMapperExt.xml @@ -3,9 +3,12 @@ - SELECT - COUNT(1) + CASE + WHEN name = #{buildingName} THEN 'buildingName' + WHEN unique_identification = #{uniqueIdentification} THEN 'uniqueIdentification' + END AS conflict_field FROM basic_building WHERE @@ -26,7 +29,8 @@ bbuilding.name buildingName, bbuilding.address, bbuilding.unique_identification, - bbuilding.dimensional_url + bbuilding.dimensional_url, + bcomp.company_name FROM basic_building bbuilding INNER JOIN basic_company bcomp ON bcomp.id = bbuilding.company_id @@ -39,6 +43,31 @@ AND bbuilding.name LIKE CONCAT('%',#{params.buildingName},'%') + ORDER BY bbuilding.create_time DESC, bbuilding.building_id + + + + diff --git a/model2d3d-viewer-back-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml b/model2d3d-viewer-back-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml index 904162c..97c5103 100644 --- a/model2d3d-viewer-back-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml +++ b/model2d3d-viewer-back-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml @@ -26,12 +26,27 @@ buser.mobile_number mobileNumber, buser.create_time createTime, any_value(brole.id) roleId, - any_value(brole.role_name) roleName + any_value(brole.role_name) roleName, + ubrelation.buildingIds, + ubrelation.buildingNames FROM basic_user buser INNER JOIN basic_company bcom ON buser.company_id = bcom.id INNER JOIN basic_role_user_relation brur ON brur.user_id = buser.id INNER JOIN basic_role brole ON brur.role_id = brole.id + LEFT JOIN + ( + SELECT + user_building_relation.user_id, + GROUP_CONCAT(user_building_relation.building_id SEPARATOR ',') AS buildingIds, + GROUP_CONCAT(basic_building.name SEPARATOR ',') AS buildingNames + FROM + user_building_relation + INNER JOIN basic_building ON basic_building.building_id = user_building_relation.building_id + WHERE basic_building.flag != 1 + GROUP BY + user_building_relation.user_id + ) ubrelation ON buser.id = ubrelation.user_id WHERE buser.flag != 1 AND brole.flag != 1 AND buser.company_id IN #{item} @@ -53,7 +68,7 @@ GROUP_CONCAT(bmenu.id) FROM - + basic_menu bmenu WHERE bmenu.flag != 1 diff --git a/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/building/BuildingSearchParams.java b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/building/BuildingSearchParams.java index 3355e3b..160edab 100644 --- a/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/building/BuildingSearchParams.java +++ b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/building/BuildingSearchParams.java @@ -20,6 +20,6 @@ public class BuildingSearchParams extends BaseSearchParams { private String buildingIds; @Schema(description ="Building IDs", hidden = true) - private List buildingIdList; + private List buildingIdList; } diff --git a/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/building/DeleteBuildingParams.java b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/building/DeleteBuildingParams.java index eb72696..2fa72e2 100644 --- a/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/building/DeleteBuildingParams.java +++ b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/building/DeleteBuildingParams.java @@ -15,6 +15,6 @@ public class DeleteBuildingParams{ @NotEmpty(message = "1001") @Schema(description ="Building IDs, array", example = "[\"acbdef2738967\",\"abcc556587\"]") - private List buildingIds; + private List buildingIds; } diff --git a/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/building/OptBuildingParams.java b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/building/OptBuildingParams.java index 21f5190..108a79c 100644 --- a/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/building/OptBuildingParams.java +++ b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/building/OptBuildingParams.java @@ -13,9 +13,10 @@ import org.hibernate.validator.constraints.Length; public class OptBuildingParams{ @Schema(description ="Building unique identifier ID, not required for new additions", example = "2738967") - private String buildingId; + private Long buildingId; - @Schema(description ="Company ID", example = "2738967", hidden = true) + @NotBlank(message = "1001") + @Schema(description ="Company ID", example = "2738967") private String companyId; @NotBlank(message = "1001") diff --git a/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/company/OptCompanyParams.java b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/company/OptCompanyParams.java index b56f7e6..a3e7606 100644 --- a/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/company/OptCompanyParams.java +++ b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/company/OptCompanyParams.java @@ -23,6 +23,11 @@ public class OptCompanyParams{ @Length(max = 500,message = "1002") @Schema(description ="企业名称",example = "testAccount1", required = true) private String companyName; + + @NotBlank(message = "1001") + @Length(max = 255,message = "1002") + @Schema(description ="apikey",example = "173976ba6fe9598dabc76", required = true) + private String apikey; } diff --git a/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/user/OptUserParam.java b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/user/OptUserParam.java index 36f34da..16dec8d 100644 --- a/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/user/OptUserParam.java +++ b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/dto/user/OptUserParam.java @@ -3,10 +3,13 @@ package com.model2d3d.viewer.back.dto.user; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; import lombok.Getter; import lombok.Setter; import org.hibernate.validator.constraints.Length; +import java.util.List; + /** * @author zhc * @time 2022年6月14日10:56:38 @@ -36,9 +39,13 @@ public class OptUserParam { @Schema(description ="手机号码,这里要加上国际区号,比如日本是+81,传给后台的就是+81-08041165856,中国是+86,传给后台的就是+86-18841165856",example = "+81-08041165856", required = false) private String mobileNumber; - - @Schema(description ="所属企业ID",example = "2", hidden = true) + + @NotBlank(message = "1001") + @Schema(description ="所属企业ID",example = "2") private String companyId; + + @Schema(description ="Building IDs, array", example = "[11111,2222222]") + private List buildingIds; } diff --git a/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/model/BasicBuilding.java b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/model/BasicBuilding.java index 4bd99cd..2624555 100644 --- a/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/model/BasicBuilding.java +++ b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/model/BasicBuilding.java @@ -17,9 +17,9 @@ import java.io.Serializable; @Schema(description = "楼宇表") public class BasicBuilding implements Serializable { - @TableId(value = "building_id", type = IdType.ASSIGN_UUID) + @TableId(value = "building_id", type = IdType.ASSIGN_ID) @Schema(description = "") - private String buildingId; + private Long buildingId; @TableField("company_id") diff --git a/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/model/BasicCompany.java b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/model/BasicCompany.java index 4eb8701..861deda 100644 --- a/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/model/BasicCompany.java +++ b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/model/BasicCompany.java @@ -42,5 +42,9 @@ public class BasicCompany implements Serializable { @Schema(description = "") private Long modifyTime; + @TableField("apikey") + @Schema(description = "") + private String apikey; + } diff --git a/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/model/UserBuildingRelation.java b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/model/UserBuildingRelation.java new file mode 100644 index 0000000..9d7eaed --- /dev/null +++ b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/model/UserBuildingRelation.java @@ -0,0 +1,34 @@ +package com.model2d3d.viewer.back.model; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("user_building_relation") +@Schema(description = "") +public class UserBuildingRelation implements Serializable { + + + @TableField("user_id") + @Schema(description = "") + private String userId; + + @TableField("building_id") + @Schema(description = "") + private Long buildingId; + + @TableField("create_time") + @Schema(description = "") + private Long createTime; + + +} diff --git a/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/vo/building/BuildingPageVO.java b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/vo/building/BuildingPageVO.java index b6241c0..ddf3606 100644 --- a/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/vo/building/BuildingPageVO.java +++ b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/vo/building/BuildingPageVO.java @@ -15,9 +15,12 @@ public class BuildingPageVO{ @Schema(description ="Building unique identifier ID, not required for new additions", example = "2738967") private String buildingId; - @Schema(description ="Company ID", example = "2738967", hidden = true) + @Schema(description ="Company ID", example = "2738967", required = true) private String companyId; + @Schema(description ="Company name", example = "testCompany", required = true) + private String companyName; + @Schema(description ="Building name", example = "testBuilding1", required = true) private String buildingName; diff --git a/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/vo/user/UserPageDTO.java b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/vo/user/UserPageDTO.java index 8e8ad45..d42d66a 100644 --- a/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/vo/user/UserPageDTO.java +++ b/model2d3d-viewer-back-model/src/main/java/com/model2d3d/viewer/back/vo/user/UserPageDTO.java @@ -39,5 +39,11 @@ public class UserPageDTO { @Schema(description ="创建时间",example = "1678990326897", required = false) private Long createTime; + + @Schema(description ="绑定的楼宇id",example = "1111,222222") + private String buildingIds; + + @Schema(description ="绑定的楼宇名称",example = "1111name,222222name") + private String buildingNames; } diff --git a/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/BuildingService.java b/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/BuildingService.java index 9d9e816..c43dfcf 100644 --- a/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/BuildingService.java +++ b/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/BuildingService.java @@ -27,4 +27,5 @@ public interface BuildingService { IPage getListPage(BuildingSearchParams pageSearchParam, String companyId, String userId, Integer languageType, Integer uTCOffset); + SimpleDataResponse> getBoundBuildings(String userId, String companyId, Integer languageType); } diff --git a/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/common/CommonOpt.java b/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/common/CommonOpt.java index 2f72972..a7dbb52 100644 --- a/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/common/CommonOpt.java +++ b/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/common/CommonOpt.java @@ -65,7 +65,7 @@ public class CommonOpt { public List filterCompanyIds(String targetCompanyId, String needProcessedCompanyIds) { List selfAndSubCompanyList = getSelfAndSubCompanyId(targetCompanyId); if (StringUtils.isNotBlank(needProcessedCompanyIds)) { - List needProcessedCompanyIdList = CommonUtil.commaStr2LongList(needProcessedCompanyIds); + List needProcessedCompanyIdList = CommonUtil.commaStr2StrList(needProcessedCompanyIds); return needProcessedCompanyIdList.stream().filter(selfAndSubCompanyList::contains).collect(Collectors.toList()); } return null; diff --git a/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/AccountServiceImpl.java b/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/AccountServiceImpl.java index f9b04ec..d42ecd2 100644 --- a/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/AccountServiceImpl.java +++ b/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/AccountServiceImpl.java @@ -223,7 +223,7 @@ public class AccountServiceImpl implements AccountService { // logger.info("Parameter [captcha] check failed."); // } - if (ValidatorUtil.validParameterAlert(loginParam.getLoginname(), "loginname", true, 1, 20, 4, errorMap) > 0) { + if (ValidatorUtil.validParameterAlert(loginParam.getLoginname(), "loginname", true, 1, 50, 4, errorMap) > 0) { logger.info("Parameter [account] check failed."); } if (ValidatorUtil.validParameterAlert(loginParam.getPassword(), "password", true, 1, 20, 4, errorMap) > 0) { diff --git a/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/BuildingServiceImpl.java b/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/BuildingServiceImpl.java index c485781..c1e7921 100644 --- a/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/BuildingServiceImpl.java +++ b/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/BuildingServiceImpl.java @@ -27,6 +27,9 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.util.ObjectUtils; +import java.util.List; +import java.util.Map; + /** * * @author jwy-style @@ -67,7 +70,7 @@ public class BuildingServiceImpl implements BuildingService { try { // Check company association to prevent unauthorized operations on other companies' data // if (ObjectUtils.isEmpty(optBuildingParams.getCompanyId())) { - optBuildingParams.setCompanyId(companyId); +// optBuildingParams.setCompanyId(companyId); // } else { // checkCompany(optBuildingParams, languageType, companyId); // } @@ -81,7 +84,6 @@ public class BuildingServiceImpl implements BuildingService { long currentUnix = System.currentTimeMillis(); BasicBuilding basicBuilding = new BasicBuilding(); BeanUtils.copyProperties(optBuildingParams, basicBuilding); - basicBuilding.setCompanyId(companyId); basicBuilding.setBuildingId(null); // Ensure buildingId is null for new entity creation basicBuilding.setName(optBuildingParams.getBuildingName()); basicBuilding.setCreateTime(currentUnix); @@ -109,16 +111,17 @@ public class BuildingServiceImpl implements BuildingService { checkExist(optBuildingParams, languageType); } - /** - * Checks if a building with the same name already exists in the database. - * Throws a MsgCodeException if the building name is already taken. - * - * @param optBuildingParams The parameters for creating the building. - * @param languageType The language type for error messages. - */ + private void checkExist(OptBuildingParams optBuildingParams, Integer languageType) { - if (basicBuildingMapperExt.checkExist(optBuildingParams) > 0) { - throw new MsgCodeException(msgLanguageChange.getParameterMapByCode(languageType, "buildingNameHasExisted")); + Map result = basicBuildingMapperExt.checkExist(optBuildingParams); + if (result != null && result.containsKey("conflict_field")) { + String conflictField = result.get("conflict_field"); + switch (conflictField) { + case "buildingName": + throw new MsgCodeException(msgLanguageChange.getParameterMapByCode(languageType, "buildingNameHasExisted")); + case "uniqueIdentification": + throw new MsgCodeException(msgLanguageChange.getParameterMapByCode(languageType, "buildingUidHasExisted")); + } } } @@ -143,6 +146,7 @@ public class BuildingServiceImpl implements BuildingService { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(BasicBuilding::getBuildingId, optBuildingParams.getBuildingId()) + .set(BasicBuilding::getCompanyId, optBuildingParams.getCompanyId()) .set(BasicBuilding::getName, optBuildingParams.getBuildingName()) .set(BasicBuilding::getAddress, optBuildingParams.getAddress()) .set(BasicBuilding::getUniqueIdentification, optBuildingParams.getUniqueIdentification()) @@ -204,5 +208,11 @@ public class BuildingServiceImpl implements BuildingService { return basicBuildingMapperExt.getListPage(page, pageSearchParam); } + @Override + public SimpleDataResponse> getBoundBuildings(String userId, String companyId, Integer languageType) { + List result = basicBuildingMapperExt.getBoundBuildings(userId); + return SimpleDataResponse.success(result); + } + } diff --git a/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/CompanyServiceImpl.java b/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/CompanyServiceImpl.java index f7dcc1a..09d87a5 100644 --- a/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/CompanyServiceImpl.java +++ b/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/CompanyServiceImpl.java @@ -187,12 +187,14 @@ public class CompanyServiceImpl implements CompanyService { if (200 != checkExistResult.getCode()) { return checkExistResult; } - BasicCompany basicCompany = new BasicCompany(); - BeanUtils.copyProperties(optCompanyParams,basicCompany); - basicCompany.setId(optCompanyParams.getCompanyId()); - basicCompany.setParentId(null); - basicCompany.setModifyTime(System.currentTimeMillis()); - basicCompanyMapperExt.updateById(basicCompany); + + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(BasicCompany::getId, optCompanyParams.getCompanyId()) +// .set(BasicCompany::getParentId, optCompanyParams.getParentId()) + .set(BasicCompany::getCompanyName, optCompanyParams.getCompanyName()) + .set(BasicCompany::getApikey, optCompanyParams.getApikey()) + .set(BasicCompany::getModifyTime, System.currentTimeMillis()); + basicCompanyMapperExt.update(null, updateWrapper); return SimpleDataResponse.success(); } catch (Exception e) { diff --git a/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/RoleServiceImpl.java b/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/RoleServiceImpl.java index 29c870c..f684f3f 100644 --- a/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/RoleServiceImpl.java +++ b/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/RoleServiceImpl.java @@ -142,14 +142,17 @@ public class RoleServiceImpl implements RoleService { } long currentUnix = System.currentTimeMillis(); - BasicRole basicRole = new BasicRole(); - BeanUtils.copyProperties(param, basicRole); - basicRole.setId(param.getRoleId()); - basicRole.setModifierId(userId); - basicRole.setModifyTime(currentUnix); - basicRoleMapperExt.updateById(basicRole); + + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(BasicRole::getId, param.getRoleId()) + .set(BasicRole::getCompanyId, param.getCompanyId()) + .set(BasicRole::getRoleName, param.getRoleName()) + .set(BasicRole::getDescription, param.getDescription()) + .set(BasicRole::getModifierId, userId) + .set(BasicRole::getModifyTime, currentUnix); + basicRoleMapperExt.update(null, updateWrapper); - insertRoleMenuRelation(userId, currentUnix, basicRole.getId(), param.getMenuIds()); + insertRoleMenuRelation(userId, currentUnix, param.getRoleId(), param.getMenuIds()); return SimpleDataResponse.success(); } catch (Exception e) { diff --git a/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/UserServiceImpl.java b/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/UserServiceImpl.java index f00e401..d83330b 100644 --- a/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/UserServiceImpl.java +++ b/model2d3d-viewer-back-service/src/main/java/com/model2d3d/viewer/back/service/impl/UserServiceImpl.java @@ -11,6 +11,7 @@ import com.model2d3d.viewer.back.common.response.SimpleDataResponse; import com.model2d3d.viewer.back.dao.ex.BasicCompanyMapperExt; import com.model2d3d.viewer.back.dao.ex.BasicRoleUserRelationMapperExt; import com.model2d3d.viewer.back.dao.ex.BasicUserMapperExt; +import com.model2d3d.viewer.back.dao.ex.UserBuildingRelationMapperExt; import com.model2d3d.viewer.back.dto.user.DeleteUserParam; import com.model2d3d.viewer.back.dto.user.ModifyPassword; import com.model2d3d.viewer.back.dto.user.OptUserParam; @@ -28,6 +29,7 @@ import com.model2d3d.viewer.back.vo.company.CompanyPageDTO; import com.model2d3d.viewer.back.vo.user.UserPageDTO; import java.text.MessageFormat; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; @@ -72,6 +74,8 @@ public class UserServiceImpl implements UserService { private MsgLanguageChange msgLanguageChange; @Autowired private BasicCompanyMapperExt basicCompanyMapperExt; + @Autowired + private UserBuildingRelationMapperExt userBuildingRelationMapperExt; @Override @@ -82,7 +86,7 @@ public class UserServiceImpl implements UserService { param.setLoginName(param.getUsername()); // } // if (!"1".equals(companyId)) {//非顶级账号 - param.setCompanyId(companyId); +// param.setCompanyId(companyId); // } else if (null == param.getCompanyId()) {//admin账号必须能选择企业归属 // return new SimpleDataResponse(ResponseCode.MSG_ERROR, "companyId is required"); // } @@ -113,6 +117,8 @@ public class UserServiceImpl implements UserService { basicUserMapperExt.insert(basicUser); insertUserRoleRelation(userId, currentUnix, basicUser.getId(), param.getRoleId()); + + insertUserBuildingRelation(userId, currentUnix, basicUser.getId(), param.getBuildingIds()); BasicCompany basicCompany = basicCompanyMapperExt.selectById(basicUser.getCompanyId()); @@ -132,6 +138,26 @@ public class UserServiceImpl implements UserService { } } + private void insertUserBuildingRelation(String creatorId, long currentUnix, String userId, List buildingIds) { + // 先删除原有的关联关系 + if (userId != null) { + userBuildingRelationMapperExt.delete(new LambdaQueryWrapper() + .eq(UserBuildingRelation::getUserId, userId)); + } + // 重新插入关联关系 + if (Objects.nonNull(userId) && CollectionUtils.isNotEmpty(buildingIds)) { + List userBuildingRelationList = new ArrayList<>(); + for (Long buildingId : buildingIds){ + UserBuildingRelation userBuildingRelation = new UserBuildingRelation(); + userBuildingRelation.setBuildingId(buildingId); + userBuildingRelation.setUserId(userId); + userBuildingRelation.setCreateTime(currentUnix); + userBuildingRelationList.add(userBuildingRelation); + } + userBuildingRelationMapperExt.insert(userBuildingRelationList); + } + } + private void insertUserRoleRelation(String creatorId, long currentUnix, String userId, String roleId) { // 先删除原有的关联关系 @@ -180,11 +206,11 @@ public class UserServiceImpl implements UserService { // if (StringUtils.isBlank(param.getLoginName())) { param.setLoginName(param.getUsername()); // } - if (!"1".equals(companyId)) {//非顶级账号 - param.setCompanyId(companyId); - } else if (null == param.getCompanyId()) {//admin账号必须能选择企业归属 - return new SimpleDataResponse(ResponseCode.MSG_ERROR, "companyId is required"); - } +// if (!"1".equals(companyId)) {//非顶级账号 +// param.setCompanyId(companyId); +// } else if (null == param.getCompanyId()) {//admin账号必须能选择企业归属 +// return new SimpleDataResponse(ResponseCode.MSG_ERROR, "companyId is required"); +// } //校验参数 SimpleDataResponse checkResult = checkParam(param, languageType); if (200 != checkResult.getCode()) { @@ -211,20 +237,23 @@ public class UserServiceImpl implements UserService { if (checkExist(param) > 0) { return new SimpleDataResponse(ResponseCode.MSG_ERROR, msgLanguageChange.getParameterMapByCode(languageType, "loginNameOrEmailHasExisted")); } + + long currentUnix = System.currentTimeMillis(); + + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(BasicUser::getId, param.getUserId()) + .set(BasicUser::getCompanyId, param.getCompanyId()) + .set(BasicUser::getUsername, param.getUsername()) + .set(BasicUser::getLoginName, param.getLoginName()) + .set(BasicUser::getEmail, param.getEmail()) + .set(BasicUser::getMobileNumber, param.getMobileNumber()) + .set(BasicUser::getModifierId, userId) + .set(BasicUser::getModifyTime, currentUnix); + basicUserMapperExt.update(null, updateWrapper); - long currentUnix = System.currentTimeMillis(); - BasicUser basicUser = new BasicUser(); - BeanUtils.copyProperties(param, basicUser); - basicUser.setId(param.getUserId()); - basicUser.setModifierId(userId); - basicUser.setModifyTime(currentUnix); -// basicUser.setCompanyId(companyId); - if (StringUtils.isBlank(param.getMobileNumber())) { - basicUser.setMobileNumber(""); - } - basicUserMapperExt.updateById(basicUser); - - insertUserRoleRelation(userId, currentUnix, basicUser.getId(), param.getRoleId()); + insertUserRoleRelation(userId, currentUnix, param.getUserId(), param.getRoleId()); + + insertUserBuildingRelation(userId, currentUnix, param.getUserId(), param.getBuildingIds()); return SimpleDataResponse.success(); } catch (Exception e) { diff --git a/model2d3d-viewer-back-util/src/main/java/com/model2d3d/viewer/back/util/CommonUtil.java b/model2d3d-viewer-back-util/src/main/java/com/model2d3d/viewer/back/util/CommonUtil.java index 26eecfb..3d0411d 100644 --- a/model2d3d-viewer-back-util/src/main/java/com/model2d3d/viewer/back/util/CommonUtil.java +++ b/model2d3d-viewer-back-util/src/main/java/com/model2d3d/viewer/back/util/CommonUtil.java @@ -728,7 +728,16 @@ public class CommonUtil { } } - public static List commaStr2LongList(String commaStr) { + public static List commaStr2LongList(String commaStr) { + if (StringUtils.isBlank(commaStr)) { + return Collections.emptyList(); // 如果字符串为空或为null,返回空列表 + } + return Arrays.stream(commaStr.split(",")) + .map(Long::parseLong) // 将每个字符串转换为 Long + .collect(Collectors.toList()); // 收集为 List + } + + public static List commaStr2StrList(String commaStr) { if (StringUtils.isBlank(commaStr)) { return Collections.emptyList(); // 如果字符串为空或为null,返回空列表 }