Browse Source

新增footbar维护相关接口

dev_shibei_match
wxz 5 years ago
parent
commit
704a495346
  1. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  2. 7
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/CustomerFootBarDTO.java
  3. 76
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/CustomerFootBarFormDTO.java
  4. 6
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/CustomerFootBarResultDTO.java
  5. 68
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/CustomerFootBarController.java
  6. 33
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/CustomerFootBarDao.java
  7. 15
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/CustomerFootBarEntity.java
  8. 14
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/CustomerFootBarService.java
  9. 87
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerFootBarServiceImpl.java
  10. 2
      epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.5__footbar_add_column.sql
  11. 60
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerFootBarDao.xml

2
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java

@ -104,6 +104,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, "至少需要添加一个段落"),

7
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;
}

76
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/CustomerFootBarFormDTO.java

@ -1,17 +1,89 @@
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 {}
@NotBlank(message = "FootBar的ID不能为空", groups = { UpdateFootBarGroup.class, FootBarDetailGroup.class, UpdateDisplayStatusGroup.class })
private String id;
@NotBlank(message = "客户ID不能为空", groups = { CreateFootBarGroup.class })
private String customerId;
// 哪一个端:gov,resi
@NotBlank(message = "app类型不能为空")
@NotBlank(message = "app类型不能为空", groups = { ListFootBarGroup.class, CreateFootBarGroup.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<OrderIndexDTO> 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;
}
}
}

6
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,6 @@ public class CustomerFootBarResultDTO implements Serializable {
*/
private Date updatedTime;
private Boolean display;
}

68
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,81 @@ public class CustomerFootBarController {
*/
@PostMapping("customerfootbars")
public Result<List<CustomerFootBarDTO>> getCustomerfootbars(@RequestBody CustomerFootBarFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
ValidatorUtils.validateEntity(formDTO, CustomerFootBarFormDTO.ListFootBarGroup.class);
String customerId = formDTO.getCustomerId();
String appType = formDTO.getAppType();
List<CustomerFootBarEntity> footbars = customerFootBarService.listCustomerFootBars(customerId, appType);
List<CustomerFootBarDTO> 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<List<CustomerFootBarDTO>>().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();
}
}

33
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/CustomerFootBarDao.java

@ -35,4 +35,37 @@ public interface CustomerFootBarDao extends BaseDao<CustomerFootBarEntity> {
List<CustomerFootBarEntity> 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);
void updateDisplayStatus(@Param("id") String id, @Param("display") Boolean display);
}

15
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;
}

14
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,16 @@ public interface CustomerFootBarService extends BaseService<CustomerFootBarEntit
void delete(String[] ids);
List<CustomerFootBarEntity> listCustomerFootBars(String customerId, String appType);
void createFootBar(CustomerFootBarFormDTO form);
void updateFootBar(CustomerFootBarFormDTO form);
CustomerFootBarResultDTO getFootBarDetail(String id);
void saveOrder(List<CustomerFootBarFormDTO.OrderIndexDTO> orderList);
CustomerFootBarEntity getByAppTypeAndBarKeyOfCustomer(String customerId, String appType, String barKey);
void updateDisplayStatus(String id, Boolean display);
}

87
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;
@ -106,4 +110,87 @@ public class CustomerFootBarServiceImpl extends BaseServiceImpl<CustomerFootBarD
return baseDao.listCustomerFootBars(customerId, appType);
}
@Override
public void createFootBar(CustomerFootBarFormDTO form) {
validateBeforeCreate(form);
CustomerFootBarEntity entity = new CustomerFootBarEntity();
entity.setAppType(form.getAppType());
entity.setCustomerId(form.getCustomerId());
entity.setBarKey(form.getBarKey());
entity.setBarName(form.getBarName());
entity.setIconPath(form.getIconPath());
entity.setPageTitle(form.getPageTitle());
entity.setSelectedIconPath(form.getSelectedIconPath());
entity.setOrderIndex(baseDao.fetchNextOrder(form.getCustomerId(), form.getAppType()));
entity.setDisplay(true);
baseDao.insert(entity);
}
@Override
public void updateFootBar(CustomerFootBarFormDTO form) {
validateBeforeUpdate(form);
CustomerFootBarEntity entity = baseDao.selectById(form.getId());
if (entity == null) {
throw new RenException(EpmetErrorCode.OPER_CUSTOMER_FOOTBAR_NOT_FOUND.getCode(),
EpmetErrorCode.OPER_CUSTOMER_FOOTBAR_NOT_FOUND.getMsg());
}
entity.setSelectedIconPath(form.getSelectedIconPath());
entity.setBarName(form.getBarName());
entity.setPageTitle(form.getPageTitle());
entity.setIconPath(form.getIconPath());
baseDao.updateById(entity);
}
@Override
public CustomerFootBarResultDTO getFootBarDetail(String id) {
CustomerFootBarEntity entity = baseDao.selectById(id);
CustomerFootBarResultDTO dto = ConvertUtils.sourceToTarget(entity, CustomerFootBarResultDTO.class);
return dto;
}
@Transactional
@Override
public void saveOrder(List<CustomerFootBarFormDTO.OrderIndexDTO> 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);
}
/**
* 添加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());
}
}
}
}

2
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;

60
epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerFootBarDao.xml

@ -11,7 +11,8 @@
<result property="pageTitle" column="PAGE_TITLE"/>
<result property="iconPath" column="ICON_PATH"/>
<result property="selectedIconPath" column="SELECTED_ICON_PATH"/>
<result property="order" column="ORDER"/>
<result property="orderIndex" column="ORDER_INDEX"/>
<result property="display" column="DISPLAY"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
@ -20,6 +21,19 @@
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<!--更新顺序号-->
<update id="updateOrder">
update customer_foot_bar
set ORDER_INDEX = #{orderIndex}
where ID = #{id}
</update>
<update id="updateDisplayStatus">
update customer_foot_bar
set DISPLAY=#{display}
where ID = #{id}
</update>
<!--查询客户的footbar列表-->
<select id="listCustomerFootBars" resultType="com.epmet.entity.CustomerFootBarEntity">
SELECT
@ -32,14 +46,14 @@
page_title,
icon_path,
selected_icon_path,
`order`,
`order_index`,
del_flag,
revision,
created_by,
created_time,
updated_by,
updated_time,
`order`
ORDER_INDEX
FROM
customer_foot_bar
<where>
@ -47,7 +61,45 @@
AND CUSTOMER_ID = #{customerId}
AND APP_TYPE = #{appType}
</where>
ORDER BY `order` ASC
ORDER BY `ORDER_INDEX` ASC
</select>
<select id="count4Unique" resultType="java.lang.Integer">
select count(1)
from customer_foot_bar
<where>
<if test="appType != null and appType != ''">
app_type = #{appType}
</if>
<if test="barKey != null and barKey != ''">
and BAR_KEY = #{barKey}
</if>
<if test="customerId != null and customerId != ''">
and CUSTOMER_ID = #{customerId}
</if>
<if test="barName != null and barName != ''">
and BAR_NAME= #{barName}
</if>
and DEL_FLAG=0
</where>
</select>
<select id="fetchNextOrder" resultType="java.lang.Integer">
select ifnull(max(`ORDER_INDEX`),-1) + 1
from customer_foot_bar
<where>
app_type = #{appType}
and CUSTOMER_ID = #{customerId}
and DEL_FLAG=0
</where>
</select>
<select id="getByAppTypeAndBarKeyOfCustomer" resultType="com.epmet.entity.CustomerFootBarEntity">
select *
from customer_foot_bar
where CUSTOMER_ID = #{customerId}
and APP_TYPE = #{appType}
and BAR_KEY = #{barKey}
</select>

Loading…
Cancel
Save