Commit 547c22e0 by 陶光胜

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

parents 2a561951 d6b3c5ce
package com.gic.store.constant;
/**
*
* @Description:
* @author zhiwj
* @date 2019-11-11 10:28
*/
public enum StoreLogReasonEnum {
WEB(1, "WEB后台操作"),
EXTERNAL(2, "外部触发"),
ORDER(3, "订单同步"),
MEMBER(4, "会员同步"),
SYSTEM(5, "系统配置触发"),
;
private int code;
private String message;
StoreLogReasonEnum(int code, String message) {
this.code = code;
this.message = message;
}
public int getCode() {
return code;
}
public String getMessage() {
return message;
}
}
package com.gic.store.constant;
/**
*
* @Description:
* @author zhiwj
* @date 2019-11-11 10:31
*/
public enum StoreLogTypeEnum {
SAVE(1, "门店新增"),
INFO_UPDATE(2, "信息变更"),
GROUP_UPDATE(3, "分组变更"),
STATUS_UPDATE(4, "状态变更"),
ADD_CLERK(5, "关联导购")
;
private int code;
private String message;
StoreLogTypeEnum(int code, String message) {
this.code = code;
this.message = message;
}
public int getCode() {
return code;
}
public String getMessage() {
return message;
}
}
package com.gic.store.constant;
public enum StoreStatusEnum {
ONLINE(1, "启用状态"),
INONLINE(0, "不启用状态");
ONLINE(1, "启用"),
INONLINE(2, "不启用");
private int code;
private String message;
......@@ -18,4 +18,13 @@ public enum StoreStatusEnum {
public String getMessage() {
return message;
}
public static String parseCode(int code){
for(StoreStatusEnum transactType : values()){
if (transactType.getCode() == code) {
return transactType.message;
}
}
return null;
}
}
......@@ -2,6 +2,7 @@ package com.gic.store.dto;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
/**
* @author zhiwj
......@@ -84,4 +85,21 @@ public class StoreBusinessTimeDTO implements Serializable {
public void setWeekdayShow(String weekdayShow) {
this.weekdayShow = weekdayShow;
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
StoreBusinessTimeDTO that = (StoreBusinessTimeDTO) o;
return Objects.equals(weekday, that.weekday) &&
Objects.equals(openTime, that.openTime) &&
Objects.equals(closeTime, that.closeTime);
}
@Override
public int hashCode() {
return Objects.hash(weekday, openTime, closeTime);
}
}
......@@ -39,6 +39,13 @@ public class StoreDTO extends StoreInfoDTO implements Serializable {
private Integer fromEnterpriseId;
private String fromEnterpriseName;
/**
* 事由 1:web后台操作 2:外部触发 3:订单同步 4:会员同步 5:系统配置触发
*/
private Integer reason;
private String remark;
private Integer operatorId;
private String operatorName;
public Integer getStoreId() {
return storeId;
......@@ -119,4 +126,36 @@ public class StoreDTO extends StoreInfoDTO implements Serializable {
public String getFromEnterpriseName() {
return fromEnterpriseName;
}
public Integer getReason() {
return reason;
}
public void setReason(Integer reason) {
this.reason = reason;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Integer getOperatorId() {
return operatorId;
}
public void setOperatorId(Integer operatorId) {
this.operatorId = operatorId;
}
public String getOperatorName() {
return operatorName;
}
public void setOperatorName(String operatorName) {
this.operatorName = operatorName;
}
}
\ No newline at end of file
package com.gic.store.dto;
import java.io.Serializable;
import java.util.Objects;
/**
* @author zhiwj
......@@ -152,4 +153,21 @@ public class StoreExtendDTO implements Serializable {
this.erpRelCode = erpRelCode;
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
StoreExtendDTO that = (StoreExtendDTO) o;
return Objects.equals(storeFieldId, that.storeFieldId) &&
Objects.equals(value, that.value) &&
Objects.equals(storeFieldName, that.storeFieldName) &&
Objects.equals(storeFieldCode, that.storeFieldCode);
}
@Override
public int hashCode() {
return Objects.hash(storeFieldId, value, storeFieldName, storeFieldCode);
}
}
package com.gic.store.dto;
import java.io.Serializable;
import java.util.Date;
/**
*
* @Description:
* @author zhiwj
* @date 2019-11-11 15:42
*/
public class StoreLogDTO implements Serializable {
/**
*
*/
private Integer storeLogId;
/**
*
*/
private Integer enterpriseId;
/**
*
*/
private Integer storeId;
/**
*
*/
private String content;
/**
* 事由 1:web后台操作 2:外部触发 3:订单同步 4:会员同步 5:系统配置触发
*/
private Integer reason;
/**
* 日志类型 1:门店新增 2:关联导购 3:信息变更 4:门店分组变更 5:状态变更
*/
private Integer logType;
/**
*
*/
private String remark;
/**
*
*/
private Date createTime;
/**
*
*/
private Date updateTime;
/**
*
*/
private Integer status;
/**
*
*/
private Integer operatorId;
/**
*
*/
private String operatorName;
public Integer getStoreLogId() {
return storeLogId;
}
public void setStoreLogId(Integer storeLogId) {
this.storeLogId = storeLogId;
}
public Integer getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(Integer enterpriseId) {
this.enterpriseId = enterpriseId;
}
public Integer getStoreId() {
return storeId;
}
public void setStoreId(Integer storeId) {
this.storeId = storeId;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Integer getReason() {
return reason;
}
public void setReason(Integer reason) {
this.reason = reason;
}
public Integer getLogType() {
return logType;
}
public void setLogType(Integer logType) {
this.logType = logType;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
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 getOperatorId() {
return operatorId;
}
public void setOperatorId(Integer operatorId) {
this.operatorId = operatorId;
}
public String getOperatorName() {
return operatorName;
}
public void setOperatorName(String operatorName) {
this.operatorName = operatorName;
}
}
package com.gic.store.dto;
import java.io.Serializable;
import java.util.Objects;
/**
* @author zhiwj
......@@ -85,4 +86,22 @@ public class StorePhotoDTO implements Serializable {
public void setSort(Integer sort) {
this.sort = sort;
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
StorePhotoDTO that = (StorePhotoDTO) o;
return Objects.equals(storeId, that.storeId) &&
Objects.equals(enterpriseId, that.enterpriseId) &&
Objects.equals(imageCode, that.imageCode) &&
Objects.equals(imageUrl, that.imageUrl);
}
@Override
public int hashCode() {
return Objects.hash(storeId, enterpriseId, imageCode, imageUrl);
}
}
......@@ -120,6 +120,16 @@ public class StoreTmpDTO implements Serializable {
private Date updateTime;
private List<StoreExtendDTO> extendList;
/**
*
*/
private Integer operatorId;
/**
*
*/
private String operatorName;
public Integer getStoreTmpId() {
return storeTmpId;
}
......@@ -311,4 +321,20 @@ public class StoreTmpDTO implements Serializable {
public List<StoreExtendDTO> getExtendList() {
return extendList;
}
public Integer getOperatorId() {
return operatorId;
}
public void setOperatorId(Integer operatorId) {
this.operatorId = operatorId;
}
public String getOperatorName() {
return operatorName;
}
public void setOperatorName(String operatorName) {
this.operatorName = operatorName;
}
}
......@@ -19,6 +19,18 @@ public interface StoreDictApiService {
ServiceResponse<List<StoreDictDTO>> listAllBusinessCategory(Integer enterpriseId);
/**
*
* @Title: getStoreDict
* @Description:
* @author zhiwj
* @param categoryCode
* @param code
* @return com.gic.api.base.commons.ServiceResponse<com.gic.store.dto.StoreDictDTO>
* @throws
*/
ServiceResponse<StoreDictDTO> getStoreDict(String categoryCode, String code);
/**
* 查询运维后台所有门店类型,企业选中checked=1
* @param enterpriseId
* @return
......
package com.gic.store.service;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.enterprise.qo.PageQO;
import com.gic.store.dto.StoreLogDTO;
/**
*
* @Description:
* @author zhiwj
* @date 2019-11-11 16:09
*/
public interface StoreLogApiService {
/**
* 查询门店日志列表
* @Title: listStoreLog
* @Description:
* @author zhiwj
* @param storeLogDTO
* @param pageQO
* @return com.gic.api.base.commons.ServiceResponse<com.gic.api.base.commons.Page<com.gic.store.dto.StoreLogDTO>>
* @throws
*/
ServiceResponse<Page<StoreLogDTO>> listStoreLog(StoreLogDTO storeLogDTO, PageQO pageQO);
}
......@@ -88,4 +88,6 @@ public interface TabStoreInfoMapper {
TabStoreInfo getByStore(@Param("store") StoreDTO store);
Integer getStoreOwnerByStoreInfoId(@Param("enterpriseId") Integer enterpriseId, @Param("storeInfoId") Integer storeInfoId);
Integer getStoreIdByStoreInfoId(@Param("enterpriseId") Integer enterpriseId, @Param("storeInfoId") Integer storeInfoId);
}
\ No newline at end of file
package com.gic.store.dao.mapper;
import com.gic.store.dto.StoreLogDTO;
import com.gic.store.entity.TabStoreLog;
import com.github.pagehelper.Page;
public interface TabStoreLogMapper {
/**
......@@ -50,4 +52,6 @@ public interface TabStoreLogMapper {
* @return 更新条目数
*/
int updateByPrimaryKey(TabStoreLog record);
Page<TabStoreLog> listStoreLog(StoreLogDTO storeLogDTO);
}
\ No newline at end of file
......@@ -126,6 +126,16 @@ public class TabStoreTmp {
*/
private Date updateTime;
/**
*
*/
private Integer operatorId;
/**
*
*/
private String operatorName;
public Integer getStoreTmpId() {
return storeTmpId;
}
......@@ -317,4 +327,20 @@ public class TabStoreTmp {
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Integer getOperatorId() {
return operatorId;
}
public void setOperatorId(Integer operatorId) {
this.operatorId = operatorId;
}
public String getOperatorName() {
return operatorName;
}
public void setOperatorName(String operatorName) {
this.operatorName = operatorName;
}
}
\ No newline at end of file
package com.gic.store.service;
import com.gic.enterprise.qo.PageQO;
import com.gic.store.dto.StoreLogDTO;
import com.gic.store.entity.TabStoreLog;
import com.github.pagehelper.Page;
/**
*
* @ClassName: StoreLogService
* @Description:
* @author zhiwj
* @date 2019-11-11 15:47
*/
public interface StoreLogService {
/**
* 门店日志
* @Title: saveStoreLog
* @Description:
* @author zhiwj
* @param storeLogDTO
* @return java.lang.Integer
* @throws
*/
Integer saveStoreLog(StoreLogDTO storeLogDTO);
/**
* 查询列表
* @Title: listStoreLog
* @Description:
* @author zhiwj
* @param storeLogDTO
* @param pageQO
* @return com.github.pagehelper.Page<com.gic.store.entity.TabStoreLog>
* @throws
*/
Page<TabStoreLog> listStoreLog(StoreLogDTO storeLogDTO, PageQO pageQO);
}
\ No newline at end of file
......@@ -95,5 +95,7 @@ public interface StoreService {
Integer getStoreOwnerByStoreInfoId(Integer enterpriseId, Integer storeInfoId);
Integer getStoreIdByStoreInfoId(Integer enterpriseId, Integer storeInfoId);
String listStoreInfoIdByStoreIds(String storeIds, Integer enterpriseId);
}
......@@ -80,7 +80,11 @@ public class ClerkLogServiceImpl implements ClerkLogService {
.append("变更为【").append(newClerk.getPositionName()).append("】");
}
clerkLog.setContent(sb.toString());
return tabClerkLogMapper.insertSelective(clerkLog);
if (StringUtils.isNotBlank(clerkLog.getContent().trim())) {
return tabClerkLogMapper.insertSelective(clerkLog);
} else {
return 0;
}
}
@Override
......
package com.gic.store.service.impl;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.GlobalInfo;
import com.gic.enterprise.qo.PageQO;
import com.gic.store.dao.mapper.TabStoreLogMapper;
import com.gic.store.dto.StoreLogDTO;
import com.gic.store.entity.TabStoreLog;
import com.gic.store.service.StoreLogService;
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.Date;
/**
*
* @Description:
* @author zhiwj
* @date 2019-11-11 15:48
*/
@Service("storeLogService")
public class StoreLogServiceImpl implements StoreLogService {
@Autowired
private TabStoreLogMapper tabStoreLogMapper;
@Override
public Integer saveStoreLog(StoreLogDTO storeLog) {
TabStoreLog tabStoreLog = EntityUtil.changeEntityByJSON(TabStoreLog.class, storeLog);
tabStoreLog.setCreateTime(new Date());
tabStoreLog.setStatus(GlobalInfo.DATA_STATUS_NORMAL);
return tabStoreLogMapper.insertSelective(tabStoreLog);
}
@Override
public Page<TabStoreLog> listStoreLog(StoreLogDTO storeLogDTO, PageQO pageQO) {
PageHelper.startPage(pageQO.getCurrentPage(), pageQO.getPageSize());
return tabStoreLogMapper.listStoreLog(storeLogDTO);
}
}
......@@ -434,6 +434,11 @@ public class StoreServiceImpl implements StoreService {
}
@Override
public Integer getStoreIdByStoreInfoId(Integer enterpriseId, Integer storeInfoId) {
return this.tabStoreInfoMapper.getStoreIdByStoreInfoId(enterpriseId, storeInfoId);
}
@Override
public String listStoreInfoIdByStoreIds(String storeIds, Integer enterpriseId) {
List<Integer> list = Stream.of(storeIds.split(GlobalInfo.FLAG_COMMA)).map(Integer::valueOf).collect(Collectors.toList());
List<Integer> ids = tabStoreMapper.listStoreInfoIdByStoreIds(list, enterpriseId);
......
......@@ -6,6 +6,7 @@ import com.gic.commons.util.CollectionUtil;
import com.gic.commons.util.EntityUtil;
import com.gic.enterprise.error.ErrorCode;
import com.gic.enterprise.response.EnterpriseServiceResponse;
import com.gic.store.constant.StoreLogTypeEnum;
import com.gic.store.constant.StoreOwnTypeEnum;
import com.gic.store.dto.*;
import com.gic.store.entity.TabClerk;
......@@ -36,6 +37,8 @@ public class ClerkApiServiceImpl implements ClerkApiService {
private StoreApiService storeApiService;
@Autowired
private ClerkLogService clerkLogService;
@Autowired
private StoreLogService storeLogService;
@Override
public ServiceResponse saveOrUpdate(ClerkDTO clerkDTO) {
......@@ -56,6 +59,7 @@ public class ClerkApiServiceImpl implements ClerkApiService {
// Integer saveClerkLogBySaveClerk(Integer reason, Integer enterpriseId, Integer clerkId, String remark, Integer operatorId, String operatorName);
Integer id = clerkService.save(clerkDTO);
clerkLogService.saveClerkLogBySaveClerk(clerkDTO.getEnterpriseId(), id, clerkDTO.getReason(), clerkDTO.getRemark(), clerkDTO.getOperatorId(), clerkDTO.getOperatorName());
storeLogByAddClerk(clerkDTO);
} else {
TabClerk oldClerk = this.clerkService.getById(clerkDTO.getClerkId());
clerkService.update(clerkDTO);
......@@ -64,6 +68,21 @@ public class ClerkApiServiceImpl implements ClerkApiService {
return ServiceResponse.success();
}
private void storeLogByAddClerk(ClerkDTO clerkDTO) {
StoreLogDTO storeLogDTO = new StoreLogDTO();
storeLogDTO.setEnterpriseId(clerkDTO.getEnterpriseId());
Integer storeId = this.storeService.getStoreIdByStoreInfoId(clerkDTO.getEnterpriseId(), clerkDTO.getStoreInfoId());
storeLogDTO.setStoreId(storeId);
storeLogDTO.setContent("门店关联导购【导购编码" + clerkDTO.getClerkCode() + "】");
storeLogDTO.setReason(clerkDTO.getReason());
storeLogDTO.setLogType(StoreLogTypeEnum.ADD_CLERK.getCode());
storeLogDTO.setRemark(clerkDTO.getRemark());
storeLogDTO.setOperatorId(clerkDTO.getOperatorId());
storeLogDTO.setOperatorName(clerkDTO.getOperatorName());
storeLogService.saveStoreLog(storeLogDTO);
}
private boolean validStoreIsOther(Integer enterpriseId, Integer storeInfoId) {
Integer owner = storeService.getStoreOwnerByStoreInfoId(enterpriseId, storeInfoId);
return owner == StoreOwnTypeEnum.OTHER.getCode();
......
......@@ -78,6 +78,10 @@ public class StoreApiServiceImpl implements StoreApiService {
private EsBusinessOperaApiService esBusinessOperaApiService;
@Autowired
private EnterpriseApiService enterpriseApiService;
@Autowired
private StoreLogService storeLogService;
@Autowired
private StoreDictApiService storeDictApiService;
static {
storeStrtegyMap.put(1, new StoreStatusStrategyImpl());
......@@ -127,10 +131,12 @@ public class StoreApiServiceImpl implements StoreApiService {
}
// 启用策略
getStatus(storeDTO);
if (storeDTO.getStoreId() == null) {
Integer id = storeService.save(storeDTO);
storeDTO.setStoreId(id);
// LogUtils.saveAddLog(storeDTO);
// 记录门店日志
saveAddLog(storeDTO);
} else {
ServiceResponse<StoreDTO> existStore = this.getStoreById(storeDTO.getEnterpriseId(), storeDTO.getStoreId());
storeDTO.setStoreInfoId(existStore.getResult().getStoreInfoId());
......@@ -138,7 +144,8 @@ public class StoreApiServiceImpl implements StoreApiService {
if (update == 0) {
return ServiceResponse.failure(ErrorCode.NOTEXISTS.getCode(), ErrorCode.NOTEXISTS.getMsg());
}
// LogUtils.saveUpdateLog(storeDTO);
// 记录门店日志
saveUpdateLog(existStore.getResult(), storeDTO);
}
// 自定义属性
storeExtendService.saveOrUpdate(storeDTO.getEnterpriseId(), storeDTO.getStoreInfoId(), storeDTO.getStoreExtendList());
......@@ -162,6 +169,113 @@ public class StoreApiServiceImpl implements StoreApiService {
return ServiceResponse.success();
}
/**
* 修改日志
*/
private void saveUpdateLog(StoreDTO oldStore, StoreDTO newStore) {
StoreLogDTO storeLogDTO = new StoreLogDTO();
storeLogDTO.setEnterpriseId(newStore.getEnterpriseId());
storeLogDTO.setStoreId(newStore.getStoreId());
storeLogDTO.setReason(newStore.getReason());
storeLogDTO.setLogType(StoreLogTypeEnum.INFO_UPDATE.getCode());
storeLogDTO.setRemark(newStore.getRemark());
storeLogDTO.setOperatorId(newStore.getOperatorId());
storeLogDTO.setOperatorName(newStore.getOperatorName());
StringBuilder sb = new StringBuilder();
if (StringUtils.isNotBlank(newStore.getStoreName()) && !StringUtils.equals(newStore.getStoreName(), oldStore.getStoreName())) {
sb.append("门店名称").append("【").append(oldStore.getStoreName()).append("】")
.append("变更为【").append(newStore.getStoreName()).append("】");
}
if (!CollectionUtils.isEqualCollection(oldStore.getPhotoList(), newStore.getPhotoList())) {
sb.append("门店照片变更");
}
if (newStore.getStoreType() != null && !newStore.getStoreType().equals(oldStore.getStoreType())) {
ServiceResponse<StoreDictDTO> oldStoreType = this.storeDictApiService.getStoreDict("storeType", oldStore.getStoreType().toString());
ServiceResponse<StoreDictDTO> newStoreType = this.storeDictApiService.getStoreDict("storeType", newStore.getStoreType().toString());
sb.append("门店类型").append("【").append(oldStoreType.getResult().getKey()).append("】")
.append("变更为【").append(newStoreType.getResult().getKey()).append("】");
}
if (newStore.getErpStatus() != null && !newStore.getErpStatus().equals(oldStore.getErpStatus())) {
ServiceResponse<StoreDictDTO> oldStoreStatus = this.storeDictApiService.getStoreDict("storeStatus", oldStore.getErpStatus().toString());
ServiceResponse<StoreDictDTO> newStoreStatus = this.storeDictApiService.getStoreDict("storeStatus", newStore.getErpStatus().toString());
sb.append("门店状态").append("【").append(oldStoreStatus.getResult().getKey()).append("】")
.append("变更为【").append(newStoreStatus.getResult().getKey()).append("】");
}
if (StringUtils.isNotBlank(newStore.getConactsPhone()) && !StringUtils.equals(newStore.getConactsPhone(), oldStore.getConactsPhone())) {
sb.append("门店电话").append("【").append(oldStore.getConactsPhone()).append("】")
.append("变更为【").append(newStore.getConactsPhone()).append("】");
}
if (!CollectionUtils.isEqualCollection(oldStore.getBusinessTimeList(), newStore.getBusinessTimeList())) {
this.storeBusinessTimeService.convertBusinessTime(newStore.getBusinessTimeList());
String oldBusinessTimeShow = oldStore.getBusinessTimeList().stream().map(StoreBusinessTimeDTO::getWeekdayShow).reduce((x, y) -> x + "" + y).orElse("");
String newBusinessTimeShow = newStore.getBusinessTimeList().stream().map(StoreBusinessTimeDTO::getWeekdayShow).reduce((x, y) -> x + "" + y).orElse("");
sb.append("营业时间").append("【").append(oldBusinessTimeShow).append("】")
.append("变更为【").append(newBusinessTimeShow).append("】");
}
if (StringUtils.isNotBlank(newStore.getBrandIds()) && !StringUtils.equals(newStore.getBrandIds(), oldStore.getBrandIds())) {
List<TabStoreBrand> tabStoreBrands = this.storeBrandService.listStoreBrandByIds(newStore.getBrandIds());
String storeBrandShow = tabStoreBrands.stream().map(TabStoreBrand::getStoreBrandName).reduce((x, y) -> x + "," + y).orElse("");
sb.append("门店品牌").append("变更为【").append(storeBrandShow).append("】");
}
if (StringUtils.isNotBlank(newStore.getAddress()) && !StringUtils.equals(newStore.getAddress(), oldStore.getAddress())) {
sb.append("门店地址").append("【").append(oldStore.getAddress()).append("】")
.append("变更为【").append(newStore.getAddress()).append("】");
}
if (StringUtils.isNotBlank(newStore.getLongitude()) && !StringUtils.equals(newStore.getLongitude(), oldStore.getLongitude())) {
if (StringUtils.isNotBlank(newStore.getLatitude()) && !StringUtils.equals(newStore.getLatitude(), oldStore.getLatitude())) {
sb.append("门店经纬度").append("【").append(oldStore.getLongitude()).append(",").append(oldStore.getLatitude()).append("】")
.append("变更为【").append(newStore.getLongitude()).append(",").append(newStore.getLatitude()).append("】");
}
}
if (!CollectionUtils.isEqualCollection(oldStore.getStoreExtendList(), newStore.getStoreExtendList())) {
for (int i = 0; i < newStore.getStoreExtendList().size(); i++) {
StoreExtendDTO newStoreExtend = newStore.getStoreExtendList().get(i);
StoreExtendDTO oldStoreExtend = oldStore.getStoreExtendList().get(i);
if (StringUtils.isNotBlank(newStoreExtend.getValue()) && !StringUtils.equals(newStoreExtend.getValue(), oldStoreExtend.getValue())) {
sb.append(oldStoreExtend.getStoreFieldName()).append("【").append(oldStoreExtend.getValue()).append("】")
.append("变更为【").append(newStoreExtend.getValue()).append("】");
}
}
}
storeLogDTO.setContent(sb.toString());
if (StringUtils.isNotBlank(storeLogDTO.getContent().trim())) {
this.storeLogService.saveStoreLog(storeLogDTO);
}
// 分组
if (newStore.getStoreGroupId() != null && !newStore.getStoreGroupId().equals(oldStore.getStoreGroupId())) {
storeLogDTO.setLogType(StoreLogTypeEnum.GROUP_UPDATE.getCode());
TabStoreGroup storeGroup = this.storeGroupService.getStoreGroupById(newStore.getStoreGroupId());
storeLogDTO.setContent("门店分组变更为【" + storeGroup.getStoreGroupName() + "】");
this.storeLogService.saveStoreLog(storeLogDTO);
}
// 状态
if (newStore.getStatus() != null && !newStore.getStatus().equals(oldStore.getStatus())) {
storeLogDTO.setLogType(StoreLogTypeEnum.STATUS_UPDATE.getCode());
storeLogDTO.setContent("门店启用状态变更为【" + StoreStatusEnum.parseCode(storeLogDTO.getStatus()) + "】");
this.storeLogService.saveStoreLog(storeLogDTO);
}
}
/**
* 新增日志
*/
private void saveAddLog(StoreDTO storeDTO) {
StoreLogDTO storeLogDTO = new StoreLogDTO();
storeLogDTO.setEnterpriseId(storeDTO.getEnterpriseId());
storeLogDTO.setStoreId(storeDTO.getStoreId());
storeLogDTO.setContent("门店新增");
storeLogDTO.setReason(storeDTO.getReason());
storeLogDTO.setLogType(StoreLogTypeEnum.SAVE.getCode());
storeLogDTO.setRemark(storeDTO.getRemark());
storeLogDTO.setOperatorId(storeDTO.getOperatorId());
storeLogDTO.setOperatorName(storeDTO.getOperatorName());
this.storeLogService.saveStoreLog(storeLogDTO);
}
private String validBrandIsExist(String brandIds) {
if (StringUtils.isBlank(brandIds)) {
return null;
......@@ -170,6 +284,7 @@ public class StoreApiServiceImpl implements StoreApiService {
if (CollectionUtils.isEmpty(storeBrandList) || brandIds.split(GlobalInfo.FLAG_COMMA).length > storeBrandList.size()) {
return "品牌不存在";
}
return null;
}
......
......@@ -45,6 +45,15 @@ public class StoreDictApiServiceImpl implements StoreDictApiService {
return ServiceResponse.success(result);
}
@Override
public ServiceResponse<StoreDictDTO> getStoreDict(String categoryCode, String code) {
BizdictDTO dto = this.bizdictService.getByCode(categoryCode, code);
StoreDictDTO storeDictDTO = new StoreDictDTO();
storeDictDTO.setKey(dto.getName());
storeDictDTO.setValue(dto.getValueContent());
return EnterpriseServiceResponse.success(storeDictDTO);
}
private List<StoreDictDTO> changeListToTree(List<BizdictDTO> list, Integer enterpriseId) {
List<StoreDictDTO> result = new ArrayList<>();
for(BizdictDTO bizdictDTO : list){
......
package com.gic.store.service.outer.impl;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.PageHelperUtils;
import com.gic.enterprise.qo.PageQO;
import com.gic.enterprise.response.EnterpriseServiceResponse;
import com.gic.store.dto.StoreLogDTO;
import com.gic.store.entity.TabStoreLog;
import com.gic.store.service.StoreLogApiService;
import com.gic.store.service.StoreLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
*
* @Description:
* @author zhiwj
* @date 2019-11-11 16:10
*/
@Service("storeLogApiService")
public class StoreLogApiServiceImpl implements StoreLogApiService {
@Autowired
private StoreLogService storeLogService;
@Override
public ServiceResponse<Page<StoreLogDTO>> listStoreLog(StoreLogDTO storeLogDTO, PageQO pageQO) {
com.github.pagehelper.Page<TabStoreLog> storeLog = storeLogService.listStoreLog(storeLogDTO, pageQO);
Page<StoreLogDTO> dtoPage = PageHelperUtils.changePageHelperToCurrentPage(storeLog, StoreLogDTO.class);
return EnterpriseServiceResponse.success(dtoPage);
}
}
\ No newline at end of file
......@@ -240,6 +240,11 @@ public class StoreTaskServiceImpl extends AbstractTaskAllocationOperation implem
storeDTO.setStoreExtendList(extendList);
// 导入门店肯定是没有修改过的
storeDTO.setIsEditStoreGroup(0);
storeDTO.setReason(StoreLogReasonEnum.WEB.getCode());
storeDTO.setRemark("批量导入");
storeDTO.setOperatorId(t.getOperatorId());
storeDTO.setOperatorName(t.getOperatorName());
ServiceResponse<Integer> serviceResponse = storeApiService.saveOrUpdate(storeDTO);
String msg;
if (serviceResponse.isSuccess()) {
......
......@@ -29,6 +29,7 @@
<dubbo:service interface="com.gic.store.service.StoreFieldSelectApiService" ref="storeFieldSelectApiService" timeout="6000" />
<!--门店-->
<dubbo:service interface="com.gic.store.service.StoreApiService" ref="storeApiService" timeout="6000" />
<dubbo:service interface="com.gic.store.service.StoreLogApiService" ref="storeLogApiService" timeout="6000" />
<dubbo:service interface="com.gic.store.service.ProvincesApiService" ref="provincesApiService" timeout="6000" />
......
......@@ -179,6 +179,9 @@
<include refid="Base_Column_List" />
from tab_clerk_log
where status = 1
<if test="clerkId != null ">
and clerk_id = #{clerkId}
</if>
<if test="reason != null ">
and reason = #{reason}
</if>
......
......@@ -502,4 +502,12 @@
and t1.store_info_id = #{storeInfoId}
and t2.enterprise_id = #{enterpriseId}
</select>
<select id="getStoreIdByStoreInfoId" resultType="java.lang.Integer">
select
t2.store_id
from tab_store_info t1,tab_store t2 where t1.store_info_id = t2.store_info_id
and t1.store_info_id = #{storeInfoId}
and t2.enterprise_id = #{enterpriseId}
</select>
</mapper>
\ No newline at end of file
......@@ -174,4 +174,22 @@
operator_name = #{operatorName,jdbcType=VARCHAR}
where store_log_id = #{storeLogId,jdbcType=INTEGER}
</update>
<select id="listStoreLog" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tab_store_log
where status = 1
<if test="storeId != null ">
and store_id = #{storeId}
</if>
<if test="reason != null ">
and reason = #{reason}
</if>
<if test="logType != null ">
and log_type = #{logType}
</if>
<if test="content != null and content != '' ">
and content like concat('%', #{content}, '%')
</if>
</select>
</mapper>
\ No newline at end of file
......@@ -26,12 +26,14 @@
<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" />
<result column="operator_id" jdbcType="INTEGER" property="operatorId" />
<result column="operator_name" jdbcType="VARCHAR" property="operatorName" />
</resultMap>
<sql id="Base_Column_List">
store_tmp_id, enterprise_id, region_id, region_name, store_name, store_code, 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
update_time, operator_id, operator_name
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
......@@ -51,8 +53,8 @@
address, longitude, latitude,
custom_field, state, error_message,
sign_key, store_type, erp_status,
store_group_name, create_time, update_time
)
store_group_name, create_time, update_time,
operator_id, operator_name)
values (#{storeTmpId,jdbcType=INTEGER}, #{enterpriseId,jdbcType=INTEGER}, #{regionId,jdbcType=INTEGER},
#{regionName,jdbcType=VARCHAR}, #{storeName,jdbcType=VARCHAR}, #{storeCode,jdbcType=VARCHAR},
#{conactsPhone,jdbcType=VARCHAR}, #{brands,jdbcType=VARCHAR}, #{province,jdbcType=VARCHAR},
......@@ -60,8 +62,8 @@
#{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}
)
#{storeGroupName,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP},
#{operatorId,jdbcType=INTEGER}, #{operatorName,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.gic.store.entity.TabStoreTmp">
insert into tab_store_tmp
......@@ -138,6 +140,12 @@
<if test="updateTime != null">
update_time,
</if>
<if test="operatorId != null">
operator_id,
</if>
<if test="operatorName != null">
operator_name,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="storeTmpId != null">
......@@ -212,6 +220,12 @@
<if test="updateTime != null">
#{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="operatorId != null">
#{operatorId,jdbcType=INTEGER},
</if>
<if test="operatorName != null">
#{operatorName,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.gic.store.entity.TabStoreTmp">
......@@ -286,6 +300,12 @@
<if test="updateTime != null">
update_time = #{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="operatorId != null">
operator_id = #{operatorId,jdbcType=INTEGER},
</if>
<if test="operatorName != null">
operator_name = #{operatorName,jdbcType=VARCHAR},
</if>
</set>
where store_tmp_id = #{storeTmpId,jdbcType=INTEGER}
</update>
......@@ -313,7 +333,9 @@
erp_status = #{erpStatus,jdbcType=VARCHAR},
store_group_name = #{storeGroupName,jdbcType=VARCHAR},
create_time = #{createTime,jdbcType=TIMESTAMP},
update_time = #{updateTime,jdbcType=TIMESTAMP}
update_time = #{updateTime,jdbcType=TIMESTAMP},
operator_id = #{operatorId,jdbcType=INTEGER},
operator_name = #{operatorName,jdbcType=VARCHAR}
where store_tmp_id = #{storeTmpId,jdbcType=INTEGER}
</update>
<select id="countByStore" resultType="java.lang.Integer">
......
......@@ -51,7 +51,9 @@ public class ClerkController {
ClerkDTO clerkDTO = EntityUtil.changeEntityByOrika(ClerkDTO.class, clerkQO);
clerkDTO.setEnterpriseId(enterpriseId);
clerkDTO.setReason(ClerkLogReasonEnum.WEB.getCode());
clerkDTO.setRemark("手工新增");
if (clerkQO.getClerkId() == null) {
clerkDTO.setRemark("手工新增");
}
clerkDTO.setOperatorId(UserDetailUtils.getUserDetail().getUserId());
clerkDTO.setOperatorName(UserDetailUtils.getUserDetail().getUserInfo().getUserName());
ServiceResponse serviceResponse = clerkApiService.saveOrUpdate(clerkDTO);
......
......@@ -13,6 +13,7 @@ import com.gic.log.api.service.LogApiService;
import com.gic.redis.data.util.RedisUtil;
import com.gic.store.constant.CreateTypeEnum;
import com.gic.store.constant.StoreESFieldsEnum;
import com.gic.store.constant.StoreLogReasonEnum;
import com.gic.store.dto.*;
import com.gic.store.service.StoreApiService;
import com.gic.store.service.StoreAuthorizationApiService;
......@@ -78,6 +79,10 @@ public class StoreController {
Integer isEditGroup = getIsEditGroup(enterpriseId, storeDTO);
logger.info("isEditGroup:{}", isEditGroup);
storeDTO.setIsEditStoreGroup(isEditGroup);
storeDTO.setReason(StoreLogReasonEnum.WEB.getCode());
storeDTO.setRemark(storeQO.getStoreId() == null ? "手工新增" : "单个编辑");
storeDTO.setOperatorId(UserDetailUtils.getUserDetail().getUserId());
storeDTO.setOperatorName(UserDetailUtils.getUserDetail().getUserInfo().getUserName());
ServiceResponse<Integer> serviceResponse = storeApiService.saveOrUpdate(storeDTO);
if (serviceResponse.isSuccess()) {
LogUtils.createLog((storeQO.getStoreId() == null ? "新增" : "修改") + "门店", storeQO.getStoreName());
......
......@@ -144,6 +144,8 @@ public class StoreImportController {
bean.setRegionName(storeRegion.getRegionName());
try {
bean.setSignKey(uuId);
bean.setOperatorId(UserDetailUtils.getUserDetail().getUserId());
bean.setOperatorName(UserDetailUtils.getUserDetail().getUserInfo().getUserName());
// 保存数据到临时表
storeImportApiService.save(bean);
} catch (Exception e) {
......
......@@ -25,6 +25,7 @@
<dubbo:reference interface="com.gic.store.service.StoreFieldSelectApiService" id="storeFieldSelectApiService" timeout="60000" retries="0"/>
<!--门店-->
<dubbo:reference interface="com.gic.store.service.StoreApiService" id="storeApiService" timeout="60000" retries="0"/>
<dubbo:reference interface="com.gic.store.service.StoreLogApiService" id="storeLogApiService" timeout="60000" retries="0"/>
<!--分组策略-->
<dubbo:reference interface="com.gic.store.service.StoreStrategyApiService" id="storeStrategyApiService" timeout="60000" retries="0"/>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment