Commit 1a7d2e01 by zhiwj

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

parents 3d54513b 44df3407
......@@ -4,6 +4,8 @@ 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
......@@ -85,4 +87,12 @@ public interface StoreStrategyApiService {
ServiceResponse getStoreGroupStrategyWeight(Integer enterpriseId);
/**
* 重置门店策略
* @param regionIdList
* @param storeStatusList
* @return
*/
ServiceResponse resetStoreGroupStrategy(List<Integer> regionIdList, List<Integer> storeStatusList);
}
......@@ -4,6 +4,8 @@ import com.gic.store.dto.StoreStrategyDTO;
import com.gic.store.entity.TabStoreStrategy;
import com.github.pagehelper.Page;
import java.util.List;
/**
* @author guojx
* @date 2019/7/4 9:46 AM
......@@ -101,6 +103,23 @@ public interface StoreStrategyService {
*/
Page<TabStoreStrategy> listStoreStrategy(int enterpriseId, String search, int strategyType, Integer pageNum, Integer pageSize);
/**
* 查询策略列表数据
* @param enterpriseId
* @param strategyType
* @return
*/
List<TabStoreStrategy> listStoreStrategy(int enterpriseId, int strategyType);
void updateSortById(int strategyId, double sort);
/**
* 验证是否命中,如果命中,返回的result值就是命中值,否则是空字符串
* @param storeId
* @param enterpriseId
* @param strategyType
* @return
*/
String isHitStrategy(int storeId, int enterpriseId, int strategyType);
}
package com.gic.store.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.gic.commons.util.EntityUtil;
import com.gic.store.constant.StoreGroupConstant;
import com.gic.store.constant.StrategyStoreFieldEnum;
import com.gic.store.dao.mapper.TabStoreStrategyMapper;
import com.gic.store.dto.StoreStrategyDTO;
import com.gic.store.entity.TabStore;
import com.gic.store.entity.TabStoreExtend;
import com.gic.store.entity.TabStoreStrategy;
import com.gic.store.service.StoreExtendService;
import com.gic.store.service.StoreService;
import com.gic.store.service.StoreStrategyService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
......@@ -23,6 +31,11 @@ public class StoreStrategyServiceImpl implements StoreStrategyService{
@Autowired
private TabStoreStrategyMapper tabStoreStrategyMapper;
@Autowired
private StoreService storeService;
@Autowired
private StoreExtendService storeExtendService;
@Override
public int saveStoreGroupStrategy(StoreStrategyDTO storeStrategyDTO) {
TabStoreStrategy storeStrategy = EntityUtil.changeEntityNew(TabStoreStrategy.class, storeStrategyDTO);
......@@ -118,6 +131,12 @@ public class StoreStrategyServiceImpl implements StoreStrategyService{
return (Page<TabStoreStrategy>) list;
}
@Override
public List<TabStoreStrategy> listStoreStrategy(int enterpriseId, int strategyType) {
List<TabStoreStrategy> list = tabStoreStrategyMapper.listStoreStrategy(enterpriseId, null, strategyType);
return list;
}
public double getMaxSort(int enterpriseId, int strategyType) {
Double sort = tabStoreStrategyMapper.getMaxSort(enterpriseId, strategyType);
return sort == null ? 1d : sort;
......@@ -131,4 +150,94 @@ public class StoreStrategyServiceImpl implements StoreStrategyService{
tabStoreStrategyMapper.updateByPrimaryKeySelective(storeStrategy);
}
@Override
public String isHitStrategy(int storeId, int enterpriseId, int strategyType) {
List<TabStoreStrategy> strategyList = listStoreStrategy(enterpriseId, strategyType);
//命中值
String result = "";
TabStore store = storeService.getById(storeId);
for (int num = 0, strategyLength = strategyList.size(); num < strategyLength; num ++) {
//如果数值对上,则说明命中
int validSize = 0;
TabStoreStrategy strategy = strategyList.get(num);
String targetValue = strategy.getTargetValue();
String conditions = strategy.getConditions();
int regionId = strategy.getStoreRegionId();
String storeCreateType = strategy.getStoreCreateType();
//valid
if (store.getRegionId().intValue() != regionId) {
continue;
}
validSize ++;
JSONArray jsonArray = JSONArray.parseArray(conditions);
for (int i = 0, length = jsonArray.size(); i < length; i ++) {
JSONObject object = jsonArray.getJSONObject(i);
String key = object.getString("key");
String value = object.getString("value");
if (StrategyStoreFieldEnum.RelatedBrand.getCode().equals(key)) {
if (!isBrandIdHitStrategy(store.getBrandIds(), value)) {
continue;
}
} else if (StrategyStoreFieldEnum.StoreCity.getCode().equals(key)) {
if (!isBrandIdHitStrategy(store.getCityId(), value)) {
continue;
}
} else if (StrategyStoreFieldEnum.StoreProvince.getCode().equals(key)) {
if (!isBrandIdHitStrategy(store.getProvinceId(), value)) {
continue;
}
} else if (StrategyStoreFieldEnum.StoreCountry.getCode().equals(key)) {
if (!isBrandIdHitStrategy(store.getAreaId(), value)) {
continue;
}
} else {
//单选或者多选
TabStoreExtend storeExtend = storeExtendService.getStoreExtendByStoreIdAndFieldId(storeId, Integer.parseInt(key));
if (!isBrandIdHitStrategy(storeExtend.getValue(), value)) {
continue;
}
}
validSize ++;
}
if (strategyType == StoreGroupConstant.STORE_STRATEGY_TYPE) {
//如果是门店启用状态策略,需要验证门店创建方式
if (!isBrandIdHitStrategy(store.getCreateType().toString(), storeCreateType)) {
continue;
}
validSize ++;
}
int hitSize;
if (strategyType == StoreGroupConstant.STORE_STRATEGY_TYPE) {
hitSize = jsonArray.size() + 2;
} else {
hitSize = jsonArray.size() + 1;
}
//命中
if (validSize == hitSize) {
result = targetValue;
break;
}
}
return result;
}
private boolean isBrandIdHitStrategy(String brandIds, String value) {
String[] values = value.split(",");
for (String str : values) {
if (brandIds.contains(str)) {
return true;
}
}
return false;
}
}
......@@ -6,6 +6,7 @@ import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.PageHelperUtils;
import com.gic.store.dto.StoreFieldDTO;
import com.gic.store.entity.TabStoreField;
import com.gic.store.service.StoreExtendService;
import com.gic.store.service.StoreFieldApiService;
import com.gic.store.service.StoreFieldService;
import com.gic.store.utils.ErrorCode;
......@@ -26,6 +27,8 @@ import java.util.List;
public class StoreFieldApiServiceImpl implements StoreFieldApiService{
@Autowired
private StoreFieldService storeFieldService;
@Autowired
private StoreExtendService storeExtendService;
@Override
public ServiceResponse<Integer> save(StoreFieldDTO storeFieldDTO) {
......@@ -96,6 +99,13 @@ public class StoreFieldApiServiceImpl implements StoreFieldApiService{
@Override
public ServiceResponse<Integer> delete(int storeFieldId) {
TabStoreField storeField = storeFieldService.getStoreFieldById(storeFieldId);
if (storeField == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "主键错误,查询不到数据");
}
if (storeExtendService.storeExtendHasStoreField(storeFieldId)) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "属性 " + storeField.getStoreFieldName() + "在使用中,不允许删除");
}
return ServiceResponse.success(storeFieldService.delete(storeFieldId));
}
......
......@@ -6,6 +6,7 @@ import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.PageHelperUtils;
import com.gic.store.dto.StoreFieldSelectDTO;
import com.gic.store.entity.TabStoreFieldSelect;
import com.gic.store.service.StoreExtendService;
import com.gic.store.service.StoreFieldSelectApiService;
import com.gic.store.service.StoreFieldSelectService;
import com.gic.store.utils.ErrorCode;
......@@ -24,6 +25,8 @@ import java.util.List;
public class StoreFieldSelectApiServiceImpl implements StoreFieldSelectApiService{
@Autowired
private StoreFieldSelectService storeFieldSelectService;
@Autowired
private StoreExtendService storeExtendService;
@Override
public ServiceResponse<Integer> save(StoreFieldSelectDTO storeFieldSelectDTO) {
......@@ -89,6 +92,13 @@ public class StoreFieldSelectApiServiceImpl implements StoreFieldSelectApiServic
@Override
public ServiceResponse<Integer> delete(int storeFieldSelectId) {
TabStoreFieldSelect tabStoreFieldSelect = storeFieldSelectService.getStoreFieldSelectById(storeFieldSelectId);
if (tabStoreFieldSelect == null) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "主键错误,查询不到数据");
}
if (storeExtendService.storeExtendHasStoreFieldSelect(tabStoreFieldSelect.getStoreFieldId(), storeFieldSelectId)) {
return ServiceResponse.failure(ErrorCode.ERR_5.getCode(), "属性值 " + tabStoreFieldSelect.getStoreFieldSelectName() + "在使用中,不允许删除");
}
return ServiceResponse.success(storeFieldSelectService.delete(storeFieldSelectId));
}
......
......@@ -9,7 +9,9 @@ import com.gic.commons.util.PageHelperUtils;
import com.gic.redis.data.util.RedisUtil;
import com.gic.store.constant.StoreGroupConstant;
import com.gic.store.dto.StoreStrategyDTO;
import com.gic.store.entity.TabStore;
import com.gic.store.entity.TabStoreStrategy;
import com.gic.store.service.StoreService;
import com.gic.store.service.StoreStrategyApiService;
import com.gic.store.service.StoreStrategyService;
import com.gic.store.utils.ErrorCode;
......@@ -31,6 +33,8 @@ public class StoreStrategyApiServiceImpl implements StoreStrategyApiService{
@Autowired
private StoreStrategyService storeStrategyService;
@Autowired
private StoreService storeService;
@Override
public ServiceResponse<Integer> saveStoreStrategy(StoreStrategyDTO storeStrategyDTO) {
......@@ -219,6 +223,19 @@ public class StoreStrategyApiServiceImpl implements StoreStrategyApiService{
return ServiceResponse.success(Integer.valueOf(value.toString()));
}
@Override
public ServiceResponse resetStoreGroupStrategy(List<Integer> regionIdList, List<Integer> storeStatusList) {
List<TabStore> storeList = storeService.listStoreByRegionAndStatus(regionIdList, storeStatusList);
for (TabStore store : storeList) {
String result = storeStrategyService.isHitStrategy(store.getStoreId(), store.getEnterpriseId(), StoreGroupConstant.STORE_GROUP_STRATEGY_TYPE);
if (StringUtils.isNotBlank(result)) {
//todo 更新门店分组值
}
}
return ServiceResponse.success();
}
private boolean validConditionsIsRepeatKey(String conditions) {
JSONArray jsonArray = JSONArray.parseArray(conditions);
//每一种属性都不能一样
......
......@@ -18,6 +18,7 @@ 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.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -25,6 +26,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -108,6 +110,25 @@ public class StoreStrategyController {
return RestResponse.success(result);
}
@RequestMapping("/reset-store-group-strategy")
public RestResponse resetStoreGroupStrategy(String regionIds, String status, boolean isDealWith) {
if (isDealWith) {
if (StringUtils.isBlank(regionIds)) {
return RestResponse.failure(ErrorCode.ERR_5.getCode(), "门店域不能为空");
}
if (StringUtils.isBlank(status)) {
return RestResponse.failure(ErrorCode.ERR_5.getCode(), "门店启用状态不能为空");
}
ServiceResponse result = storeStrategyApiService.resetStoreGroupStrategy(transferStringArrToList(regionIds), transferStringArrToList(status));
if (!result.isSuccess()) {
return RestResponse.failure(result.getCode(), result.getMessage());
}
}
return RestResponse.success();
}
@RequestMapping("/edit-store-strategy")
public RestResponse editStoreStrategy(@Validated({StoreStrategyQO.SaveValidView.class, StoreStrategyQO.RemoveValidView.class})
......@@ -210,4 +231,14 @@ public class StoreStrategyController {
storeStrategyDTO.setEnterpriseId(StoreGroupConstant.TEST_ENTERPRISE_ID);
return storeStrategyDTO;
}
private List<Integer> transferStringArrToList(String arr) {
String[] strArr = arr.split(",");
List<Integer> list = new ArrayList<>(strArr.length);
for (String str : strArr) {
list.add(Integer.parseInt(str));
}
return list;
}
}
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