package com.doumee.service.business.impl; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Utils; import com.doumee.dao.business.WebParamMapper; import com.doumee.dao.business.model.WebParam; import com.doumee.dao.system.dto.UpdateWebParamDTO; import com.doumee.service.business.WebParamService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; import java.util.List; import java.util.Objects; /** * 企业页面配置信息表Service实现 * @author 江蹄蹄 * @since 2023/09/12 11:18 */ @Service public class WebParamServiceImpl implements WebParamService { @Autowired private WebParamMapper webParamMapper; @Autowired private SystemDictDataBiz systemDictDataBiz; @Override public WebParam findOne() { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("COMPANY_ID",user.getCompanyId()); wrapper.last(" limit 1 "); WebParam webParam = webParamMapper.selectOne(wrapper); if(!Objects.isNull(webParam)){ webParam.setResourcePath(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS,Constants.WEB_PARAM).getCode()); webParam.setAnchorPageVersion(normalizeAnchorPageVersion(webParam.getAnchorPageVersion())); }else{ webParam = new WebParam(); webParam.setResourcePath(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS,Constants.WEB_PARAM).getCode()); webParam.setBgImg(systemDictDataBiz.queryByCode(Constants.WEB_PARAM,Constants.BG_IMG).getCode()); webParam.setTopImg(systemDictDataBiz.queryByCode(Constants.WEB_PARAM,Constants.TOP_IMG).getCode()); webParam.setPkImg(systemDictDataBiz.queryByCode(Constants.WEB_PARAM,Constants.PK_IMG).getCode()); webParam.setMainColor(systemDictDataBiz.queryByCode(Constants.WEB_PARAM,Constants.MAIN_COLOR).getCode()); webParam.setRangeSize(systemDictDataBiz.queryByCode(Constants.WEB_PARAM,Constants.RANGE_SIZE).getCode()); webParam.setAnchorPageVersion(ANCHOR_PAGE_V2); } return webParam; } @Override public WebParam findOneNew() { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda().eq(WebParam::getCompanyId,user.getCompanyId()); wrapper.last(" limit 1 "); WebParam webParam = webParamMapper.selectOne(wrapper); if (webParam != null) { webParam.setAnchorPageVersion(normalizeAnchorPageVersion(webParam.getAnchorPageVersion())); } return webParam; } @Override public void renew(UpdateWebParamDTO updateWebParamDTO) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("COMPANY_ID",user.getCompanyId()); wrapper.last(" limit 1 "); WebParam webParam = webParamMapper.selectOne(wrapper); if(Objects.isNull(webParam)){ webParam = new WebParam(); BeanUtils.copyProperties(updateWebParamDTO,webParam); webParam.setCreateTime(new Date()); webParam.setDeleted(Constants.ZERO); webParam.setCompanyId(user.getCompanyId()); webParam.setCreateUser(user.getId()); webParamMapper.insert(webParam); }else{ BeanUtils.copyProperties(updateWebParamDTO,webParam); applyAnchorPageVersion(webParam, updateWebParamDTO.getAnchorPageVersion()); webParam.setUpdateUser(user.getId()); webParam.setUpdateTime(new Date()); webParamMapper.updateById(webParam); } } @Override public void renewUpdate(UpdateWebParamDTO updateWebParamDTO){ if(StringUtils.isBlank(updateWebParamDTO.getNewParam())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda().eq(WebParam::getCompanyId,user.getCompanyId()); wrapper.last(" limit 1 "); WebParam webParam = webParamMapper.selectOne(wrapper); if(Objects.isNull(webParam)){ webParam = new WebParam(); BeanUtils.copyProperties(updateWebParamDTO,webParam); webParam.setCreateTime(new Date()); webParam.setDeleted(Constants.ZERO); webParam.setCompanyId(user.getCompanyId()); webParam.setCreateUser(user.getId()); webParamMapper.insert(webParam); }else{ BeanUtils.copyProperties(updateWebParamDTO,webParam); applyAnchorPageVersion(webParam, updateWebParamDTO.getAnchorPageVersion()); webParam.setUpdateUser(user.getId()); webParam.setUpdateTime(new Date()); webParamMapper.updateById(webParam); } } @Override public WebParam findOneAnchor() { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda().eq(WebParam::getCompanyId, user.getCompanyId()); wrapper.last(" limit 1 "); WebParam webParam = webParamMapper.selectOne(wrapper); String resourcePath = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.WEB_PARAM).getCode(); if (webParam == null) { webParam = new WebParam(); webParam.setAnchorParam(getDefaultAnchorParam()); webParam.setAnchorPageVersion(ANCHOR_PAGE_V2); } else if (StringUtils.isBlank(webParam.getAnchorParam())) { webParam.setAnchorParam(getDefaultAnchorParam()); } webParam.setAnchorPageVersion(normalizeAnchorPageVersion(webParam.getAnchorPageVersion())); webParam.setResourcePath(resourcePath); return webParam; } @Override public void renewAnchorUpdate(UpdateWebParamDTO updateWebParamDTO) { if (StringUtils.isBlank(updateWebParamDTO.getAnchorParam())) { throw new BusinessException(ResponseStatus.BAD_REQUEST); } LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda().eq(WebParam::getCompanyId, user.getCompanyId()); wrapper.last(" limit 1 "); WebParam webParam = webParamMapper.selectOne(wrapper); if (Objects.isNull(webParam)) { webParam = new WebParam(); webParam.setAnchorParam(updateWebParamDTO.getAnchorParam()); applyAnchorPageVersion(webParam, updateWebParamDTO.getAnchorPageVersion()); webParam.setCreateTime(new Date()); webParam.setDeleted(Constants.ZERO); webParam.setCompanyId(user.getCompanyId()); webParam.setCreateUser(user.getId()); webParamMapper.insert(webParam); } else { webParam.setAnchorParam(updateWebParamDTO.getAnchorParam()); applyAnchorPageVersion(webParam, updateWebParamDTO.getAnchorPageVersion()); webParam.setUpdateUser(user.getId()); webParam.setUpdateTime(new Date()); webParamMapper.updateById(webParam); } } @Override public void updateAnchorPageVersion(String anchorPageVersion) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); String version = normalizeAnchorPageVersion(anchorPageVersion); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda().eq(WebParam::getCompanyId, user.getCompanyId()); wrapper.last(" limit 1 "); WebParam webParam = webParamMapper.selectOne(wrapper); if (Objects.isNull(webParam)) { webParam = new WebParam(); webParam.setAnchorPageVersion(version); webParam.setCreateTime(new Date()); webParam.setDeleted(Constants.ZERO); webParam.setCompanyId(user.getCompanyId()); webParam.setCreateUser(user.getId()); webParamMapper.insert(webParam); } else { webParam.setAnchorPageVersion(version); webParam.setUpdateUser(user.getId()); webParam.setUpdateTime(new Date()); webParamMapper.updateById(webParam); } } private static final String ANCHOR_PAGE_V2 = "v2"; private static final String ANCHOR_PAGE_V3 = "v3"; private String normalizeAnchorPageVersion(String version) { return ANCHOR_PAGE_V3.equalsIgnoreCase(StringUtils.trimToEmpty(version)) ? ANCHOR_PAGE_V3 : ANCHOR_PAGE_V2; } private void applyAnchorPageVersion(WebParam webParam, String anchorPageVersion) { if (StringUtils.isNotBlank(anchorPageVersion)) { webParam.setAnchorPageVersion(normalizeAnchorPageVersion(anchorPageVersion)); } } private String getDefaultAnchorParam() { return "{\"rangeSize\":\"750\",\"main\":{\"bgType\":1,\"bgColor\":\"#E8DCC8\",\"alpha\":\"100\",\"bgImg\":{\"isShow\":1,\"type\":0}}," + "\"topImg\":{\"type\":0,\"img\":\"\",\"imgurl\":\"\"}," + "\"adImg\":{\"type\":0,\"img\":\"\",\"imgurl\":\"\"}," + "\"pkImg\":{\"type\":0,\"img\":\"\",\"imgurl\":\"\"}," + "\"header\":{\"backgroundType\":1,\"bgColor\":\"#4A3728\",\"bgAlpha\":\"100\",\"type\":1,\"color\":\"#FFFFFF\",\"alpha\":\"100\"}," + "\"table\":{\"headerBg\":\"#4A3728\",\"headerColor\":\"#FFFFFF\",\"rowBg\":\"#F5EFE6\",\"hoverScale\":1.05}," + "\"featured\":[{\"goodsId\":\"\",\"prefixUrl\":\"\",\"imgurl\":\"\",\"title\":\"\",\"tags\":[\"\",\"\"]},{\"goodsId\":\"\",\"prefixUrl\":\"\",\"imgurl\":\"\",\"title\":\"\",\"tags\":[\"\",\"\"]}]," + "\"search\":{\"bgType\":1,\"bgColor\":\"#FFFFFF\",\"bgAlpha\":\"100\"}," + "\"productList\":{\"bgType\":1,\"bgColor\":\"#F5EFE6\",\"bgAlpha\":\"100\"}," + "\"pk\":{\"vsColor\":\"#FF8C42\"}}"; } }