diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java index d6ca03a428..80100ea470 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java @@ -106,6 +106,8 @@ public enum EpmetErrorCode { OPER_EXTERNAL_APP_AUTH_ERROR(8709, "外部应用认证失败"), OPER_EXTERNAL_CUSTOMER_NOT_EXISTS(8710, "该客户不存在"), OPER_EXTERNAL_APP_EXISTS(8711, "应用已存在"), + OPER_CUSTOMER_FOOTBAR_EXISTS(8712, "footbar已存在"), + OPER_CUSTOMER_FOOTBAR_NOT_FOUND(8713, "footbar不存在"), // 党建声音 前端提示 88段 DRAFT_CONTENT_IS_NULL(8801, "至少需要添加一个段落"), diff --git a/epmet-module/epmet-third/epmet-third-server/pom.xml b/epmet-module/epmet-third/epmet-third-server/pom.xml index c351dcd734..b9b3cde204 100644 --- a/epmet-module/epmet-third/epmet-third-server/pom.xml +++ b/epmet-module/epmet-third/epmet-third-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.0.135 + 0.0.136 com.epmet diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/CustomerFootBarDTO.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/CustomerFootBarDTO.java index 2cc9b89b0e..9a33b3161d 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/CustomerFootBarDTO.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/CustomerFootBarDTO.java @@ -43,6 +43,11 @@ public class CustomerFootBarDTO implements Serializable { */ private String barName; + /** + * 默认的bar名称 + */ + private String defaultBarName; + /** * KEY */ @@ -93,4 +98,6 @@ public class CustomerFootBarDTO implements Serializable { */ private Date updatedTime; + private Boolean display; + } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/CustomerFootBarFormDTO.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/CustomerFootBarFormDTO.java index 1d5218fd4b..d699264d4b 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/CustomerFootBarFormDTO.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/CustomerFootBarFormDTO.java @@ -1,17 +1,92 @@ package com.epmet.dto.form; +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; import lombok.Data; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; @Data public class CustomerFootBarFormDTO { - //@NotBlank(message = "客户ID不能为空") + // 创建footbar的分组 + public interface CreateFootBarGroup extends CustomerClientShowGroup {} + + // 查询footbar列表分组 + public interface ListFootBarGroup {} + + // 更新footbar + public interface UpdateFootBarGroup {} + + // 保存顺序 + public interface SaveOrderGroup {} + + // 明细分组 + public interface FootBarDetailGroup {} + + // 更新显示状态分组 + public interface UpdateDisplayStatusGroup {} + + // 为客户添加默认footbar + public interface AddDefaultFootbars4Customer {} + + @NotBlank(message = "FootBar的ID不能为空", groups = { UpdateFootBarGroup.class, FootBarDetailGroup.class, UpdateDisplayStatusGroup.class }) + private String id; + + @NotBlank(message = "客户ID不能为空", groups = { CreateFootBarGroup.class, AddDefaultFootbars4Customer.class }) private String customerId; // 哪一个端:gov,resi - @NotBlank(message = "app类型不能为空") + @NotBlank(message = "app类型不能为空", groups = { ListFootBarGroup.class, CreateFootBarGroup.class, AddDefaultFootbars4Customer.class }) private String appType; + @NotBlank(message = "名称不能为空", groups = { CreateFootBarGroup.class, UpdateFootBarGroup.class }) + private String barName; + + @NotBlank(message = "key不能为空", groups = { CreateFootBarGroup.class }) + private String barKey; + + @NotBlank(message = "页面标题不能为空", groups = { CreateFootBarGroup.class, UpdateFootBarGroup.class }) + private String pageTitle; + + @NotBlank(message = "图标路径不能为空", groups = { CreateFootBarGroup.class, UpdateFootBarGroup.class }) + private String iconPath; + + @NotBlank(message = "选中的图标路径不能为空", groups = { CreateFootBarGroup.class, UpdateFootBarGroup.class }) + private String selectedIconPath; + + @NotEmpty(message = "顺序不能为空", groups = { SaveOrderGroup.class }) + private List orderList; + + @NotNull(message = "显示状态不能为空", groups = { UpdateDisplayStatusGroup.class }) + private Boolean display; + + /** + * 排序索引号dto + */ + public static class OrderIndexDTO { + private String id; + private Integer orderIndex; + + public OrderIndexDTO() { + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Integer getOrderIndex() { + return orderIndex; + } + + public void setOrderIndex(Integer orderIndex) { + this.orderIndex = orderIndex; + } + } } diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/CustomerFootBarResultDTO.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/CustomerFootBarResultDTO.java index 832e06944c..0afed5aa74 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/CustomerFootBarResultDTO.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/CustomerFootBarResultDTO.java @@ -39,6 +39,10 @@ public class CustomerFootBarResultDTO implements Serializable { */ private String id; + private String customerId; + + private String appType; + /** * bar名称 */ @@ -94,4 +98,12 @@ public class CustomerFootBarResultDTO implements Serializable { */ private Date updatedTime; + private Boolean display; + + private String defaultBarName; + + private String defaultIconPath; + + private String defaultSelectedIconPath; + } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/CustomerFootBarController.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/CustomerFootBarController.java index 1be0943b60..3dae048df4 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/CustomerFootBarController.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/CustomerFootBarController.java @@ -27,6 +27,7 @@ import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.dto.CustomerFootBarDTO; import com.epmet.dto.form.CustomerFootBarFormDTO; +import com.epmet.dto.result.CustomerFootBarResultDTO; import com.epmet.entity.CustomerFootBarEntity; import com.epmet.excel.CustomerFootBarExcel; import com.epmet.service.CustomerFootBarService; @@ -35,7 +36,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; -import javax.validation.constraints.NotBlank; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -103,17 +103,93 @@ public class CustomerFootBarController { */ @PostMapping("customerfootbars") public Result> getCustomerfootbars(@RequestBody CustomerFootBarFormDTO formDTO) { - ValidatorUtils.validateEntity(formDTO); + ValidatorUtils.validateEntity(formDTO, CustomerFootBarFormDTO.ListFootBarGroup.class); String customerId = formDTO.getCustomerId(); String appType = formDTO.getAppType(); List footbars = customerFootBarService.listCustomerFootBars(customerId, appType); List barDTOS = new LinkedList<>(); footbars.forEach(barEntity -> { + CustomerFootBarEntity defaultFootBarEntity = customerFootBarService.getByAppTypeAndBarKeyOfCustomer("default", barEntity.getAppType(), barEntity.getBarKey()); + CustomerFootBarDTO barDTO = new CustomerFootBarDTO(); BeanUtils.copyProperties(barEntity, barDTO); + barDTO.setDefaultBarName(defaultFootBarEntity.getBarName()); barDTOS.add(barDTO); }); return new Result>().ok(barDTOS); } + + /** + * 创建footbar + * @param form + * @return + */ + @PostMapping("createfootbar") + public Result createFootBar(@RequestBody CustomerFootBarFormDTO form) { + ValidatorUtils.validateEntity(form, CustomerFootBarFormDTO.CreateFootBarGroup.class); + customerFootBarService.createFootBar(form); + return new Result(); + } + + /** + * 更新footbar + * @param form + * @return + */ + @PostMapping("updatefootbar") + public Result updateFootbar(@RequestBody CustomerFootBarFormDTO form) { + ValidatorUtils.validateEntity(form, CustomerFootBarFormDTO.UpdateFootBarGroup.class); + customerFootBarService.updateFootBar(form); + return new Result(); + } + + /** + * + * @param form + * @return + */ + @PostMapping("footbardetail") + public Result footbarDetail(@RequestBody CustomerFootBarFormDTO form) { + ValidatorUtils.validateEntity(form, CustomerFootBarFormDTO.FootBarDetailGroup.class); + CustomerFootBarResultDTO dto = customerFootBarService.getFootBarDetail(form.getId()); + return new Result().ok(dto); + } + + /** + * 保存排序 + * @param form + * @return + */ + @PostMapping("saveorder") + public Result saveOrder(@RequestBody CustomerFootBarFormDTO form) { + ValidatorUtils.validateEntity(form, CustomerFootBarFormDTO.SaveOrderGroup.class); + customerFootBarService.saveOrder(form.getOrderList()); + return new Result(); + } + + /** + * 更新显示状态 + * @param form + * @return + */ + @PostMapping("updatedisplaystatus") + public Result updateDisplayStatus(@RequestBody CustomerFootBarFormDTO form) { + ValidatorUtils.validateEntity(form, CustomerFootBarFormDTO.UpdateDisplayStatusGroup.class); + customerFootBarService.updateDisplayStatus(form.getId(), form.getDisplay()); + return new Result(); + } + + /** + * 为客户初始化默认的footbar + * @param form + * @return + */ + @PostMapping("initdefault4customer") + public Result initDefault4Customer(@RequestBody CustomerFootBarFormDTO form) { + ValidatorUtils.validateEntity(form, CustomerFootBarFormDTO.AddDefaultFootbars4Customer.class); + customerFootBarService.addDefault4Customer(form.getCustomerId(), form.getAppType()); + return new Result(); + } + } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/CustomerFootBarDao.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/CustomerFootBarDao.java index 480e148b60..3d8c9e6b3b 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/CustomerFootBarDao.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/CustomerFootBarDao.java @@ -35,4 +35,40 @@ public interface CustomerFootBarDao extends BaseDao { List listCustomerFootBars(@Param("customerId") String customerId, @Param("appType") String appType); + + /** + * 唯一性count + * @param appType + * @param barKey + * @return + */ + int count4Unique(@Param("customerId") String customerId, + @Param("appType") String appType, + @Param("barKey") String barKey, + @Param("barName") String barName); + + /** + * 获取下一个顺序号 + * @param customerId + * @param appType + * @return + */ + Integer fetchNextOrder(@Param("customerId") String customerId, @Param("appType") String appType); + + /** + * 更新顺序号 + * @param id + * @param orderIndex + * @return + */ + Integer updateOrder(@Param("id") String id, @Param("orderIndex") Integer orderIndex); + + CustomerFootBarEntity getByAppTypeAndBarKeyOfCustomer(@Param("customerId") String customerId, + @Param("appType") String appType, + @Param("barKey") String barKey); + + List listByAppTypeAndCustomerId(@Param("customerId") String customerId, + @Param("appType") String appType); + + void updateDisplayStatus(@Param("id") String id, @Param("display") Boolean display); } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/CustomerFootBarEntity.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/CustomerFootBarEntity.java index 2161fc4bdc..9abc736b13 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/CustomerFootBarEntity.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/CustomerFootBarEntity.java @@ -38,6 +38,11 @@ public class CustomerFootBarEntity extends BaseEpmetEntity { private static final long serialVersionUID = 1L; + /** + * 客户id + */ + private String customerId; + /** * bar名称 */ @@ -65,6 +70,14 @@ public class CustomerFootBarEntity extends BaseEpmetEntity { */ private String selectedIconPath; - private Integer order; + /** + * 顺序号 + */ + private Integer orderIndex; + + /** + * 是否显示 + */ + private Boolean display; } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/CustomerFootBarService.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/CustomerFootBarService.java index f38eab950d..938d05a979 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/CustomerFootBarService.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/CustomerFootBarService.java @@ -20,6 +20,8 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.CustomerFootBarDTO; +import com.epmet.dto.form.CustomerFootBarFormDTO; +import com.epmet.dto.result.CustomerFootBarResultDTO; import com.epmet.entity.CustomerFootBarEntity; import java.util.List; @@ -94,4 +96,18 @@ public interface CustomerFootBarService extends BaseService listCustomerFootBars(String customerId, String appType); + + void createFootBar(CustomerFootBarFormDTO form); + + void updateFootBar(CustomerFootBarFormDTO form); + + CustomerFootBarResultDTO getFootBarDetail(String id); + + void saveOrder(List orderList); + + CustomerFootBarEntity getByAppTypeAndBarKeyOfCustomer(String customerId, String appType, String barKey); + + void updateDisplayStatus(String id, Boolean display); + + void addDefault4Customer(String customerId, String appType); } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerFootBarServiceImpl.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerFootBarServiceImpl.java index 417555be13..2527adf140 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerFootBarServiceImpl.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerFootBarServiceImpl.java @@ -20,11 +20,15 @@ package com.epmet.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.dao.CustomerFootBarDao; import com.epmet.dto.CustomerFootBarDTO; +import com.epmet.dto.form.CustomerFootBarFormDTO; +import com.epmet.dto.result.CustomerFootBarResultDTO; import com.epmet.entity.CustomerFootBarEntity; import com.epmet.redis.CustomerFootBarRedis; import com.epmet.service.CustomerFootBarService; @@ -32,6 +36,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.util.Arrays; import java.util.List; @@ -106,4 +111,115 @@ public class CustomerFootBarServiceImpl extends BaseServiceImpl orderList) { + for (CustomerFootBarFormDTO.OrderIndexDTO idx : orderList) { + baseDao.updateOrder(idx.getId(), idx.getOrderIndex()); + } + } + + @Override + public CustomerFootBarEntity getByAppTypeAndBarKeyOfCustomer(String customerId, String appType, String barKey) { + return baseDao.getByAppTypeAndBarKeyOfCustomer(customerId, appType, barKey); + } + + @Override + public void updateDisplayStatus(String id, Boolean display) { + baseDao.updateDisplayStatus(id, display); + } + + @Transactional + @Override + public void addDefault4Customer(String customerId, String appType) { + List footBarsOfCustomer = baseDao.listByAppTypeAndCustomerId(customerId, appType); + if (!CollectionUtils.isEmpty(footBarsOfCustomer)) { + throw new RenException(EpmetErrorCode.OPER_CUSTOMER_FOOTBAR_EXISTS.getCode(), + EpmetErrorCode.OPER_CUSTOMER_FOOTBAR_EXISTS.getMsg()); + } + + List defaultBars = baseDao.listByAppTypeAndCustomerId("default", appType); + for (CustomerFootBarEntity defaultBar : defaultBars) { + defaultBar.setCustomerId(customerId); + defaultBar.setId(null); + defaultBar.setCreatedTime(null); + defaultBar.setCreatedBy(null); + defaultBar.setUpdatedTime(null); + defaultBar.setUpdatedBy(null); + baseDao.insert(defaultBar); + } + } + + /** + * 添加footbar之前的校验 + * @param form + */ + private void validateBeforeCreate(CustomerFootBarFormDTO form) { + synchronized (this) { + int uniqueCount1 = baseDao.count4Unique(form.getCustomerId(), form.getAppType(), form.getBarKey(), null); + int uniqueCount2 = baseDao.count4Unique(form.getCustomerId(), form.getAppType(), null, form.getBarName()); + if (uniqueCount1 > 0 || uniqueCount2 > 0) { + throw new RenException(EpmetErrorCode.OPER_CUSTOMER_FOOTBAR_EXISTS.getCode(), + EpmetErrorCode.OPER_CUSTOMER_FOOTBAR_EXISTS.getMsg()); + } + } + } + + private void validateBeforeUpdate(CustomerFootBarFormDTO form) { + synchronized (this) { + int uniqueCount2 = baseDao.count4Unique(form.getCustomerId(), form.getAppType(), null, form.getBarName()); + if (uniqueCount2 > 0) { + throw new RenException(EpmetErrorCode.OPER_CUSTOMER_FOOTBAR_EXISTS.getCode(), + EpmetErrorCode.OPER_CUSTOMER_FOOTBAR_EXISTS.getMsg()); + } + } + } } \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.5__footbar_add_column.sql b/epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.5__footbar_add_column.sql new file mode 100644 index 0000000000..d6301a196a --- /dev/null +++ b/epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.5__footbar_add_column.sql @@ -0,0 +1,2 @@ +alter table customer_foot_bar add column DISPLAY tinyint(1) default 1; +alter table customer_foot_bar change `ORDER` ORDER_INDEX tinyint(1) default 1; \ No newline at end of file diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerFootBarDao.xml b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerFootBarDao.xml index e41b42ddb3..f8bc70c1da 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerFootBarDao.xml +++ b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerFootBarDao.xml @@ -11,7 +11,8 @@ - + + @@ -20,6 +21,19 @@ + + + update customer_foot_bar + set ORDER_INDEX = #{orderIndex} + where ID = #{id} + + + + update customer_foot_bar + set DISPLAY=#{display} + where ID = #{id} + + + + + + + + + + diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/UserWechatDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/UserWechatDTO.java index 0a62b41a07..0f307c3d47 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/UserWechatDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/UserWechatDTO.java @@ -108,6 +108,6 @@ public class UserWechatDTO implements Serializable{ */ private Date updatedTime; - @JsonIgnore + //@JsonIgnore private String sessionKey; }