Commit 01faaa07 by 陶光胜

Merge branch 'developer' of http://115.159.76.241/base_platform_enterprise/gic-store into developer

# Conflicts:
#	gic-store-api/src/main/java/com/gic/store/service/StoreStrategyApiService.java
#	gic-store-service/src/main/java/com/gic/store/service/impl/StoreStrategyServiceImpl.java
parents 44d68365 5227ec54
package com.gic.store.constant;
/**
* @author guojx
* @date 2019/7/2 4:34 PM
*/
public enum StoreFieldDateEnum {
YMD(1, "年月日"),
YM(2, "年月"),
MD(3, "月日"),
YMDHms(4, "年月日时分秒"),
Hms(5, "时分秒"),
Hm(6, "时分");
private int code;
private String message;
private StoreFieldDateEnum(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;
}
}
......@@ -32,6 +32,16 @@ public class StoreGroupConstant {
public final static int SORT_DOWN = 2;
/**
* 置底
*/
public final static int SORT_BOTTOM = 3;
/**
* 置顶
*/
public final static int SORT_TOPPING = 4;
/**
* 是否是默认门店,初始化品牌的时候会建立一条默认门店:未分组门店,不可编辑,1:是 0:否
*/
public final static int IS_DEFAULT = 1;
......@@ -41,6 +51,18 @@ public class StoreGroupConstant {
public final static int TEST_ENTERPRISE_ID = 10000;
/**
* 分组策略类型是2
*/
public final static int STORE_GROUP_STRATEGY_TYPE = 2;
/**
* 门店策略
*/
public final static int STORE_STRATEGY_TYPE = 1;
}
......@@ -12,7 +12,8 @@ public enum StoreGroupErrorEnum {
ParentStoreGroupParamError("4000", "父级ID参数错误"),
EditDefaultStoreGroupError("5000", "默认分组:未分组门店,不可编辑"),
StoreGroupNotExist("6000", "门店分组主键错误,数据未查到"),
SortError("7000", "排序错误!");
SortError("7000", "排序错误!"),
ParamError("8000", "参数错误");
private String code;
private String message;
......
package com.gic.store.constant;
/**
* @author zhiwj
* @date 2019/7/3
*/
public enum StoreImportEnum {
WAIT("wait", "等待"),
;
private String code;
private String message;
StoreImportEnum(String code, String message) {
this.code = code;
this.message = message;
}
public String getCode() {
return code;
}
public String getMessage() {
return message;
}
}
......@@ -112,6 +112,7 @@ public class StoreDTO implements Serializable {
private String cityId;
private String provinces;
private Integer createType;
private List<StoreExtendDTO> storeExtendList;
public Integer getStoreId() {
......@@ -345,4 +346,12 @@ public class StoreDTO implements Serializable {
public void setCompleteStatus(Integer completeStatus) {
this.completeStatus = completeStatus;
}
public void setStoreExtendList(List<StoreExtendDTO> storeExtendList) {
this.storeExtendList = storeExtendList;
}
public List<StoreExtendDTO> getStoreExtendList() {
return storeExtendList;
}
}
package com.gic.store.dto;
import java.io.Serializable;
/**
* @author zhiwj
* @date 2019/7/3
*/
public class StoreExtendDTO implements Serializable {
private static final long serialVersionUID = 6262138651367237464L;
/**
*
*/
private Integer storeExtendId;
/**
*
*/
private Integer storeId;
/**
*
*/
private Integer enterpriseId;
/**
* 字段属性id
*/
private Integer storeFieldId;
/**
* 字段属性值
*/
private String value;
/**
*
*/
private Integer sort;
/**
* 属性名称
*/
private String storeFieldName;
/**
* 属性code
*/
private String storeFieldCode;
/**
* 字段类型;1文本 2单选 3多选 4实数 5时间
*/
private Integer storeFieldType;
/**
* 字段详细配置
*/
private String storeFieldDetail;
/**
* 与ERP映射的门店字段
*/
private String erpRelCode;
public Integer getStoreExtendId() {
return storeExtendId;
}
public void setStoreExtendId(Integer storeExtendId) {
this.storeExtendId = storeExtendId;
}
public Integer getStoreId() {
return storeId;
}
public void setStoreId(Integer storeId) {
this.storeId = storeId;
}
public Integer getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(Integer enterpriseId) {
this.enterpriseId = enterpriseId;
}
public Integer getStoreFieldId() {
return storeFieldId;
}
public void setStoreFieldId(Integer storeFieldId) {
this.storeFieldId = storeFieldId;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
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 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;
}
}
......@@ -33,7 +33,7 @@ public class StoreFieldSelectDTO implements Serializable {
/**
*
*/
private Integer sort;
private Double sort;
/**
*
......@@ -87,11 +87,11 @@ public class StoreFieldSelectDTO implements Serializable {
this.enterpriseId = enterpriseId;
}
public Integer getSort() {
public Double getSort() {
return sort;
}
public void setSort(Integer sort) {
public void setSort(Double sort) {
this.sort = sort;
}
......
package com.gic.store.dto;
import java.io.Serializable;
import java.util.Date;
/**
* @author guojx
* @date 2019/7/4 9:41 AM
*/
public class StoreStrategyDTO implements Serializable{
private static final long serialVersionUID = -4683081402308681202L;
/**
*
*/
private Integer strategyId;
/**
* 策略名称
*/
private String strategyName;
/**
*
*/
private Integer enterpriseId;
/**
* 门店域id
*/
private Integer storeRegionId;
/**
* 门店分组条件,json数组
*/
private String condition;
/**
* 策略命中值;如果type为门店分组策略,对应分组id;否则为门店启用和不启用值
*/
private String targetValue;
/**
*
*/
private Date createTime;
/**
*
*/
private Date updateTime;
/**
* 状态值 1有效 0无效
*/
private Integer status;
/**
* 策略类型,1门店状态策略, 2门店分组策略
*/
private Integer strategyType;
/**
* 排序字段
*/
private Double sort;
/**
* 排序值
*/
private Integer seq;
public Integer getStrategyId() {
return strategyId;
}
public void setStrategyId(Integer strategyId) {
this.strategyId = strategyId;
}
public String getStrategyName() {
return strategyName;
}
public void setStrategyName(String strategyName) {
this.strategyName = strategyName;
}
public Integer getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(Integer enterpriseId) {
this.enterpriseId = enterpriseId;
}
public Integer getStoreRegionId() {
return storeRegionId;
}
public void setStoreRegionId(Integer storeRegionId) {
this.storeRegionId = storeRegionId;
}
public String getCondition() {
return condition;
}
public void setCondition(String condition) {
this.condition = condition;
}
public String getTargetValue() {
return targetValue;
}
public void setTargetValue(String targetValue) {
this.targetValue = targetValue;
}
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 getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Integer getStrategyType() {
return strategyType;
}
public void setStrategyType(Integer strategyType) {
this.strategyType = strategyType;
}
public Double getSort() {
return sort;
}
public void setSort(Double sort) {
this.sort = sort;
}
public Integer getSeq() {
return seq;
}
public void setSeq(Integer seq) {
this.seq = seq;
}
}
package com.gic.store.dto;
import java.io.Serializable;
/**
* @author zhiwj
* @date 2019/7/3
*/
public class StoreTmpDTO implements Serializable {
private static final long serialVersionUID = 5641632947835212465L;
/**
*
*/
private Integer storeTmpId;
/**
*
*/
private Integer enterpriseId;
/**
* 域id
*/
private Integer regionId;
/**
* 域名称
*/
private String regionName;
/**
*
*/
private String storeName;
/**
*
*/
private String storeCode;
/**
*
*/
private String conactsPhone;
/**
*
*/
private String brands;
/**
*
*/
private String province;
/**
*
*/
private String city;
/**
*
*/
private String county;
/**
*
*/
private Integer areaId;
/**
*
*/
private String address;
/**
*
*/
private String longitude;
/**
*
*/
private String latitude;
/**
* 自定义字段导入信息
*/
private String customField;
/**
* 导入状态;-1待导入,1导入成功;2导入失败
*/
private Integer state;
/**
* 导入错误信息
*/
private String errorMessage;
/**
* uuid
*/
private String signKey;
/**
*
*/
private String storeType;
/**
*
*/
private String erpStatus;
private String storeGroupName;
public Integer getStoreTmpId() {
return storeTmpId;
}
public void setStoreTmpId(Integer storeTmpId) {
this.storeTmpId = storeTmpId;
}
public Integer getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(Integer enterpriseId) {
this.enterpriseId = enterpriseId;
}
public Integer getRegionId() {
return regionId;
}
public void setRegionId(Integer regionId) {
this.regionId = regionId;
}
public String getRegionName() {
return regionName;
}
public void setRegionName(String regionName) {
this.regionName = regionName;
}
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
public String getStoreCode() {
return storeCode;
}
public void setStoreCode(String storeCode) {
this.storeCode = storeCode;
}
public String getConactsPhone() {
return conactsPhone;
}
public void setConactsPhone(String conactsPhone) {
this.conactsPhone = conactsPhone;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCounty() {
return county;
}
public void setCounty(String county) {
this.county = county;
}
public Integer getAreaId() {
return areaId;
}
public void setAreaId(Integer areaId) {
this.areaId = areaId;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getLongitude() {
return longitude;
}
public void setLongitude(String longitude) {
this.longitude = longitude;
}
public String getLatitude() {
return latitude;
}
public void setLatitude(String latitude) {
this.latitude = latitude;
}
public String getCustomField() {
return customField;
}
public void setCustomField(String customField) {
this.customField = customField;
}
public Integer getState() {
return state;
}
public void setState(Integer state) {
this.state = state;
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public String getSignKey() {
return signKey;
}
public void setSignKey(String signKey) {
this.signKey = signKey;
}
public String getStoreType() {
return storeType;
}
public void setStoreType(String storeType) {
this.storeType = storeType;
}
public String getErpStatus() {
return erpStatus;
}
public void setErpStatus(String erpStatus) {
this.erpStatus = erpStatus;
}
public String getBrands() {
return brands;
}
public void setBrands(String brands) {
this.brands = brands;
}
public String getStoreGroupName() {
return storeGroupName;
}
public void setStoreGroupName(String storeGroupName) {
this.storeGroupName = storeGroupName;
}
}
......@@ -4,6 +4,8 @@ import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.store.dto.StoreDTO;
import java.util.List;
/**
* @author zhiwj
* @date 2019/6/24
......@@ -28,4 +30,5 @@ public interface StoreApiService {
*/
ServiceResponse<Integer> costStoreMove(String storeIds, String toStoreId);
ServiceResponse<List<List<String>>> listImportTitle(Integer enterpriseId, Integer regionId);
}
......@@ -62,4 +62,26 @@ public interface StoreFieldApiService {
*/
ServiceResponse<StoreFieldDTO> getStoreField(int storeFieldId);
/**
* 置底
* @param storeFieldId
* @return
*/
ServiceResponse<Integer> sortBottom(int storeFieldId);
/**
* 置顶
* @param storeFieldId
* @return
*/
ServiceResponse<Integer> sortTopping(int storeFieldId);
/**
* 根据域查询数据
* @param regionId
* @return
*/
ServiceResponse<List<StoreFieldDTO>> listStoreFieldByRegionId(Integer regionId);
}
......@@ -57,4 +57,18 @@ public interface StoreFieldSelectApiService {
*/
ServiceResponse<StoreFieldSelectDTO> getStoreFieldSelect(int storeFieldSelectId);
/**
* 置底
* @param storeFieldSelectId
* @return
*/
ServiceResponse<Integer> sortBottom(int storeFieldSelectId);
/**
* 置顶
* @param storeFieldSelectId
* @return
*/
ServiceResponse<Integer> sortTopping(int storeFieldSelectId);
}
package com.gic.store.service;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.store.dto.StoreGroupDTO;
import java.util.List;
......@@ -18,13 +19,20 @@ public interface StoreGroupApiService {
int save(StoreGroupDTO storeGroupDTO);
/**
* 更新分组数据:名称、
* 更新分组数据
* @param storeGroupDTO
* @return
*/
int update(StoreGroupDTO storeGroupDTO);
/**
* 编辑名称
* @param storeGroupDTO
* @return
*/
int updateStoreGroupName(StoreGroupDTO storeGroupDTO);
/**
* 分组上移下移排序
* @param storeGroupDTO
* @param isUp 是否是上移
......@@ -52,4 +60,12 @@ public interface StoreGroupApiService {
* @return
*/
int insertDefaultStoreGroup(int enterpriseId);
/**
* 拖拽排序
* @param storeGroupId
* @param setSortValue
* @return
*/
ServiceResponse<Integer> dragSort(Integer storeGroupId, Integer setSortValue);
}
package com.gic.store.service;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.store.dto.StoreTmpDTO;
import java.util.List;
/**
* @author zhiwj
* @date 2019/7/3
*/
public interface StoreImportApiService {
/**
* 判断当前企业下是否有正在导入的门店,true表示没有 false表示有
* @param enterpriseId
* @return
*/
ServiceResponse<Boolean> hasImportingStore(Integer enterpriseId);
void delStoreTmp(Integer enterpriseId);
ServiceResponse<String> importDataToStore(Integer enterpriseId, String userId, String uuId);
void save(StoreTmpDTO bean);
ServiceResponse<Page> listStoreTmp(Integer enterpriseId, boolean isSuccess, Integer currentPage, Integer pageSize);
ServiceResponse<Boolean> validateStoreCode(Integer enterpriseId, String storeCode);
ServiceResponse<String> isExistStoreGroup(Integer enterpriseId, String storeGroupName);
ServiceResponse<List<String>> listBrandByNotExist(Integer enterpriseId, String brands);
}
......@@ -37,4 +37,5 @@ public interface StoreRegionApiService {
*/
ServiceResponse<List<StoreRegionDTO>> listStoreRegion(Integer enterpriseId, String search);
ServiceResponse<StoreRegionDTO> getStoreRegionByRegion(Integer enterpriseId, Integer regionId);
}
\ No newline at end of file
......@@ -4,30 +4,85 @@ import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.store.dto.StoreStrategyDTO;
import java.util.List;
/**
* @author guojx
* @date 2019/7/4 9:44 AM
*/
public interface StoreStrategyApiService {
ServiceResponse saveStoreStatusStrategy(StoreStrategyDTO storeStrategyDTO);
ServiceResponse saveStoreGroupStrategy(StoreStrategyDTO storeStrategyDTO);
/**
* 新增 策略数据
* @param storeStrategyDTO
* @return
*/
ServiceResponse<Integer> saveStoreStrategy(StoreStrategyDTO storeStrategyDTO);
ServiceResponse<Page<StoreStrategyDTO>> pageStoreStatusStrategy(Integer enterpriseId, String search, int page, int pageSize);
/**
* 删除分组(单条)
* @param strategyId
* @return
*/
ServiceResponse<Integer> deleteStoreStrategy(int strategyId);
ServiceResponse<Page<StoreStrategyDTO>> pageStoreGroupStrategy(Integer enterpriseId, String search, int page, int pageSize);
/**
* 修改策略
* @param storeStrategyDTO
* @return
*/
ServiceResponse<Integer> modifyStoreStrategy(StoreStrategyDTO storeStrategyDTO);
ServiceResponse moveStoreStatusStrategy(Integer enterpriseId, Integer storeStrategyId, int moveType);
ServiceResponse setSortStoreStatusStrategy(Integer enterpriseId, Integer storeStrategyId, int value);
/**
* 根据主键ID获取数据
* @param strategyId
* @return
*/
ServiceResponse<StoreStrategyDTO> getStoreStrategyById(int strategyId);
ServiceResponse moveStoreGroupStrategy(Integer enterpriseId, Integer storeStrategyId, int moveType);
/**
* 置底
* @param strategyId
* @return
*/
ServiceResponse<Integer> sortBottom(int strategyId);
ServiceResponse setSortStoreGroupStrategy(Integer enterpriseId, Integer storeStrategyId, int value);
/**
* 置顶
* @param strategyId
* @return
*/
ServiceResponse<Integer> sortTopping(int strategyId);
ServiceResponse<StoreStrategyDTO> storeStrategyDetail(Integer id);
/**
* 上移、下移
* @param strategyId
* @param isUp
* @return
*/
ServiceResponse<Integer> upOrDown(int strategyId, boolean isUp);
ServiceResponse deleteStoreStrategy(Integer id);
/**
* 设置排序值
* @param strategyId
* @param setValue
* @return
*/
ServiceResponse<Integer> setStoreStrategySort(int strategyId, int setValue);
/**
* 分页查询分组策略数据
* @param enterpriseId
* @param search
* @param strategyType
* @param pageNum
* @param pageSize
* @return
*/
ServiceResponse<Page<StoreStrategyDTO>> listStoreField(int enterpriseId, String search, int strategyType, Integer pageNum, Integer pageSize);
ServiceResponse setStoreGroupStrategyWeight(Integer enterpriseId, int weight);
ServiceResponse getStoreGroupStrategyWeight(Integer enterpriseId);
}
package com.gic.store.dao.mapper;
import com.gic.store.entity.TabStoreExtend;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface TabStoreExtendMapper {
/**
......@@ -50,4 +53,6 @@ public interface TabStoreExtendMapper {
* @return 更新条目数
*/
int updateByPrimaryKey(TabStoreExtend record);
List<TabStoreExtend> list(@Param("enterpriseId") Integer enterpriseId, @Param("storeId") Integer storeId);
}
\ No newline at end of file
package com.gic.store.dao.mapper;
import com.gic.store.entity.TabStoreField;
import com.gic.store.entity.TabStoreFieldSelect;
import org.apache.ibatis.annotations.Param;
import java.util.List;
......@@ -76,14 +75,14 @@ public interface TabStoreFieldMapper {
* @param enterpriseId
* @return
*/
double getMinSort(@Param("enterpriseId") Integer enterpriseId);
Double getMinSort(@Param("enterpriseId") Integer enterpriseId);
/**
* 查询某字段最大排序值
* @param enterpriseId
* @return
*/
double getMaxSort(@Param("enterpriseId") Integer enterpriseId);
Double getMaxSort(@Param("enterpriseId") Integer enterpriseId);
/**
* 查询几条连续的记录
......@@ -107,4 +106,18 @@ public interface TabStoreFieldMapper {
int deleteAll(@Param("enterpriseId") Integer enterpriseId);
int deleteBatch(@Param("storeFieldIds") List<Integer> storeFieldIds);
int isRepeatCode(@Param("enterpriseId") Integer enterpriseId, @Param("storeFieldId") Integer storeFieldId,
@Param("storeFieldCode") String storeFieldCode);
int isRepeatName(@Param("enterpriseId") Integer enterpriseId, @Param("storeFieldId") Integer storeFieldId,
@Param("storeFieldName") String storeFieldName);
/**
* 根据域ID查询列表数据
* @param regionId
* @return
*/
List<TabStoreField> listStoreFieldByRegionId(@Param("regionId") Integer regionId);
}
\ No newline at end of file
......@@ -75,14 +75,14 @@ public interface TabStoreFieldSelectMapper {
* @param storeFieldId
* @return
*/
double getMinSort(@Param("storeFieldId") Integer storeFieldId);
Double getMinSort(@Param("storeFieldId") Integer storeFieldId);
/**
* 查询某字段最大排序值
* @param storeFieldId
* @return
*/
double getMaxSort(@Param("storeFieldId") Integer storeFieldId);
Double getMaxSort(@Param("storeFieldId") Integer storeFieldId);
/**
* 查询几条连续的记录
......@@ -103,4 +103,10 @@ public interface TabStoreFieldSelectMapper {
*/
List<TabStoreFieldSelect> listStoreFieldSelect(@Param("storeFieldId") Integer storeFieldId, @Param("search") String search);
int isRepeatCode(@Param("storeFieldId") Integer storeFieldId, @Param("storeFieldSelectId") Integer storeFieldSelectId,
@Param("storeFieldSelectCode") String storeFieldSelectCode);
int isRepeatName(@Param("storeFieldId") Integer storeFieldId, @Param("storeFieldSelectId") Integer storeFieldSelectId,
@Param("storeFieldSelectName") String storeFieldSelectName);
}
\ No newline at end of file
......@@ -114,4 +114,8 @@ public interface TabStoreGroupMapper {
* @return
*/
int countByParentId(@Param("parentId") Integer parentId);
int isRepeatName(@Param("storeGroupName") String storeGroupName, @Param("storeGroupId") Integer storeGroupId, @Param("enterpriseId") Integer enterpriseId);
TabStoreGroup getStoreGroupByName(@Param("storeGroupName") String storeGroupName, @Param("enterpriseId") Integer enterpriseId);
}
\ No newline at end of file
package com.gic.store.dao.mapper;
import com.gic.store.entity.TabStoreGroupStrategyWeights;
public interface TabStoreGroupStrategyWeightsMapper {
/**
* 根据主键删除
*
* @param weightsId 主键
* @return 更新条目数
*/
int deleteByPrimaryKey(Integer weightsId);
/**
* 插入一条记录
*
* @param record 实体对象
* @return 更新条目数
*/
int insert(TabStoreGroupStrategyWeights record);
/**
* 动态插入一条记录
*
* @param record 实体对象
* @return 更新条目数
*/
int insertSelective(TabStoreGroupStrategyWeights record);
/**
* 根据主键查询
*
* @param weightsId 主键
* @return 实体对象
*/
TabStoreGroupStrategyWeights selectByPrimaryKey(Integer weightsId);
/**
* 根据主键动态更新记录
*
* @param record 实体对象
* @return 更新条目数
*/
int updateByPrimaryKeySelective(TabStoreGroupStrategyWeights record);
/**
* 根据主键更新记录
*
* @param record 实体对象
* @return 更新条目数
*/
int updateByPrimaryKey(TabStoreGroupStrategyWeights record);
/**
* 查询
* @param record
* @return
*/
TabStoreGroupStrategyWeights selectByPrimary(TabStoreGroupStrategyWeights record);
}
\ No newline at end of file
package com.gic.store.dao.mapper;
import com.gic.store.entity.TabStoreStrategy;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface TabStoreStrategyMapper {
/**
......@@ -50,4 +53,72 @@ public interface TabStoreStrategyMapper {
* @return 更新条目数
*/
int updateByPrimaryKey(TabStoreStrategy record);
/**
*
* @param record
* @return
*/
Integer countRepeatStrategyName(TabStoreStrategy record);
/**
* 获取下一个排序值
* @param enterpriseId
* @param sort
* @param strategyType
* @return
*/
TabStoreStrategy selectNextByEnterpriseIdAndSort(@Param("enterpriseId") Integer enterpriseId, @Param("sort") Double sort,
@Param("strategyType") Integer strategyType);
/**
* 获取上一个排序值
* @param enterpriseId
* @param sort
* @param strategyType
* @return
*/
TabStoreStrategy selectPrevByStoreFieldIdAndSort(@Param("enterpriseId") Integer enterpriseId, @Param("sort") Double sort,
@Param("strategyType") Integer strategyType);
/**
* 查询某字段最小排序值
* @param enterpriseId
* @param strategyType
* @return
*/
Double getMinSort(@Param("enterpriseId") Integer enterpriseId, @Param("strategyType") Integer strategyType);
/**
/* *查询某字段最大排序值
*
* @param enterpriseId
* @param strategyType
* @return
*/
Double getMaxSort(@Param("enterpriseId") Integer enterpriseId, @Param("strategyType") Integer strategyType);
/**
* 查询几条连续的记录
* @param strategyId
* @param start
* @param size
* @param enterpriseId
* @param strategyType
* @return
*/
List<TabStoreStrategy> listTwoElementExceptId(@Param("strategyId") Integer strategyId, @Param("start") int start,
@Param("size") int size, @Param("enterpriseId") Integer enterpriseId,
@Param("strategyType") Integer strategyType);
/**
* 分页查询
* @param enterpriseId
* @param search
* @param strategyType
* @return
*/
List<TabStoreStrategy> listStoreStrategy(@Param("enterpriseId") Integer enterpriseId, @Param("search") String search,
@Param("strategyType") Integer strategyType);
}
\ No newline at end of file
package com.gic.store.dao.mapper;
import com.gic.store.entity.TabStoreTmp;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface TabStoreTmpMapper {
/**
......@@ -50,4 +53,10 @@ public interface TabStoreTmpMapper {
* @return 更新条目数
*/
int updateByPrimaryKey(TabStoreTmp record);
int countByStore(@Param("enterpriseId") Integer enterpriseId, @Param("errorMessage") String errorMessage);
void delStoreTmp(@Param("enterpriseId") Integer enterpriseId);
List<TabStoreTmp> listStoreTmp(@Param("enterpriseId") Integer enterpriseId, @Param("isSuccess") Boolean isSuccess, @Param("isWait") Boolean isWait);
}
\ No newline at end of file
package com.gic.store.entity;
import java.util.Date;
/**
* tab_store_group_strategy_weights
*/
public class TabStoreGroupStrategyWeights {
/**
*
*/
private Integer weightsId;
/**
*
*/
private Date createTime;
/**
*
*/
private Date updateTime;
/**
* 人为操作填写过门店分组后,门店资料更新不再执行快捷分组策略 1开启 0不开启
*/
private Integer status;
/**
*
*/
private Integer enterpriseId;
public Integer getWeightsId() {
return weightsId;
}
public void setWeightsId(Integer weightsId) {
this.weightsId = weightsId;
}
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 getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Integer getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(Integer enterpriseId) {
this.enterpriseId = enterpriseId;
}
}
\ No newline at end of file
......@@ -14,7 +14,7 @@ public class TabStoreStrategy {
/**
* 策略名称
*/
private String startegyName;
private String strategyName;
/**
*
......@@ -54,7 +54,12 @@ public class TabStoreStrategy {
/**
* 策略类型,1门店状态策略, 2门店分组策略
*/
private Integer stategyType;
private Integer strategyType;
/**
* 排序字段
*/
private Double sort;
public Integer getStrategyId() {
return strategyId;
......@@ -64,12 +69,12 @@ public class TabStoreStrategy {
this.strategyId = strategyId;
}
public String getStartegyName() {
return startegyName;
public String getStrategyName() {
return strategyName;
}
public void setStartegyName(String startegyName) {
this.startegyName = startegyName;
public void setStrategyName(String strategyName) {
this.strategyName = strategyName;
}
public Integer getEnterpriseId() {
......@@ -128,11 +133,19 @@ public class TabStoreStrategy {
this.status = status;
}
public Integer getStategyType() {
return stategyType;
public Integer getStrategyType() {
return strategyType;
}
public void setStrategyType(Integer strategyType) {
this.strategyType = strategyType;
}
public Double getSort() {
return sort;
}
public void setStategyType(Integer stategyType) {
this.stategyType = stategyType;
public void setSort(Double sort) {
this.sort = sort;
}
}
\ No newline at end of file
......@@ -44,6 +44,11 @@ public class TabStoreTmp {
/**
*
*/
private String brands;
/**
*
*/
private String province;
/**
......@@ -92,6 +97,26 @@ public class TabStoreTmp {
private String errorMessage;
/**
* uuid
*/
private String signKey;
/**
*
*/
private String storeType;
/**
*
*/
private String erpStatus;
/**
*
*/
private String storeGroupName;
/**
*
*/
private Date createTime;
......@@ -157,6 +182,14 @@ public class TabStoreTmp {
this.conactsPhone = conactsPhone;
}
public String getBrands() {
return brands;
}
public void setBrands(String brands) {
this.brands = brands;
}
public String getProvince() {
return province;
}
......@@ -237,6 +270,38 @@ public class TabStoreTmp {
this.errorMessage = errorMessage;
}
public String getSignKey() {
return signKey;
}
public void setSignKey(String signKey) {
this.signKey = signKey;
}
public String getStoreType() {
return storeType;
}
public void setStoreType(String storeType) {
this.storeType = storeType;
}
public String getErpStatus() {
return erpStatus;
}
public void setErpStatus(String erpStatus) {
this.erpStatus = erpStatus;
}
public String getStoreGroupName() {
return storeGroupName;
}
public void setStoreGroupName(String storeGroupName) {
this.storeGroupName = storeGroupName;
}
public Date getCreateTime() {
return createTime;
}
......
package com.gic.store.service;
import com.gic.store.dto.StoreExtendDTO;
import com.gic.store.entity.TabStoreExtend;
import java.util.List;
/**
* @author zhiwj
* @date 2019/7/3
*/
public interface StoreExtendService {
void saveOrUpdate(Integer enterpriseId, Integer storeId, List<StoreExtendDTO> storeExtendList);
List<TabStoreExtend> listByStoreId(Integer enterpriseId, Integer storeId);
List<StoreExtendDTO> convertStoreExtendToDTO(List<TabStoreExtend> extendList);
}
......@@ -68,4 +68,25 @@ public interface StoreFieldSelectService {
* @return
*/
Page<TabStoreFieldSelect> listStoreFieldSelect(int storeFieldId, String search, Integer pageNum, Integer pageSize);
/**
* 置底
* @param storeFieldId
* @param storeFieldSelectId
*/
void sortBottom(int storeFieldId, int storeFieldSelectId);
/**
* 置顶
* @param storeFieldId
* @param storeFieldSelectId
*/
void sortTopping(int storeFieldId, int storeFieldSelectId);
double getMinSort(int storeFieldId);
boolean isRepeatCode(Integer storeFieldId, Integer storeFieldSelectId, String storeFieldSelectCode);
boolean isRepeatName(Integer storeFieldId, Integer storeFieldSelectId, String storeFieldSelectName);
}
......@@ -83,4 +83,31 @@ public interface StoreFieldService {
* @return
*/
Page<TabStoreField> listStoreField(int enterpriseId, String search, Integer pageNum, Integer pageSize);
double getMinSort(int enterpriseId);
boolean isRepeatCode(Integer enterpriseId, Integer storeFieldId, String storeFieldCode);
boolean isRepeatName(Integer enterpriseId, Integer storeFieldId, String storeFieldName);
/**
* 置底
* @param enterpriseId
* @param storeFieldId
*/
void sortBottom(int enterpriseId, int storeFieldId);
/**
* 置顶
* @param enterpriseId
* @param storeFieldId
*/
void sortTopping(int enterpriseId, int storeFieldId);
/**
* 根据域主键查询字段列表数据
* @param regionId
* @return
*/
List<TabStoreField> listStoreFieldByRegionId(Integer regionId);
}
package com.gic.store.service;
import com.gic.store.entity.TabStoreGroup;
/**
* @author guojx
* @date 2019/7/3 2:16 PM
*/
public interface StoreGroupService {
/**
* 根据名称查询分组
* @param storeGroupName
* @param enterpriseId
* @return
*/
TabStoreGroup getStoreGroupByName(String storeGroupName, Integer enterpriseId);
/**
* 拖拽排序
* @param storeGroup
* @param toSortValue 要排序的值
*/
void dragSort(TabStoreGroup storeGroup, Integer toSortValue);
TabStoreGroup getStoreGroupById(Integer storeGroupId);
/**
* 更新排序值
* @param sort
* @param storeGroupId
*/
void updateSort(Integer sort, Integer storeGroupId);
}
package com.gic.store.service;
import com.gic.store.dto.StoreTmpDTO;
import com.gic.store.entity.TabStoreTmp;
import com.github.pagehelper.Page;
import java.util.List;
/**
* @author zhiwj
* @date 2019/7/3
*/
public interface StoreImportService {
Boolean hasImportingStore(Integer enterpriseId);
void delStoreTmp(Integer enterpriseId);
void save(StoreTmpDTO bean);
Page listStoreTmp(Integer enterpriseId, boolean isSuccess, Integer currentPage, Integer pageSize);
List<TabStoreTmp> listUnImportStore(String enterpriseId);
void updateData(StoreTmpDTO t);
}
......@@ -22,4 +22,6 @@ public interface StoreRegionService {
Page<TabStoreRegion> listStoreRegion(Integer enterpriseId, String search, Integer pageNum, Integer pageSize);
List<TabStoreRegion> listStoreRegion(Integer enterpriseId, String search);
TabStoreRegion getById(Integer enterpriseId, Integer regionId);
}
package com.gic.store.service;
import com.gic.store.dto.StoreStrategyDTO;
import com.gic.store.entity.TabStoreStrategy;
import com.github.pagehelper.Page;
/**
* @author guojx
* @date 2019/7/4 9:46 AM
*/
public interface StoreStrategyService {
/**
* 新增分组策略
* @param storeStrategyDTO
* @return
*/
int saveStoreGroupStrategy(StoreStrategyDTO storeStrategyDTO);
/**
* 是否策略名称重复
* @param record
* @return
*/
boolean isRepeatGroupStrategyName(TabStoreStrategy record);
/**
* 根据主键查询
* @param strategyId
* @return
*/
TabStoreStrategy getStoreStrategyById(Integer strategyId);
/**
* 查询下一个排序值的属性值
* @param enterpriseId
* @param sort
* @param strategyType
* @return
*/
TabStoreStrategy getNextSort(int enterpriseId, double sort, int strategyType);
/**
* 查询上一个排序值的属性值
* @param enterpriseId
* @param sort
* @param strategyType
* @return
*/
TabStoreStrategy getPrevSort(int enterpriseId, double sort, int strategyType);
/**
* 置顶、置底,自定义序号
* @param strategyId
* @param enterpriseId
* @param setValue
* @param strategyType
*/
void setStoreStrategySort(int strategyId, int enterpriseId, int setValue, int strategyType);
double getMinSort(int enterpriseId, int strategyType);
/**
* 置底
* @param enterpriseId
* @param strategyId
* @param strategyType
*/
void sortBottom(int enterpriseId, int strategyId, int strategyType);
/**
* 置顶
* @param enterpriseId
* @param strategyId
* @param strategyType
*/
void sortTopping(int enterpriseId, int strategyId, int strategyType);
/**
* 删除分组策略(单条)
* @param strategyId
* @return
*/
int deleteStoreGroupStrategy(int strategyId);
/**
* 修改分组策略
* @param storeStrategyDTO
* @return
*/
int modifyStoreGroupStrategy(StoreStrategyDTO storeStrategyDTO);
/**
* 分页查询数据
* @param enterpriseId
* @param search
* @param strategyType
* @param pageNum
* @param pageSize
* @return
*/
Page<TabStoreStrategy> listStoreStrategy(int enterpriseId, String search, int strategyType, Integer pageNum, Integer pageSize);
void updateSortById(int strategyId, double sort);
}
package com.gic.store.service;
import com.task.allocation.api.TaskAllocationOperation;
import com.task.allocation.exception.TaskAllocationException;
/**
* @author zhiwj
* @date 2019/7/4
*/
public interface StoreTaskService extends TaskAllocationOperation {
String importDataToStore(Integer enterpriseId, String userId, String uuId) throws TaskAllocationException;
}
package com.gic.store.service.impl;
import com.gic.commons.util.EntityUtil;
import com.gic.store.dao.mapper.TabStoreExtendMapper;
import com.gic.store.dto.StoreExtendDTO;
import com.gic.store.entity.TabStoreExtend;
import com.gic.store.entity.TabStoreField;
import com.gic.store.service.StoreExtendService;
import com.gic.store.service.StoreFieldService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* @author zhiwj
* @date 2019/7/3
*/
@Service
public class StoreExtendServiceImpl implements StoreExtendService {
@Autowired
private TabStoreExtendMapper tabStoreExtendMapper;
@Autowired
private StoreFieldService storeFieldService;
@Override
public void saveOrUpdate(Integer enterpriseId, Integer storeId, List<StoreExtendDTO> storeExtendList) {
List<TabStoreExtend> tabStoreExtendList = EntityUtil.changeEntityListByOrika(TabStoreExtend.class, storeExtendList);
for (TabStoreExtend tabStoreExtend : tabStoreExtendList) {
tabStoreExtend.setEnterpriseId(enterpriseId);
tabStoreExtend.setStoreId(storeId);
if (tabStoreExtend.getStoreExtendId() == null) {
tabStoreExtend.setCreateTime(new Date());
tabStoreExtendMapper.insertSelective(tabStoreExtend);
} else {
tabStoreExtendMapper.updateByPrimaryKeySelective(tabStoreExtend);
}
}
}
@Override
public List<TabStoreExtend> listByStoreId(Integer enterpriseId, Integer storeId) {
return tabStoreExtendMapper.list(enterpriseId, storeId);
}
@Override
public List<StoreExtendDTO> convertStoreExtendToDTO(List<TabStoreExtend> extendList) {
List<StoreExtendDTO> extendDTOList = EntityUtil.changeEntityListByOrika(StoreExtendDTO.class, extendList);
for (StoreExtendDTO storeExtendDTO : extendDTOList) {
TabStoreField field = storeFieldService.getStoreFieldById(storeExtendDTO.getStoreFieldId());
storeExtendDTO.setStoreFieldName(field.getStoreFieldName());
storeExtendDTO.setStoreFieldCode(field.getStoreFieldCode());
storeExtendDTO.setStoreFieldType(field.getStoreFieldType());
storeExtendDTO.setStoreFieldDetail(field.getStoreFieldDetail());
storeExtendDTO.setErpRelCode(field.getErpRelCode());
}
return extendDTOList;
}
}
......@@ -24,7 +24,9 @@ public class StoreFieldSelectServiceImpl implements StoreFieldSelectService{
@Override
public int save(StoreFieldSelectDTO storeFieldSelectDTO) {
return tabStoreFieldSelectMapper.insert(EntityUtil.changeEntityNew(TabStoreFieldSelect.class, storeFieldSelectDTO));
TabStoreFieldSelect storeFieldSelect = EntityUtil.changeEntityNew(TabStoreFieldSelect.class, storeFieldSelectDTO);
tabStoreFieldSelectMapper.insert(storeFieldSelect);
return storeFieldSelect.getStoreFieldSelectId();
}
@Override
......@@ -102,20 +104,51 @@ public class StoreFieldSelectServiceImpl implements StoreFieldSelectService{
}
private void sortTopping(int storeFieldId, int storeFieldSelectId) {
Double sort = tabStoreFieldSelectMapper.getMinSort(storeFieldId);
@Override
public void sortTopping(int storeFieldId, int storeFieldSelectId) {
Double sort = 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);
@Override
public double getMinSort(int storeFieldId) {
Double sort = tabStoreFieldSelectMapper.getMinSort(storeFieldId);
return sort == null ? 1d : sort;
}
@Override
public boolean isRepeatCode(Integer storeFieldId, Integer storeFieldSelectId, String storeFieldSelectCode) {
int count = tabStoreFieldSelectMapper.isRepeatCode(storeFieldId, storeFieldSelectId, storeFieldSelectCode);
if (count > 0) {
return true;
}
return false;
}
@Override
public boolean isRepeatName(Integer storeFieldId, Integer storeFieldSelectId, String storeFieldSelectName) {
int count = tabStoreFieldSelectMapper.isRepeatName(storeFieldId, storeFieldSelectId, storeFieldSelectName);
if (count > 0) {
return true;
}
return false;
}
@Override
public void sortBottom(int storeFieldId, int storeFieldSelectId) {
Double sort = getMaxSort(storeFieldId);
TabStoreFieldSelect fieldSelect = new TabStoreFieldSelect();
fieldSelect.setStoreFieldSelectId(storeFieldSelectId);
fieldSelect.setSort(sort + 1d);
tabStoreFieldSelectMapper.updateByPrimaryKeySelective(fieldSelect);
}
public double getMaxSort(int storeFieldId) {
Double sort = tabStoreFieldSelectMapper.getMaxSort(storeFieldId);
return sort == null ? 1d : sort;
}
}
......@@ -11,6 +11,7 @@ import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
......@@ -23,7 +24,9 @@ public class StoreFieldServiceImpl implements StoreFieldService{
private TabStoreFieldMapper tabStoreFieldMapper;
@Override
public int save(StoreFieldDTO storeFieldDTO) {
return tabStoreFieldMapper.insert(EntityUtil.changeEntityNew(TabStoreField.class, storeFieldDTO));
TabStoreField storeField = EntityUtil.changeEntityNew(TabStoreField.class, storeFieldDTO);
tabStoreFieldMapper.insert(storeField);
return storeField.getStoreFieldId();
}
@Override
......@@ -114,19 +117,56 @@ public class StoreFieldServiceImpl implements StoreFieldService{
return (Page<TabStoreField>) list;
}
private void sortTopping(int enterpriseId, int storeFieldId) {
@Override
public double getMinSort(int enterpriseId) {
Double sort = tabStoreFieldMapper.getMinSort(enterpriseId);
return sort == null ? 1d : sort;
}
@Override
public boolean isRepeatCode(Integer enterpriseId, Integer storeFieldId, String storeFieldCode) {
int count = tabStoreFieldMapper.isRepeatCode(enterpriseId, storeFieldId, storeFieldCode);
if (count > 0) {
return true;
}
return false;
}
@Override
public boolean isRepeatName(Integer enterpriseId, Integer storeFieldId, String storeFieldName) {
int count = tabStoreFieldMapper.isRepeatName(enterpriseId, storeFieldId, storeFieldName);
if (count > 0) {
return true;
}
return false;
}
@Override
public void sortTopping(int enterpriseId, int storeFieldId) {
Double sort = getMinSort(enterpriseId);
TabStoreField storeField = new TabStoreField();
storeField.setStoreFieldId(storeFieldId);
storeField.setSort(sort - 1d);
tabStoreFieldMapper.updateByPrimaryKeySelective(storeField);
}
private void sortBottom(int enterpriseId, int storeFieldId) {
Double sort = tabStoreFieldMapper.getMaxSort(enterpriseId);
@Override
public List<TabStoreField> listStoreFieldByRegionId(Integer regionId) {
List<TabStoreField> list = tabStoreFieldMapper.listStoreFieldByRegionId(regionId);
return list == null ? new ArrayList<>() : list;
}
@Override
public void sortBottom(int enterpriseId, int storeFieldId) {
Double sort = getMaxSort(enterpriseId);
TabStoreField storeField = new TabStoreField();
storeField.setStoreFieldId(storeFieldId);
storeField.setSort(sort + 1d);
tabStoreFieldMapper.updateByPrimaryKeySelective(storeField);
}
public double getMaxSort(int enterpriseId) {
Double sort = tabStoreFieldMapper.getMaxSort(enterpriseId);
return sort == null ? 1d : sort;
}
}
package com.gic.store.service.impl;
import com.gic.store.dao.mapper.TabStoreGroupMapper;
import com.gic.store.entity.TabStoreGroup;
import com.gic.store.service.StoreGroupService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author guojx
* @date 2019/7/3 2:18 PM
*/
@Service("storeGroupService")
public class StoreGroupServiceImpl implements StoreGroupService{
@Autowired
private TabStoreGroupMapper tabStoreGroupMapper;
@Override
public TabStoreGroup getStoreGroupByName(String storeGroupName, Integer enterpriseId) {
return tabStoreGroupMapper.getStoreGroupByName(storeGroupName, enterpriseId);
}
@Override
public void dragSort(TabStoreGroup storeGroup, Integer toSortValue) {
Integer enterpriseId = storeGroup.getEnterpriseId();
Integer groupLevel = storeGroup.getGroupLevel();
Integer fromSortValue = storeGroup.getSort();
Integer storeGroupId = storeGroup.getStoreGroupId();
TabStoreGroup record = new TabStoreGroup();
record.setEnterpriseId(enterpriseId);
record.setGroupLevel(groupLevel);
List<TabStoreGroup> tabStoreGroupList = tabStoreGroupMapper.listStoreGroup(record);
if (fromSortValue > toSortValue) {
//如果是向上拖拽
for (int i = 0, length = tabStoreGroupList.size(); i < length; i ++) {
TabStoreGroup tabStoreGroup = tabStoreGroupList.get(i);
//如果大于setSortValue,都需要降低排序值,往后推
boolean isNeedDown = tabStoreGroup.getSort() >= toSortValue && tabStoreGroup.getSort() < fromSortValue;
if (isNeedDown) {
updateSort(tabStoreGroupList.get(i + 1).getSort(), tabStoreGroup.getStoreGroupId());
}
}
} else if (fromSortValue < toSortValue) {
//向下拖拽
for (int i = 0, length = tabStoreGroupList.size(); i < length; i ++) {
TabStoreGroup tabStoreGroup = tabStoreGroupList.get(i);
boolean isNeedUp = tabStoreGroup.getSort() <= toSortValue && tabStoreGroup.getSort() > fromSortValue;
if (isNeedUp) {
updateSort(tabStoreGroupList.get(i - 1).getSort(), tabStoreGroup.getStoreGroupId());
}
}
}
updateSort(toSortValue, storeGroupId);
}
@Override
public TabStoreGroup getStoreGroupById(Integer storeGroupId) {
return tabStoreGroupMapper.selectByPrimaryKey(storeGroupId);
}
@Override
public void updateSort(Integer sort, Integer storeGroupId) {
TabStoreGroup record = new TabStoreGroup();
record.setStoreGroupId(storeGroupId);
record.setSort(sort);
tabStoreGroupMapper.updateByPrimaryKeySelective(record);
}
}
package com.gic.store.service.impl;
import com.gic.commons.util.EntityUtil;
import com.gic.store.constant.StoreImportEnum;
import com.gic.store.dao.mapper.TabStoreTmpMapper;
import com.gic.store.dto.StoreTmpDTO;
import com.gic.store.entity.TabStoreTmp;
import com.gic.store.service.StoreImportService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author zhiwj
* @date 2019/7/3
*/
@Service
public class StoreImportServiceImpl implements StoreImportService {
@Autowired
private TabStoreTmpMapper tabStoreTmpMapper;
@Override
public Boolean hasImportingStore(Integer enterpriseId) {
int count = tabStoreTmpMapper.countByStore(enterpriseId, StoreImportEnum.WAIT.getCode());
return count > 0;
}
@Override
public void delStoreTmp(Integer enterpriseId) {
tabStoreTmpMapper.delStoreTmp(enterpriseId);
}
@Override
public void save(StoreTmpDTO bean) {
TabStoreTmp tabStoreTmp = EntityUtil.changeEntityByOrika(TabStoreTmp.class, bean);
tabStoreTmpMapper.insertSelective(tabStoreTmp);
}
@Override
public Page listStoreTmp(Integer enterpriseId, boolean isSuccess, Integer currentPage, Integer pageSize) {
PageHelper.startPage(currentPage, pageSize);
return (Page) tabStoreTmpMapper.listStoreTmp(enterpriseId, isSuccess, null);
}
@Override
public List<TabStoreTmp> listUnImportStore(String enterpriseId) {
return tabStoreTmpMapper.listStoreTmp(Integer.parseInt(enterpriseId), null, true);
}
@Override
public void updateData(StoreTmpDTO t) {
TabStoreTmp tabStoreTmp = new TabStoreTmp();
tabStoreTmp.setStoreTmpId(t.getStoreTmpId());
tabStoreTmp.setErrorMessage(t.getErrorMessage());
tabStoreTmpMapper.updateByPrimaryKeySelective(tabStoreTmp);
}
}
......@@ -73,4 +73,9 @@ public class StoreRegionServiceImpl implements StoreRegionService {
public List<TabStoreRegion> listStoreRegion(Integer enterpriseId, String search) {
return storeRegionMapper.listStoreRegion(enterpriseId, search);
}
@Override
public TabStoreRegion getById(Integer enterpriseId, Integer regionId) {
return storeRegionMapper.selectByPrimaryKey(regionId);
}
}
package com.gic.store.service.impl;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.GlobalInfo;
import com.gic.store.constant.CreateTypeEnum;
import com.gic.store.dto.*;
import com.gic.store.entity.TabStoreBrand;
import com.gic.store.entity.TabStoreGroup;
import com.gic.store.entity.TabStoreTmp;
import com.gic.store.service.*;
import com.google.common.base.Joiner;
import com.task.allocation.api.AbstractTaskAllocationOperation;
import com.task.allocation.exception.TaskAllocationException;
import com.task.allocation.qo.InitTaskQo;
import com.task.allocation.util.TaskAllocationSdkClient;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Optional;
/**
* @author zhiwj
* @date 2019/7/4
*/
@Service
public class StoreTaskServiceImpl extends AbstractTaskAllocationOperation implements StoreTaskService {
private static final Logger logger = LogManager.getLogger(StoreTaskServiceImpl.class);
@Autowired
private StoreImportService storeImportService;
@Autowired
private StoreBrandService storeBrandService;
@Autowired
private ProvincesApiService provincesApiService;
@Autowired
private StoreDictApiService storeDictApiService;
@Autowired
private StoreGroupService storeGroupService;
@Autowired
private StoreApiService storeApiService;
@Autowired
private StoreService storeService;
@Override
public List<Object> getListTasks(String params) {
// TODO
List<TabStoreTmp> list = storeImportService.listUnImportStore(params);
List<Object> listTask = new ArrayList<Object>(list);
logger.info("门店批量导入放入队列数据数量:{}", list.size());
return listTask;
}
@Override
public void dealSingle(Object o) throws TaskAllocationException {
StoreTmpDTO t = (StoreTmpDTO) o;
try {
ServiceResponse<Integer> serviceResponse = this.importDataToStore(t);
if (!serviceResponse.isSuccess()) {
t.setErrorMessage(serviceResponse.getMessage());
}
} catch (Exception e) {
logger.warn("写入门店表和成员表异常", e);
t.setErrorMessage("导入异常");
storeImportService.updateData(t);
}
}
public ServiceResponse<Integer> importDataToStore(StoreTmpDTO t) {
StoreDTO storeDTO = new StoreDTO();
storeDTO.setEnterpriseId(t.getEnterpriseId());
storeDTO.setStoreName(t.getStoreName());
if (storeService.countByStoreCode(t.getEnterpriseId(), t.getStoreCode(), null) > 0) {
t.setErrorMessage("门店code已经存在");
storeImportService.updateData(t);
}
storeDTO.setStoreCode(t.getStoreCode());
storeDTO.setRegionId(t.getRegionId());
storeDTO.setConactsPhone(t.getConactsPhone());
storeDTO.setAddress(t.getAddress());
String brands = t.getBrands();
String[] brandArr = brands.split("、");
List<TabStoreBrand> storeBrandList = storeBrandService.listAllStoreBrand(t.getEnterpriseId(), null, null, null);
List<Integer> list = new ArrayList<>();
for (String brandName : brandArr) {
for (TabStoreBrand storeBrand : storeBrandList) {
if (storeBrand.getStoreBrandName().equals(brandName)) {
list.add(storeBrand.getStoreBrandId());
break;
}
}
}
storeDTO.setBrandIds(Joiner.on(GlobalInfo.FLAG_COMMA).join(list));
ServiceResponse<List<ProvinceDTO>> provinceResponse = provincesApiService.selectAllProvince();
ServiceResponse<List<CityDTO>> cityResponse = provincesApiService.selectAllCity();
ServiceResponse<List<CountyDTO>> countyResponse = provincesApiService.selectAllCounty();
if (provinceResponse.isSuccess() && cityResponse.isSuccess() && countyResponse.isSuccess()) {
List<ProvinceDTO> provinceDTOList = provinceResponse.getResult();
Optional<ProvinceDTO> provinceDTO = provinceDTOList.stream().filter(e -> StringUtils.equals(e.getProvinceName(), t.getProvince())).findFirst();
storeDTO.setProvinceId(provinceDTO.get().getProvinceId());
List<CityDTO> cityDTOList = cityResponse.getResult();
Optional<CityDTO> cityDTO = cityDTOList.stream().filter(e -> StringUtils.equals(e.getCityName(), t.getCity())).findFirst();
storeDTO.setCityId(cityDTO.get().getCityId());
List<CountyDTO> countyDTOList = countyResponse.getResult();
Optional<CountyDTO> countyDTO = countyDTOList.stream().filter(e -> StringUtils.equals(e.getCountyName(), t.getCounty())).findFirst();
storeDTO.setAreaId(countyDTO.get().getCountyId());
storeDTO.setProvinces(provinceDTO.get().getProvinceName() + "\\" + cityDTO.get().getCityName() + "\\" + countyDTO.get().getCountyName());
} else {
logger.warn("省市区调用失败");
}
storeDTO.setLongitude(t.getLongitude());
storeDTO.setLatitude(t.getLatitude());
// todo 判断溢出
storeDTO.setOverflowStatus(0);
storeDTO.setStatus(2);
ServiceResponse<List<StoreDictDTO>> erpStatusResponse = storeDictApiService.listStoreStatus(t.getEnterpriseId());
if (erpStatusResponse.isSuccess()) {
List<StoreDictDTO> erpList = erpStatusResponse.getResult();
final String erpStatusTmp = t.getErpStatus().replace("\\s+", "");
Optional<StoreDictDTO> erpStatusDTO = erpList.stream().filter(e -> e.getValue().equals(erpStatusTmp)).findFirst();
storeDTO.setErpStatus(Integer.parseInt(erpStatusDTO.get().getKey()));
} else {
logger.warn("字典模块调用失败");
}
ServiceResponse<List<StoreDictDTO>> storeTypeResponse = storeDictApiService.listStoreType(t.getEnterpriseId());
if (storeTypeResponse.isSuccess()) {
List<StoreDictDTO> typeList = storeTypeResponse.getResult();
final String typeTmp = t.getStoreType().replace("\\s+", "");
Optional<StoreDictDTO> typeTmpDTO = typeList.stream().filter(e -> e.getValue().equals(typeTmp)).findFirst();
storeDTO.setStoreType(Integer.parseInt(typeTmpDTO.get().getKey()));
} else {
logger.warn("字典模块调用失败");
}
TabStoreGroup group = storeGroupService.getStoreGroupByName(t.getStoreGroupName(), t.getEnterpriseId());
storeDTO.setStoreGroupId(group.getStoreGroupId());
storeDTO.setCreateTime(new Date());
storeDTO.setCreateType(CreateTypeEnum.BATCH_IMPORT.getCode());
// todo 扩展信息
// storeDTO.setStoreExtendList(c);
return storeApiService.saveOrUpdate(storeDTO);
}
@Override
public String importDataToStore(Integer enterpriseId, String userId, String uuId) throws TaskAllocationException {
// TODO 队列
String message = "";
InitTaskQo initTaskQo = new InitTaskQo();
initTaskQo.setEnterpriseId(enterpriseId.toString());// 企业id
initTaskQo.setOperationUserId(userId);// 操作人id
initTaskQo.setTaskMqKey(GlobalInfo.MQ_ROUTER_BATCH_TMPSTORE);// 注册的队列名称
initTaskQo.setTaskType(GlobalInfo.TASK_TYPE_BATCH_IMPORT_STORE);// 任务类型
initTaskQo.setParams(enterpriseId.toString());// 你自己处理需要的参数
initTaskQo.setTaskSignKey(uuId);// 任务类型 唯一标识符
TaskAllocationSdkClient instance = TaskAllocationSdkClient.getInstance();// 初始化sdk
try {
instance.initTask(initTaskQo);// 初始化接口
logger.info("门店批量导入队列初始化成功");
} catch (Exception e) {
logger.warn("门店批量导入队列初始化异常", e);
message = "门店批量导入队列初始化异常";
}
return message;
}
}
package com.gic.store.service.outer;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.PageHelperUtils;
import com.gic.store.dao.mapper.TabStoreGroupMapper;
import com.gic.store.dto.StoreBrandDTO;
import com.gic.store.dto.StoreBusinessTimeDTO;
import com.gic.store.dto.StoreDTO;
import com.gic.store.dto.StorePhotoDTO;
import com.gic.store.dto.*;
import com.gic.store.entity.*;
import com.gic.store.service.*;
import com.gic.store.utils.ErrorCode;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
......@@ -39,7 +41,10 @@ public class StoreApiServiceImpl implements StoreApiService {
private StoreBusinessTimeService storeBusinessTimeService;
@Autowired
private TabStoreGroupMapper tabStoreGroupMapper;
@Autowired
private StoreExtendService storeExtendService;
@Autowired
private StoreFieldService storeFieldService;
@Override
@Transactional(rollbackFor = Exception.class)
......@@ -58,6 +63,8 @@ public class StoreApiServiceImpl implements StoreApiService {
} else {
storeService.update(storeDTO);
}
// 自定义属性
storeExtendService.saveOrUpdate(storeDTO.getEnterpriseId(), storeDTO.getStoreId(), storeDTO.getStoreExtendList());
// 门店图片
List<Integer> delPhotos = null;
if (StringUtils.isNotEmpty(storeDTO.getDelPhotos())) {
......@@ -94,16 +101,25 @@ public class StoreApiServiceImpl implements StoreApiService {
if (storeGroup != null) {
storeDTO.setStoreGroupName(storeGroup.getStoreGroupName());
}
// 门店照片
List<TabStorePhoto> tabPhotoList = storePhotoService.listStorePhoto(storeDTO.getEnterpriseId(), storeDTO.getStoreId());
List<StorePhotoDTO> photoDTOList = EntityUtil.changeEntityListByOrika(StorePhotoDTO.class, tabPhotoList);
storeDTO.setPhotoList(photoDTOList);
// 营业时间
List<TabStoreBusinessTime> tabBusinessTimeList = storeBusinessTimeService.listBusinessTime(store.getStoreId());
List<StoreBusinessTimeDTO> businessTimeDTOList = EntityUtil.changeEntityListByOrika(StoreBusinessTimeDTO.class, tabBusinessTimeList);
storeDTO.setBusinessTimeList(businessTimeDTOList);
storeBusinessTimeService.convertBusinessTime(businessTimeDTOList);
// 门店品牌
List<TabStoreBrand> storeBrandList = storeBrandService.listStoreBrandByIds(store.getBrandIds());
List<StoreBrandDTO> brandDTOList = EntityUtil.changeEntityListByOrika(StoreBrandDTO.class, storeBrandList);
storeDTO.setBrandList(brandDTOList);
// 自定义属性
List<TabStoreExtend> extendList = storeExtendService.listByStoreId(enterpriseId, storeId);
List<StoreExtendDTO> extendDTOList = storeExtendService.convertStoreExtendToDTO(extendList);
storeDTO.setStoreExtendList(extendDTOList);
return ServiceResponse.success(storeDTO);
}
......@@ -111,4 +127,32 @@ public class StoreApiServiceImpl implements StoreApiService {
public ServiceResponse<Integer> costStoreMove(String storeIds, String toStoreId) {
return null;
}
@Override
public ServiceResponse<List<List<String>>> listImportTitle(Integer enterpriseId, Integer regionId) {
List<List<String>> list = new ArrayList<>();
String[] rowName = {"序号", "门店名称", "门店代码", "门店类型", "门店状态", "门店电话", "门店所属分组", "关联门店品牌", "省", "市", "区县", "门店地址(不包括省市区)", "经度", "纬度"};
List<String> rowNameList = new ArrayList<>();
Collections.addAll(rowNameList, rowName);
String[] description = {"", "不能超过20个字", "必填,不能超过20个字符,为erp系统中门店唯一识别码", "门店类型描述", "门店状态描述", "门店电话描述", "门店所属分组描述", "用\"、\"隔开", "省描述", "市描述", "区县描述", "门店地址(不包括省市区)描述", "", ""};
List<String> descriptionList = new ArrayList<>();
Collections.addAll(descriptionList, description);
list.add(rowNameList);
list.add(descriptionList);
List<TabStoreField> fields = storeFieldService.listStoreFieldByRegionId(regionId);
if (CollectionUtils.isNotEmpty(fields)) {
for (TabStoreField field : fields) {
rowNameList.add(field.getStoreFieldName());
String storeFieldDetail = field.getStoreFieldDetail();
JSONObject jsonObject = JSON.parseObject(storeFieldDetail);
descriptionList.add(jsonObject.getString("tipMessage"));
}
}
return ServiceResponse.success(list);
}
}
......@@ -14,6 +14,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
......@@ -37,10 +38,26 @@ public class StoreFieldApiServiceImpl implements StoreFieldApiService{
if (StringUtils.isBlank(storeFieldDTO.getStoreRegionId())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "所属域参数值错误");
}
if (storeFieldDTO.getEnterpriseId() == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "企业ID参数值错误");
}
if (StringUtils.isNotBlank(storeFieldDTO.getErpRelCode())) {
if (storeFieldService.isRepeatCode(storeFieldDTO.getEnterpriseId(), null, storeFieldDTO.getStoreFieldCode())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "Code不能重复");
}
}
if (storeFieldService.isRepeatName(storeFieldDTO.getEnterpriseId(), null, storeFieldDTO.getStoreFieldName())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "属性名称不能重复");
}
ServiceResponse validParamResult = StoreFieldValidParamUtil.validStoreFieldDetail(storeFieldDTO.getStoreFieldType(), storeFieldDTO.getStoreFieldDetail());
if (!validParamResult.isSuccess()) {
return validParamResult;
}
storeFieldDTO.setCreateTime(new Date());
storeFieldDTO.setUpdateTime(new Date());
storeFieldDTO.setStatus(1);
storeFieldDTO.setSort(storeFieldService.getMinSort(storeFieldDTO.getEnterpriseId()) - 1);
return ServiceResponse.success(storeFieldService.save(storeFieldDTO));
}
......@@ -107,6 +124,11 @@ public class StoreFieldApiServiceImpl implements StoreFieldApiService{
if (StringUtils.isBlank(storeFieldDTO.getStoreRegionId())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "所属域参数值错误");
}
if (storeFieldService.isRepeatName(storeFieldDTO.getEnterpriseId(), storeFieldDTO.getStoreFieldId(), storeFieldDTO.getStoreFieldName())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "属性名称不能重复");
}
ServiceResponse validParamResult = StoreFieldValidParamUtil.validStoreFieldDetail(storeFieldDTO.getStoreFieldType(), storeFieldDTO.getStoreFieldDetail());
if (!validParamResult.isSuccess()) {
return validParamResult;
......@@ -133,4 +155,36 @@ public class StoreFieldApiServiceImpl implements StoreFieldApiService{
public ServiceResponse<StoreFieldDTO> getStoreField(int storeFieldId) {
return ServiceResponse.success(EntityUtil.changeEntityNew(StoreFieldDTO.class, storeFieldService.getStoreFieldById(storeFieldId)));
}
@Override
public ServiceResponse<Integer> sortBottom(int storeFieldId) {
TabStoreField storeField = storeFieldService.getStoreFieldById(storeFieldId);
if (storeField == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "主键错误,查询不到数据");
}
storeFieldService.sortBottom(storeField.getEnterpriseId(), storeFieldId);
return ServiceResponse.success();
}
@Override
public ServiceResponse<Integer> sortTopping(int storeFieldId) {
TabStoreField storeField = storeFieldService.getStoreFieldById(storeFieldId);
if (storeField == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "主键错误,查询不到数据");
}
storeFieldService.sortTopping(storeField.getEnterpriseId(), storeFieldId);
return ServiceResponse.success();
}
@Override
public ServiceResponse<List<StoreFieldDTO>> listStoreFieldByRegionId(Integer regionId) {
List<TabStoreField> tabStoreFieldList = storeFieldService.listStoreFieldByRegionId(regionId);
if (tabStoreFieldList == null) {
return ServiceResponse.success(new ArrayList<StoreFieldDTO>());
} else {
List<StoreFieldDTO> dtoList = EntityUtil.changeEntityListNew(StoreFieldDTO.class, tabStoreFieldList);
return ServiceResponse.success(dtoList);
}
}
}
......@@ -39,8 +39,17 @@ public class StoreFieldSelectApiServiceImpl implements StoreFieldSelectApiServic
if (storeFieldSelectDTO.getEnterpriseId() == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "企业ID不能为空");
}
if (storeFieldSelectService.isRepeatCode(storeFieldSelectDTO.getStoreFieldId(), null, storeFieldSelectDTO.getStoreFieldSelectCode())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "属性值code不能重复");
}
if (storeFieldSelectService.isRepeatName(storeFieldSelectDTO.getStoreFieldId(), null, storeFieldSelectDTO.getStoreFieldSelectName())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "属性值名称不能重复");
}
storeFieldSelectDTO.setCreateTime(new Date());
storeFieldSelectDTO.setUpdateTime(new Date());
storeFieldSelectDTO.setSort(storeFieldSelectService.getMinSort(storeFieldSelectDTO.getStoreFieldId()) - 1);
return ServiceResponse.success(storeFieldSelectService.save(storeFieldSelectDTO));
}
......@@ -94,6 +103,15 @@ public class StoreFieldSelectApiServiceImpl implements StoreFieldSelectApiServic
if (storeFieldSelectDTO.getStoreFieldId() == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "主键ID不能为空");
}
if (storeFieldSelectService.isRepeatCode(storeFieldSelectDTO.getStoreFieldId(), storeFieldSelectDTO.getStoreFieldSelectId(), storeFieldSelectDTO.getStoreFieldSelectCode())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "属性值code不能重复");
}
if (storeFieldSelectService.isRepeatName(storeFieldSelectDTO.getStoreFieldId(), storeFieldSelectDTO.getStoreFieldSelectId(), storeFieldSelectDTO.getStoreFieldSelectName())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "属性值名称不能重复");
}
return ServiceResponse.success(storeFieldSelectService.edit(storeFieldSelectDTO.getStoreFieldSelectId(),
storeFieldSelectDTO.getStoreFieldSelectName(), storeFieldSelectDTO.getStoreFieldSelectCode()));
}
......@@ -115,4 +133,24 @@ public class StoreFieldSelectApiServiceImpl implements StoreFieldSelectApiServic
return ServiceResponse.success(EntityUtil.changeEntityNew(StoreFieldSelectDTO.class, storeFieldSelectService.getStoreFieldSelectById(storeFieldSelectId)));
}
@Override
public ServiceResponse<Integer> sortBottom(int storeFieldSelectId) {
TabStoreFieldSelect tabStoreFieldSelect = storeFieldSelectService.getStoreFieldSelectById(storeFieldSelectId);
if (tabStoreFieldSelect == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "主键错误,查询不到数据");
}
storeFieldSelectService.sortBottom(tabStoreFieldSelect.getStoreFieldId(), storeFieldSelectId);
return ServiceResponse.success();
}
@Override
public ServiceResponse<Integer> sortTopping(int storeFieldSelectId) {
TabStoreFieldSelect tabStoreFieldSelect = storeFieldSelectService.getStoreFieldSelectById(storeFieldSelectId);
if (tabStoreFieldSelect == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "主键错误,查询不到数据");
}
storeFieldSelectService.sortTopping(tabStoreFieldSelect.getStoreFieldId(), storeFieldSelectId);
return ServiceResponse.success();
}
}
package com.gic.store.service.outer;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.PageHelperUtils;
import com.gic.store.dto.StoreTmpDTO;
import com.gic.store.entity.TabStoreBrand;
import com.gic.store.entity.TabStoreGroup;
import com.gic.store.service.*;
import com.gic.store.utils.ErrorCode;
import com.task.allocation.exception.TaskAllocationException;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author zhiwj
* @date 2019/7/3
*/
@Service("storeImportApiService")
@SuppressWarnings("unchecked")
public class StoreImportApiServiceImpl implements StoreImportApiService {
private static final Logger logger = LogManager.getLogger(StoreBrandApiServiceImpl.class);
@Autowired
private StoreBrandService storeBrandService;
@Autowired
private StoreApiService storeApiService;
@Autowired
private StoreService storeService;
@Autowired
private StoreImportService storeImportService;
@Autowired
private StoreGroupService storeGroupService;
@Autowired
private ProvincesApiService provincesApiService;
@Autowired
private StoreDictApiService storeDictApiService;
@Autowired
private StoreTaskService storeTaskService;
@Override
public ServiceResponse<Boolean> hasImportingStore(Integer enterpriseId) {
return ServiceResponse.success(storeImportService.hasImportingStore(enterpriseId));
}
@Override
public void delStoreTmp(Integer enterpriseId) {
storeImportService.delStoreTmp(enterpriseId);
}
@Override
public void save(StoreTmpDTO bean) {
storeImportService.save(bean);
}
@Override
public ServiceResponse<Page> listStoreTmp(Integer enterpriseId, boolean isSuccess, Integer currentPage, Integer pageSize) {
com.github.pagehelper.Page storeTmpList = storeImportService.listStoreTmp(enterpriseId, isSuccess, currentPage, pageSize);
Page<StoreTmpDTO> page = PageHelperUtils.changePageHelperToCurrentPage(storeTmpList, StoreTmpDTO.class);
return ServiceResponse.success(page);
}
@Override
public ServiceResponse<Boolean> validateStoreCode(Integer enterpriseId, String storeCode) {
return ServiceResponse.success(storeService.countByStoreCode(enterpriseId, storeCode, null) > 0);
}
@Override
public ServiceResponse<String> isExistStoreGroup(Integer enterpriseId, String storeGroupName) {
TabStoreGroup group = storeGroupService.getStoreGroupByName(storeGroupName, enterpriseId);
return ServiceResponse.success(group == null ? null : group.getStoreGroupName());
}
@Override
public ServiceResponse<List<String>> listBrandByNotExist(Integer enterpriseId, String brands) {
if (StringUtils.isBlank(brands)) {
return ServiceResponse.success();
}
List<String> resultList = new ArrayList<>();
List<TabStoreBrand> storeBrandList = storeBrandService.listAllStoreBrand(enterpriseId, null, null, null);
if (CollectionUtils.isEmpty(storeBrandList)) {
return ServiceResponse.success();
}
List<String> storeBrandNameList = storeBrandList.stream().map(TabStoreBrand::getStoreBrandName).collect(Collectors.toList());
String[] brandArr = brands.split("、");
// 这里如果门店品牌很多, 可以改成map 去做
for (String brandName : brandArr) {
if (!storeBrandNameList.contains(brandName)) {
resultList.add(brandName);
}
}
return ServiceResponse.success(resultList);
}
@Override
public ServiceResponse<String> importDataToStore(Integer enterpriseId, String userId, String uuId) {
try {
return ServiceResponse.success(storeTaskService.importDataToStore(enterpriseId, userId, uuId));
} catch (TaskAllocationException e) {
logger.warn("队列错误");
}
return ServiceResponse.failure(ErrorCode.ERR_3.getCode(), "队列错误");
}
}
......@@ -62,4 +62,9 @@ public class StoreRegionApiServiceImpl implements StoreRegionApiService {
List<TabStoreRegion> list = storeRegionService.listStoreRegion(enterpriseId, search);
return ServiceResponse.success(EntityUtil.changeEntityListByOrika(StoreRegionDTO.class, list));
}
@Override
public ServiceResponse<StoreRegionDTO> getStoreRegionByRegion(Integer enterpriseId, Integer regionId) {
return ServiceResponse.success(EntityUtil.changeEntityByOrika(StoreRegionDTO.class, storeRegionService.getById(enterpriseId, regionId)));
}
}
package com.gic.store.service.outer;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.PageHelperUtils;
import com.gic.redis.data.util.RedisUtil;
import com.gic.store.dto.StoreStrategyDTO;
import com.gic.store.entity.TabStoreStrategy;
import com.gic.store.service.StoreStrategyApiService;
import com.gic.store.service.StoreStrategyService;
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;
import java.util.List;
/**
* @author guojx
* @date 2019/7/4 10:10 AM
*/
@Service("storeStrategyApiService")
public class StoreStrategyApiServiceImpl implements StoreStrategyApiService{
@Autowired
private StoreStrategyService storeStrategyService;
@Override
public ServiceResponse<Integer> saveStoreStrategy(StoreStrategyDTO storeStrategyDTO) {
if (StringUtils.isBlank(storeStrategyDTO.getStrategyName())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "策略名称不能为空");
}
if (storeStrategyDTO.getStoreRegionId() == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "门店域不能为空");
}
if (storeStrategyDTO.getEnterpriseId() == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "企业ID不能为空");
}
if (StringUtils.isBlank(storeStrategyDTO.getTargetValue())) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "策略命中值不能为空");
}
storeStrategyDTO.setCreateTime(new Date());
storeStrategyDTO.setUpdateTime(new Date());
storeStrategyDTO.setStatus(1);
//sort
storeStrategyDTO.setSort(storeStrategyService.getMinSort(storeStrategyDTO.getEnterpriseId(), storeStrategyDTO.getStrategyType()) - 1d);
TabStoreStrategy record = EntityUtil.changeEntityNew(TabStoreStrategy.class, storeStrategyDTO);
if (storeStrategyService.isRepeatGroupStrategyName(record)) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "策略名称不能重复");
}
return ServiceResponse.success(storeStrategyService.saveStoreGroupStrategy(storeStrategyDTO));
}
@Override
public ServiceResponse<Integer> deleteStoreStrategy(int strategyId) {
TabStoreStrategy storeStrategy = storeStrategyService.getStoreStrategyById(strategyId);
if (storeStrategy == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "策略主键ID错误,查询不到数据");
}
return ServiceResponse.success(storeStrategyService.deleteStoreGroupStrategy(strategyId));
}
@Override
public ServiceResponse<Integer> modifyStoreStrategy(StoreStrategyDTO storeStrategyDTO) {
TabStoreStrategy storeStrategy = storeStrategyService.getStoreStrategyById(storeStrategyDTO.getStrategyId());
if (storeStrategy == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "策略主键ID错误,查询不到数据");
}
storeStrategyDTO.setCreateTime(storeStrategy.getCreateTime());
storeStrategyDTO.setUpdateTime(new Date());
storeStrategyDTO.setEnterpriseId(storeStrategy.getEnterpriseId());
storeStrategyDTO.setStrategyType(storeStrategy.getStrategyType());
TabStoreStrategy record = EntityUtil.changeEntityNew(TabStoreStrategy.class, storeStrategyDTO);
if (storeStrategyService.isRepeatGroupStrategyName(record)) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "策略名称不能重复");
}
return ServiceResponse.success(storeStrategyService.modifyStoreGroupStrategy(storeStrategyDTO));
}
@Override
public ServiceResponse<StoreStrategyDTO> getStoreStrategyById(int strategyId) {
TabStoreStrategy storeStrategy = storeStrategyService.getStoreStrategyById(strategyId);
if (storeStrategy == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "策略主键ID错误,查询不到数据");
}
return ServiceResponse.success(EntityUtil.changeEntityNew(StoreStrategyDTO.class, storeStrategy));
}
@Override
public ServiceResponse<Integer> sortBottom(int strategyId) {
TabStoreStrategy storeStrategy = storeStrategyService.getStoreStrategyById(strategyId);
if (storeStrategy == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "策略主键ID错误,查询不到数据");
}
storeStrategyService.sortBottom(storeStrategy.getEnterpriseId(), strategyId, storeStrategy.getStrategyType());
return ServiceResponse.success();
}
@Override
public ServiceResponse<Integer> sortTopping(int strategyId) {
TabStoreStrategy storeStrategy = storeStrategyService.getStoreStrategyById(strategyId);
if (storeStrategy == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "策略主键ID错误,查询不到数据");
}
storeStrategyService.sortTopping(storeStrategy.getEnterpriseId(), strategyId, storeStrategy.getStrategyType());
return ServiceResponse.success();
}
@Override
public ServiceResponse<Integer> upOrDown(int strategyId, boolean isUp) {
TabStoreStrategy storeStrategy = storeStrategyService.getStoreStrategyById(strategyId);
if (storeStrategy == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "策略主键ID错误,查询不到数据");
}
TabStoreStrategy needUpdateSort;
if (isUp) {
needUpdateSort = storeStrategyService.getPrevSort(storeStrategy.getEnterpriseId(), storeStrategy.getSort(), storeStrategy.getStrategyType());
if (needUpdateSort == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "已经是第一条,不能上移");
}
} else {
needUpdateSort = storeStrategyService.getNextSort(storeStrategy.getEnterpriseId(), storeStrategy.getSort(), storeStrategy.getStrategyType());
if (needUpdateSort == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "已经是最后一条,不能下移");
}
}
storeStrategyService.updateSortById(needUpdateSort.getStrategyId(), storeStrategy.getSort());
storeStrategyService.updateSortById(storeStrategy.getStrategyId(), needUpdateSort.getSort());
return ServiceResponse.success();
}
@Override
public ServiceResponse<Integer> setStoreStrategySort(int strategyId, int setValue) {
TabStoreStrategy storeStrategy = storeStrategyService.getStoreStrategyById(strategyId);
if (storeStrategy == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "策略主键ID错误,查询不到数据");
}
storeStrategyService.setStoreStrategySort(strategyId, storeStrategy.getEnterpriseId(), setValue, storeStrategy.getStrategyType());
return ServiceResponse.success();
}
@Override
public ServiceResponse<Page<StoreStrategyDTO>> listStoreField(int enterpriseId, String search, int strategyType, Integer pageNum, Integer pageSize) {
com.github.pagehelper.Page storeStrategies = storeStrategyService.listStoreStrategy(enterpriseId, search, strategyType, pageNum, pageSize);
Page<StoreStrategyDTO> page = PageHelperUtils.changePageHelperToCurrentPage(storeStrategies, StoreStrategyDTO.class);
List<StoreStrategyDTO> strategyDTOList = page.getResult();
int index = (pageNum - 1) * pageSize + 1;
for (int i = 0, length = strategyDTOList.size(); i < length; i++) {
strategyDTOList.get(i).setSeq(index + i);
}
return ServiceResponse.success(page);
}
@Override
public ServiceResponse setStoreGroupStrategyWeight(Integer enterpriseId, int weight) {
RedisUtil.setCache("enterprise:store:storeGroupStrategy:"+enterpriseId, weight);
return ServiceResponse.success();
}
@Override
public ServiceResponse getStoreGroupStrategyWeight(Integer enterpriseId) {
Object value = RedisUtil.getCache("enterprise:store:storeGroupStrategy:"+enterpriseId);
if(value == null){
ServiceResponse.success(0);
}
return ServiceResponse.success(Integer.valueOf(value.toString()));
}
}
......@@ -58,7 +58,7 @@ public class StoreFieldValidParamUtil {
StoreFieldTypeEnum typeEnum = StoreFieldTypeEnum.getByCode(fieldType);
switch (typeEnum) {
case TEXT:
return validCheckTypeParam(json);
return validTextTypeParam(json);
case DATE:
return validDateTypeParam(json);
case CHECK:
......
......@@ -30,4 +30,10 @@
<!--门店-->
<dubbo:service interface="com.gic.store.service.StoreApiService" ref="storeApiService" timeout="60000" />
<dubbo:service interface="com.gic.store.service.ProvincesApiService" ref="provincesApiService" timeout="60000" />
<!--分组策略-->
<dubbo:service interface="com.gic.store.service.StoreStrategyApiService" ref="storeStrategyApiService" timeout="60000" />
<!--门店导入-->
<dubbo:service interface="com.gic.store.service.StoreImportApiService" ref="storeImportApiService" timeout="60000" />
</beans>
......@@ -139,4 +139,10 @@
is_search = #{isSearch,jdbcType=INTEGER}
where store_extend_id = #{storeExtendId,jdbcType=INTEGER}
</update>
<select id="list" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tab_store_extend
where enterprise_id = #{enterpriseId} and store_id = #{storeId}
</select>
</mapper>
\ No newline at end of file
......@@ -196,11 +196,11 @@
</select>
<select id="getMinSort" resultType="java.lang.Double">
select ifnull(sort, 0) from tab_store_field where enterprise_id = #{enterpriseId} and status = 1 order by sort limit 0, 1
select sort from tab_store_field where enterprise_id = #{enterpriseId} and status = 1 order by sort limit 0, 1
</select>
<select id="getMaxSort" resultType="java.lang.Double">
select ifnull(sort, 0) from tab_store_field where enterprise_id = #{enterpriseId} and status = 1 order by sort desc limit 0, 1
select sort from tab_store_field where enterprise_id = #{enterpriseId} and status = 1 order by sort desc limit 0, 1
</select>
<select id="listTwoElementExceptId" resultMap="BaseResultMap">
......@@ -245,4 +245,42 @@
#{item}
</foreach>
</update>
<select id="isRepeatCode" resultType="int">
select
count(1)
from tab_store_field
where
status = 1
<if test="storeFieldId != null ">
and store_field_id &lt;&gt; #{storeFieldId}
</if>
and enterprise_id = #{enterpriseId}
and store_field_code = #{storeFieldCode}
</select>
<select id="isRepeatName" resultType="int">
select
count(1)
from tab_store_field
where
status = 1
<if test="storeFieldId != null ">
and store_field_id &lt;&gt; #{storeFieldId}
</if>
and enterprise_id = #{enterpriseId}
and store_field_name = #{storeFieldName}
</select>
<select id="listStoreFieldByRegionId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tab_store_field
where status = 1
<if test="regionId != null ">
and store_region_id like concat('%_', #{regionId}, '_%')
</if>
order by sort
</select>
</mapper>
\ No newline at end of file
......@@ -180,4 +180,25 @@
</if>
order by sort
</select>
<select id="isRepeatCode" resultType="int">
select count(1) from tab_store_field_select
where
store_field_select_code = #{storeFieldSelectCode}
and store_field_id = #{storeFieldId}
<if test="storeFieldSelectId != null ">
and store_field_select_id &lt;&gt; #{storeFieldSelectId}
</if>
</select>
<select id="isRepeatName" resultType="int">
select count(1) from tab_store_field_select
where
store_field_select_name = #{storeFieldSelectName}
and store_field_id = #{storeFieldId}
<if test="storeFieldSelectId != null ">
and store_field_select_id &lt;&gt; #{storeFieldSelectId}
</if>
</select>
</mapper>
\ No newline at end of file
......@@ -191,7 +191,7 @@
<update id="updateStoreGroupChainByStoreGroupId">
UPDATE
tab_store_group
SET store_group_chain = replace(store_group_chain, concat('_', #{fromStoreGroupId}), '_'), concat('_', #{toStoreGroupId}, '_'))
SET store_group_chain = replace(store_group_chain, concat('_', #{fromStoreGroupId}, '_'), concat('_', #{toStoreGroupId}, '_'))
where status = 1 and store_group_chain like concat('%_', #{storeGroupId}, '_%')
</update>
......@@ -228,4 +228,25 @@
from
tab_store_group where status = 1 and parent_store_group_id = #{parentId}
</select>
<select id="isRepeatName" resultType="int">
select
count(1)
from
tab_store_group where status = 1
<if test="storeGroupId != null and storeGroupId != '' ">
and store_group_id &lt;&gt; #{storeGroupId}
</if>
and store_group_name = #{storeGroupName}
and enterprise_id = #{enterpriseId}
</select>
<select id="getStoreGroupByName" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from
tab_store_group where status = 1 and enterprise_id = #{enterpriseId} and store_group_name = #{storeGroupName}
limit 1
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.store.dao.mapper.TabStoreGroupStrategyWeightsMapper">
<resultMap id="BaseResultMap" type="com.gic.store.entity.TabStoreGroupStrategyWeights">
<id column="weights_id" jdbcType="INTEGER" property="weightsId" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="status" jdbcType="INTEGER" property="status" />
<result column="enterprise_id" jdbcType="INTEGER" property="enterpriseId" />
</resultMap>
<sql id="Base_Column_List">
weights_id, create_time, update_time, status, enterprise_id
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tab_store_group_strategy_weights
where weights_id = #{weightsId,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
delete from tab_store_group_strategy_weights
where weights_id = #{weightsId,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.gic.store.entity.TabStoreGroupStrategyWeights">
insert into tab_store_group_strategy_weights (weights_id, create_time, update_time,
status, enterprise_id)
values (#{weightsId,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP},
#{status,jdbcType=INTEGER}, #{enterpriseId,jdbcType=INTEGER})
</insert>
<insert id="insertSelective" parameterType="com.gic.store.entity.TabStoreGroupStrategyWeights">
insert into tab_store_group_strategy_weights
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="weightsId != null">
weights_id,
</if>
<if test="createTime != null">
create_time,
</if>
<if test="updateTime != null">
update_time,
</if>
<if test="status != null">
status,
</if>
<if test="enterpriseId != null">
enterprise_id,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="weightsId != null">
#{weightsId,jdbcType=INTEGER},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="status != null">
#{status,jdbcType=INTEGER},
</if>
<if test="enterpriseId != null">
#{enterpriseId,jdbcType=INTEGER},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.gic.store.entity.TabStoreGroupStrategyWeights">
update tab_store_group_strategy_weights
<set>
<if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateTime != null">
update_time = #{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="status != null">
status = #{status,jdbcType=INTEGER},
</if>
<if test="enterpriseId != null">
enterprise_id = #{enterpriseId,jdbcType=INTEGER},
</if>
</set>
where weights_id = #{weightsId,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.gic.store.entity.TabStoreGroupStrategyWeights">
update tab_store_group_strategy_weights
set create_time = #{createTime,jdbcType=TIMESTAMP},
update_time = #{updateTime,jdbcType=TIMESTAMP},
status = #{status,jdbcType=INTEGER},
enterprise_id = #{enterpriseId,jdbcType=INTEGER}
where weights_id = #{weightsId,jdbcType=INTEGER}
</update>
<select id="selectByPrimary" parameterType="com.gic.store.entity.TabStoreGroupStrategyWeights" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tab_store_group_strategy_weights
where 1 = 1
<if test="weightsId != null">
and weights_id = #{weightsId}
</if>
<if test="status != null">
and status = #{status}
</if>
<if test="enterpriseId != null">
and enterprise_id = #{enterpriseId}
</if>
</select>
</mapper>
\ No newline at end of file
......@@ -3,7 +3,7 @@
<mapper namespace="com.gic.store.dao.mapper.TabStoreStrategyMapper">
<resultMap id="BaseResultMap" type="com.gic.store.entity.TabStoreStrategy">
<id column="strategy_id" jdbcType="INTEGER" property="strategyId" />
<result column="startegy_name" jdbcType="VARCHAR" property="startegyName" />
<result column="strategy_name" jdbcType="VARCHAR" property="strategyName" />
<result column="enterprise_id" jdbcType="INTEGER" property="enterpriseId" />
<result column="store_region_id" jdbcType="INTEGER" property="storeRegionId" />
<result column="condition" jdbcType="VARCHAR" property="condition" />
......@@ -11,11 +11,12 @@
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="status" jdbcType="INTEGER" property="status" />
<result column="stategy_type" jdbcType="INTEGER" property="stategyType" />
<result column="strategy_type" jdbcType="INTEGER" property="strategyType" />
<result column="sort" jdbcType="DOUBLE" property="sort" />
</resultMap>
<sql id="Base_Column_List">
strategy_id, startegy_name, enterprise_id, store_region_id, condition, target_value,
create_time, update_time, status, stategy_type
strategy_id, strategy_name, enterprise_id, store_region_id, condition, target_value,
create_time, update_time, status, strategy_type, sort
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
......@@ -27,15 +28,15 @@
delete from tab_store_strategy
where strategy_id = #{strategyId,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.gic.store.entity.TabStoreStrategy">
insert into tab_store_strategy (strategy_id, startegy_name, enterprise_id,
<insert id="insert" parameterType="com.gic.store.entity.TabStoreStrategy" useGeneratedKeys="true" keyProperty="strategyId">
insert into tab_store_strategy (strategy_id, strategy_name, enterprise_id,
store_region_id, condition, target_value,
create_time, update_time, status,
stategy_type)
values (#{strategyId,jdbcType=INTEGER}, #{startegyName,jdbcType=VARCHAR}, #{enterpriseId,jdbcType=INTEGER},
strategy_type, sort)
values (#{strategyId,jdbcType=INTEGER}, #{strategyName,jdbcType=VARCHAR}, #{enterpriseId,jdbcType=INTEGER},
#{storeRegionId,jdbcType=INTEGER}, #{condition,jdbcType=VARCHAR}, #{targetValue,jdbcType=VARCHAR},
#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{status,jdbcType=INTEGER},
#{stategyType,jdbcType=INTEGER})
#{strategyType,jdbcType=INTEGER}, #{sort,jdbcType=DOUBLE})
</insert>
<insert id="insertSelective" parameterType="com.gic.store.entity.TabStoreStrategy">
insert into tab_store_strategy
......@@ -43,8 +44,8 @@
<if test="strategyId != null">
strategy_id,
</if>
<if test="startegyName != null">
startegy_name,
<if test="strategyName != null">
strategy_name,
</if>
<if test="enterpriseId != null">
enterprise_id,
......@@ -67,16 +68,19 @@
<if test="status != null">
status,
</if>
<if test="stategyType != null">
stategy_type,
<if test="strategyType != null">
strategy_type,
</if>
<if test="sort != null">
sort,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="strategyId != null">
#{strategyId,jdbcType=INTEGER},
</if>
<if test="startegyName != null">
#{startegyName,jdbcType=VARCHAR},
<if test="strategyName != null">
#{strategyName,jdbcType=VARCHAR},
</if>
<if test="enterpriseId != null">
#{enterpriseId,jdbcType=INTEGER},
......@@ -99,16 +103,19 @@
<if test="status != null">
#{status,jdbcType=INTEGER},
</if>
<if test="stategyType != null">
#{stategyType,jdbcType=INTEGER},
<if test="strategyType != null">
#{strategyType,jdbcType=INTEGER},
</if>
<if test="sort != null">
#{sort,jdbcType=DOUBLE},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.gic.store.entity.TabStoreStrategy">
update tab_store_strategy
<set>
<if test="startegyName != null">
startegy_name = #{startegyName,jdbcType=VARCHAR},
<if test="strategyName != null">
strategy_name = #{strategyName,jdbcType=VARCHAR},
</if>
<if test="enterpriseId != null">
enterprise_id = #{enterpriseId,jdbcType=INTEGER},
......@@ -131,15 +138,18 @@
<if test="status != null">
status = #{status,jdbcType=INTEGER},
</if>
<if test="stategyType != null">
stategy_type = #{stategyType,jdbcType=INTEGER},
<if test="strategyType != null">
strategy_type = #{strategyType,jdbcType=INTEGER},
</if>
<if test="sort != null">
sort = #{sort,jdbcType=DOUBLE},
</if>
</set>
where strategy_id = #{strategyId,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.gic.store.entity.TabStoreStrategy">
update tab_store_strategy
set startegy_name = #{startegyName,jdbcType=VARCHAR},
set strategy_name = #{strategyName,jdbcType=VARCHAR},
enterprise_id = #{enterpriseId,jdbcType=INTEGER},
store_region_id = #{storeRegionId,jdbcType=INTEGER},
condition = #{condition,jdbcType=VARCHAR},
......@@ -147,7 +157,85 @@
create_time = #{createTime,jdbcType=TIMESTAMP},
update_time = #{updateTime,jdbcType=TIMESTAMP},
status = #{status,jdbcType=INTEGER},
stategy_type = #{stategyType,jdbcType=INTEGER}
strategy_type = #{strategyType,jdbcType=INTEGER},
sort = #{sort,jdbcType=DOUBLE}
where strategy_id = #{strategyId,jdbcType=INTEGER}
</update>
<select id="countRepeatStrategyName" parameterType="com.gic.store.entity.TabStoreStrategy" resultType="integer">
select
<include refid="Base_Column_List" />
from tab_store_strategy
where status = 1
<if test="strategyName != null">
and strategy_name = #{strategyName,jdbcType=VARCHAR}
</if>
<if test="enterpriseId != null">
and enterprise_id = #{enterpriseId,jdbcType=INTEGER}
</if>
<if test="strategyType != null">
and strategy_type = #{strategyType,jdbcType=INTEGER}
</if>
<if test="strategyId != null">
and strategy_id &lt;&gt; #{strategyId}
</if>
</select>
<select id="selectNextByEnterpriseIdAndSort" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tab_store_strategy
where enterprise_id = #{enterpriseId}
and strategy_type = #{strategyType}
and sort > #{sort}
and status = 1
order by sort
limit 1
</select>
<select id="selectPrevByStoreFieldIdAndSort" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tab_store_strategy
where enterprise_id = #{enterpriseId}
and strategy_type = #{strategyType}
and sort &lt; #{sort}
and status = 1
order by sort
limit 1
</select>
<select id="getMinSort" resultType="java.lang.Double">
select sort from tab_store_strategy where enterprise_id = #{enterpriseId} and strategy_type = #{strategyType} and status = 1 order by sort limit 0, 1
</select>
<select id="getMaxSort" resultType="java.lang.Double">
select sort from tab_store_strategy where enterprise_id = #{enterpriseId} and strategy_type = #{strategyType} and status = 1 order by sort desc limit 0, 1
</select>
<select id="listTwoElementExceptId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tab_store_strategy
where strategy_id &lt;&gt; #{strategyId}
and enterprise_id = #{enterpriseId}
and strategy_type = #{strategyType}
and status = 1
order by sort
limit #{start}, #{size}
</select>
<select id="listStoreStrategy" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tab_store_strategy
where enterprise_id = #{enterpriseId}
and strategy_type = #{strategyType}
<if test="search != null and search != '' ">
and strategy_name like concat('%', #{search}, '%')
</if>
and status = 1
order by sort
</select>
</mapper>
\ No newline at end of file
......@@ -9,6 +9,7 @@
<result column="store_name" jdbcType="VARCHAR" property="storeName" />
<result column="store_code" jdbcType="VARCHAR" property="storeCode" />
<result column="conacts_phone" jdbcType="VARCHAR" property="conactsPhone" />
<result column="brands" jdbcType="VARCHAR" property="brands" />
<result column="province" jdbcType="VARCHAR" property="province" />
<result column="city" jdbcType="VARCHAR" property="city" />
<result column="county" jdbcType="VARCHAR" property="county" />
......@@ -19,13 +20,18 @@
<result column="custom_field" jdbcType="VARCHAR" property="customField" />
<result column="state" jdbcType="INTEGER" property="state" />
<result column="error_message" jdbcType="VARCHAR" property="errorMessage" />
<result column="sign_key" jdbcType="VARCHAR" property="signKey" />
<result column="store_type" jdbcType="VARCHAR" property="storeType" />
<result column="erp_status" jdbcType="VARCHAR" property="erpStatus" />
<result column="store_group_name" jdbcType="VARCHAR" property="storeGroupName" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
</resultMap>
<sql id="Base_Column_List">
store_tmp_id, enterprise_id, region_id, region_name, store_name, store_code, conacts_phone,
province, city, county, area_id, address, longitude, latitude, custom_field, state,
error_message, create_time, update_time
brands, province, city, county, area_id, address, longitude, latitude, custom_field,
state, error_message, sign_key, store_type, erp_status, store_group_name, create_time,
update_time
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
......@@ -40,18 +46,22 @@
<insert id="insert" parameterType="com.gic.store.entity.TabStoreTmp">
insert into tab_store_tmp (store_tmp_id, enterprise_id, region_id,
region_name, store_name, store_code,
conacts_phone, province, city,
county, area_id, address,
longitude, latitude, custom_field,
state, error_message, create_time,
update_time)
conacts_phone, brands, province,
city, county, area_id,
address, longitude, latitude,
custom_field, state, error_message,
sign_key, store_type, erp_status,
store_group_name, create_time, update_time
)
values (#{storeTmpId,jdbcType=INTEGER}, #{enterpriseId,jdbcType=INTEGER}, #{regionId,jdbcType=INTEGER},
#{regionName,jdbcType=VARCHAR}, #{storeName,jdbcType=VARCHAR}, #{storeCode,jdbcType=VARCHAR},
#{conactsPhone,jdbcType=VARCHAR}, #{province,jdbcType=VARCHAR}, #{city,jdbcType=VARCHAR},
#{county,jdbcType=VARCHAR}, #{areaId,jdbcType=INTEGER}, #{address,jdbcType=VARCHAR},
#{longitude,jdbcType=VARCHAR}, #{latitude,jdbcType=VARCHAR}, #{customField,jdbcType=VARCHAR},
#{state,jdbcType=INTEGER}, #{errorMessage,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},
#{updateTime,jdbcType=TIMESTAMP})
#{conactsPhone,jdbcType=VARCHAR}, #{brands,jdbcType=VARCHAR}, #{province,jdbcType=VARCHAR},
#{city,jdbcType=VARCHAR}, #{county,jdbcType=VARCHAR}, #{areaId,jdbcType=INTEGER},
#{address,jdbcType=VARCHAR}, #{longitude,jdbcType=VARCHAR}, #{latitude,jdbcType=VARCHAR},
#{customField,jdbcType=VARCHAR}, #{state,jdbcType=INTEGER}, #{errorMessage,jdbcType=VARCHAR},
#{signKey,jdbcType=VARCHAR}, #{storeType,jdbcType=VARCHAR}, #{erpStatus,jdbcType=VARCHAR},
#{storeGroupName,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}
)
</insert>
<insert id="insertSelective" parameterType="com.gic.store.entity.TabStoreTmp">
insert into tab_store_tmp
......@@ -77,6 +87,9 @@
<if test="conactsPhone != null">
conacts_phone,
</if>
<if test="brands != null">
brands,
</if>
<if test="province != null">
province,
</if>
......@@ -107,6 +120,18 @@
<if test="errorMessage != null">
error_message,
</if>
<if test="signKey != null">
sign_key,
</if>
<if test="storeType != null">
store_type,
</if>
<if test="erpStatus != null">
erp_status,
</if>
<if test="storeGroupName != null">
store_group_name,
</if>
<if test="createTime != null">
create_time,
</if>
......@@ -136,6 +161,9 @@
<if test="conactsPhone != null">
#{conactsPhone,jdbcType=VARCHAR},
</if>
<if test="brands != null">
#{brands,jdbcType=VARCHAR},
</if>
<if test="province != null">
#{province,jdbcType=VARCHAR},
</if>
......@@ -166,6 +194,18 @@
<if test="errorMessage != null">
#{errorMessage,jdbcType=VARCHAR},
</if>
<if test="signKey != null">
#{signKey,jdbcType=VARCHAR},
</if>
<if test="storeType != null">
#{storeType,jdbcType=VARCHAR},
</if>
<if test="erpStatus != null">
#{erpStatus,jdbcType=VARCHAR},
</if>
<if test="storeGroupName != null">
#{storeGroupName,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
......@@ -195,6 +235,9 @@
<if test="conactsPhone != null">
conacts_phone = #{conactsPhone,jdbcType=VARCHAR},
</if>
<if test="brands != null">
brands = #{brands,jdbcType=VARCHAR},
</if>
<if test="province != null">
province = #{province,jdbcType=VARCHAR},
</if>
......@@ -225,6 +268,18 @@
<if test="errorMessage != null">
error_message = #{errorMessage,jdbcType=VARCHAR},
</if>
<if test="signKey != null">
sign_key = #{signKey,jdbcType=VARCHAR},
</if>
<if test="storeType != null">
store_type = #{storeType,jdbcType=VARCHAR},
</if>
<if test="erpStatus != null">
erp_status = #{erpStatus,jdbcType=VARCHAR},
</if>
<if test="storeGroupName != null">
store_group_name = #{storeGroupName,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
......@@ -242,6 +297,7 @@
store_name = #{storeName,jdbcType=VARCHAR},
store_code = #{storeCode,jdbcType=VARCHAR},
conacts_phone = #{conactsPhone,jdbcType=VARCHAR},
brands = #{brands,jdbcType=VARCHAR},
province = #{province,jdbcType=VARCHAR},
city = #{city,jdbcType=VARCHAR},
county = #{county,jdbcType=VARCHAR},
......@@ -252,8 +308,33 @@
custom_field = #{customField,jdbcType=VARCHAR},
state = #{state,jdbcType=INTEGER},
error_message = #{errorMessage,jdbcType=VARCHAR},
sign_key = #{signKey,jdbcType=VARCHAR},
store_type = #{storeType,jdbcType=VARCHAR},
erp_status = #{erpStatus,jdbcType=VARCHAR},
store_group_name = #{storeGroupName,jdbcType=VARCHAR},
create_time = #{createTime,jdbcType=TIMESTAMP},
update_time = #{updateTime,jdbcType=TIMESTAMP}
where store_tmp_id = #{storeTmpId,jdbcType=INTEGER}
</update>
<select id="countByStore" resultType="java.lang.Integer">
select count(1) from tab_store_tmp where enterprise_id = #{enterpriseId} and error_message = #{errorMessage}
</select>
<delete id="delStoreTmp">
delete from tab_store_tmp where enterprise_id = #{enterpriseId}
</delete>
<select id="listStoreTmp" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tab_store_tmp
where enterprise_id = #{enterpriseId}
<if test="isSuccess != null and isSuccess">
and error_message = 'success'
</if>
<if test="isSuccess != null and !isSuccess">
and error_message &lt;&gt; 'success' and error_message &lt;&gt; 'wait'
</if>
<if test="isWait != null and isWait">
and error_message = 'wait'
</if>
</select>
</mapper>
\ No newline at end of file
......@@ -97,6 +97,16 @@
<version>1.23</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.11</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.11</version>
</dependency>
</dependencies>
<build>
......
......@@ -8,17 +8,32 @@ import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.store.constant.CreateTypeEnum;
import com.gic.store.dto.StoreBusinessTimeDTO;
import com.gic.store.dto.StoreDTO;
import com.gic.store.dto.StoreExtendDTO;
import com.gic.store.dto.StorePhotoDTO;
import com.gic.store.service.StoreApiService;
import com.gic.store.utils.ErrorCode;
import com.gic.store.web.ExcelUtils;
import com.gic.store.web.qo.PageQO;
import com.gic.store.web.qo.store.StoreQO;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
......@@ -49,6 +64,9 @@ public class StoreController {
storeDTO.setBusinessTimeList(businessTimeList);
}
storeDTO.setCreateType(CreateTypeEnum.BACKGROUND_ADD.getCode());
String fieldJson = storeQO.getFieldJson();
List<StoreExtendDTO> extendList = JSON.parseArray(fieldJson, StoreExtendDTO.class);
storeDTO.setStoreExtendList(extendList);
ServiceResponse<Integer> serviceResponse = storeApiService.saveOrUpdate(storeDTO);
if (serviceResponse.isSuccess()) {
return RestResponse.success(serviceResponse.getResult());
......
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.StoreGroupConstant;
......@@ -43,11 +44,26 @@ public class StoreGroupController {
return RestResponse.success(storeGroupApiService.save(transferQoToDTO(storeGroupQO)));
}
@RequestMapping("/edit")
public RestResponse edit(@Validated({StoreGroupQO.SaveValidView.class, StoreGroupQO.RemoveValidView.class}) StoreGroupQO storeGroupQO) {
@RequestMapping("/edit-store-group-name")
public RestResponse editName(@Validated({StoreGroupQO.EditNameValidView.class, StoreGroupQO.RemoveValidView.class}) StoreGroupQO storeGroupQO) {
return RestResponse.success(storeGroupApiService.updateStoreGroupName(transferQoToDTO(storeGroupQO)));
}
@RequestMapping("/edit-parent-store-group-id")
public RestResponse edit(@Validated({StoreGroupQO.EditParentIdValidView.class, StoreGroupQO.RemoveValidView.class}) StoreGroupQO storeGroupQO) {
return RestResponse.success(storeGroupApiService.update(transferQoToDTO(storeGroupQO)));
}
@RequestMapping("/drag-sort")
public RestResponse dragSort(@Validated({StoreGroupQO.RemoveValidView.class, StoreGroupQO.SetSortValueValidView.class}) StoreGroupQO storeGroupQO) {
ServiceResponse result = storeGroupApiService.dragSort(storeGroupQO.getStoreGroupId(), storeGroupQO.getSortValue());
if (result.isSuccess()) {
return RestResponse.success();
} else {
return RestResponse.failure(result.getCode(), result.getMessage());
}
}
@RequestMapping("/sort")
public RestResponse sort(@Validated({StoreGroupQO.SortValidView.class}) StoreGroupQO storeGroupQO) {
return RestResponse.success(storeGroupApiService.sort(transferQoToDTO(storeGroupQO), storeGroupQO.isUp()));
......
package com.gic.store.web.controller;
import com.gic.api.base.commons.Page;
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.StoreGroupConstant;
import com.gic.store.dto.StoreStrategyDTO;
import com.gic.store.service.StoreStrategyApiService;
import com.gic.store.utils.ErrorCode;
import com.gic.store.web.qo.PageQO;
import com.gic.store.web.qo.storestrategy.StoreStrategyQO;
import com.gic.store.web.vo.storestrategy.StoreGroupStrateVO;
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;
/**
* @author guojx
* @date 2019/7/4 1:56 PM
*/
@RestController
@RequestMapping("/store-strategy")
public class StoreStrategyController {
private static final Logger logger = LoggerFactory.getLogger(StoreStrategyController.class);
@Autowired
private StoreStrategyApiService storeStrategyApiService;
@RequestMapping("/save-store-strategy")
public RestResponse saveStoreStrategy(@Validated({StoreStrategyQO.SaveValidView.class, StoreStrategyQO.StoreStrategyTypeValidView.class})
StoreStrategyQO storeStrategyQO) {
//分组策略类型
storeStrategyQO.setStrategyType(StoreGroupConstant.STORE_GROUP_STRATEGY_TYPE);
ServiceResponse result = storeStrategyApiService.saveStoreStrategy(transferQoToDTO(storeStrategyQO));
if (!result.isSuccess()) {
return RestResponse.failure(result.getCode(), result.getMessage());
}
return RestResponse.success(result.getResult());
}
@RequestMapping("/edit-store-strategy")
public RestResponse editStoreStrategy(@Validated({StoreStrategyQO.SaveValidView.class, StoreStrategyQO.RemoveValidView.class})
StoreStrategyQO storeStrategyQO) {
ServiceResponse result = storeStrategyApiService.modifyStoreStrategy(transferQoToDTO(storeStrategyQO));
if (!result.isSuccess()) {
return RestResponse.failure(result.getCode(), result.getMessage());
}
return RestResponse.success(result.getResult());
}
@RequestMapping("/get-store-strategy")
public RestResponse getStoreStrategy(@Validated({StoreStrategyQO.RemoveValidView.class}) StoreStrategyQO storeStrategyQO) {
ServiceResponse result = storeStrategyApiService.getStoreStrategyById(storeStrategyQO.getStrategyId());
if (!result.isSuccess()) {
return RestResponse.failure(result.getCode(), result.getMessage());
}
return RestResponse.success(result.getResult());
}
@RequestMapping("/delete-store-strategy")
public RestResponse deleteStoreStrategy(@Validated({StoreStrategyQO.RemoveValidView.class}) StoreStrategyQO storeStrategyQO) {
ServiceResponse result = storeStrategyApiService.deleteStoreStrategy(storeStrategyQO.getStrategyId());
if (!result.isSuccess()) {
return RestResponse.failure(result.getCode(), result.getMessage());
}
return RestResponse.success(result.getResult());
}
@RequestMapping("/swap-store-strategy")
public RestResponse swapStoreStrategy(@Validated({StoreStrategyQO.SwapValidView.class, StoreStrategyQO.RemoveValidView.class}) StoreStrategyQO storeStrategyQO) {
int upOrDown = storeStrategyQO.getUpOrDown();
ServiceResponse result;
switch (upOrDown) {
case StoreGroupConstant.SORT_UP:
result = storeStrategyApiService.upOrDown(storeStrategyQO.getStrategyId(), true);
break;
case StoreGroupConstant.SORT_DOWN:
result = storeStrategyApiService.upOrDown(storeStrategyQO.getStrategyId(), false);
break;
case StoreGroupConstant.SORT_BOTTOM:
result = storeStrategyApiService.sortBottom(storeStrategyQO.getStrategyId());
break;
case StoreGroupConstant.SORT_TOPPING:
result = storeStrategyApiService.sortTopping(storeStrategyQO.getStrategyId());
break;
default:
result = null;
}
if (result.isSuccess()) {
return RestResponse.success(result.getResult());
} else {
return RestResponse.failure(result.getCode(), result.getMessage());
}
}
@RequestMapping("/set-store-strategy-sort-value")
public RestResponse setStoreStrategySortValue(@Validated({StoreStrategyQO.SetSortValueValidView.class, StoreStrategyQO.RemoveValidView.class}) StoreStrategyQO storeStrategyQO) {
ServiceResponse result = storeStrategyApiService.setStoreStrategySort(storeStrategyQO.getStrategyId(), storeStrategyQO.getSortValue());
if (result.isSuccess()) {
return RestResponse.success(result.getResult());
} else {
return RestResponse.failure(result.getCode(), result.getMessage());
}
}
@RequestMapping("/list-store-strategy")
public RestResponse listStoreStrategy(String search, PageQO pageQO) {
ServiceResponse<Page<StoreStrategyDTO>> result = storeStrategyApiService.listStoreField(StoreGroupConstant.TEST_ENTERPRISE_ID
, search, StoreGroupConstant.STORE_GROUP_STRATEGY_TYPE, pageQO.getCurrentPage(), pageQO.getPageSize());
if (result.isSuccess()) {
Page<StoreStrategyDTO> resultPage = result.getResult();
Page<StoreGroupStrateVO> voPage = EntityUtil.changeEntityNew(Page.class, resultPage);
voPage.setResult(EntityUtil.changeEntityListNew(StoreGroupStrateVO.class, resultPage.getResult()));
return RestResponse.success(voPage);
} else {
return RestResponse.failure(result.getCode(), result.getMessage());
}
}
@RequestMapping("/update-store-strategy-weights")
public RestResponse updateWeight(Integer weight) {
if (weight == null) {
RestResponse.failure(ErrorCode.ERR_5.getCode(), "参数错误");
}
ServiceResponse<Integer> result = storeStrategyApiService.setStoreGroupStrategyWeight(StoreGroupConstant.TEST_ENTERPRISE_ID, weight);
return RestResponse.success(result.getResult());
}
@RequestMapping("/get-store-strategy-weights")
public RestResponse getWeight() {
ServiceResponse<Integer> result = storeStrategyApiService.getStoreGroupStrategyWeight(StoreGroupConstant.TEST_ENTERPRISE_ID);
return RestResponse.success(result.getResult());
}
private StoreStrategyDTO transferQoToDTO(StoreStrategyQO storeStrategyQO) {
StoreStrategyDTO storeStrategyDTO = EntityUtil.changeEntityNew(StoreStrategyDTO.class, storeStrategyQO);
storeStrategyDTO.setEnterpriseId(StoreGroupConstant.TEST_ENTERPRISE_ID);
return storeStrategyDTO;
}
}
......@@ -3,6 +3,7 @@ package com.gic.store.web.exception;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.store.constant.StoreGroupErrorEnum;
import com.gic.store.exception.StoreGroupException;
import com.gic.store.utils.ErrorCode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.validation.BindException;
......@@ -29,7 +30,7 @@ public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public RestResponse controllerException(HttpServletResponse response, Exception ex) {
logger.error("err", ex);
RestResponse failureResponse = getRestResponse(StoreGroupErrorEnum.Error.getCode(), StoreGroupErrorEnum.Error.getMessage());
RestResponse failureResponse = getRestResponse(ErrorCode.ERR_9999.getCode(), StoreGroupErrorEnum.Error.getMessage());
StringBuilder sb = new StringBuilder();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try (PrintWriter printWriter = new PrintWriter(baos)) {
......
......@@ -110,6 +110,7 @@ public class StoreQO implements Serializable {
private String delBusinessTimes;
private String businessTimes;
private String storeGroupName;
private String fieldJson;
public Integer getStoreId() {
return storeId;
......@@ -326,4 +327,12 @@ public class StoreQO implements Serializable {
public void setCreateType(Integer createType) {
this.createType = createType;
}
public String getFieldJson() {
return fieldJson;
}
public void setFieldJson(String fieldJson) {
this.fieldJson = fieldJson;
}
}
package com.gic.store.web.qo.storefield;
import com.gic.store.constant.StoreGroupConstant;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
......@@ -18,7 +22,11 @@ public class StoreFieldQO implements Serializable{
public interface RemoveValidView {
}
public interface SwapValidView {
}
public interface SetSortValueValidView {
}
/**
*
......@@ -84,6 +92,20 @@ public class StoreFieldQO implements Serializable{
*/
private String erpRelCode;
/**
* 上移或者下移
*/
@NotNull(message = "移动标志参数值不能为空", groups = {SwapValidView.class})
@Min(value = StoreGroupConstant.SORT_UP, message = "移动标志参数值错误,小于1", groups = {SwapValidView.class})
@Max(value = StoreGroupConstant.SORT_TOPPING, message = "移动标志参数值错误,大于4", groups = {SwapValidView.class})
private Integer upOrDown;
/**
* 想要排序的值
*/
@NotNull(message = "排序值不能为空", groups = {SetSortValueValidView.class})
private Integer sortValue;
public Integer getStoreFieldId() {
return storeFieldId;
}
......@@ -179,4 +201,20 @@ public class StoreFieldQO implements Serializable{
public void setStoreRegionIds(String storeRegionIds) {
this.storeRegionIds = storeRegionIds;
}
public Integer getUpOrDown() {
return upOrDown;
}
public void setUpOrDown(Integer upOrDown) {
this.upOrDown = upOrDown;
}
public Integer getSortValue() {
return sortValue;
}
public void setSortValue(Integer sortValue) {
this.sortValue = sortValue;
}
}
......@@ -65,7 +65,7 @@ public class StoreFieldSelectQO implements Serializable{
/**
*
*/
private Integer sort;
private Double sort;
/**
*
......@@ -88,7 +88,7 @@ public class StoreFieldSelectQO implements Serializable{
*/
@NotNull(message = "移动标志参数值不能为空", groups = {SwapValidView.class})
@Min(value = StoreGroupConstant.SORT_UP, message = "移动标志参数值错误,小于1", groups = {SwapValidView.class})
@Max(value = StoreGroupConstant.SORT_DOWN, message = "移动标志参数值错误,大于2", groups = {SwapValidView.class})
@Max(value = StoreGroupConstant.SORT_TOPPING, message = "移动标志参数值错误,大于4", groups = {SwapValidView.class})
private Integer upOrDown;
/**
......@@ -102,7 +102,6 @@ public class StoreFieldSelectQO implements Serializable{
*/
private String search;
private boolean isUp;
public Integer getStoreFieldSelectId() {
return storeFieldSelectId;
......@@ -136,11 +135,11 @@ public class StoreFieldSelectQO implements Serializable{
this.enterpriseId = enterpriseId;
}
public Integer getSort() {
public Double getSort() {
return sort;
}
public void setSort(Integer sort) {
public void setSort(Double sort) {
this.sort = sort;
}
......@@ -176,14 +175,6 @@ public class StoreFieldSelectQO implements Serializable{
this.upOrDown = upOrDown;
}
public boolean isUp() {
if (upOrDown == StoreGroupConstant.SORT_UP) {
return true;
} else {
return false;
}
}
public Integer getSortValue() {
return sortValue;
}
......
......@@ -2,7 +2,10 @@ package com.gic.store.web.qo.storegroup;
import com.gic.store.constant.StoreGroupConstant;
import javax.validation.constraints.*;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
......@@ -23,6 +26,18 @@ public class StoreGroupQO implements Serializable{
public interface RemoveValidView {
}
public interface EditNameValidView {
}
public interface EditParentIdValidView {
}
public interface SetSortValueValidView {
}
/**
*
......@@ -34,12 +49,13 @@ public class StoreGroupQO implements Serializable{
/**
* 分组名称
*/
@NotBlank(message = "名称不能为空", groups = {SaveValidView.class})
@NotBlank(message = "名称不能为空", groups = {SaveValidView.class, EditNameValidView.class})
private String storeGroupName;
/**
* 父级分组id
*/
@NotNull(message = "父级ID不能为空", groups = {EditParentIdValidView.class})
private Integer parentStoreGroupId;
/**
......@@ -89,6 +105,12 @@ public class StoreGroupQO implements Serializable{
@Max(value = StoreGroupConstant.SORT_DOWN, message = "移动标志参数值错误,大于2", groups = {SortValidView.class})
private Integer upOrDown;
/**
* 想要排序的值
*/
@NotNull(message = "排序值不能为空", groups = {SetSortValueValidView.class})
private Integer sortValue;
private boolean isUp;
public Integer getStoreGroupId() {
......@@ -194,4 +216,12 @@ public class StoreGroupQO implements Serializable{
return false;
}
}
public Integer getSortValue() {
return sortValue;
}
public void setSortValue(Integer sortValue) {
this.sortValue = sortValue;
}
}
package com.gic.store.web.qo.storestrategy;
import com.gic.store.constant.StoreGroupConstant;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
/**
* @author guojx
* @date 2019/7/4 1:59 PM
*/
public class StoreStrategyQO implements Serializable{
private static final long serialVersionUID = 8909390650431679960L;
public interface SaveValidView {
}
public interface StoreStrategyTypeValidView {
}
public interface RemoveValidView {
}
public interface SwapValidView {
}
public interface SetSortValueValidView {
}
/**
*
*/
@NotNull(message = "主键ID不能为空", groups = {RemoveValidView.class})
private Integer strategyId;
/**
* 策略名称
*/
@NotBlank(message = "策略名称不能为空", groups = {SaveValidView.class})
private String strategyName;
/**
*
*/
private Integer enterpriseId;
/**
* 门店域id
*/
@NotNull(message = "门店域不能为空", groups = {SaveValidView.class})
private Integer storeRegionId;
/**
* 门店分组条件,json数组
*/
private String condition;
/**
* 策略命中值;如果type为门店分组策略,对应分组id;否则为门店启用和不启用值
*/
@NotBlank(message = "策略命中值不能为空", groups = {SaveValidView.class})
private String targetValue;
/**
*
*/
private Date createTime;
/**
*
*/
private Date updateTime;
/**
* 状态值 1有效 0无效
*/
private Integer status;
/**
* 策略类型,1门店状态策略, 2门店分组策略
*/
@NotNull(message = "策略类型不能为空", groups = {StoreStrategyTypeValidView.class})
@Min(value = StoreGroupConstant.STORE_STRATEGY_TYPE, message = "策略类型参数值错误,小于1", groups = {StoreStrategyTypeValidView.class})
@Max(value = StoreGroupConstant.STORE_GROUP_STRATEGY_TYPE, message = "策略类型参数值错误,大于2", groups = {StoreStrategyTypeValidView.class})
private Integer strategyType;
/**
* 排序字段
*/
private Double sort;
/**
* 排序值
*/
private Integer seq;
/**
* 上移或者下移
*/
@NotNull(message = "移动标志参数值不能为空", groups = {SwapValidView.class})
@Min(value = StoreGroupConstant.SORT_UP, message = "移动标志参数值错误,小于1", groups = {SwapValidView.class})
@Max(value = StoreGroupConstant.SORT_TOPPING, message = "移动标志参数值错误,大于4", groups = {SwapValidView.class})
private Integer upOrDown;
/**
* 想要排序的值
*/
@NotNull(message = "排序值不能为空", groups = {SetSortValueValidView.class})
private Integer sortValue;
public Integer getStrategyId() {
return strategyId;
}
public void setStrategyId(Integer strategyId) {
this.strategyId = strategyId;
}
public String getStrategyName() {
return strategyName;
}
public void setStrategyName(String strategyName) {
this.strategyName = strategyName;
}
public Integer getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(Integer enterpriseId) {
this.enterpriseId = enterpriseId;
}
public Integer getStoreRegionId() {
return storeRegionId;
}
public void setStoreRegionId(Integer storeRegionId) {
this.storeRegionId = storeRegionId;
}
public String getCondition() {
return condition;
}
public void setCondition(String condition) {
this.condition = condition;
}
public String getTargetValue() {
return targetValue;
}
public void setTargetValue(String targetValue) {
this.targetValue = targetValue;
}
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 getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Integer getStrategyType() {
return strategyType;
}
public void setStrategyType(Integer strategyType) {
this.strategyType = strategyType;
}
public Double getSort() {
return sort;
}
public void setSort(Double sort) {
this.sort = sort;
}
public Integer getSeq() {
return seq;
}
public void setSeq(Integer seq) {
this.seq = seq;
}
public Integer getUpOrDown() {
return upOrDown;
}
public void setUpOrDown(Integer upOrDown) {
this.upOrDown = upOrDown;
}
public Integer getSortValue() {
return sortValue;
}
public void setSortValue(Integer sortValue) {
this.sortValue = sortValue;
}
}
package com.gic.store.web.vo.storefield;
import java.io.Serializable;
/**
* @author guojx
* @date 2019/7/2 6:56 PM
*/
public class StoreFieldEditVO implements Serializable{
private static final long serialVersionUID = -1642511062822467332L;
/**
*
*/
private Integer storeFieldId;
/**
* 属性名称
*/
private String storeFieldName;
/**
* 属性code
*/
private String storeFieldCode;
/**
* 字段类型;1文本 2单选 3多选 4实数 5时间
*/
private Integer storeFieldType;
/**
* 门店域id
*/
private String storeRegionIds;
/**
* 排序字段
*/
private Double sort;
/**
* 字段详细配置
*/
private String storeFieldDetail;
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 String getStoreRegionIds() {
return storeRegionIds;
}
public void setStoreRegionIds(String storeRegionIds) {
this.storeRegionIds = storeRegionIds;
}
public Double getSort() {
return sort;
}
public void setSort(Double sort) {
this.sort = sort;
}
public String getStoreFieldDetail() {
return storeFieldDetail;
}
public void setStoreFieldDetail(String storeFieldDetail) {
this.storeFieldDetail = storeFieldDetail;
}
}
package com.gic.store.web.vo.storefield;
import java.io.Serializable;
/**
* @author guojx
* @date 2019/7/3 4:13 PM
*/
public class StoreFieldRegionVO implements Serializable{
private static final long serialVersionUID = -6082513310725549988L;
/**
*
*/
private Integer storeFieldId;
/**
* 属性名称
*/
private String storeFieldName;
/**
* 字段类型;1文本 2单选 3多选 4实数 5时间
*/
private Integer storeFieldType;
/**
* 字段详细配置
*/
private String storeFieldDetail;
/**
* 排序字段
*/
private Double sort;
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 Integer getStoreFieldType() {
return storeFieldType;
}
public void setStoreFieldType(Integer storeFieldType) {
this.storeFieldType = storeFieldType;
}
public String getStoreFieldDetail() {
return storeFieldDetail;
}
public void setStoreFieldDetail(String storeFieldDetail) {
this.storeFieldDetail = storeFieldDetail;
}
public Double getSort() {
return sort;
}
public void setSort(Double sort) {
this.sort = sort;
}
}
......@@ -51,6 +51,15 @@ public class StoreFieldVO implements Serializable{
* 排序值
*/
private Integer seq;
/**
* 是否是映射 1:是
*/
private Integer isErpMapping;
/**
* 是否是筛选/列表支持 1:是
*/
private Integer isFilter;
public Integer getStoreFieldId() {
return storeFieldId;
......@@ -123,4 +132,20 @@ public class StoreFieldVO implements Serializable{
public void setStoreRegionId(String storeRegionId) {
this.storeRegionId = storeRegionId;
}
public Integer getIsErpMapping() {
return isErpMapping;
}
public void setIsErpMapping(Integer isErpMapping) {
this.isErpMapping = isErpMapping;
}
public Integer getIsFilter() {
return isFilter;
}
public void setIsFilter(Integer isFilter) {
this.isFilter = isFilter;
}
}
package com.gic.store.web.vo.storestrategy;
import java.io.Serializable;
/**
* @author guojx
* @date 2019/7/4 2:36 PM
*/
public class StoreGroupStrateVO implements Serializable{
private static final long serialVersionUID = -9043482944829812330L;
/**
*
*/
private Integer strategyId;
/**
* 策略名称
*/
private String strategyName;
/**
* 排序字段
*/
private Double sort;
/**
* 排序值
*/
private Integer seq;
public Integer getStrategyId() {
return strategyId;
}
public void setStrategyId(Integer strategyId) {
this.strategyId = strategyId;
}
public String getStrategyName() {
return strategyName;
}
public void setStrategyName(String strategyName) {
this.strategyName = strategyName;
}
public Double getSort() {
return sort;
}
public void setSort(Double sort) {
this.sort = sort;
}
public Integer getSeq() {
return seq;
}
public void setSeq(Integer seq) {
this.seq = seq;
}
}
......@@ -26,4 +26,11 @@
<!--门店-->
<dubbo:reference interface="com.gic.store.service.StoreApiService" id="storeApiService" timeout="60000" retries="0"/>
<!--分组策略-->
<dubbo:reference interface="com.gic.store.service.StoreStrategyApiService" id="storeStrategyApiService" timeout="60000" retries="0"/>
<!--门店导入-->
<dubbo:reference interface="com.gic.store.service.StoreImportApiService" id="storeImportApiService" timeout="60000" />
<dubbo:reference interface="com.gic.store.service.ProvincesApiService" id="provincesApiService" timeout="60000" />
</beans>
\ 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