fix XSS and BAC, improve code style

This commit is contained in:
paulGao 2021-09-09 16:47:14 +08:00
parent d470192ac6
commit d3e1de5620
175 changed files with 858 additions and 678 deletions

View File

@ -21,7 +21,7 @@ import java.util.List;
* 买家端,商品分类接口
*
* @author Chopper
* @since: 2020/11/16 10:05 下午
* @since 2020/11/16 10:05 下午
*/
@RestController
@Api(tags = "买家端,商品分类接口")

View File

@ -19,7 +19,7 @@ import java.util.List;
* 买家端,浏览历史接口
*
* @author Chopper
* @since: 2020/11/16 10:06 下午
* @since 2020/11/16 10:06 下午
*/
@RestController
@Api(tags = "买家端,浏览历史接口")

View File

@ -20,7 +20,7 @@ import javax.validation.Valid;
* 买家端,会员地址接口
*
* @author Bulbasaur
* @since: 2020/11/16 10:07 下午
* @since 2020/11/16 10:07 下午
*/
@RestController
@Api(tags = "买家端,会员地址接口")

View File

@ -18,7 +18,7 @@ import javax.validation.constraints.NotNull;
* 买家端,会员收藏接口
*
* @author Chopper
* @since: 2020/11/17 2:32 下午
* @since 2020/11/17 2:32 下午
*/
@RestController
@Api(tags = "买家端,会员收藏接口")

View File

@ -1,8 +1,8 @@
package cn.lili.controller.member;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.enums.SwitchEnum;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.member.entity.dos.MemberEvaluation;
import cn.lili.modules.member.entity.dto.EvaluationQueryParams;
@ -24,7 +24,7 @@ import javax.validation.constraints.NotNull;
* 买家端,会员商品评价接口
*
* @author Bulbasaur
* @since: 2020/11/16 10:08 下午
* @since 2020/11/16 10:08 下午
*/
@RestController
@Api(tags = "买家端,会员商品评价接口")

View File

@ -4,8 +4,8 @@ import cn.lili.common.enums.ResultUtil;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.message.entity.enums.MessageStatusEnum;
import cn.lili.modules.message.entity.dos.MemberMessage;
import cn.lili.modules.message.entity.enums.MessageStatusEnum;
import cn.lili.modules.message.entity.vos.MemberMessageQueryVO;
import cn.lili.modules.message.service.MemberMessageService;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.*;
* 买家端,会员站内消息接口
*
* @author Bulbasaur
* @since: 2020/11/16 10:07 下午
* @since 2020/11/16 10:07 下午
*/
@RestController
@Api(tags = "买家端,会员站内消息接口")

View File

@ -1,8 +1,8 @@
package cn.lili.controller.member;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.member.entity.vo.MemberReceiptAddVO;
@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.*;
* 买家端,会员发票接口
*
* @author paulG
* @since: 2021-03-29 14:10:16
* @since 2021-03-29 14:10:16
*/
@RestController
@Api(tags = "买家端,会员发票接口")

View File

@ -18,7 +18,7 @@ import java.util.List;
* 会员签到控制器
*
* @author pikachu
* @since: 2020/11/16 10:07 下午
* @since 2020/11/16 10:07 下午
*/
@RestController
@Api(tags = "买家端会员签到API")

View File

@ -1,18 +1,18 @@
package cn.lili.controller.member;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.security.AuthUser;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.enums.ResultUtil;
import cn.lili.modules.verification.enums.VerificationEnums;
import cn.lili.modules.verification.service.VerificationService;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.member.entity.dos.Member;
import cn.lili.modules.member.entity.dos.MemberWallet;
import cn.lili.modules.member.entity.vo.MemberWalletVO;
import cn.lili.modules.member.service.MemberService;
import cn.lili.modules.member.service.MemberWalletService;
import cn.lili.modules.verification.enums.VerificationEnums;
import cn.lili.modules.verification.service.VerificationService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@ -30,7 +30,7 @@ import javax.validation.constraints.Pattern;
* 买家端,会员余额接口
*
* @author pikachu
* @since: 2020/11/16 10:07 下午
* @since 2020/11/16 10:07 下午
*/
@RestController
@Api(tags = "买家端,会员余额接口")

View File

@ -1,8 +1,8 @@
package cn.lili.controller.member;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.member.entity.dos.MemberWithdrawApply;
@ -22,7 +22,7 @@ import org.springframework.web.bind.annotation.RestController;
* 买家端,余额提现记录接口
*
* @author pikachu
* @since: 2020/11/16 10:07 下午
* @since 2020/11/16 10:07 下午
*/
@RestController
@Api(tags = "买家端,余额提现记录接口")

View File

@ -1,7 +1,7 @@
package cn.lili.controller.member;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.order.trade.entity.dos.Recharge;
@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
* 买家端,预存款充值记录接口
*
* @author pikachu
* @since: 2020/11/16 10:07 下午
* @since 2020/11/16 10:07 下午
*/
@RestController
@Api(tags = "买家端,预存款充值记录接口")

View File

@ -1,11 +1,11 @@
package cn.lili.controller.member;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.system.entity.dos.ServiceNotice;
import cn.lili.modules.system.service.ServiceNoticeService;
import cn.lili.mybatis.util.PageUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
* 买家端,会员站服务消息接口
*
* @author Chopper
* @since: 2020/11/17 2:31 下午
* @since 2020/11/17 2:31 下午
*/
@RestController
@RequestMapping("/service/notice")

View File

@ -1,11 +1,11 @@
package cn.lili.controller.other;
import cn.lili.common.enums.ResultUtil;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.system.entity.dos.AppVersion;
import cn.lili.modules.system.service.AppVersionService;
import cn.lili.mybatis.util.PageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
* 买家端,APP版本
*
* @author Bulbasaur
* @since: 2021/5/21 11:15 上午
* @since 2021/5/21 11:15 上午
*/
@RestController
@Api(tags = "买家端,APP版本")

View File

@ -25,7 +25,7 @@ import java.util.List;
* 买家端,文章接口
*
* @author Chopper
* @since: 2020/11/16 10:02 下午
* @since 2020/11/16 10:02 下午
*/
@RestController
@Api(tags = "买家端,文章接口")

View File

@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.RestController;
* 买家端,直播间接口
*
* @author Bulbasaur
* @since: 2021/5/20 12:03 下午
* @since 2021/5/20 12:03 下午
*/
@RestController
@Api(tags = "买家端,直播间接口")

View File

@ -1,7 +1,6 @@
package cn.lili.controller.other.distribution;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.distribution.entity.dos.Distribution;
import cn.lili.modules.distribution.entity.dos.DistributionOrder;
@ -12,7 +11,6 @@ import cn.lili.modules.distribution.service.DistributionService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -22,7 +20,7 @@ import org.springframework.web.bind.annotation.*;
* 买家端,分销员接口
*
* @author pikachu
* @since: 2020/11/16 10:03 下午
* @since 2020/11/16 10:03 下午
*/
@RestController
@Api(tags = "买家端,分销员接口")

View File

@ -28,7 +28,7 @@ import javax.validation.constraints.NotNull;
* 买家端,分销商品佣金提现接口
*
* @author pikachu
* @since: 2020/11/16 10:03 下午
* @since 2020/11/16 10:03 下午
*/
@RestController
@Api(tags = "买家端,分销商品佣金提现接口")

View File

@ -25,7 +25,7 @@ import javax.validation.constraints.NotNull;
* 买家端,分销商品接口
*
* @author Bulbasaur
* @since: 2020/11/16 10:06 下午
* @since 2020/11/16 10:06 下午
*/
@RestController
@Api(tags = "买家端,分销商品接口")

View File

@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.RestController;
* 买家端,分销商品佣金提现接口
*
* @author pikachu
* @since: 2020/11/16 10:03 下午
* @since 2020/11/16 10:03 下午
*/
@RestController
@Api(tags = "买家端,分销订单接口")

View File

@ -1,15 +1,15 @@
package cn.lili.controller.passport;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
import cn.lili.modules.system.sms.SmsUtil;
import cn.lili.common.enums.ResultUtil;
import cn.lili.modules.verification.enums.VerificationEnums;
import cn.lili.modules.verification.service.VerificationService;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.member.entity.dos.Member;
import cn.lili.modules.member.entity.dto.MemberEditDTO;
import cn.lili.modules.member.service.MemberService;
import cn.lili.modules.system.sms.SmsUtil;
import cn.lili.modules.verification.enums.VerificationEnums;
import cn.lili.modules.verification.service.VerificationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@ -23,7 +23,7 @@ import javax.validation.constraints.NotNull;
* 买家端,会员接口
*
* @author Chopper
* @since: 2020/11/16 10:07 下午
* @since 2020/11/16 10:07 下午
*/
@RestController
@Api(tags = "买家端,会员接口")

View File

@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull;
* 买家端,采购接口
*
* @author Chopper
* @since: 2020/11/16 10:06 下午
* @since 2020/11/16 10:06 下午
*/
@Api(tags = "买家端,采购接口")
@RestController

View File

@ -18,7 +18,7 @@ import java.util.List;
* 买家端,采购报价接口
*
* @author Bulbasaur
* @since: 2020/11/16 10:06 下午
* @since 2020/11/16 10:06 下午
*/
@Api(tags = "买家端,采购报价接口")
@RestController

View File

@ -27,7 +27,7 @@ import java.util.List;
* 买家端,店铺接口
*
* @author Bulbasaur
* @since: 2020/11/17 2:32 下午
* @since 2020/11/17 2:32 下午
*/
@RestController
@RequestMapping("/buyer/store")

View File

@ -21,7 +21,7 @@ import javax.validation.constraints.Min;
* 买家端,预存款充值记录接口
*
* @author paulG
* @since: 2020/11/16 10:07 下午
* @since 2020/11/16 10:07 下午
*/
@RestController
@Api(tags = "买家端,预存款充值记录接口")

View File

@ -1,13 +1,13 @@
package cn.lili.controller.trade;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.security.AuthUser;
import cn.lili.common.security.context.UserContext;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.order.trade.entity.dos.WalletLog;
import cn.lili.modules.order.trade.service.WalletLogService;
import cn.lili.mybatis.util.PageUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
* 买家端,预存款变动日志记录接口
*
* @author pikachu
* @since: 2020/11/16 10:07 下午
* @since 2020/11/16 10:07 下午
*/
@RestController
@Api(tags = "买家端,预存款变动日志记录接口")

View File

@ -24,7 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
* 会员经验值
*
* @author Bulbasaur
* @since: 2021/5/16 11:16 下午
* @since 2021/5/16 11:16 下午
*/
//@Service
public class MemberExperienceExecute implements MemberRegisterEvent, GoodsCommentCompleteEvent, OrderStatusChangeEvent {

View File

@ -16,7 +16,7 @@ import java.util.List;
* 注册赠券活动
*
* @author Bulbasaur
* @since: 2021/5/24 10:48 上午
* @since 2021/5/24 10:48 上午
*/
@Component
public class RegisteredCouponActivityExecute implements MemberRegisterEvent {

View File

@ -1,7 +1,6 @@
package cn.lili.event.impl;
import cn.hutool.core.util.RandomUtil;
import cn.lili.common.utils.CommonUtil;
import cn.lili.event.OrderStatusChangeEvent;
import cn.lili.modules.order.order.entity.dos.Order;
import cn.lili.modules.order.order.entity.dos.OrderItem;
@ -13,7 +12,6 @@ import cn.lili.modules.order.order.service.OrderItemService;
import cn.lili.modules.order.order.service.OrderService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@ -21,7 +19,7 @@ import org.springframework.stereotype.Component;
* 虚拟商品
*
* @author Bulbasaur
* @since: 2021/5/29 9:17 上午
* @since 2021/5/29 9:17 上午
*/
@Component
public class VerificationOrderExecute implements OrderStatusChangeEvent {

View File

@ -9,7 +9,7 @@ import org.springframework.stereotype.Component;
* 小程序直播状态获取
*
* @author Bulbasaur
* @since: 2021/5/20 2:52 下午
* @since 2021/5/20 2:52 下午
*/
@Component
public class BroadcastExecute implements EveryHourExecute {

View File

@ -12,7 +12,7 @@ import org.springframework.stereotype.Component;
* 优惠券状态监测
*
* @author Bulbasaur
* @since: 2021/5/24 10:08 上午
* @since 2021/5/24 10:08 上午
*/
@Component
public class CouponExecute implements EveryDayExecute {

View File

@ -1,10 +1,10 @@
package cn.lili.trigger.executor;
import cn.hutool.json.JSONUtil;
import cn.lili.trigger.message.BroadcastMessage;
import cn.lili.trigger.model.TimeExecuteConstant;
import cn.lili.modules.goods.service.StudioService;
import cn.lili.trigger.TimeTriggerExecutor;
import cn.lili.trigger.message.BroadcastMessage;
import cn.lili.trigger.model.TimeExecuteConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@ -13,7 +13,7 @@ import org.springframework.stereotype.Component;
* 直播间事件触发
*
* @author Bulbasaur
* @since: 2021/6/1 5:02 下午
* @since 2021/6/1 5:02 下午
*/
@Slf4j
@Component(TimeExecuteConstant.BROADCAST_EXECUTOR)

View File

@ -360,6 +360,7 @@ public enum ResultCode {
STORE_NOT_OPEN(50004, "该会员未开通店铺"),
STORE_NOT_LOGIN_ERROR(50005, "未登录店铺"),
STORE_CLOSE_ERROR(50006, "店铺关闭,请联系管理员"),
FREIGHT_TEMPLATE_NOT_EXIST(50010, "当前模版不存在"),
/**
* 结算单

View File

@ -2,10 +2,20 @@ package cn.lili.common.security.filter;
import cn.hutool.http.HtmlUtil;
import cn.hutool.json.JSONUtil;
import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.util.regex.Pattern;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 防止Xss
@ -15,15 +25,10 @@ import java.util.regex.Pattern;
* 2021-06-04 10:39
*/
public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
private HttpServletRequest request;
public XssHttpServletRequestWrapper(HttpServletRequest request) {
super(request);
this.request = request;
}
/**
@ -61,8 +66,8 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
@Override
public Object getAttribute(String name) {
Object value = super.getAttribute(name);
if (value != null && value instanceof String) {
cleanXSS((String) value);
if (value instanceof String) {
value = cleanXSS((String) value);
}
return value;
}
@ -79,56 +84,104 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
return cleanXSS(value);
}
/**
* 转义字符,使用该方法存在一定的弊端
*
* @param value
* @return
*/
private String cleanXSS2(String value) {
//移除特殊标签
value = value.replaceAll("<", "&lt;").replaceAll(">", "&gt;");
value = value.replaceAll("\\(", "&#40;").replaceAll("\\)", "&#41;");
value = value.replaceAll("'", "&#39;");
value = value.replaceAll("eval\\((.*)\\)", "");
value = value.replaceAll("[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']", "\"\"");
value = value.replaceAll("script", "");
return value;
@Override
public Map<String, String[]> getParameterMap() {
Map<String, String[]> parameterMap = super.getParameterMap();
//因为super.getParameterMap()返回的是Map,所以我们需要定义Map的实现类对数据进行封装
Map<String, String[]> params = new LinkedHashMap<>();
//如果参数不为空
if (parameterMap != null) {
//对map进行遍历
for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
//根据key获取value
String[] values = entry.getValue();
//遍历数组
for (int i = 0; i < values.length; i++) {
String value = values[i];
value = cleanXSS(value);
//将转义后的数据放回数组中
values[i] = value;
}
//将转义后的数组put到linkMap当中
params.put(entry.getKey(), values);
}
}
return params;
}
/**
* 获取输入流
*
* @return
* @throws IOException
*/
@Override
public ServletInputStream getInputStream() throws IOException {
//获取输入流
ServletInputStream in = super.getInputStream();
//用于存储输入流
StringBuffer body = new StringBuffer();
InputStreamReader reader = new InputStreamReader(in, StandardCharsets.UTF_8);
BufferedReader bufferedReader = new BufferedReader(reader);
//按行读取输入流
String line = bufferedReader.readLine();
while (line != null) {
//将获取到的第一行数据append到StringBuffer中
body.append(line);
//继续读取下一行流直到line为空
line = bufferedReader.readLine();
}
//关闭流
bufferedReader.close();
reader.close();
in.close();
private static final Pattern SCRIPT_PATTERN1 = Pattern.compile("<script>(.*?)</script>", Pattern.CASE_INSENSITIVE);
private static final Pattern SCRIPT_PATTERN2 = Pattern.compile("</script>", Pattern.CASE_INSENSITIVE);
private static final Pattern SCRIPT_PATTERN3 = Pattern.compile("<script(.*?)>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
private static final Pattern SCRIPT_PATTERN4 = Pattern.compile("javascript:", Pattern.CASE_INSENSITIVE);
private static final Pattern SRC_PATTERN = Pattern.compile("src[\r\n]*=[\r\n]*\\\'(.*?)\\\'", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
private static final Pattern EVAL_PATTERN = Pattern.compile("eval\\((.*?)\\)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
private static final Pattern E_­_XPRESSION_PATTERN = Pattern.compile("e­xpression\\((.*?)\\)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
private static final Pattern VB_SCRIPT_PATTERN = Pattern.compile("vbscript:", Pattern.CASE_INSENSITIVE);
private static final Pattern ONLOAD_PATTERN = Pattern.compile("onload(.*?)=", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
//将body转换为map
Map<String, Object> map = JSONUtil.parseObj(body.toString());
//创建空的map用于存储结果
Map<String, Object> resultMap = new HashMap<>(map.size());
//遍历数组
for (Map.Entry<String, Object> entry : map.entrySet()) {
//如果map.get(key)获取到的是字符串就需要进行转义如果不是直接存储resultMap
if (map.get(entry.getKey()) instanceof String) {
resultMap.put(entry.getKey(), cleanXSS(entry.getValue().toString()));
} else {
resultMap.put(entry.getKey(), entry.getValue());
}
}
//将resultMap转换为json字符串
String resultStr = JSONUtil.toJsonStr(resultMap);
//将json字符串转换为字节
final ByteArrayInputStream bis = new ByteArrayInputStream(resultStr.getBytes());
//实现接口
return new ServletInputStream() {
@Override
public boolean isFinished() {
return false;
}
@Override
public boolean isReady() {
return false;
}
@Override
public void setReadListener(ReadListener readListener) {
}
@Override
public int read() {
return bis.read();
}
};
}
private String cleanXSS(String value) {
if (value != null) {
// //推荐使用ESAPI库来避免脚本攻击,value = ESAPI.encoder().canonicalize(value);
// //避免script 标签
// value = SCRIPT_PATTERN1.matcher(value).replaceAll("");
// //删除单个的 </script> 标签
// value = SCRIPT_PATTERN2.matcher(value).replaceAll("");
// //删除单个的<script ...> 标签
// value = SCRIPT_PATTERN3.matcher(value).replaceAll("");
// //避免 javascript: 表达式
// value = SCRIPT_PATTERN4.matcher(value).replaceAll("");
// //避免src形式的表达式
// value = SRC_PATTERN.matcher(value).replaceAll("");
// //避免 eval(...) 形式表达式
// value = EVAL_PATTERN.matcher(value).replaceAll("");
// //避免 e­xpression(...) 表达式
// value = E_­_XPRESSION_PATTERN.matcher(value).replaceAll("");
// //避免 vbscript:表达式
// value = VB_SCRIPT_PATTERN.matcher(value).replaceAll("");
// //避免 onload= 表达式
// value = ONLOAD_PATTERN.matcher(value).replaceAll("");
value = HtmlUtil.filter(value);
value = HtmlUtil.escape(value);
}
return value;
}

View File

@ -6,7 +6,7 @@ import java.math.BigDecimal;
* 金额计算工具
*
* @author Bulbasaur
* @since: 2021/7/9 1:40 上午
* @since 2021/7/9 1:40 上午
*/
public final class CurrencyUtil {
/**

View File

@ -35,7 +35,7 @@ import java.util.Map;
* HttpClientUtils
*
* @author Bulbasaur
* @since: 2021/7/9 1:40 上午
* @since 2021/7/9 1:40 上午
*/
@Slf4j
public class HttpClientUtils {

View File

@ -12,7 +12,7 @@ import java.util.regex.Pattern;
* 支持手机号+电话同时校验
*
* @author Bulbasaur
* @since: 2021/7/9 1:41 上午
* @since 2021/7/9 1:41 上午
*/
public class MobileValidator implements ConstraintValidator<Mobile, String> {
@ -23,7 +23,6 @@ public class MobileValidator implements ConstraintValidator<Mobile, String> {
@Override
public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
Matcher m = null;
Pattern pattern = null;
// 验证手机号
if (value.length() == 11) {
m = PHONE.matcher(value);

View File

@ -11,11 +11,11 @@ import java.util.regex.Pattern;
* 手机号校验
*
* @author Bulbasaur
* @since: 2021/7/9 1:42 上午
* @since 2021/7/9 1:42 上午
*/
public class PhoneValidator implements ConstraintValidator<Phone, String> {
private static Pattern pattern = Pattern.compile("^0?(13[0-9]|14[0-9]|15[0-9]|16[0-9]|17[0-9]|18[0-9]|19[0-9])[0-9]{8}$");
private static final Pattern pattern = Pattern.compile("^0?(13[0-9]|14[0-9]|15[0-9]|16[0-9]|17[0-9]|18[0-9]|19[0-9])[0-9]{8}$");
@Override
public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {

View File

@ -9,7 +9,7 @@ import javax.validation.constraints.Size;
/**
* 分销员申请DTO
* @author Bulbasaur
* @since: 2021/6/30 11:07 上午
* @since 2021/6/30 11:07 上午
*
*/
@Data

View File

@ -54,8 +54,9 @@ public interface DistributionGoodsService extends IService<DistributionGoods> {
*
* @param skuId SKU ID
* @param commission 佣金
* @param storeId 店铺id
* @return
*/
DistributionGoods checked(String skuId, Double commission);
DistributionGoods checked(String skuId, Double commission, String storeId);
}

View File

@ -4,7 +4,6 @@ import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.security.enums.UserEnums;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.modules.distribution.entity.dos.Distribution;
import cn.lili.modules.distribution.entity.dos.DistributionGoods;
import cn.lili.modules.distribution.entity.dto.DistributionGoodsSearchParams;
@ -14,6 +13,7 @@ import cn.lili.modules.distribution.service.DistributionGoodsService;
import cn.lili.modules.distribution.service.DistributionService;
import cn.lili.modules.goods.entity.dos.GoodsSku;
import cn.lili.modules.goods.service.GoodsSkuService;
import cn.lili.mybatis.util.PageUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -24,6 +24,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
/**
@ -50,7 +51,7 @@ public class DistributionGoodsServiceImpl extends ServiceImpl<DistributionGoodsM
@Override
public IPage<DistributionGoodsVO> goodsPage(DistributionGoodsSearchParams searchParams) {
//获取商家的分销商品列表
if (UserContext.getCurrentUser().getRole().equals(UserEnums.STORE)) {
if (Objects.requireNonNull(UserContext.getCurrentUser()).getRole().equals(UserEnums.STORE)) {
return this.baseMapper.getDistributionGoodsVO(PageUtil.initPage(searchParams), searchParams.storeQueryWrapper());
} else if (UserContext.getCurrentUser().getRole().equals(UserEnums.MEMBER)) {
//判断当前登录用户是否为分销员
@ -86,7 +87,7 @@ public class DistributionGoodsServiceImpl extends ServiceImpl<DistributionGoodsM
}
@Override
public DistributionGoods checked(String skuId, Double commission) {
public DistributionGoods checked(String skuId, Double commission, String storeId) {
//检查分销功能开关
distributionService.checkDistributionSetting();
@ -98,6 +99,9 @@ public class DistributionGoodsServiceImpl extends ServiceImpl<DistributionGoodsM
throw new ServiceException(ResultCode.DISTRIBUTION_GOODS_DOUBLE);
}
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(skuId);
if (!goodsSku.getStoreId().equals(storeId)) {
throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR);
}
DistributionGoods distributionGoods = new DistributionGoods(goodsSku, commission);
this.save(distributionGoods);
return distributionGoods;

View File

@ -10,7 +10,7 @@ import lombok.Data;
/**
* 小程序直播商品
* @author Bulbasaur
* @since: 2021/5/17 9:34 上午
* @since 2021/5/17 9:34 上午
*
*/
@Data

View File

@ -2,12 +2,12 @@ package cn.lili.modules.goods.entity.dos;
import cn.hutool.core.convert.Convert;
import cn.hutool.json.JSONUtil;
import cn.lili.mybatis.BaseEntity;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
import cn.lili.modules.goods.entity.dto.GoodsOperationDTO;
import cn.lili.modules.goods.entity.enums.GoodsAuthEnum;
import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
import cn.lili.mybatis.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.xkcoding.http.util.StringUtil;
@ -221,7 +221,7 @@ public class Goods extends BaseEntity {
this.params = JSONUtil.toJsonStr(goodsOperationDTO.getGoodsParamsDTOList());
}
//如果立即上架则
this.marketEnable = goodsOperationDTO.getRelease() ? GoodsStatusEnum.UPPER.name() : GoodsStatusEnum.DOWN.name();
this.marketEnable = Boolean.TRUE.equals(goodsOperationDTO.getRelease()) ? GoodsStatusEnum.UPPER.name() : GoodsStatusEnum.DOWN.name();
this.goodsType = goodsOperationDTO.getGoodsType();
this.grade = 100D;
@ -238,10 +238,8 @@ public class Goods extends BaseEntity {
throw new ServiceException(ResultCode.GOODS_SKU_COST_ERROR);
}
//虚拟商品没有重量字段
if (sku.containsKey("weight")) {
if (StringUtil.isEmpty(sku.get("weight").toString()) || Convert.toDouble(sku.get("weight").toString()) < 0) {
throw new ServiceException(ResultCode.GOODS_SKU_WEIGHT_ERROR);
}
if (sku.containsKey("weight") && (StringUtil.isEmpty(sku.get("weight").toString()) || Convert.toDouble(sku.get("weight").toString()) < 0)) {
throw new ServiceException(ResultCode.GOODS_SKU_WEIGHT_ERROR);
}
if (StringUtil.isEmpty(sku.get("quantity").toString()) || Convert.toInt(sku.get("quantity").toString()) < 0) {
throw new ServiceException(ResultCode.GOODS_SKU_QUANTITY_ERROR);

View File

@ -12,7 +12,7 @@ import javax.validation.constraints.NotEmpty;
* 商品计量单位
*
* @author Bulbasaur
* @since: 2020/11/26 16:08
* @since 2020/11/26 16:08
*/
@Data
@TableName("li_goods_unit")

View File

@ -11,7 +11,7 @@ import lombok.Data;
* 小程序直播间
*
* @author Bulbasaur
* @since: 2021/5/17 9:47 上午
* @since 2021/5/17 9:47 上午
*/
@Data
@ApiModel(value = "直播间")

View File

@ -12,7 +12,7 @@ import lombok.NoArgsConstructor;
* 直播商品
*
* @author Bulbasaur
* @since: 2021/5/18 5:42 下午
* @since 2021/5/18 5:42 下午
*/
@Data
@ApiModel(value = "直播商品")

View File

@ -7,7 +7,7 @@ import lombok.Data;
* 用于获取直播商品状态时使用
*
* @author Bulbasaur
* @since: 2021/5/25 12:12 下午
* @since 2021/5/25 12:12 下午
*/
@Data
public class CommodityDTO {

View File

@ -10,7 +10,7 @@ import lombok.NoArgsConstructor;
* 微信小程序直播商品DTO
*
* @author Bulbasaur
* @since: 2021/5/17 11:03 上午
* @since 2021/5/17 11:03 上午
*/
@Data
@NoArgsConstructor

View File

@ -6,7 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
* 用于直播间前台使用的直播间商品DTO
*
* @author Bulbasaur
* @since: 2021/5/20 2:34 下午
* @since 2021/5/20 2:34 下午
*/
public class SimpleCommodity {

View File

@ -4,7 +4,7 @@ package cn.lili.modules.goods.entity.enums;
* 商品类型
*
* @author Bulbasaur
* @since: 2021/5/28 4:23 下午
* @since 2021/5/28 4:23 下午
*/
public enum GoodsTypeEnum {

View File

@ -5,7 +5,7 @@ package cn.lili.modules.goods.entity.enums;
* 直播间状态
*
* @author Bulbasaur
* @since: 2021/5/31 10:32 上午
* @since 2021/5/31 10:32 上午
*/
public enum StudioStatusEnum {

View File

@ -8,7 +8,7 @@ import lombok.Data;
* 直播商品VO
*
* @author Bulbasaur
* @since: 2021/5/26 6:09 下午
* @since 2021/5/26 6:09 下午
*/
@Data
public class CommodityVO extends Commodity {

View File

@ -11,7 +11,7 @@ import java.util.List;
* 直播间VO
*
* @author Bulbasaur
* @since: 2021/5/31 11:58 上午
* @since 2021/5/31 11:58 上午
*/
@Data
public class StudioVO extends Studio {

View File

@ -15,7 +15,7 @@ import java.util.List;
* 直播商品数据层
*
* @author Bulbasaur
* @since: 2021/5/17 9:56 上午
* @since 2021/5/17 9:56 上午
*/
public interface CommodityMapper extends BaseMapper<Commodity> {

View File

@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* 直播间-商品关联持久层
* @author Bulbasaur
* @since: 2021/5/17 3:14 下午
* @since 2021/5/17 3:14 下午
*
*/
public interface StudioCommodityMapper extends BaseMapper<StudioCommodity> {

View File

@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* 直播间数据层
*
* @author Bulbasaur
* @since: 2021/5/17 9:56 上午
* @since 2021/5/17 9:56 上午
*/
public interface StudioMapper extends BaseMapper<Studio> {

View File

@ -12,7 +12,7 @@ import java.util.List;
* 直播商品业务层
*
* @author Bulbasaur
* @since: 2021/5/17 10:39 上午
* @since 2021/5/17 10:39 上午
*/
public interface CommodityService extends IService<Commodity> {

View File

@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
* 商品计量单位业务层
*
* @author Bulbasaur
* @since: 2020/11/26 16:12
* @since 2020/11/26 16:12
*/
public interface GoodsUnitService extends IService<GoodsUnit> {

View File

@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
* 直播间-商品关联业务层
*
* @author Bulbasaur
* @since: 2021/5/17 3:19 下午
* @since 2021/5/17 3:19 下午
*/
public interface StudioCommodityService extends IService<StudioCommodity> {
}

View File

@ -1,9 +1,9 @@
package cn.lili.modules.goods.service;
import cn.lili.trigger.message.BroadcastMessage;
import cn.lili.common.vo.PageVO;
import cn.lili.modules.goods.entity.dos.Studio;
import cn.lili.modules.goods.entity.vos.StudioVO;
import cn.lili.trigger.message.BroadcastMessage;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
@ -11,7 +11,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
* 直播间业务层
*
* @author Bulbasaur
* @since: 2021/5/17 10:02 上午
* @since 2021/5/17 10:02 上午
*/
public interface StudioService extends IService<Studio> {
@ -48,11 +48,12 @@ public interface StudioService extends IService<Studio> {
/**
* 推送商品
* @param roomId 店铺ID
* @param roomId 房间ID
* @param goodsId 商品ID
* @param storeId 店铺ID
* @return 操作结果
*/
Boolean push(Integer roomId,Integer goodsId);
Boolean push(Integer roomId,Integer goodsId, String storeId);
/**
* 删除商品
@ -60,7 +61,7 @@ public interface StudioService extends IService<Studio> {
* @param goodsId 商品ID
* @return 操作结果
*/
Boolean goodsDeleteInRoom(Integer roomId,Integer goodsId);
Boolean goodsDeleteInRoom(Integer roomId,Integer goodsId, String storeId);
/**
* 获取直播间列表

View File

@ -6,19 +6,20 @@ import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.security.AuthUser;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.security.enums.UserEnums;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.common.vo.PageVO;
import cn.lili.modules.goods.entity.dos.Commodity;
import cn.lili.modules.goods.entity.dos.GoodsSku;
import cn.lili.modules.goods.entity.dto.CommodityDTO;
import cn.lili.modules.goods.entity.enums.GoodsAuthEnum;
import cn.lili.modules.goods.entity.vos.CommodityVO;
import cn.lili.modules.goods.mapper.CommodityMapper;
import cn.lili.modules.goods.service.CommodityService;
import cn.lili.modules.goods.util.WechatLivePlayerUtil;
import cn.lili.modules.goods.entity.dos.GoodsSku;
import cn.lili.modules.goods.entity.enums.GoodsAuthEnum;
import cn.lili.modules.goods.service.GoodsSkuService;
import cn.lili.modules.goods.util.WechatLivePlayerUtil;
import cn.lili.mybatis.util.PageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@ -28,12 +29,13 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
* 直播商品业务层实现
*
* @author Bulbasaur
* @since: 2021/5/17 11:16 上午
* @since 2021/5/17 11:16 上午
*/
@Service
public class CommodityServiceImpl extends ServiceImpl<CommodityMapper, Commodity> implements CommodityService {
@ -45,9 +47,11 @@ public class CommodityServiceImpl extends ServiceImpl<CommodityMapper, Commodity
@Override
public boolean addCommodity(List<Commodity> commodityList) {
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
for (Commodity commodity : commodityList) {
//检测直播商品
checkCommodity(commodity);
commodity.setStoreId(storeId);
//添加直播商品
JSONObject json = wechatLivePlayerUtil.addGoods(commodity);
if(!"0".equals(json.getStr("errcode"))){
@ -56,7 +60,6 @@ public class CommodityServiceImpl extends ServiceImpl<CommodityMapper, Commodity
}
commodity.setLiveGoodsId(Convert.toInt(json.getStr("goodsId")));
commodity.setAuditId(json.getStr("auditId"));
commodity.setStoreId(UserContext.getCurrentUser().getStoreId());
//默认为待审核状态
commodity.setAuditStatus("0");
this.save(commodity);
@ -78,9 +81,13 @@ public class CommodityServiceImpl extends ServiceImpl<CommodityMapper, Commodity
@Override
public boolean deleteCommodity(String goodsId) {
AuthUser currentUser = UserContext.getCurrentUser();
if (currentUser == null || (currentUser.getRole().equals(UserEnums.STORE) && currentUser.getStoreId() == null)) {
throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR);
}
JSONObject json = wechatLivePlayerUtil.deleteGoods(goodsId);
if ("0".equals(json.getStr("errcode"))) {
return this.remove(new LambdaQueryWrapper<Commodity>().eq(Commodity::getLiveGoodsId, goodsId));
return this.remove(new LambdaQueryWrapper<Commodity>().eq(Commodity::getLiveGoodsId, goodsId).eq(Commodity::getStoreId, currentUser.getStoreId()));
}
return false;
}
@ -108,7 +115,7 @@ public class CommodityServiceImpl extends ServiceImpl<CommodityMapper, Commodity
return this.baseMapper.commodityVOList(PageUtil.initPage(pageVO),
new QueryWrapper<CommodityVO>().like(name != null, "c.name", name)
.eq(auditStatus != null, "c.audit_status", auditStatus)
.eq(UserContext.getCurrentUser().getRole().equals(UserEnums.STORE), "c.store_id", UserContext.getCurrentUser().getStoreId())
.eq(Objects.requireNonNull(UserContext.getCurrentUser()).getRole().equals(UserEnums.STORE), "c.store_id", UserContext.getCurrentUser().getStoreId())
.orderByDesc("create_time"));
}
}

View File

@ -9,6 +9,7 @@ import cn.lili.cache.CachePrefix;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.properties.RocketmqCustomProperties;
import cn.lili.common.security.AuthUser;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.security.enums.UserEnums;
import cn.lili.common.utils.StringUtils;
@ -27,7 +28,9 @@ import cn.lili.modules.goods.service.*;
import cn.lili.modules.member.entity.dos.MemberEvaluation;
import cn.lili.modules.member.entity.enums.EvaluationGradeEnum;
import cn.lili.modules.member.service.MemberEvaluationService;
import cn.lili.modules.store.entity.dos.FreightTemplate;
import cn.lili.modules.store.entity.vos.StoreVO;
import cn.lili.modules.store.service.FreightTemplateService;
import cn.lili.modules.store.service.StoreService;
import cn.lili.modules.system.entity.dos.Setting;
import cn.lili.modules.system.entity.dto.GoodsSetting;
@ -51,6 +54,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
/**
* 商品业务层实现
@ -109,6 +113,8 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
@Autowired
private CategoryParameterGroupService categoryParameterGroupService;
@Autowired
private FreightTemplateService freightTemplateService;
@Autowired
private Cache<GoodsVO> cache;
@ -276,10 +282,10 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
public Boolean updateGoodsMarketAble(List<String> goodsIds, GoodsStatusEnum goodsStatusEnum, String underReason) {
boolean result;
if (UserContext.getCurrentUser() == null || UserContext.getCurrentUser().getStoreId() == null) {
throw new ServiceException(ResultCode.USER_NOT_LOGIN);
AuthUser currentUser = UserContext.getCurrentUser();
if (currentUser == null || (currentUser.getRole().equals(UserEnums.STORE) && currentUser.getStoreId() == null)) {
throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR);
}
String storeId = UserContext.getCurrentUser().getStoreId();
//如果商品为空直接返回
if (goodsIds == null || goodsIds.isEmpty()) {
@ -289,12 +295,12 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
LambdaUpdateWrapper<Goods> updateWrapper = Wrappers.lambdaUpdate();
updateWrapper.set(Goods::getMarketEnable, goodsStatusEnum.name());
updateWrapper.set(Goods::getUnderMessage, underReason);
updateWrapper.eq(Goods::getStoreId, storeId);
updateWrapper.eq(Goods::getStoreId, currentUser.getStoreId());
updateWrapper.in(Goods::getId, goodsIds);
result = this.update(updateWrapper);
//修改规格商品
List<Goods> goodsList = this.list(new LambdaQueryWrapper<Goods>().in(Goods::getId, goodsIds).eq(Goods::getStoreId, storeId));
List<Goods> goodsList = this.list(new LambdaQueryWrapper<Goods>().in(Goods::getId, goodsIds).eq(Goods::getStoreId, currentUser.getStoreId()));
for (Goods goods : goodsList) {
goodsSkuService.updateGoodsSkuStatus(goods);
}
@ -304,14 +310,20 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
@Override
public Boolean deleteGoods(List<String> goodsIds) {
AuthUser currentUser = UserContext.getCurrentUser();
if (currentUser == null || (currentUser.getRole().equals(UserEnums.STORE) && currentUser.getStoreId() == null)) {
throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR);
}
LambdaUpdateWrapper<Goods> updateWrapper = Wrappers.lambdaUpdate();
updateWrapper.set(Goods::getMarketEnable, GoodsStatusEnum.DOWN.name());
updateWrapper.set(Goods::getDeleteFlag, true);
updateWrapper.eq(Goods::getStoreId, currentUser.getStoreId());
updateWrapper.in(Goods::getId, goodsIds);
this.update(updateWrapper);
//修改规格商品
List<Goods> goodsList = this.list(new LambdaQueryWrapper<Goods>().in(Goods::getId, goodsIds));
List<Goods> goodsList = this.list(new LambdaQueryWrapper<Goods>().in(Goods::getId, goodsIds).eq(Goods::getStoreId, currentUser.getStoreId()));
for (Goods goods : goodsList) {
//修改SKU状态
goodsSkuService.updateGoodsSkuStatus(goods);
@ -326,6 +338,19 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
@Override
public Boolean freight(List<String> goodsIds, String templateId) {
AuthUser currentUser = UserContext.getCurrentUser();
if (currentUser == null || (currentUser.getRole().equals(UserEnums.STORE) && currentUser.getStoreId() == null)) {
throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR);
}
FreightTemplate freightTemplate = freightTemplateService.getById(templateId);
if (freightTemplate == null) {
throw new ServiceException(ResultCode.FREIGHT_TEMPLATE_NOT_EXIST);
}
if (!freightTemplate.getStoreId().equals(currentUser.getStoreId())) {
throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR);
}
LambdaUpdateWrapper<Goods> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
lambdaUpdateWrapper.set(Goods::getTemplateId, templateId);
lambdaUpdateWrapper.in(Goods::getId, goodsIds);
@ -419,7 +444,7 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
//是否需要审核
goods.setIsAuth(Boolean.TRUE.equals(goodsSetting.getGoodsCheck()) ? GoodsAuthEnum.TOBEAUDITED.name() : GoodsAuthEnum.PASS.name());
//判断当前用户是否为店铺
if (UserContext.getCurrentUser().getRole().equals(UserEnums.STORE)) {
if (Objects.requireNonNull(UserContext.getCurrentUser()).getRole().equals(UserEnums.STORE)) {
StoreVO storeDetail = this.storeService.getStoreDetail();
if (storeDetail.getSelfOperated() != null) {
goods.setSelfOperated(storeDetail.getSelfOperated());

View File

@ -10,7 +10,7 @@ import org.springframework.stereotype.Service;
* 直播间-商品关联业务层实现
*
* @author Bulbasaur
* @since: 2021/5/17 3:20 下午
* @since 2021/5/17 3:20 下午
*/
@Service
public class StudioCommodityServiceImpl extends ServiceImpl<StudioCommodityMapper, StudioCommodity> implements StudioCommodityService {

View File

@ -2,30 +2,32 @@ package cn.lili.modules.goods.serviceimpl;
import cn.hutool.core.convert.Convert;
import cn.hutool.json.JSONUtil;
import cn.lili.trigger.message.BroadcastMessage;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.properties.RocketmqCustomProperties;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.security.enums.UserEnums;
import cn.lili.trigger.enums.DelayTypeEnums;
import cn.lili.trigger.interfaces.TimeTrigger;
import cn.lili.trigger.model.TimeExecuteConstant;
import cn.lili.trigger.model.TimeTriggerMsg;
import cn.lili.trigger.util.DelayQueueTools;
import cn.lili.common.utils.BeanUtil;
import cn.lili.common.utils.DateUtil;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.common.vo.PageVO;
import cn.lili.common.properties.RocketmqCustomProperties;
import cn.lili.modules.goods.entity.dos.Goods;
import cn.lili.modules.goods.entity.dos.Studio;
import cn.lili.modules.goods.entity.dos.StudioCommodity;
import cn.lili.modules.goods.entity.enums.StudioStatusEnum;
import cn.lili.modules.goods.entity.vos.StudioVO;
import cn.lili.modules.goods.mapper.CommodityMapper;
import cn.lili.modules.goods.mapper.StudioMapper;
import cn.lili.modules.goods.service.GoodsService;
import cn.lili.modules.goods.service.StudioCommodityService;
import cn.lili.modules.goods.service.StudioService;
import cn.lili.modules.goods.util.WechatLivePlayerUtil;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.trigger.enums.DelayTypeEnums;
import cn.lili.trigger.interfaces.TimeTrigger;
import cn.lili.trigger.message.BroadcastMessage;
import cn.lili.trigger.model.TimeExecuteConstant;
import cn.lili.trigger.model.TimeTriggerMsg;
import cn.lili.trigger.util.DelayQueueTools;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@ -36,12 +38,13 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Map;
import java.util.Objects;
/**
* 小程序直播间业务层实现
*
* @author Bulbasaur
* @since: 2021/5/17 10:04 上午
* @since 2021/5/17 10:04 上午
*/
@Service
public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> implements StudioService {
@ -56,38 +59,40 @@ public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> impleme
private TimeTrigger timeTrigger;
@Autowired
private RocketmqCustomProperties rocketmqCustomProperties;
@Autowired
private GoodsService goodsService;
@Override
public Boolean create(Studio studio) {
//创建小程序直播
Map<String, String> roomMap = wechatLivePlayerUtil.create(studio);
studio.setRoomId(Convert.toInt(roomMap.get("roomId")));
studio.setQrCodeUrl(roomMap.get("qrcodeUrl"));
studio.setStoreId(UserContext.getCurrentUser().getStoreId());
studio.setStatus(StudioStatusEnum.NEW.name());
//直播间添加成功发送直播间开启关闭延时任务
if (this.save(studio)) {
//直播开启延时任务
BroadcastMessage broadcastMessage = new BroadcastMessage(studio.getId(), StudioStatusEnum.START.name());
TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.BROADCAST_EXECUTOR,
Long.parseLong(studio.getStartTime()) * 1000L,
broadcastMessage,
DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.BROADCAST, studio.getId()),
rocketmqCustomProperties.getPromotionTopic());
studio.setStoreId(Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId());
//创建小程序直播
Map<String, String> roomMap = wechatLivePlayerUtil.create(studio);
studio.setRoomId(Convert.toInt(roomMap.get("roomId")));
studio.setQrCodeUrl(roomMap.get("qrcodeUrl"));
studio.setStatus(StudioStatusEnum.NEW.name());
//直播间添加成功发送直播间开启关闭延时任务
if (this.save(studio)) {
//直播开启延时任务
BroadcastMessage broadcastMessage = new BroadcastMessage(studio.getId(), StudioStatusEnum.START.name());
TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.BROADCAST_EXECUTOR,
Long.parseLong(studio.getStartTime()) * 1000L,
broadcastMessage,
DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.BROADCAST, studio.getId()),
rocketmqCustomProperties.getPromotionTopic());
//发送促销活动开始的延时任务
this.timeTrigger.addDelay(timeTriggerMsg);
//发送促销活动开始的延时任务
this.timeTrigger.addDelay(timeTriggerMsg);
//直播结束延时任务
broadcastMessage = new BroadcastMessage(studio.getId(), StudioStatusEnum.END.name());
timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.BROADCAST_EXECUTOR,
Long.parseLong(studio.getEndTime()) * 1000L, broadcastMessage,
DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.BROADCAST, studio.getId()),
rocketmqCustomProperties.getPromotionTopic());
//发送促销活动开始的延时任务
this.timeTrigger.addDelay(timeTriggerMsg);
}
return true;
//直播结束延时任务
broadcastMessage = new BroadcastMessage(studio.getId(), StudioStatusEnum.END.name());
timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.BROADCAST_EXECUTOR,
Long.parseLong(studio.getEndTime()) * 1000L, broadcastMessage,
DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.BROADCAST, studio.getId()),
rocketmqCustomProperties.getPromotionTopic());
//发送促销活动开始的延时任务
this.timeTrigger.addDelay(timeTriggerMsg);
}
return true;
}
@ -125,8 +130,9 @@ public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> impleme
@Override
public StudioVO getStudioVO(String id) {
StudioVO studioVO = new StudioVO();
Studio studio = this.getById(id);
//获取直播间信息
BeanUtil.copyProperties(this.getById(id), studioVO);
BeanUtil.copyProperties(studio, studioVO);
//获取直播间商品信息
studioVO.setCommodityList(commodityMapper.getCommodityByRoomId(studioVO.getRoomId()));
return studioVO;
@ -147,7 +153,7 @@ public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> impleme
}
@Override
public Boolean push(Integer roomId, Integer goodsId) {
public Boolean push(Integer roomId, Integer goodsId, String storeId) {
//判断直播间是否已添加商品
if (studioCommodityService.getOne(
@ -156,8 +162,13 @@ public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> impleme
throw new ServiceException(ResultCode.STODIO_GOODS_EXIST_ERROR);
}
Goods goods = goodsService.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getId, goodsId).eq(Goods::getStoreId, storeId));
if (goods == null) {
throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR);
}
//调用微信接口添加直播间商品并进行记录
if (wechatLivePlayerUtil.pushGoods(roomId, goodsId)) {
if (Boolean.TRUE.equals(wechatLivePlayerUtil.pushGoods(roomId, goodsId))) {
studioCommodityService.save(new StudioCommodity(roomId, goodsId));
//添加直播间商品数量
Studio studio = this.getByRoomId(roomId);
@ -172,9 +183,13 @@ public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> impleme
}
@Override
public Boolean goodsDeleteInRoom(Integer roomId, Integer goodsId) {
public Boolean goodsDeleteInRoom(Integer roomId, Integer goodsId, String storeId) {
Goods goods = goodsService.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getId, goodsId).eq(Goods::getStoreId, storeId));
if (goods == null) {
throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR);
}
//调用微信接口删除直播间商品并进行记录
if (wechatLivePlayerUtil.goodsDeleteInRoom(roomId, goodsId)) {
if (Boolean.TRUE.equals(wechatLivePlayerUtil.goodsDeleteInRoom(roomId, goodsId))) {
studioCommodityService.remove(new QueryWrapper<StudioCommodity>().eq("room_id", roomId).eq("goods_id", goodsId));
//减少直播间商品数量
Studio studio = this.getByRoomId(roomId);

View File

@ -1,8 +1,8 @@
package cn.lili.modules.goods.util;
import cn.hutool.json.JSONObject;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.enums.ClientTypeEnum;
import cn.lili.common.exception.ServiceException;
import cn.lili.modules.goods.entity.dos.Commodity;
import cn.lili.modules.goods.entity.dos.Studio;
import cn.lili.modules.goods.entity.dto.GoodsInfo;
@ -20,7 +20,7 @@ import java.util.Map;
* 微信小程序直播工具类
*
* @author Bulbasaur
* @since: 2021/5/17 10:16 上午
* @since 2021/5/17 10:16 上午
*/
@Slf4j
@Component

View File

@ -1,9 +1,9 @@
package cn.lili.modules.goods.util;
import cn.hutool.json.JSONObject;
import cn.lili.common.enums.ClientTypeEnum;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.enums.ClientTypeEnum;
import cn.lili.modules.message.util.WechatAccessTokenUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -17,7 +17,7 @@ import java.net.URL;
* 微信媒体工具
*
* @author Bulbasaur
* @since: 2021/5/19 8:02 下午
* @since 2021/5/19 8:02 下午
*/
@Slf4j
@Component

View File

@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* 会员等级数据层
*
* @author Bulbasaur
* @since: 2021/5/14 5:57 下午
* @since 2021/5/14 5:57 下午
*/
public interface MemberGradeMapper extends BaseMapper<MemberGrade> {

View File

@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
/**
* 会员等级业务层
* @author Bulbasaur
* @since: 2021/5/14 5:57 下午
* @since 2021/5/14 5:57 下午
*
*/
public interface MemberGradeService extends IService<MemberGrade> {

View File

@ -10,7 +10,7 @@ import org.springframework.stereotype.Service;
* 会员等级业务层实现
*
* @author Bulbasaur
* @since: 2021/5/14 5:58 下午
* @since 2021/5/14 5:58 下午
*/
@Service
public class MemberGradeServiceImpl extends ServiceImpl<MemberGradeMapper, MemberGrade> implements MemberGradeService {

View File

@ -4,22 +4,18 @@ package cn.lili.modules.member.serviceimpl;
import cn.hutool.core.convert.Convert;
import cn.lili.cache.Cache;
import cn.lili.cache.CachePrefix;
import cn.lili.common.context.ThreadContextHolder;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.enums.SwitchEnum;
import cn.lili.common.exception.ServiceException;
import cn.lili.modules.member.entity.enums.PointTypeEnum;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
import cn.lili.rocketmq.tags.MemberTagsEnum;
import cn.lili.common.properties.RocketmqCustomProperties;
import cn.lili.common.security.AuthUser;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.security.token.Token;
import cn.lili.modules.member.token.MemberTokenGenerate;
import cn.lili.modules.member.token.StoreTokenGenerate;
import cn.lili.common.utils.*;
import cn.lili.common.utils.BeanUtil;
import cn.lili.common.utils.CookieUtil;
import cn.lili.common.utils.StringUtils;
import cn.lili.common.vo.PageVO;
import cn.lili.common.context.ThreadContextHolder;
import cn.lili.common.properties.RocketmqCustomProperties;
import cn.lili.modules.connect.config.ConnectAuthEnum;
import cn.lili.modules.connect.entity.Connect;
import cn.lili.modules.connect.entity.dto.ConnectAuthUser;
@ -31,15 +27,21 @@ import cn.lili.modules.member.entity.dto.ManagerMemberEditDTO;
import cn.lili.modules.member.entity.dto.MemberAddDTO;
import cn.lili.modules.member.entity.dto.MemberEditDTO;
import cn.lili.modules.member.entity.dto.MemberPointMessage;
import cn.lili.modules.member.entity.enums.PointTypeEnum;
import cn.lili.modules.member.entity.vo.MemberDistributionVO;
import cn.lili.modules.member.entity.vo.MemberSearchVO;
import cn.lili.modules.member.mapper.MemberMapper;
import cn.lili.modules.member.service.MemberService;
import cn.lili.modules.member.token.MemberTokenGenerate;
import cn.lili.modules.member.token.StoreTokenGenerate;
import cn.lili.modules.store.entity.dos.Store;
import cn.lili.modules.store.entity.enums.StoreStatusEnum;
import cn.lili.modules.store.service.StoreService;
import cn.lili.modules.system.utils.CharacterConstant;
import cn.lili.modules.system.utils.SensitiveWordsFilter;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
import cn.lili.rocketmq.tags.MemberTagsEnum;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@ -54,6 +56,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
/**
* 会员接口业务层实现
@ -229,7 +232,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
@Override
public Token mobilePhoneLogin(String mobilePhone) {
QueryWrapper<Member> queryWrapper = new QueryWrapper();
QueryWrapper<Member> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("mobile", mobilePhone);
Member member = this.baseMapper.selectOne(queryWrapper);
//如果手机号不存在则自动注册用户
@ -247,7 +250,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
@Override
public Member editOwn(MemberEditDTO memberEditDTO) {
//查询会员信息
Member member = this.findByUsername(UserContext.getCurrentUser().getUsername());
Member member = this.findByUsername(Objects.requireNonNull(UserContext.getCurrentUser()).getUsername());
//传递修改会员信息
BeanUtil.copyProperties(memberEditDTO, member);
//修改会员
@ -292,11 +295,11 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
@Override
public boolean changeMobile(String mobile) {
AuthUser tokenUser = UserContext.getCurrentUser();
AuthUser tokenUser = Objects.requireNonNull(UserContext.getCurrentUser());
Member member = this.findByUsername(tokenUser.getUsername());
//判断是否用户登录并且会员ID为当前登录会员ID
if (tokenUser == null || tokenUser.getId() != member.getId()) {
if (!Objects.equals(tokenUser.getId(), member.getId())) {
throw new ServiceException(ResultCode.USER_NOT_LOGIN);
}
//修改会员手机号

View File

@ -21,7 +21,7 @@ import java.util.Map;
* 订单操作日志
*
* @author Chopper
* @since: 2020/11/17 7:22 下午
* @since 2020/11/17 7:22 下午
*/
@Slf4j
@Aspect

View File

@ -12,7 +12,7 @@ import javax.validation.constraints.NotNull;
* 售后原因
*
* @author Bulbasaur
* @since: 2021/7/9 1:39 上午
* @since 2021/7/9 1:39 上午
*/
@Data
@TableName("li_after_sale_reason")

View File

@ -6,7 +6,7 @@ import lombok.Data;
/**
* 订单批量发货DTO
* @author Bulbasaur
* @since: 2021/5/26 4:21 下午
* @since 2021/5/26 4:21 下午
*
*/
@Data

View File

@ -13,7 +13,7 @@ import java.util.Date;
/**
* 订单导出DTO
* @author Bulbasaur
* @since: 2021/6/3 6:36 下午
* @since 2021/6/3 6:36 下午
*
*/
@Data

View File

@ -1,7 +1,7 @@
package cn.lili.modules.order.order.serviceimpl;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
@ -12,7 +12,6 @@ import cn.lili.common.security.enums.UserEnums;
import cn.lili.common.utils.BeanUtil;
import cn.lili.common.utils.CurrencyUtil;
import cn.lili.common.utils.SnowFlake;
import cn.lili.common.utils.StringUtils;
import cn.lili.common.vo.PageVO;
import cn.lili.modules.order.order.aop.AfterSaleLogPoint;
import cn.lili.modules.order.order.entity.dos.AfterSale;
@ -60,6 +59,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* 售后业务层实现
@ -202,7 +202,7 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
//如果售后类型为退款审核状态为已通过并且退款方式为原路退回售后单状态为已完成
//如果售后类型为退款审核状态已通过并且退款方式为线下退回售后单状态为待退款
//如果售后类型不为退款售后单状态为已通过
AfterSaleStatusEnum afterSaleStatusEnum = null;
AfterSaleStatusEnum afterSaleStatusEnum;
if (serviceStatus.equals(AfterSaleStatusEnum.PASS.name())) {
if (afterSale.getServiceType().equals(AfterSaleTypeEnum.RETURN_MONEY.name())) {
if (afterSale.getRefundWay().equals(AfterSaleRefundWayEnum.ORIGINAL.name())) {
@ -285,7 +285,7 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
if (!afterSale.getServiceStatus().equals(AfterSaleStatusEnum.BUYER_RETURN.name())) {
throw new ServiceException(ResultCode.AFTER_STATUS_ERROR);
}
AfterSaleStatusEnum afterSaleStatusEnum = null;
AfterSaleStatusEnum afterSaleStatusEnum;
String pass = "PASS";
//判断审核状态
//在线支付 则直接进行退款
@ -360,17 +360,18 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
@Override
public Integer applyNum(String serviceType) {
AuthUser authUser = Objects.requireNonNull(UserContext.getCurrentUser());
LambdaQueryWrapper<AfterSale> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(AfterSale::getServiceStatus, AfterSaleStatusEnum.APPLY.name());
queryWrapper.eq(StringUtils.isNotEmpty(serviceType), AfterSale::getServiceType, serviceType);
queryWrapper.eq(StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name()),
AfterSale::getStoreId, UserContext.getCurrentUser().getStoreId());
queryWrapper.eq(CharSequenceUtil.isNotEmpty(serviceType), AfterSale::getServiceType, serviceType);
queryWrapper.eq(CharSequenceUtil.equals(authUser.getRole().name(), UserEnums.STORE.name()),
AfterSale::getStoreId, authUser.getStoreId());
return this.count(queryWrapper);
}
@Override
public StoreAfterSaleAddressDTO getStoreAfterSaleAddressDTO(String sn) {
return storeDetailService.getStoreAfterSaleAddressDTO(this.getBySn(sn).getStoreId());
return storeDetailService.getStoreAfterSaleAddressDTO(OperationalJudgment.judgment(this.getBySn(sn)).getStoreId());
}
@Override
@ -379,7 +380,7 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
LambdaQueryWrapper<AfterSale> queryWrapper = new LambdaQueryWrapper<>();
Date[] dates = StatisticsDateUtil.getDateArray(statisticsQueryParam);
queryWrapper.between(AfterSale::getCreateTime, dates[0], dates[1]);
queryWrapper.eq(StringUtils.isNotEmpty(statisticsQueryParam.getStoreId()), AfterSale::getStoreId, statisticsQueryParam.getStoreId());
queryWrapper.eq(CharSequenceUtil.isNotEmpty(statisticsQueryParam.getStoreId()), AfterSale::getStoreId, statisticsQueryParam.getStoreId());
return this.page(PageUtil.initPage(pageVO), queryWrapper);
}
@ -392,7 +393,7 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
*/
private AfterSale addAfterSale(AfterSaleDTO afterSaleDTO) {
//写入其他属性
AuthUser tokenUser = UserContext.getCurrentUser();
AuthUser tokenUser = Objects.requireNonNull(UserContext.getCurrentUser());
AfterSale afterSale = new AfterSale();
BeanUtil.copyProperties(afterSaleDTO, afterSale);
@ -437,7 +438,7 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
afterSale.setApplyRefundPrice(orderItem.getFlowPrice());
} else {
//单价计算
Double utilPrice = CurrencyUtil.div(orderItem.getPriceDetailDTO().getFlowPrice(), orderItem.getNum());
double utilPrice = CurrencyUtil.div(orderItem.getPriceDetailDTO().getFlowPrice(), orderItem.getNum());
afterSale.setApplyRefundPrice(CurrencyUtil.mul(afterSale.getNum(), utilPrice));
}
//添加售后
@ -457,7 +458,7 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
private void checkAfterSaleType(AfterSaleDTO afterSaleDTO) {
//判断数据是否为空
if (null == afterSaleDTO || StringUtils.isEmpty(afterSaleDTO.getOrderItemSn())) {
if (null == afterSaleDTO || CharSequenceUtil.isEmpty(afterSaleDTO.getOrderItemSn())) {
throw new ServiceException(ResultCode.ORDER_NOT_EXIST);
}
@ -482,7 +483,7 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
break;
case RETURN_GOODS:
//是否为有效状态
boolean availableStatus = StrUtil.equalsAny(order.getOrderStatus(), OrderStatusEnum.DELIVERED.name(), OrderStatusEnum.COMPLETED.name());
boolean availableStatus = CharSequenceUtil.equalsAny(order.getOrderStatus(), OrderStatusEnum.DELIVERED.name(), OrderStatusEnum.COMPLETED.name());
if (!PayStatusEnum.PAID.name().equals(order.getPayStatus()) && availableStatus) {
throw new ServiceException(ResultCode.AFTER_SALES_BAN);
}
@ -496,14 +497,14 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
/**
* 检测售后-退款参数
*
* @param afterSaleDTO
* @param afterSaleDTO 售后DTO
*/
private void checkAfterSaleReturnMoneyParam(AfterSaleDTO afterSaleDTO) {
//如果为线下支付银行信息不能为空
if (AfterSaleRefundWayEnum.OFFLINE.name().equals(afterSaleDTO.getRefundWay())) {
boolean emptyBankParam = StringUtils.isEmpty(afterSaleDTO.getBankDepositName())
|| StringUtils.isEmpty(afterSaleDTO.getBankAccountName())
|| StringUtils.isEmpty(afterSaleDTO.getBankAccountNumber());
boolean emptyBankParam = CharSequenceUtil.isEmpty(afterSaleDTO.getBankDepositName())
|| CharSequenceUtil.isEmpty(afterSaleDTO.getBankAccountName())
|| CharSequenceUtil.isEmpty(afterSaleDTO.getBankAccountNumber());
if (emptyBankParam) {
throw new ServiceException(ResultCode.RETURN_MONEY_OFFLINE_BANK_ERROR);
}

View File

@ -80,6 +80,7 @@ import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* 子订单业务层实现
@ -396,9 +397,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
@Override
public Order getOrderByVerificationCode(String verificationCode) {
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
return this.getOne(new LambdaQueryWrapper<Order>()
.eq(Order::getOrderStatus, OrderStatusEnum.TAKE.name())
.eq(Order::getStoreId, UserContext.getCurrentUser().getStoreId())
.eq(Order::getStoreId, storeId)
.eq(Order::getVerificationCode, verificationCode));
}

View File

@ -1,10 +1,9 @@
package cn.lili.modules.page.entity.dos;
import cn.lili.mybatis.BaseEntity;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.enums.SwitchEnum;
import cn.lili.common.enums.ClientTypeEnum;
import cn.lili.common.enums.SwitchEnum;
import cn.lili.modules.page.entity.enums.PageEnum;
import cn.lili.mybatis.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -54,10 +53,11 @@ public class PageData extends BaseEntity {
@ApiModelProperty(value = "")
private String num;
public PageData(String name, String pageClientType, String pageData) {
public PageData(String name, String pageClientType, String pageData, String num) {
this.name = name;
this.pageClientType = pageClientType;
this.pageData = pageData;
this.num = UserContext.getCurrentUser().getStoreId();
this.num = num;
this.pageShow = SwitchEnum.CLOSE.name();
this.pageType = PageEnum.STORE.name();
}

View File

@ -58,7 +58,7 @@ public class PageDataServiceImpl extends ServiceImpl<PageDataMapper, PageData> i
public PageData addPageData(PageData pageData) {
//如果页面为发布则关闭其他页面开启此页面
//演示站点不可以开启楼层
if (!systemSettingProperties.getIsDemoSite() && pageData.getPageShow().equals(SwitchEnum.OPEN.name())) {
if (!Boolean.TRUE.equals(systemSettingProperties.getIsDemoSite()) && pageData.getPageShow().equals(SwitchEnum.OPEN.name())) {
LambdaUpdateWrapper<PageData> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
lambdaUpdateWrapper.eq(PageData::getPageType, pageData.getPageType());
lambdaUpdateWrapper.eq(PageData::getPageClientType, pageData.getPageClientType());
@ -123,7 +123,7 @@ public class PageDataServiceImpl extends ServiceImpl<PageDataMapper, PageData> i
public boolean removePageData(String id) {
PageData pageData = this.getById(id);
//专题则直接进行删除
if (pageData.getPageType().equals(PageEnum.SPECIAL)) {
if (pageData.getPageType().equals(PageEnum.SPECIAL.name())) {
return this.removeById(id);
}
//店铺平台首页需要判断是否开启开启则无法删除
@ -135,7 +135,7 @@ public class PageDataServiceImpl extends ServiceImpl<PageDataMapper, PageData> i
queryWrapper.eq(pageData.getPageType() != null, "page_type", pageData.getPageType());
queryWrapper.eq(pageData.getPageClientType() != null, "page_client_type", pageData.getPageClientType());
//如果为店铺页面需要设置店铺ID
if (pageData.getPageType().equals(PageEnum.STORE)) {
if (pageData.getPageType().equals(PageEnum.STORE.name())) {
queryWrapper.eq(pageData.getNum() != null, "num", pageData.getNum());
}
//判断是否为唯一的页面

View File

@ -11,7 +11,7 @@ import java.util.List;
* 优惠券活动DTO
*
* @author Bulbasaur
* @since: 2021/5/21 7:16 下午
* @since 2021/5/21 7:16 下午
*/
@Data
public class CouponActivityDTO extends CouponActivity {

View File

@ -4,7 +4,7 @@ package cn.lili.modules.promotion.entity.enums;
* 优惠券活动发送类型枚举
*
* @author Bulbasaur
* @since: 2021/5/20 5:47 下午
* @since 2021/5/20 5:47 下午
*/
public enum CouponActivitySendTypeEnum {

View File

@ -4,7 +4,7 @@ package cn.lili.modules.promotion.entity.enums;
* 优惠券活动类型枚举
*
* @author Bulbasaur
* @since: 2021/5/20 5:47 下午
* @since 2021/5/20 5:47 下午
*/
public enum CouponActivityTypeEnum {

View File

@ -4,7 +4,7 @@ package cn.lili.modules.promotion.entity.enums;
* 优惠券时间范围枚举
*
* @author Bulbasaur
* @since: 2021/5/24 8:31 上午
* @since 2021/5/24 8:31 上午
*/
public enum CouponRangeDayEnum {

View File

@ -8,7 +8,7 @@ import lombok.Data;
* 优惠券活动的优惠券VO
*
* @author Bulbasaur
* @since: 2021/6/18 11:00 上午
* @since 2021/6/18 11:00 上午
*/
@Data
public class CouponActivityItemVO extends CouponActivityItem {

View File

@ -12,7 +12,7 @@ import java.util.List;
* 优惠券活动VO
*
* @author Bulbasaur
* @since: 2021/5/21 7:01 下午
* @since 2021/5/21 7:01 下午
*/
@Data
@NoArgsConstructor

View File

@ -26,6 +26,9 @@ public class PromotionGoodsSearchParams {
@ApiModelProperty(value = "促销状态")
private String promotionStatus;
@ApiModelProperty(value = "促销活动id")
private String storeId;
@ApiModelProperty(value = "商品名称")
private String goodsName;
@ -62,6 +65,9 @@ public class PromotionGoodsSearchParams {
if (endTime != null) {
queryWrapper.ge(PromotionGoods::getEndTime, new Date(endTime));
}
if (CharSequenceUtil.isNotEmpty(storeId)) {
queryWrapper.eq(PromotionGoods::getStoreId, storeId);
}
queryWrapper.eq(PromotionGoods::getDeleteFlag, false);
return queryWrapper;
}

View File

@ -11,7 +11,7 @@ import java.util.List;
* 优惠券活动
*
* @author Bulbasaur
* @since: 2021/5/20 6:11 下午
* @since 2021/5/20 6:11 下午
*/
public interface CouponActivityItemMapper extends BaseMapper<CouponActivityItem> {

View File

@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* 优惠券活动
* @author Bulbasaur
* @since: 2021/5/20 6:11 下午
* @since 2021/5/20 6:11 下午
*
*/
public interface CouponActivityMapper extends BaseMapper<CouponActivity> {

View File

@ -10,7 +10,7 @@ import java.util.List;
* 优惠券活动-优惠券业务层
*
* @author Bulbasaur
* @since: 2021/5/20 6:10 下午
* @since 2021/5/20 6:10 下午
*/
public interface CouponActivityItemService extends IService<CouponActivityItem> {

View File

@ -13,7 +13,7 @@ import java.util.List;
* 优惠券活动业务层
*
* @author Bulbasaur
* @since: 2021/5/20 6:10 下午
* @since 2021/5/20 6:10 下午
*/
public interface CouponActivityService extends IService<CouponActivity> {

View File

@ -14,7 +14,7 @@ import java.util.List;
* 优惠券活动关联优惠券业务层实现
*
* @author Bulbasaur
* @since: 2021/5/21 6:42 下午
* @since 2021/5/21 6:42 下午
*/
@Service
public class CouponActivityItemServiceImpl extends ServiceImpl<CouponActivityItemMapper, CouponActivityItem> implements CouponActivityItemService {

View File

@ -1,16 +1,11 @@
package cn.lili.modules.promotion.serviceimpl;
import cn.hutool.json.JSONUtil;
import cn.lili.common.enums.PromotionTypeEnum;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
import cn.lili.trigger.enums.DelayTypeEnums;
import cn.lili.trigger.interfaces.TimeTrigger;
import cn.lili.trigger.message.PromotionMessage;
import cn.lili.trigger.model.TimeExecuteConstant;
import cn.lili.trigger.model.TimeTriggerMsg;
import cn.lili.trigger.util.DelayQueueTools;
import cn.lili.common.utils.DateUtil;
import cn.lili.common.properties.RocketmqCustomProperties;
import cn.lili.common.utils.DateUtil;
import cn.lili.modules.member.entity.dos.Member;
import cn.lili.modules.member.service.MemberService;
import cn.lili.modules.promotion.entity.dos.Coupon;
@ -21,7 +16,6 @@ import cn.lili.modules.promotion.entity.dto.CouponActivityDTO;
import cn.lili.modules.promotion.entity.enums.CouponActivitySendTypeEnum;
import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum;
import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum;
import cn.lili.common.enums.PromotionTypeEnum;
import cn.lili.modules.promotion.entity.vos.CouponActivityVO;
import cn.lili.modules.promotion.mapper.CouponActivityMapper;
import cn.lili.modules.promotion.service.CouponActivityItemService;
@ -29,6 +23,12 @@ import cn.lili.modules.promotion.service.CouponActivityService;
import cn.lili.modules.promotion.service.CouponService;
import cn.lili.modules.promotion.service.MemberCouponService;
import cn.lili.modules.promotion.tools.PromotionTools;
import cn.lili.trigger.enums.DelayTypeEnums;
import cn.lili.trigger.interfaces.TimeTrigger;
import cn.lili.trigger.message.PromotionMessage;
import cn.lili.trigger.model.TimeExecuteConstant;
import cn.lili.trigger.model.TimeTriggerMsg;
import cn.lili.trigger.util.DelayQueueTools;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -42,7 +42,7 @@ import java.util.*;
* 优惠券活动业务层实现
*
* @author Bulbasaur
* @since: 2021/5/20 6:10 下午
* @since 2021/5/20 6:10 下午
*/
@Slf4j
@Service

View File

@ -8,7 +8,7 @@ import java.lang.annotation.*;
* 埋点统计
*
* @author Bulbasaur
* @since: 2021/7/9 1:47 上午
* @since 2021/7/9 1:47 上午
*/
@Target({ElementType.PARAMETER, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)

View File

@ -35,6 +35,7 @@ import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* 首页统计数据业务层实现
@ -190,6 +191,7 @@ public class IndexStatisticsServiceImpl implements IndexStatisticsService {
@Override
public StoreIndexStatisticsVO storeIndexStatistics() {
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
StoreIndexStatisticsVO storeIndexStatisticsVO = new StoreIndexStatisticsVO();
//商品总数量
@ -202,7 +204,7 @@ public class IndexStatisticsServiceImpl implements IndexStatisticsService {
//访问量
StatisticsQueryParam queryParam = new StatisticsQueryParam();
queryParam.setSearchType(SearchTypeEnum.TODAY.name());
queryParam.setStoreId(UserContext.getCurrentUser().getStoreId());
queryParam.setStoreId(storeId);
PlatformViewVO platformViewVO = platformViewDataService.list(queryParam).get(0);
storeIndexStatisticsVO.setStoreUV(platformViewVO.getUvNum().intValue());

View File

@ -19,7 +19,7 @@ public interface StoreAddressService extends IService<StoreAddress> {
* @param pageVo 分页
* @return 自提点列表
*/
IPage<StoreAddress> getStoreAddress(PageVO pageVo);
IPage<StoreAddress> getStoreAddress(String storeId, PageVO pageVo);
/**
* 添加商家自提点
@ -27,7 +27,7 @@ public interface StoreAddressService extends IService<StoreAddress> {
* @param storeAddress 自提点
* @return 自提点
*/
StoreAddress addStoreAddress(StoreAddress storeAddress);
StoreAddress addStoreAddress(String storeId, StoreAddress storeAddress);
/**
* 修改商家自提点
@ -35,7 +35,7 @@ public interface StoreAddressService extends IService<StoreAddress> {
* @param storeAddress 自提点
* @return 自提点
*/
StoreAddress editStoreAddress(StoreAddress storeAddress);
StoreAddress editStoreAddress(String storeId, StoreAddress storeAddress);
/**
* 删除商家自提点

View File

@ -7,7 +7,6 @@ import cn.lili.common.exception.ServiceException;
import cn.lili.common.security.AuthUser;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.utils.BeanUtil;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.common.vo.PageVO;
import cn.lili.modules.store.entity.dos.FreightTemplate;
import cn.lili.modules.store.entity.dos.FreightTemplateChild;
@ -15,6 +14,7 @@ import cn.lili.modules.store.entity.vos.FreightTemplateVO;
import cn.lili.modules.store.mapper.FreightTemplateMapper;
import cn.lili.modules.store.service.FreightTemplateChildService;
import cn.lili.modules.store.service.FreightTemplateService;
import cn.lili.mybatis.util.PageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -58,7 +58,7 @@ public class FreightTemplateServiceImpl extends ServiceImpl<FreightTemplateMappe
list = new ArrayList<>();
//查询运费模板
LambdaQueryWrapper<FreightTemplate> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(FreightTemplate::getStoreId, UserContext.getCurrentUser().getStoreId());
lambdaQueryWrapper.eq(FreightTemplate::getStoreId, storeId);
List<FreightTemplate> freightTemplates = this.baseMapper.selectList(lambdaQueryWrapper);
if (!freightTemplates.isEmpty()) {
//如果模板不为空则查询子模板信息

View File

@ -1,12 +1,10 @@
package cn.lili.modules.store.serviceimpl;
import cn.lili.common.security.AuthUser;
import cn.lili.common.security.context.UserContext;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.common.vo.PageVO;
import cn.lili.modules.store.entity.dos.StoreAddress;
import cn.lili.modules.store.mapper.StoreAddressMapper;
import cn.lili.modules.store.service.StoreAddressService;
import cn.lili.mybatis.util.PageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -25,27 +23,26 @@ import org.springframework.transaction.annotation.Transactional;
public class StoreAddressServiceImpl extends ServiceImpl<StoreAddressMapper, StoreAddress> implements StoreAddressService {
@Override
public IPage<StoreAddress> getStoreAddress(PageVO pageVo) {
public IPage<StoreAddress> getStoreAddress(String storeId, PageVO pageVo) {
//获取当前登录商家账号
LambdaQueryWrapper<StoreAddress> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(StoreAddress::getStoreId, UserContext.getCurrentUser().getStoreId());
lambdaQueryWrapper.eq(StoreAddress::getStoreId, storeId);
return this.page(PageUtil.initPage(pageVo), lambdaQueryWrapper);
}
@Override
public StoreAddress addStoreAddress(StoreAddress storeAddress) {
public StoreAddress addStoreAddress(String storeId, StoreAddress storeAddress) {
//获取当前登录商家账号
storeAddress.setStoreId(UserContext.getCurrentUser().getStoreId());
storeAddress.setStoreId(storeId);
//添加自提点
this.save(storeAddress);
return storeAddress;
}
@Override
public StoreAddress editStoreAddress(StoreAddress storeAddress) {
public StoreAddress editStoreAddress(String storeId, StoreAddress storeAddress) {
//获取当前登录商家账号
AuthUser tokenUser = UserContext.getCurrentUser();
storeAddress.setStoreId(tokenUser.getId());
storeAddress.setStoreId(storeId);
//添加自提点
this.updateById(storeAddress);
return storeAddress;

View File

@ -26,6 +26,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* 店铺详细业务层实现
@ -67,7 +68,7 @@ public class StoreDetailServiceImpl extends ServiceImpl<StoreDetailMapper, Store
@Override
public Boolean editStoreSetting(StoreSettingDTO storeSettingDTO) {
AuthUser tokenUser = UserContext.getCurrentUser();
AuthUser tokenUser = Objects.requireNonNull(UserContext.getCurrentUser());
//修改店铺
Store store = storeService.getById(tokenUser.getStoreId());
BeanUtil.copyProperties(storeSettingDTO, store);
@ -81,7 +82,8 @@ public class StoreDetailServiceImpl extends ServiceImpl<StoreDetailMapper, Store
@Override
public StoreAfterSaleAddressDTO getStoreAfterSaleAddressDTO() {
return this.baseMapper.getStoreAfterSaleAddressDTO(UserContext.getCurrentUser().getStoreId());
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
return this.baseMapper.getStoreAfterSaleAddressDTO(storeId);
}
@Override
@ -95,21 +97,23 @@ public class StoreDetailServiceImpl extends ServiceImpl<StoreDetailMapper, Store
@Override
public boolean editStoreAfterSaleAddressDTO(StoreAfterSaleAddressDTO storeAfterSaleAddressDTO) {
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
LambdaUpdateWrapper<StoreDetail> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
lambdaUpdateWrapper.set(StoreDetail::getSalesConsigneeName, storeAfterSaleAddressDTO.getSalesConsigneeName());
lambdaUpdateWrapper.set(StoreDetail::getSalesConsigneeAddressId, storeAfterSaleAddressDTO.getSalesConsigneeAddressId());
lambdaUpdateWrapper.set(StoreDetail::getSalesConsigneeAddressPath, storeAfterSaleAddressDTO.getSalesConsigneeAddressPath());
lambdaUpdateWrapper.set(StoreDetail::getSalesConsigneeDetail, storeAfterSaleAddressDTO.getSalesConsigneeDetail());
lambdaUpdateWrapper.set(StoreDetail::getSalesConsigneeMobile, storeAfterSaleAddressDTO.getSalesConsigneeMobile());
lambdaUpdateWrapper.eq(StoreDetail::getStoreId, UserContext.getCurrentUser().getStoreId());
lambdaUpdateWrapper.eq(StoreDetail::getStoreId, storeId);
return this.update(lambdaUpdateWrapper);
}
@Override
public boolean updateStockWarning(Integer stockWarning) {
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
LambdaUpdateWrapper<StoreDetail> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
lambdaUpdateWrapper.set(StoreDetail::getStockWarning, stockWarning);
lambdaUpdateWrapper.eq(StoreDetail::getStoreId, UserContext.getCurrentUser().getStoreId());
lambdaUpdateWrapper.eq(StoreDetail::getStoreId, storeId);
return this.update(lambdaUpdateWrapper);
}
@ -119,13 +123,13 @@ public class StoreDetailServiceImpl extends ServiceImpl<StoreDetailMapper, Store
//获取顶部分类列表
List<Category> categoryList = categoryService.firstCategory();
//获取店铺信息
StoreDetail storeDetail = this.getOne(new LambdaQueryWrapper<StoreDetail>().eq(StoreDetail::getStoreId,storeId));
StoreDetail storeDetail = this.getOne(new LambdaQueryWrapper<StoreDetail>().eq(StoreDetail::getStoreId, storeId));
//获取店铺分类
String[] storeCategoryList = storeDetail.getGoodsManagementCategory().split(",");
List<StoreManagementCategoryVO> list = new ArrayList<>();
for (Category category : categoryList) {
StoreManagementCategoryVO storeManagementCategoryVO = new StoreManagementCategoryVO(category);
for (String storeCategory:storeCategoryList) {
for (String storeCategory : storeCategoryList) {
if (storeCategory.equals(category.getId())) {
storeManagementCategoryVO.setSelected(true);
}
@ -137,9 +141,7 @@ public class StoreDetailServiceImpl extends ServiceImpl<StoreDetailMapper, Store
@Override
public StoreOtherVO getStoreOtherVO(String storeId) {
StoreOtherVO storeOtherVO=this.baseMapper.getLicencePhoto(storeId);
return storeOtherVO;
return this.baseMapper.getLicencePhoto(storeId);
}
}

View File

@ -4,9 +4,9 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.security.AuthUser;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.utils.BeanUtil;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.common.utils.StringUtils;
import cn.lili.common.vo.PageVO;
import cn.lili.modules.goods.entity.dos.Goods;
@ -28,6 +28,7 @@ import cn.lili.modules.store.entity.vos.StoreVO;
import cn.lili.modules.store.mapper.StoreMapper;
import cn.lili.modules.store.service.StoreDetailService;
import cn.lili.modules.store.service.StoreService;
import cn.lili.mybatis.util.PageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@ -88,8 +89,9 @@ public class StoreServiceImpl extends ServiceImpl<StoreMapper, Store> implements
@Override
public StoreVO getStoreDetail() {
StoreVO storeVO = this.baseMapper.getStoreDetail(UserContext.getCurrentUser().getStoreId());
storeVO.setNickName(UserContext.getCurrentUser().getNickName());
AuthUser currentUser = UserContext.getCurrentUser();
StoreVO storeVO = this.baseMapper.getStoreDetail(currentUser.getStoreId());
storeVO.setNickName(currentUser.getNickName());
return storeVO;
}

View File

@ -6,7 +6,7 @@ import java.lang.annotation.*;
* 演示站点注解
*
* @author Bulbasaur
* @since: 2021/7/9 1:40 上午
* @since 2021/7/9 1:40 上午
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)

View File

@ -9,7 +9,7 @@ import java.io.Serializable;
* 经验值设置
*
* @author Bulbasaur
* @since: 2021/5/16 11:10 下午
* @since 2021/5/16 11:10 下午
*/
@Data
public class ExperienceSetting implements Serializable {

View File

@ -10,7 +10,7 @@ import java.io.Serializable;
* 秒杀活动设置
*
* @author Bulbasaur
* @since: 2021/5/24 3:27 下午
* @since 2021/5/24 3:27 下午
*/
@Data
public class SeckillSetting implements Serializable {

Some files were not shown because too many files have changed in this diff Show More