Commit 8d18282b by guojuxing

自定义域字段-新增服务

parent cb4e3a64
......@@ -17,4 +17,26 @@ public interface StoreFieldSelectApiService {
*/
ServiceResponse<Integer> save(StoreFieldSelectDTO storeFieldSelectDTO);
/**
* 上下移动
* @param storeFieldSelectId
* @param isUp 向上
* @return
*/
ServiceResponse<Integer> upOrDown(int storeFieldSelectId, boolean isUp);
/**
* 置顶、置底,自定义序号
* @param storeFieldSelectId
* @param storeFieldId
* @param setValue
* @return
*/
ServiceResponse<Integer> setStoreFieldSelectSort(int storeFieldSelectId, int storeFieldId, int setValue);
ServiceResponse<Integer> delete(int storeFieldSelectId);
ServiceResponse<Integer> edit(StoreFieldSelectDTO storeFieldSelectDTO);
}
package com.gic.store.dao.mapper;
import com.gic.store.entity.TabStoreFieldSelect;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface TabStoreFieldSelectMapper {
/**
......@@ -50,4 +53,46 @@ public interface TabStoreFieldSelectMapper {
* @return 更新条目数
*/
int updateByPrimaryKey(TabStoreFieldSelect record);
/**
* 查询下一个排序属性值
* @param storeFieldId
* @param sort
* @return
*/
TabStoreFieldSelect selectNextByStoreFieldIdAndSort(@Param("storeFieldId") Integer storeFieldId, @Param("sort") Double sort);
/**
* 查询上一个排序属性值
* @param storeFieldId
* @param sort
* @return
*/
TabStoreFieldSelect selectPrevByStoreFieldIdAndSort(@Param("storeFieldId") Integer storeFieldId, @Param("sort") Double sort);
/**
* 查询某字段最小排序值
* @param storeFieldId
* @return
*/
double getMinSort(@Param("storeFieldId") Integer storeFieldId);
/**
* 查询某字段最大排序值
* @param storeFieldId
* @return
*/
double getMaxSort(@Param("storeFieldId") Integer storeFieldId);
/**
* 查询几条连续的记录
* @param storeFieldId
* @param start 开始的位置
* @param size 查询几条条
* @param storeFieldSelectId 要除外的id
* @return
*/
List<TabStoreFieldSelect> listTwoElementExceptId(@Param("storeFieldId") Integer storeFieldId, @Param("start") int start,
@Param("size") int size, @Param("storeFieldSelectId") Integer storeFieldSelectId);
}
\ No newline at end of file
package com.gic.store.service;
import com.gic.store.dto.StoreFieldSelectDTO;
import com.gic.store.entity.TabStoreFieldSelect;
/**
* @author guojx
......@@ -13,4 +14,47 @@ public interface StoreFieldSelectService {
* @return
*/
int save(StoreFieldSelectDTO storeFieldSelectDTO);
/**
* 查询下一个排序值的属性值
* @param storeFieldId
* @param sort
* @return
*/
TabStoreFieldSelect getNextSort(int storeFieldId, double sort);
/**
* 查询上一个排序值的属性值
* @param storeFieldId
* @param sort
* @return
*/
TabStoreFieldSelect getPrevSort(int storeFieldId, double sort);
/**
* 根据主键查询
* @param storeFieldSelectId
* @return
*/
TabStoreFieldSelect getStoreFieldSelectById(int storeFieldSelectId);
/**
* 更新序号
* @param storeFieldSelectId
* @param sort
* @return
*/
int updateSortById(int storeFieldSelectId, double sort);
/**
* 置顶、置底,自定义序号
* @param storeFieldSelectId
* @param storeFieldId
* @param setValue
*/
void setStoreFieldSelectSort(int storeFieldSelectId, int storeFieldId, int setValue);
int delete(int storeFieldSelectId);
int edit(int storeFieldSelectId, String storeFieldSelectName, String storeFieldSelectCode);
}
......@@ -5,9 +5,12 @@ import com.gic.store.dao.mapper.TabStoreFieldSelectMapper;
import com.gic.store.dto.StoreFieldSelectDTO;
import com.gic.store.entity.TabStoreFieldSelect;
import com.gic.store.service.StoreFieldSelectService;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author guojx
* @date 2019/7/1 2:48 PM
......@@ -21,4 +24,89 @@ public class StoreFieldSelectServiceImpl implements StoreFieldSelectService{
public int save(StoreFieldSelectDTO storeFieldSelectDTO) {
return tabStoreFieldSelectMapper.insert(EntityUtil.changeEntityNew(TabStoreFieldSelect.class, storeFieldSelectDTO));
}
@Override
public TabStoreFieldSelect getNextSort(int storeFieldId, double sort) {
return tabStoreFieldSelectMapper.selectNextByStoreFieldIdAndSort(storeFieldId, sort);
}
@Override
public TabStoreFieldSelect getPrevSort(int storeFieldId, double sort) {
return tabStoreFieldSelectMapper.selectPrevByStoreFieldIdAndSort(storeFieldId, sort);
}
@Override
public TabStoreFieldSelect getStoreFieldSelectById(int storeFieldSelectId) {
return tabStoreFieldSelectMapper.selectByPrimaryKey(storeFieldSelectId);
}
@Override
public int updateSortById(int storeFieldSelectId, double sort) {
TabStoreFieldSelect fieldSelect = new TabStoreFieldSelect();
fieldSelect.setStoreFieldSelectId(storeFieldSelectId);
fieldSelect.setSort(sort);
tabStoreFieldSelectMapper.updateByPrimaryKeySelective(fieldSelect);
return 1;
}
@Override
public void setStoreFieldSelectSort(int storeFieldSelectId, int storeFieldId, int setValue) {
if (setValue <= 1) {
// 相当于置顶
sortTopping(storeFieldId, storeFieldSelectId);
} else {
int start = setValue - 2;
int size = 2;
List<TabStoreFieldSelect> list = tabStoreFieldSelectMapper.listTwoElementExceptId(storeFieldId, start, size, storeFieldSelectId);
if (CollectionUtils.isEmpty(list)) {
// 置底
sortBottom(storeFieldId, storeFieldSelectId);
} else {
Double sort;
if (list.size() == 1) {
// 置底
sort = list.get(0).getSort() + 1d;
} else {
sort = (list.get(0).getSort() + list.get(1).getSort()) / 2d;
}
TabStoreFieldSelect fieldSelect = new TabStoreFieldSelect();
fieldSelect.setStoreFieldSelectId(storeFieldSelectId);
fieldSelect.setSort(sort);
tabStoreFieldSelectMapper.updateByPrimaryKeySelective(fieldSelect);
}
}
}
@Override
public int delete(int storeFieldSelectId) {
return tabStoreFieldSelectMapper.deleteByPrimaryKey(storeFieldSelectId);
}
@Override
public int edit(int storeFieldSelectId, String storeFieldSelectName, String storeFieldSelectCode) {
TabStoreFieldSelect tabStoreFieldSelect = new TabStoreFieldSelect();
tabStoreFieldSelect.setStoreFieldSelectId(storeFieldSelectId);
tabStoreFieldSelect.setStoreFieldSelectName(storeFieldSelectName);
tabStoreFieldSelect.setStoreFieldSelectCode(storeFieldSelectCode);
return tabStoreFieldSelectMapper.updateByPrimaryKeySelective(tabStoreFieldSelect);
}
private void sortTopping(int storeFieldId, int storeFieldSelectId) {
Double sort = tabStoreFieldSelectMapper.getMinSort(storeFieldId);
TabStoreFieldSelect fieldSelect = new TabStoreFieldSelect();
fieldSelect.setStoreFieldSelectId(storeFieldSelectId);
fieldSelect.setSort(sort - 1d);
tabStoreFieldSelectMapper.updateByPrimaryKeySelective(fieldSelect);
}
private void sortBottom(int storeFieldId, int storeFieldSelectId) {
Double sort = tabStoreFieldSelectMapper.getMaxSort(storeFieldId);
TabStoreFieldSelect fieldSelect = new TabStoreFieldSelect();
fieldSelect.setStoreFieldSelectId(storeFieldSelectId);
fieldSelect.setSort(sort + 1d);
tabStoreFieldSelectMapper.updateByPrimaryKeySelective(fieldSelect);
}
}
......@@ -2,6 +2,7 @@ package com.gic.store.service.outer;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.store.dto.StoreFieldSelectDTO;
import com.gic.store.entity.TabStoreFieldSelect;
import com.gic.store.service.StoreFieldSelectApiService;
import com.gic.store.service.StoreFieldSelectService;
import com.gic.store.utils.ErrorCode;
......@@ -39,4 +40,54 @@ public class StoreFieldSelectApiServiceImpl implements StoreFieldSelectApiServic
return ServiceResponse.success(storeFieldSelectService.save(storeFieldSelectDTO));
}
@Override
public ServiceResponse<Integer> upOrDown(int storeFieldSelectId, boolean isUp) {
TabStoreFieldSelect tabStoreFieldSelect = storeFieldSelectService.getStoreFieldSelectById(storeFieldSelectId);
if (tabStoreFieldSelect == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "主键错误,查询不到数据");
}
TabStoreFieldSelect needUpdateSort;
if (isUp) {
needUpdateSort = storeFieldSelectService.getPrevSort(tabStoreFieldSelect.getStoreFieldId(), tabStoreFieldSelect.getSort());
if (needUpdateSort == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "已经是第一条,不能上移");
}
} else {
needUpdateSort = storeFieldSelectService.getNextSort(tabStoreFieldSelect.getStoreFieldId(), tabStoreFieldSelect.getSort());
if (needUpdateSort == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "已经是最后一条,不能下移");
}
}
storeFieldSelectService.updateSortById(needUpdateSort.getStoreFieldSelectId(), tabStoreFieldSelect.getSort());
storeFieldSelectService.updateSortById(tabStoreFieldSelect.getStoreFieldSelectId(), needUpdateSort.getSort());
return ServiceResponse.success();
}
@Override
public ServiceResponse<Integer> setStoreFieldSelectSort(int storeFieldSelectId, int storeFieldId, int setValue) {
storeFieldSelectService.setStoreFieldSelectSort(storeFieldSelectId, storeFieldId, setValue);
return ServiceResponse.success(1);
}
@Override
public ServiceResponse<Integer> delete(int storeFieldSelectId) {
return ServiceResponse.success(storeFieldSelectService.delete(storeFieldSelectId));
}
@Override
public ServiceResponse<Integer> edit(StoreFieldSelectDTO storeFieldSelectDTO) {
if (StringUtils.isBlank(storeFieldSelectDTO.getStoreFieldSelectName())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "属性值名称不能为空");
}
if (StringUtils.isBlank(storeFieldSelectDTO.getStoreFieldSelectCode())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "属性值code不能为空");
}
if (storeFieldSelectDTO.getStoreFieldId() == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "主键ID不能为空");
}
return ServiceResponse.success(storeFieldSelectService.edit(storeFieldSelectDTO.getStoreFieldSelectId(),
storeFieldSelectDTO.getStoreFieldSelectName(), storeFieldSelectDTO.getStoreFieldSelectCode()));
}
}
......@@ -128,4 +128,42 @@
store_field_id = #{storeFieldId,jdbcType=INTEGER}
where store_field_select_id = #{storeFieldSelectId,jdbcType=INTEGER}
</update>
<select id="selectNextByStoreFieldIdAndSort" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tab_store_field_select
where store_field_id = #{storeFieldId}
and sort > #{sort}
order by sort
limit 1
</select>
<select id="selectPrevByStoreFieldIdAndSort" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tab_store_field_select
where store_field_id = #{storeFieldId}
and sort &lt; #{sort}
order by sort
limit 1
</select>
<select id="getMinSort" resultType="java.lang.Double">
select ifnull(sort, 0) from tab_store_field_select where store_field_id = #{storeFieldId} order by sort limit 0, 1
</select>
<select id="getMaxSort" resultType="java.lang.Double">
select ifnull(sort, 0) from tab_store_field_select where store_field_id = #{storeFieldId} order by sort desc limit 0, 1
</select>
<select id="listTwoElementExceptId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tab_store_field_select
where store_field_select_id &lt;&gt; #{storeBrandId}
and store_field_id = #{storeFieldId}
order by sort
limit #{start}, #{size}
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment