Commit 7750cd19 by zhiwj

Merge remote-tracking branch 'origin/developer' into developer

# Conflicts:
#	gic-store-service/src/main/resources/dubbo-gic-store-service.xml
#	gic-store-web/src/main/resources/dubbo-gic-store-web.xml
parents d9010022 8d18282b
package com.gic.store.constant;
/**
* @author guojx
* @date 2019/7/1 9:20 AM
*/
public enum StoreFieldTextEnum {
Chinese(1, "中文"),
Number(2, "数字"),
ABC(3, "字母"),
Mark(4, "符号");
private int code;
private String message;
private StoreFieldTextEnum(int code, String message) {
this.code = code;
this.message = message;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
......@@ -36,4 +36,13 @@ public enum StoreFieldTypeEnum {
public void setMessage(String message) {
this.message = message;
}
public static StoreFieldTypeEnum getByCode(int code){
for(StoreFieldTypeEnum transactType : values()){
if (transactType.getCode() == code) {
return transactType;
}
}
return null;
}
}
......@@ -38,7 +38,7 @@ public class StoreFieldDTO implements Serializable {
/**
* 门店域id
*/
private Integer storeRegionId;
private String storeRegionId;
/**
*
......@@ -105,11 +105,11 @@ public class StoreFieldDTO implements Serializable {
this.enterpriseId = enterpriseId;
}
public Integer getStoreRegionId() {
public String getStoreRegionId() {
return storeRegionId;
}
public void setStoreRegionId(Integer storeRegionId) {
public void setStoreRegionId(String storeRegionId) {
this.storeRegionId = storeRegionId;
}
......
......@@ -45,6 +45,11 @@ public class StoreFieldSelectDTO implements Serializable {
*/
private Date updateTime;
/**
* 自定义属性字段ID
*/
private Integer storeFieldId;
public Integer getStoreFieldSelectId() {
return storeFieldSelectId;
}
......@@ -100,4 +105,12 @@ public class StoreFieldSelectDTO implements Serializable {
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Integer getStoreFieldId() {
return storeFieldId;
}
public void setStoreFieldId(Integer storeFieldId) {
this.storeFieldId = storeFieldId;
}
}
package com.gic.store.exception;
/**
* @author guojx
* @date 2019/6/28 11:16 AM
*/
public class ServiceException extends RuntimeException{
private String errorCode;
public ServiceException(String errorCode, String message) {
super(message);
this.errorCode = errorCode;
}
public String getErrorCode() {
return errorCode;
}
}
package com.gic.store.exception;
/**
* @author guojx
* @date 2019/6/28 11:17 AM
*/
public class StoreFieldException extends ServiceException{
public StoreFieldException(String errorCode, String message) {
super(errorCode, message);
}
}
package com.gic.store.service;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.store.dto.StoreFieldDTO;
/**
......@@ -13,6 +14,6 @@ public interface StoreFieldApiService {
* @param storeFieldDTO
* @return
*/
int save(StoreFieldDTO storeFieldDTO);
ServiceResponse<Integer> save(StoreFieldDTO storeFieldDTO);
}
package com.gic.store.service;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.store.dto.StoreFieldSelectDTO;
import java.util.List;
/**
* @author zhiwj
* @date 2019/6/24
*/
public interface StoreFieldSelectApiService {
/**
* 分页查列表
* @param enterpriseId
* @param storeFieldId
* @param search 属性值或名称
* @param pageNum
* @param pageSize
* @return
* 新增
* @param storeFieldSelectDTO
* @return 主键ID
*/
ServiceResponse<Page<StoreFieldSelectDTO>> listStoreFieldSelect(Integer enterpriseId, Integer storeFieldId, String search, Integer pageNum, Integer pageSize);
ServiceResponse<List<StoreFieldSelectDTO>> listStoreFieldSelect(Integer enterpriseId, Integer storeFieldId);
ServiceResponse<Integer> save(StoreFieldSelectDTO storeFieldSelectDTO);
ServiceResponse<Integer> saveOrUpdateStoreFieldSelect(StoreFieldSelectDTO storeFieldSelectDTO);
/**
* 上下移动
* @param storeFieldSelectId
* @param isUp 向上
* @return
*/
ServiceResponse<Integer> upOrDown(int storeFieldSelectId, boolean isUp);
// 排序
// ServiceResponse<> sortStoreFieldSelect
/**
* 批量删除
* @param enterpriseId 企业id 用来判断授权
* @param ids
* 置顶、置底,自定义序号
* @param storeFieldSelectId
* @param storeFieldId
* @param setValue
* @return
*/
ServiceResponse<Integer> deleteByIds(Integer enterpriseId, String ids);
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
......@@ -34,7 +34,7 @@ public class TabStoreField {
/**
* 门店域id
*/
private Integer storeRegionId;
private String storeRegionId;
/**
*
......@@ -101,11 +101,11 @@ public class TabStoreField {
this.enterpriseId = enterpriseId;
}
public Integer getStoreRegionId() {
public String getStoreRegionId() {
return storeRegionId;
}
public void setStoreRegionId(Integer storeRegionId) {
public void setStoreRegionId(String storeRegionId) {
this.storeRegionId = storeRegionId;
}
......
......@@ -27,9 +27,9 @@ public class TabStoreFieldSelect {
private Integer enterpriseId;
/**
*
* 排序字段
*/
private Integer sort;
private Double sort;
/**
*
......@@ -41,6 +41,11 @@ public class TabStoreFieldSelect {
*/
private Date updateTime;
/**
* 自定义属性字段ID
*/
private Integer storeFieldId;
public Integer getStoreFieldSelectId() {
return storeFieldSelectId;
}
......@@ -73,11 +78,11 @@ public class TabStoreFieldSelect {
this.enterpriseId = enterpriseId;
}
public Integer getSort() {
public Double getSort() {
return sort;
}
public void setSort(Integer sort) {
public void setSort(Double sort) {
this.sort = sort;
}
......@@ -96,4 +101,12 @@ public class TabStoreFieldSelect {
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Integer getStoreFieldId() {
return storeFieldId;
}
public void setStoreFieldId(Integer storeFieldId) {
this.storeFieldId = storeFieldId;
}
}
\ 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
* @date 2019/7/1 2:47 PM
*/
public interface StoreFieldSelectService {
/**
* 新增
* @param storeFieldSelectDTO
* @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);
}
package com.gic.store.service;
import com.gic.store.dto.StoreFieldDTO;
/**
* @author guojx
* @date 2019/7/1 9:12 AM
*/
public interface StoreFieldService {
/**
* 新增
* @param storeFieldDTO
* @return
*/
int save(StoreFieldDTO storeFieldDTO);
/**
*
* @param storeFieldCode
* @param enterpriseId
* @return
*/
boolean isStoreFieldCodeRepeat(String storeFieldCode, int enterpriseId);
}
package com.gic.store.service.impl;
import com.gic.commons.util.EntityUtil;
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
*/
@Service("storeFieldSelectService")
public class StoreFieldSelectServiceImpl implements StoreFieldSelectService{
@Autowired
private TabStoreFieldSelectMapper tabStoreFieldSelectMapper;
@Override
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);
}
}
package com.gic.store.service.impl;
import com.gic.commons.util.EntityUtil;
import com.gic.store.dao.mapper.TabStoreFieldMapper;
import com.gic.store.dto.StoreFieldDTO;
import com.gic.store.entity.TabStoreField;
import com.gic.store.service.StoreFieldService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @author guojx
* @date 2019/7/1 9:13 AM
*/
@Service("storeFieldService")
public class StoreFieldServiceImpl implements StoreFieldService{
@Autowired
private TabStoreFieldMapper tabStoreFieldMapper;
@Override
public int save(StoreFieldDTO storeFieldDTO) {
return tabStoreFieldMapper.insert(EntityUtil.changeEntityNew(TabStoreField.class, storeFieldDTO));
}
@Override
public boolean isStoreFieldCodeRepeat(String storeFieldCode, int enterpriseId) {
return false;
}
}
package com.gic.store.service.outer;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.store.dto.StoreFieldDTO;
import com.gic.store.service.StoreFieldApiService;
import com.gic.store.service.StoreFieldService;
import com.gic.store.utils.ErrorCode;
import com.gic.store.utils.StoreFieldValidParamUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
......@@ -10,8 +16,24 @@ import org.springframework.stereotype.Service;
*/
@Service("storeFieldApiService")
public class StoreFieldApiServiceImpl implements StoreFieldApiService{
@Autowired
private StoreFieldService storeFieldService;
@Override
public int save(StoreFieldDTO storeFieldDTO) {
return 0;
public ServiceResponse<Integer> save(StoreFieldDTO storeFieldDTO) {
ServiceResponse validParamResult = StoreFieldValidParamUtil.validStoreFieldDetail(storeFieldDTO.getStoreFieldType(), storeFieldDTO.getStoreFieldDetail());
if (!validParamResult.isSuccess()) {
return validParamResult;
}
if (StringUtils.isBlank(storeFieldDTO.getStoreFieldName())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "属性名称参数值错误");
}
if (storeFieldDTO.getStoreFieldType() == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "字段类型参数值错误");
}
if (StringUtils.isBlank(storeFieldDTO.getStoreRegionId())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "所属域参数值错误");
}
return ServiceResponse.success(storeFieldService.save(storeFieldDTO));
}
}
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;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
* @author guojx
* @date 2019/7/1 2:52 PM
*/
@Service("storeFieldSelectApiService")
public class StoreFieldSelectApiServiceImpl implements StoreFieldSelectApiService{
@Autowired
private StoreFieldSelectService storeFieldSelectService;
@Override
public ServiceResponse<Integer> save(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(), "自定义字段值不能为空");
}
if (storeFieldSelectDTO.getEnterpriseId() == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "企业ID不能为空");
}
storeFieldSelectDTO.setCreateTime(new Date());
storeFieldSelectDTO.setUpdateTime(new Date());
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()));
}
}
package com.gic.store.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.store.constant.StoreFieldTypeEnum;
import org.apache.commons.lang3.StringUtils;
/**
* @author guojx
* @date 2019/7/1 9:55 AM
*/
public class StoreFieldValidParamUtil {
/**
* 文本类型
*/
public final static String TEXT_TYPE = "textType";
/**
* 小数点位数
*/
public final static String FLOAT_DIGITS = "floatDigits";
/**
* 时间精度
*/
public final static String DATE_TYPe = "dateType";
/**
* 最大位数
*/
public final static String MAX_DIGITS = "maxDigits";
public final static String MIN_DIGITS = "minDigits";
/**
* 最大长度
*/
public final static String MAX_LENGTH = "maxLength";
public final static String MIN_LENGTH = "minLength";
/**
* 提示信息
*/
public final static String TIP_MESSAEG = "tipMessage";
/**
* 是否必须
*/
public final static String IS_MUST = "isMust";
/**
* 允许重复
*/
public final static String ALLOW_REPEAT = "allowRepeat";
/**
* 允许修改
*/
public final static String ALLOW_EDIT = "allowEdit";
public final static String FIELD_NAME = "storeFieldDetail";
public final static String ERROR_MESSAGE = FIELD_NAME + "参数值错误";
public static ServiceResponse validStoreFieldDetail(Integer fieldType, String json) {
StoreFieldTypeEnum typeEnum = StoreFieldTypeEnum.getByCode(fieldType);
switch (typeEnum) {
case TEXT:
return validCheckTypeParam(json);
case DATE:
return validDateTypeParam(json);
case CHECK:
return validCheckTypeParam(json);
case RADIO:
return validRadioTypeParam(json);
case REAL_NUMBER:
return validRealNumberTypeParam(json);
default:
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "字段类型参数值错误");
}
}
public static ServiceResponse validTextTypeParam(String json) {
JSONObject fieldDetail = (JSONObject) JSON.parse(json);
if (fieldDetail.containsKey(TEXT_TYPE)) {
String textType = fieldDetail.getString(TEXT_TYPE);
if (StringUtils.isBlank(textType)) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), ERROR_MESSAGE);
}
} else {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), ERROR_MESSAGE);
}
if (!fieldDetail.containsKey(MAX_LENGTH)) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), ERROR_MESSAGE);
}
if (!fieldDetail.containsKey(MIN_LENGTH)) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), ERROR_MESSAGE);
}
return validCommon(fieldDetail);
}
public static ServiceResponse validRadioTypeParam(String json) {
JSONObject fieldDetail = (JSONObject) JSON.parse(json);
return validCommon(fieldDetail);
}
public static ServiceResponse validCheckTypeParam(String json) {
JSONObject fieldDetail = (JSONObject) JSON.parse(json);
return validCommon(fieldDetail);
}
public static ServiceResponse validRealNumberTypeParam(String json) {
JSONObject fieldDetail = (JSONObject) JSON.parse(json);
if (fieldDetail.containsKey(FLOAT_DIGITS)) {
Integer floatDigits = fieldDetail.getInteger(FLOAT_DIGITS);
if (floatDigits == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), ERROR_MESSAGE);
}
} else {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), ERROR_MESSAGE);
}
if (!fieldDetail.containsKey(MAX_DIGITS)) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), ERROR_MESSAGE);
}
if (!fieldDetail.containsKey(MIN_DIGITS)) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), ERROR_MESSAGE);
}
return validCommon(fieldDetail);
}
public static ServiceResponse validDateTypeParam(String json) {
JSONObject fieldDetail = (JSONObject) JSON.parse(json);
if (fieldDetail.containsKey(DATE_TYPe)) {
String floatDigits = fieldDetail.getString(DATE_TYPe);
if (StringUtils.isBlank(floatDigits)) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), ERROR_MESSAGE);
}
} else {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), ERROR_MESSAGE);
}
return validCommon(fieldDetail);
}
private static ServiceResponse validCommon(JSONObject fieldDetail) {
if (!fieldDetail.containsKey(TIP_MESSAEG)) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), ERROR_MESSAGE);
}
if (!fieldDetail.containsKey(IS_MUST)) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), ERROR_MESSAGE);
}
if (!fieldDetail.containsKey(ALLOW_EDIT)) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), ERROR_MESSAGE);
}
if (!fieldDetail.containsKey(ALLOW_REPEAT)) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), ERROR_MESSAGE);
}
return ServiceResponse.success();
}
}
......@@ -26,6 +26,7 @@
<dubbo:service interface="com.gic.store.service.StoreGroupApiService" ref="storeGroupApiService" timeout="60000" />
<!--自定义域字段-->
<dubbo:service interface="com.gic.store.service.StoreFieldApiService" ref="storeFieldApiService" timeout="60000" />
<dubbo:service interface="com.gic.store.service.StoreFieldSelectApiService" ref="storeFieldSelectApiService" timeout="60000" />
<!--门店-->
<dubbo:service interface="com.gic.store.service.StoreApiService" ref="storeApiService" timeout="60000" />
......
......@@ -7,7 +7,7 @@
<result column="store_field_code" jdbcType="VARCHAR" property="storeFieldCode" />
<result column="store_field_type" jdbcType="INTEGER" property="storeFieldType" />
<result column="enterprise_id" jdbcType="INTEGER" property="enterpriseId" />
<result column="store_region_id" jdbcType="INTEGER" property="storeRegionId" />
<result column="store_region_id" jdbcType="VARCHAR" property="storeRegionId" />
<result column="status" jdbcType="INTEGER" property="status" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
......@@ -28,13 +28,13 @@
delete from tab_store_field
where store_field_id = #{storeFieldId,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.gic.store.entity.TabStoreField">
<insert id="insert" parameterType="com.gic.store.entity.TabStoreField" useGeneratedKeys="true" keyProperty="storeFieldId">
insert into tab_store_field (store_field_id, store_field_name, store_field_code,
store_field_type, enterprise_id, store_region_id,
status, create_time, update_time,
store_field_detail, erp_rel_code)
values (#{storeFieldId,jdbcType=INTEGER}, #{storeFieldName,jdbcType=VARCHAR}, #{storeFieldCode,jdbcType=VARCHAR},
#{storeFieldType,jdbcType=INTEGER}, #{enterpriseId,jdbcType=INTEGER}, #{storeRegionId,jdbcType=INTEGER},
#{storeFieldType,jdbcType=INTEGER}, #{enterpriseId,jdbcType=INTEGER}, #{storeRegionId,jdbcType=VARCHAR},
#{status,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP},
#{storeFieldDetail,jdbcType=VARCHAR}, #{erpRelCode,jdbcType=VARCHAR})
</insert>
......@@ -92,7 +92,7 @@
#{enterpriseId,jdbcType=INTEGER},
</if>
<if test="storeRegionId != null">
#{storeRegionId,jdbcType=INTEGER},
#{storeRegionId,jdbcType=VARCHAR},
</if>
<if test="status != null">
#{status,jdbcType=INTEGER},
......@@ -127,7 +127,7 @@
enterprise_id = #{enterpriseId,jdbcType=INTEGER},
</if>
<if test="storeRegionId != null">
store_region_id = #{storeRegionId,jdbcType=INTEGER},
store_region_id = #{storeRegionId,jdbcType=VARCHAR},
</if>
<if test="status != null">
status = #{status,jdbcType=INTEGER},
......@@ -153,7 +153,7 @@
store_field_code = #{storeFieldCode,jdbcType=VARCHAR},
store_field_type = #{storeFieldType,jdbcType=INTEGER},
enterprise_id = #{enterpriseId,jdbcType=INTEGER},
store_region_id = #{storeRegionId,jdbcType=INTEGER},
store_region_id = #{storeRegionId,jdbcType=VARCHAR},
status = #{status,jdbcType=INTEGER},
create_time = #{createTime,jdbcType=TIMESTAMP},
update_time = #{updateTime,jdbcType=TIMESTAMP},
......
......@@ -6,13 +6,14 @@
<result column="store_field_select_name" jdbcType="VARCHAR" property="storeFieldSelectName" />
<result column="store_field_select_code" jdbcType="VARCHAR" property="storeFieldSelectCode" />
<result column="enterprise_id" jdbcType="INTEGER" property="enterpriseId" />
<result column="sort" jdbcType="INTEGER" property="sort" />
<result column="sort" jdbcType="DOUBLE" property="sort" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="store_field_id" jdbcType="INTEGER" property="storeFieldId" />
</resultMap>
<sql id="Base_Column_List">
store_field_select_id, store_field_select_name, store_field_select_code, enterprise_id,
sort, create_time, update_time
sort, create_time, update_time, store_field_id
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
......@@ -24,13 +25,15 @@
delete from tab_store_field_select
where store_field_select_id = #{storeFieldSelectId,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.gic.store.entity.TabStoreFieldSelect">
<insert id="insert" parameterType="com.gic.store.entity.TabStoreFieldSelect" useGeneratedKeys="true" keyProperty="storeFieldSelectId">
insert into tab_store_field_select (store_field_select_id, store_field_select_name,
store_field_select_code, enterprise_id, sort,
create_time, update_time)
create_time, update_time, store_field_id
)
values (#{storeFieldSelectId,jdbcType=INTEGER}, #{storeFieldSelectName,jdbcType=VARCHAR},
#{storeFieldSelectCode,jdbcType=VARCHAR}, #{enterpriseId,jdbcType=INTEGER}, #{sort,jdbcType=INTEGER},
#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP})
#{storeFieldSelectCode,jdbcType=VARCHAR}, #{enterpriseId,jdbcType=INTEGER}, #{sort,jdbcType=DOUBLE},
#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{storeFieldId,jdbcType=INTEGER}
)
</insert>
<insert id="insertSelective" parameterType="com.gic.store.entity.TabStoreFieldSelect">
insert into tab_store_field_select
......@@ -56,6 +59,9 @@
<if test="updateTime != null">
update_time,
</if>
<if test="storeFieldId != null">
store_field_id,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="storeFieldSelectId != null">
......@@ -71,7 +77,7 @@
#{enterpriseId,jdbcType=INTEGER},
</if>
<if test="sort != null">
#{sort,jdbcType=INTEGER},
#{sort,jdbcType=DOUBLE},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
......@@ -79,6 +85,9 @@
<if test="updateTime != null">
#{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="storeFieldId != null">
#{storeFieldId,jdbcType=INTEGER},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.gic.store.entity.TabStoreFieldSelect">
......@@ -94,7 +103,7 @@
enterprise_id = #{enterpriseId,jdbcType=INTEGER},
</if>
<if test="sort != null">
sort = #{sort,jdbcType=INTEGER},
sort = #{sort,jdbcType=DOUBLE},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP},
......@@ -102,6 +111,9 @@
<if test="updateTime != null">
update_time = #{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="storeFieldId != null">
store_field_id = #{storeFieldId,jdbcType=INTEGER},
</if>
</set>
where store_field_select_id = #{storeFieldSelectId,jdbcType=INTEGER}
</update>
......@@ -110,9 +122,48 @@
set store_field_select_name = #{storeFieldSelectName,jdbcType=VARCHAR},
store_field_select_code = #{storeFieldSelectCode,jdbcType=VARCHAR},
enterprise_id = #{enterpriseId,jdbcType=INTEGER},
sort = #{sort,jdbcType=INTEGER},
sort = #{sort,jdbcType=DOUBLE},
create_time = #{createTime,jdbcType=TIMESTAMP},
update_time = #{updateTime,jdbcType=TIMESTAMP}
update_time = #{updateTime,jdbcType=TIMESTAMP},
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
package com.gic.store.web.controller;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.store.constant.StoreFieldTextEnum;
import com.gic.store.constant.StoreFieldTypeEnum;
import com.gic.store.constant.StoreGroupConstant;
import com.gic.store.dto.StoreFieldDTO;
import com.gic.store.dto.StoreFieldSelectDTO;
import com.gic.store.service.StoreFieldApiService;
import com.gic.store.service.StoreFieldSelectApiService;
import com.gic.store.web.qo.storefield.StoreFieldQO;
import com.gic.store.web.qo.storefield.StoreFieldSelectQO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
/**
* @author guojx
* @date 2019/6/28 2:01 PM
*/
@RestController
@RequestMapping("/store-field")
public class StoreFieldController {
private static final Logger logger = LoggerFactory.getLogger(StoreFieldController.class);
@Autowired
private StoreFieldApiService storeFieldApiService;
@Autowired
private StoreFieldSelectApiService storeFieldSelectApiService;
@RequestMapping("/list-store-field-type")
public RestResponse listStoreFieldType() {
Map<Integer, String> result = new HashMap<>(16);
for (StoreFieldTypeEnum typeEnum : StoreFieldTypeEnum.values()) {
result.put(typeEnum.getCode(), typeEnum.getMessage());
}
return RestResponse.success(result);
}
/**
* 文本类型
* @return
*/
@RequestMapping("/list-store-field-text-type")
public RestResponse listStoreFieldTextType() {
Map<Integer, String> result = new HashMap<>(16);
for (StoreFieldTextEnum typeEnum : StoreFieldTextEnum.values()) {
result.put(typeEnum.getCode(), typeEnum.getMessage());
}
return RestResponse.success(result);
}
@RequestMapping("/save")
public RestResponse save(@Validated({StoreFieldQO.SaveValidView.class}) StoreFieldQO storeFieldQO) {
String regions = storeFieldQO.getStoreRegionIds();
String[] regionArr = regions.split(",");
StringBuilder region = new StringBuilder("_");
for (String str : regionArr) {
region.append(str);
region.append("_");
}
storeFieldQO.setStoreRegionId(region.toString());
ServiceResponse result = storeFieldApiService.save(transferQoToDTO(storeFieldQO));
if (!result.isSuccess()) {
return RestResponse.failure(result.getCode(), result.getMessage());
}
return RestResponse.success(result.getResult());
}
@RequestMapping("/save-select")
public RestResponse saveFieldValue(@Validated({StoreFieldSelectQO.SaveValidView.class}) StoreFieldSelectQO storeFieldSelectQO) {
ServiceResponse result = storeFieldSelectApiService.save(transferSelectQoToDTO(storeFieldSelectQO));
if (result.isSuccess()) {
return RestResponse.failure(result.getCode(), result.getMessage());
} else {
return RestResponse.success(result.getResult());
}
}
private StoreFieldDTO transferQoToDTO(StoreFieldQO storeFieldQO) {
StoreFieldDTO storeFieldDTO = EntityUtil.changeEntityNew(StoreFieldDTO.class, storeFieldQO);
storeFieldDTO.setEnterpriseId(StoreGroupConstant.TEST_ENTERPRISE_ID);
return storeFieldDTO;
}
private StoreFieldSelectDTO transferSelectQoToDTO(StoreFieldSelectQO storeFieldSelectQO) {
StoreFieldSelectDTO storeFieldDTO = EntityUtil.changeEntityNew(StoreFieldSelectDTO.class, storeFieldSelectQO);
storeFieldDTO.setEnterpriseId(StoreGroupConstant.TEST_ENTERPRISE_ID);
return storeFieldDTO;
}
}
package com.gic.store.web.qo.storefield;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
/**
* @author guojx
* @date 2019/6/28 2:16 PM
*/
public class StoreFieldQO implements Serializable{
private static final long serialVersionUID = -5639381511903060879L;
public interface SaveValidView {
}
/**
*
*/
private Integer storeFieldId;
/**
* 属性名称
*/
@NotBlank(message = "属性名称不能为空", groups = {SaveValidView.class})
private String storeFieldName;
/**
* 属性code
*/
private String storeFieldCode;
/**
* 字段类型;1文本 2单选 3多选 4实数 5时间
*/
@NotNull(message = "字段类型不能为空", groups = {SaveValidView.class})
private Integer storeFieldType;
/**
*
*/
private Integer enterpriseId;
/**
* 门店域id
*/
private String storeRegionId;
/**
* 域多选,英文逗号隔开
*/
@NotBlank(message = "所属域不能为空", groups = {SaveValidView.class})
private String storeRegionIds;
/**
*
*/
private Integer status;
/**
*
*/
private Date createTime;
/**
*
*/
private Date updateTime;
/**
* 字段详细配置
*/
@NotBlank(message = "配置值不能为空", groups = {SaveValidView.class})
private String storeFieldDetail;
/**
* 与ERP映射的门店字段
*/
private String erpRelCode;
public Integer getStoreFieldId() {
return storeFieldId;
}
public void setStoreFieldId(Integer storeFieldId) {
this.storeFieldId = storeFieldId;
}
public String getStoreFieldName() {
return storeFieldName;
}
public void setStoreFieldName(String storeFieldName) {
this.storeFieldName = storeFieldName;
}
public String getStoreFieldCode() {
return storeFieldCode;
}
public void setStoreFieldCode(String storeFieldCode) {
this.storeFieldCode = storeFieldCode;
}
public Integer getStoreFieldType() {
return storeFieldType;
}
public void setStoreFieldType(Integer storeFieldType) {
this.storeFieldType = storeFieldType;
}
public Integer getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(Integer enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getStoreRegionId() {
return storeRegionId;
}
public void setStoreRegionId(String storeRegionId) {
this.storeRegionId = storeRegionId;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getStoreFieldDetail() {
return storeFieldDetail;
}
public void setStoreFieldDetail(String storeFieldDetail) {
this.storeFieldDetail = storeFieldDetail;
}
public String getErpRelCode() {
return erpRelCode;
}
public void setErpRelCode(String erpRelCode) {
this.erpRelCode = erpRelCode;
}
public String getStoreRegionIds() {
return storeRegionIds;
}
public void setStoreRegionIds(String storeRegionIds) {
this.storeRegionIds = storeRegionIds;
}
}
package com.gic.store.web.qo.storefield;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
/**
* @author guojx
* @date 2019/7/1 3:54 PM
*/
public class StoreFieldSelectQO implements Serializable{
private static final long serialVersionUID = -6020468544326658511L;
public interface SaveValidView {
}
/**
*
*/
private Integer storeFieldSelectId;
/**
* 属性名称
*/
@NotBlank(message = "属性值名称不能为空", groups = {SaveValidView.class})
private String storeFieldSelectName;
/**
* 属性code
*/
@NotBlank(message = "属性值code不能为空", groups = {SaveValidView.class})
private String storeFieldSelectCode;
/**
*
*/
private Integer enterpriseId;
/**
*
*/
private Integer sort;
/**
*
*/
private Date createTime;
/**
*
*/
private Date updateTime;
/**
* 自定义属性字段ID
*/
@NotNull(message = "字段值不能为空", groups = {SaveValidView.class})
private Integer storeFieldId;
public Integer getStoreFieldSelectId() {
return storeFieldSelectId;
}
public void setStoreFieldSelectId(Integer storeFieldSelectId) {
this.storeFieldSelectId = storeFieldSelectId;
}
public String getStoreFieldSelectName() {
return storeFieldSelectName;
}
public void setStoreFieldSelectName(String storeFieldSelectName) {
this.storeFieldSelectName = storeFieldSelectName;
}
public String getStoreFieldSelectCode() {
return storeFieldSelectCode;
}
public void setStoreFieldSelectCode(String storeFieldSelectCode) {
this.storeFieldSelectCode = storeFieldSelectCode;
}
public Integer getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(Integer enterpriseId) {
this.enterpriseId = enterpriseId;
}
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Integer getStoreFieldId() {
return storeFieldId;
}
public void setStoreFieldId(Integer storeFieldId) {
this.storeFieldId = storeFieldId;
}
}
......@@ -22,6 +22,7 @@
<dubbo:reference interface="com.gic.store.service.StoreGroupApiService" id="storeGroupApiService" timeout="60000" retries="0"/>
<!--自定义域字段-->
<dubbo:reference interface="com.gic.store.service.StoreFieldApiService" id="storeFieldApiService" timeout="60000" retries="0"/>
<dubbo:reference interface="com.gic.store.service.StoreFieldSelectApiService" id="storeFieldSelectApiService" timeout="60000" retries="0"/>
<!--门店-->
<dubbo:reference interface="com.gic.store.service.StoreApiService" id="storeApiService" timeout="60000" retries="0"/>
......
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