Merge branches 'clerk' and 'master' of https://gitee.com/beijing_hongye_huicheng/lilishop into clerk

This commit is contained in:
fengtianyangyang 2022-03-03 17:44:53 +08:00
commit 4d551366ed
284 changed files with 922 additions and 687 deletions

View File

@ -0,0 +1,2 @@
/** 新增已退货数量 **/
ALTER TABLE li_order_item ADD return_goods_number int DEFAULT 0 COMMENT '退货数量 ';

View File

@ -6,10 +6,13 @@
#### 欢迎交流需求,交流业务,交流技术(基础问题自行解决,进群先看文档后提问) #### 欢迎交流需求,交流业务,交流技术(基础问题自行解决,进群先看文档后提问)
##### 交流 qq 1群 961316482已满 ##### 交流 qq 1群 961316482已满
<a target="_blank" href="https://qm.qq.com/cgi-bin/qm/qr?k=BAhURE3DG2YWhQk6kRxVapbLykqMoPS8&jump_from=webapi"><img border="0" src="https://pub.idqqimg.com/wpa/images/group.png" alt="Lilishop交流群" title="Lilishop交流群">点击快捷加群</a>
##### 交流 qq 2群 875294241 ##### 交流 qq 2群 875294241
<a target="_blank" href="https://qm.qq.com/cgi-bin/qm/qr?k=_lrekOvr5k2p5uTn5GRidI-chKEmpCX3&jump_from=webapi"><img border="0" src="https://pub.idqqimg.com/wpa/images/group.png" alt="Lilishop交流群2群" title="Lilishop交流群2群">点击快捷加群</a>
##### 体验 公众号/小程序/APP 体验,扫描二维码 ##### 体验 公众号/小程序/APP 体验,扫描二维码

View File

@ -29,6 +29,7 @@ public class BuyerApiApplication {
public static void main(String[] args) { public static void main(String[] args) {
System.setProperty("es.set.netty.runtime.available.processors", "false"); System.setProperty("es.set.netty.runtime.available.processors", "false");
System.setProperty("rocketmq.client.logUseSlf4j","true");
SpringApplication.run(BuyerApiApplication.class, args); SpringApplication.run(BuyerApiApplication.class, args);
} }
} }

View File

@ -24,7 +24,7 @@ import org.springframework.web.bind.annotation.*;
*/ */
@RestController @RestController
@Api(tags = "买家端,分销员接口") @Api(tags = "买家端,分销员接口")
@RequestMapping("/buyer/distribution") @RequestMapping("/buyer/distribution/distribution")
public class DistributionBuyerController { public class DistributionBuyerController {
/** /**

View File

@ -30,7 +30,7 @@ import javax.validation.constraints.NotNull;
*/ */
@RestController @RestController
@Api(tags = "买家端,分销商品接口") @Api(tags = "买家端,分销商品接口")
@RequestMapping("/buyer/distributionGoods") @RequestMapping("/buyer/distribution/goods")
public class DistributionGoodsBuyerController { public class DistributionGoodsBuyerController {
/** /**

View File

@ -25,7 +25,7 @@ import java.util.List;
*/ */
@RestController @RestController
@Api(tags = "买家端,商品分类接口") @Api(tags = "买家端,商品分类接口")
@RequestMapping("/buyer/category") @RequestMapping("/buyer/goods/category")
public class CategoryBuyerController { public class CategoryBuyerController {
/** /**
* 商品分类 * 商品分类

View File

@ -43,7 +43,7 @@ import java.util.Map;
@Slf4j @Slf4j
@Api(tags = "买家端,商品接口") @Api(tags = "买家端,商品接口")
@RestController @RestController
@RequestMapping("/buyer/goods") @RequestMapping("/buyer/goods/goods")
public class GoodsBuyerController { public class GoodsBuyerController {
/** /**

View File

@ -23,7 +23,7 @@ import java.util.List;
*/ */
@RestController @RestController
@Api(tags = "买家端,浏览历史接口") @Api(tags = "买家端,浏览历史接口")
@RequestMapping("/buyer/footprint") @RequestMapping("/buyer/member/footprint")
public class FootprintController { public class FootprintController {
/** /**

View File

@ -26,7 +26,7 @@ import java.util.Objects;
*/ */
@RestController @RestController
@Api(tags = "买家端,会员地址接口") @Api(tags = "买家端,会员地址接口")
@RequestMapping("/buyer/memberAddress") @RequestMapping("/buyer/member/address")
public class MemberAddressBuyerController { public class MemberAddressBuyerController {
/** /**

View File

@ -29,7 +29,7 @@ import javax.validation.constraints.NotNull;
*/ */
@RestController @RestController
@Api(tags = "买家端,会员商品评价接口") @Api(tags = "买家端,会员商品评价接口")
@RequestMapping("/buyer/memberEvaluation") @RequestMapping("/buyer/member/evaluation")
public class MemberEvaluationBuyerController { public class MemberEvaluationBuyerController {
/** /**

View File

@ -23,7 +23,7 @@ import org.springframework.web.bind.annotation.*;
*/ */
@RestController @RestController
@Api(tags = "买家端,会员站内消息接口") @Api(tags = "买家端,会员站内消息接口")
@RequestMapping("/buyer/member/message") @RequestMapping("/buyer/message/member")
public class MemberMessageBuyerController { public class MemberMessageBuyerController {
/** /**

View File

@ -36,7 +36,7 @@ import java.util.List;
*/ */
@RestController @RestController
@Api(tags = "买家端,售后管理接口") @Api(tags = "买家端,售后管理接口")
@RequestMapping("/buyer/afterSale") @RequestMapping("/buyer/order/afterSale")
public class AfterSaleBuyerController { public class AfterSaleBuyerController {
/** /**

View File

@ -35,7 +35,7 @@ import java.util.Objects;
*/ */
@RestController @RestController
@Api(tags = "买家端,订单接口") @Api(tags = "买家端,订单接口")
@RequestMapping("/buyer/orders") @RequestMapping("/buyer/order/order")
public class OrderBuyerController { public class OrderBuyerController {
/** /**

View File

@ -34,7 +34,7 @@ import java.util.Objects;
**/ **/
@RestController @RestController
@Api(tags = "买家端,交易投诉接口") @Api(tags = "买家端,交易投诉接口")
@RequestMapping("/buyer/complain") @RequestMapping("/buyer/order/complain")
public class OrderComplaintBuyerController { public class OrderComplaintBuyerController {
/** /**

View File

@ -10,7 +10,6 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;

View File

@ -25,7 +25,7 @@ import org.springframework.web.bind.annotation.RestController;
*/ */
@RestController @RestController
@Api(tags = "买家端,APP版本") @Api(tags = "买家端,APP版本")
@RequestMapping("/buyer/appVersion") @RequestMapping("/buyer/other/appVersion")
public class AppVersionBuyerController { public class AppVersionBuyerController {
@Autowired @Autowired

View File

@ -29,7 +29,7 @@ import java.util.List;
*/ */
@RestController @RestController
@Api(tags = "买家端,文章接口") @Api(tags = "买家端,文章接口")
@RequestMapping("/buyer/article") @RequestMapping("/buyer/other/article")
public class ArticleBuyerController { public class ArticleBuyerController {
/** /**

View File

@ -23,7 +23,7 @@ import javax.validation.Valid;
*/ */
@RestController @RestController
@Api(tags = "买家端,意见反馈接口") @Api(tags = "买家端,意见反馈接口")
@RequestMapping("/buyer/feedback") @RequestMapping("/buyer/other/feedback")
public class FeedbackBuyerController { public class FeedbackBuyerController {
/** /**

View File

@ -21,7 +21,7 @@ import java.util.List;
*/ */
@RestController @RestController
@Api(tags = "买家端,物流公司接口") @Api(tags = "买家端,物流公司接口")
@RequestMapping("/buyer/logistics") @RequestMapping("/buyer/other/logistics")
public class LogisticsBuyerController { public class LogisticsBuyerController {
@Autowired @Autowired

View File

@ -22,7 +22,7 @@ import org.springframework.web.bind.annotation.RestController;
*/ */
@RestController @RestController
@Api(tags = "买家端,页面接口") @Api(tags = "买家端,页面接口")
@RequestMapping("/buyer/pageData") @RequestMapping("/buyer/other/pageData")
public class PageBuyerController { public class PageBuyerController {
/** /**

View File

@ -30,7 +30,7 @@ import javax.validation.constraints.NotNull;
*/ */
@Api(tags = "买家端,采购接口") @Api(tags = "买家端,采购接口")
@RestController @RestController
@RequestMapping("/buyer/purchase") @RequestMapping("/buyer/other/purchase/purchase")
public class PurchaseBuyerController { public class PurchaseBuyerController {
/** /**

View File

@ -27,7 +27,7 @@ import java.util.List;
*/ */
@Api(tags = "买家端,采购报价接口") @Api(tags = "买家端,采购报价接口")
@RestController @RestController
@RequestMapping("/buyer/purchaseQuoted") @RequestMapping("/buyer/other/purchase/purchaseQuoted")
public class PurchaseQuotedController { public class PurchaseQuotedController {
/** /**

View File

@ -32,7 +32,7 @@ import javax.validation.constraints.NotNull;
*/ */
@RestController @RestController
@Api(tags = "买家端,会员接口") @Api(tags = "买家端,会员接口")
@RequestMapping("/buyer/members") @RequestMapping("/buyer/passport/member")
public class MemberBuyerController { public class MemberBuyerController {
@Autowired @Autowired

View File

@ -21,7 +21,7 @@ import java.util.List;
*/ */
@RestController @RestController
@Api(tags = "买家端,app/小程序 联合登录") @Api(tags = "买家端,app/小程序 联合登录")
@RequestMapping("/buyer/connect/bind") @RequestMapping("/buyer/passport/connect/bind")
public class ConnectBuyerBindController { public class ConnectBuyerBindController {
@Autowired @Autowired

View File

@ -33,7 +33,7 @@ import java.io.IOException;
@Slf4j @Slf4j
@RestController @RestController
@Api(tags = "买家端,web联合登录") @Api(tags = "买家端,web联合登录")
@RequestMapping("/buyer/connect") @RequestMapping("/buyer/passport/connect/connect")
public class ConnectBuyerWebController { public class ConnectBuyerWebController {
@Autowired @Autowired

View File

@ -26,7 +26,7 @@ import java.util.List;
* @since 2021/2/19 09:28 * @since 2021/2/19 09:28
*/ */
@RestController @RestController
@RequestMapping("/buyer/mini-program") @RequestMapping("/buyer/passport/connect/miniProgram")
@Api(tags = "买家端,小程序登录接口") @Api(tags = "买家端,小程序登录接口")
public class MiniProgramBuyerController { public class MiniProgramBuyerController {

View File

@ -30,7 +30,7 @@ import javax.servlet.http.HttpServletResponse;
@Slf4j @Slf4j
@RestController @RestController
@Api(tags = "买家端,收银台接口") @Api(tags = "买家端,收银台接口")
@RequestMapping("/buyer/cashier") @RequestMapping("/buyer/payment/cashier")
public class CashierController { public class CashierController {
@Autowired @Autowired

View File

@ -20,7 +20,7 @@ import javax.servlet.http.HttpServletRequest;
*/ */
@Api(tags = "买家端,退款回调") @Api(tags = "买家端,退款回调")
@RestController @RestController
@RequestMapping("/buyer/cashier/refund") @RequestMapping("/buyer/payment/cashierRefund")
public class CashierRefundController { public class CashierRefundController {
@Autowired @Autowired

View File

@ -31,7 +31,7 @@ import java.util.List;
* @since 2020/11/17 2:32 下午 * @since 2020/11/17 2:32 下午
*/ */
@RestController @RestController
@RequestMapping("/buyer/store") @RequestMapping("/buyer/store/store")
@Api(tags = "买家端,店铺接口") @Api(tags = "买家端,店铺接口")
public class StoreBuyerController { public class StoreBuyerController {

View File

@ -24,7 +24,7 @@ import org.springframework.web.bind.annotation.*;
*/ */
@RestController @RestController
@Api(tags = "买家端,会员发票接口") @Api(tags = "买家端,会员发票接口")
@RequestMapping("/buyer/member/receipt") @RequestMapping("/buyer/wallet/receipt")
public class MemberReceiptController { public class MemberReceiptController {
@Autowired @Autowired

View File

@ -35,7 +35,7 @@ import javax.validation.constraints.Pattern;
*/ */
@RestController @RestController
@Api(tags = "买家端,会员余额接口") @Api(tags = "买家端,会员余额接口")
@RequestMapping("/buyer/members/wallet") @RequestMapping("/buyer/wallet/wallet")
public class MemberWalletBuyerController { public class MemberWalletBuyerController {
/** /**

View File

@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;

View File

@ -11,7 +11,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@ -24,7 +23,7 @@ import org.springframework.web.bind.annotation.RestController;
*/ */
@RestController @RestController
@Api(tags = "买家端,预存款充值记录接口") @Api(tags = "买家端,预存款充值记录接口")
@RequestMapping("/buyer/member/recharge") @RequestMapping("/buyer/wallet/recharge")
public class RechargeBuyerController { public class RechargeBuyerController {
@Autowired @Autowired

View File

@ -128,21 +128,23 @@ ignored:
- /MP_verify_qSyvBPhDsPdxvOhC.txt - /MP_verify_qSyvBPhDsPdxvOhC.txt
- /weixin/** - /weixin/**
- /source/** - /source/**
- /buyer/mini-program/** - /buyer/payment/cashier/**
- /buyer/cashier/** - /buyer/payment/cashierRefund/**
- /buyer/pageData/** - /buyer/other/pageData/**
- /buyer/article/** - /buyer/other/article/**
- /buyer/goods/** - /buyer/goods/**
- /buyer/category/**
- /buyer/store/** - /buyer/store/**
- /buyer/connect/** - /buyer/passport/connect/**
- /buyer/members/** - /buyer/members/**
- /buyer/passport/member/**
- /buyer/passport/member/refresh/**
- /buyer/promotion/pintuan/** - /buyer/promotion/pintuan/**
- /buyer/promotion/seckill/** - /buyer/promotion/seckill/**
- /buyer/promotion/pointsGoods/** - /buyer/promotion/pointsGoods/**
- /buyer/memberEvaluation/**/goodsEvaluation - /buyer/promotion/coupon
- /buyer/memberEvaluation/**/evaluationNumber - /buyer/member/evaluation/**/goodsEvaluation
- /buyer/appVersion/** - /buyer/member/evaluation/**/evaluationNumber
- /buyer/other/appVersion/**
- /buyer/broadcast/studio/** - /buyer/broadcast/studio/**
- /druid/** - /druid/**
- /swagger-ui.html - /swagger-ui.html
@ -183,7 +185,7 @@ logging:
config: classpath:logback-spring.xml config: classpath:logback-spring.xml
# 输出级别 # 输出级别
level: level:
root: error root: info
# org.springframework: debug # org.springframework: debug
file: file:
# 指定路径 # 指定路径

View File

@ -20,6 +20,23 @@
</encoder> </encoder>
</appender> </appender>
<appender name="RocketmqClientAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_FILE_PATH}/rocketmq.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE_PATH}/rocketmq/rocketmq-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
<totalSizeCap>30MB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
</encoder>
</appender>
<logger name="RocketmqClient" additivity="false">
<level value="info" />
<appender-ref ref="RocketmqClientAppender"/>
</logger>
<!--输出到elk的LOGSTASH--> <!--输出到elk的LOGSTASH-->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址--> <!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址-->

View File

@ -1,21 +0,0 @@
---
singleServerConfig:
idleConnectionTimeout: 10000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
password: lilishop
subscriptionsPerConnection: 5
clientName: null
address: "redis://127.0.0.1:6379"
subscriptionConnectionMinimumIdleSize: 1
subscriptionConnectionPoolSize: 50
connectionMinimumIdleSize: 24
connectionPoolSize: 64
database: 0
dnsMonitoringInterval: 5000
threads: 16
nettyThreads: 32
codec: !<org.redisson.codec.MarshallingCodec> {}
transportMode: "NIO"

View File

@ -15,6 +15,7 @@ import org.springframework.cache.annotation.EnableCaching;
public class CommonApiApplication { public class CommonApiApplication {
public static void main(String[] args) { public static void main(String[] args) {
System.setProperty("rocketmq.client.logUseSlf4j","true");
SpringApplication.run(CommonApiApplication.class, args); SpringApplication.run(CommonApiApplication.class, args);
} }

View File

@ -30,8 +30,8 @@ import java.util.List;
* @since 2020/11/26 15:41 * @since 2020/11/26 15:41
*/ */
@RestController @RestController
@Api(tags = "文件管理管理接口") @Api(tags = "文件管理接口")
@RequestMapping("/common/file") @RequestMapping("/common/common/file")
public class FileController { public class FileController {
@Autowired @Autowired

View File

@ -25,7 +25,7 @@ import org.springframework.web.bind.annotation.RestController;
* 2021-09-16 15:32 * 2021-09-16 15:32
*/ */
@RestController @RestController
@RequestMapping("/common/IM") @RequestMapping("/common/common/IM")
@Api(tags = "IM 中心") @Api(tags = "IM 中心")
public class IMController { public class IMController {
@ -39,7 +39,7 @@ public class IMController {
try { try {
Setting imSettingVal = settingService.get(SettingEnum.IM_SETTING.name()); Setting imSettingVal = settingService.get(SettingEnum.IM_SETTING.name());
ImSetting imSetting = JSONUtil.toBean(imSettingVal.getSettingValue(), ImSetting.class); ImSetting imSetting = JSONUtil.toBean(imSettingVal.getSettingValue(), ImSetting.class);
imUrl = imSetting.getHttpUrl() + "?tenant_id=" + imSetting.getTenantId()+"&merchant_euid="; imUrl = imSetting.getHttpUrl();
} catch (Exception e) { } catch (Exception e) {
throw new ServiceException(ResultCode.PLATFORM_NOT_SUPPORTED_IM); throw new ServiceException(ResultCode.PLATFORM_NOT_SUPPORTED_IM);
} }

View File

@ -1,7 +1,7 @@
package cn.lili.controller.common; package cn.lili.controller.common;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.utils.IpHelper; import cn.lili.common.utils.IpHelper;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.vo.ResultMessage; import cn.lili.common.vo.ResultMessage;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -20,7 +20,7 @@ import javax.servlet.http.HttpServletRequest;
*/ */
@RestController @RestController
@Api(tags = "获取IP信息以及天气") @Api(tags = "获取IP信息以及天气")
@RequestMapping("/common/ip") @RequestMapping("/common/common/ip")
public class IpInfoManagerController { public class IpInfoManagerController {
@Autowired @Autowired
private IpHelper ipHelper; private IpHelper ipHelper;
@ -28,6 +28,7 @@ public class IpInfoManagerController {
@RequestMapping(value = "/info", method = RequestMethod.GET) @RequestMapping(value = "/info", method = RequestMethod.GET)
@ApiOperation(value = "IP及天气相关信息") @ApiOperation(value = "IP及天气相关信息")
public ResultMessage<Object> upload(HttpServletRequest request) { public ResultMessage<Object> upload(HttpServletRequest request) {
String result = ipHelper.getIpCity(request); String result = ipHelper.getIpCity(request);
return ResultUtil.data(result); return ResultUtil.data(result);
} }

View File

@ -19,8 +19,8 @@ import org.springframework.web.bind.annotation.RestController;
* @since 2020/11/26 15:41 * @since 2020/11/26 15:41
*/ */
@RestController @RestController
@Api(tags = "文件管理管理接口") @Api(tags = "文件管理接口")
@RequestMapping("/common/logo") @RequestMapping("/common/common/logo")
public class LogoController { public class LogoController {
@Autowired @Autowired

View File

@ -22,7 +22,7 @@ import java.util.List;
*/ */
@RestController @RestController
@Api(tags = "地址信息接口") @Api(tags = "地址信息接口")
@RequestMapping("/common/region") @RequestMapping("/common/common/region")
public class RegionController { public class RegionController {
@Autowired @Autowired

View File

@ -1,7 +1,6 @@
package cn.lili.controller.common; package cn.lili.controller.common;
import cn.lili.cache.limit.annotation.LimitPoint; import cn.lili.cache.limit.annotation.LimitPoint;
import cn.lili.common.aop.annotation.PreventDuplicateSubmissions;
import cn.lili.common.enums.ResultUtil; import cn.lili.common.enums.ResultUtil;
import cn.lili.common.vo.ResultMessage; import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.verification.entity.enums.VerificationEnums; import cn.lili.modules.verification.entity.enums.VerificationEnums;
@ -20,7 +19,7 @@ import org.springframework.web.bind.annotation.*;
*/ */
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping("/common/slider") @RequestMapping("/common/common/slider")
@Api(tags = "滑块验证码接口") @Api(tags = "滑块验证码接口")
public class SliderImageController { public class SliderImageController {

View File

@ -22,7 +22,7 @@ import org.springframework.web.bind.annotation.*;
*/ */
@RestController @RestController
@Api(tags = "短信验证码接口") @Api(tags = "短信验证码接口")
@RequestMapping("/common/sms") @RequestMapping("/common/common/sms")
public class SmsController { public class SmsController {
@Autowired @Autowired

View File

@ -5,7 +5,6 @@ import cn.lili.cache.Cache;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.enums.ResultUtil; import cn.lili.common.enums.ResultUtil;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
import cn.lili.common.properties.SystemSettingProperties;
import cn.lili.common.security.AuthUser; import cn.lili.common.security.AuthUser;
import cn.lili.common.security.context.UserContext; import cn.lili.common.security.context.UserContext;
import cn.lili.common.security.enums.UserEnums; import cn.lili.common.security.enums.UserEnums;
@ -40,7 +39,7 @@ import java.util.Objects;
@Slf4j @Slf4j
@RestController @RestController
@Api(tags = "文件上传接口") @Api(tags = "文件上传接口")
@RequestMapping("/common/upload") @RequestMapping("/common/common/upload")
public class UploadController { public class UploadController {
@Autowired @Autowired

View File

@ -119,24 +119,8 @@ ignored:
- /MP_verify_qSyvBPhDsPdxvOhC.txt - /MP_verify_qSyvBPhDsPdxvOhC.txt
- /weixin/** - /weixin/**
- /source/** - /source/**
- /buyer/mini-program/** - /common/common/slider/**
- /buyer/cashier/** - /common/common/sms/**
- /buyer/pageData/**
- /buyer/article/**
- /buyer/goods/**
- /buyer/category/**
- /buyer/shop/**
- /buyer/connect/**
- /buyer/members/smsLogin
- /buyer/members/refresh/*
- /buyer/members/refresh**
- /buyer/promotion/pintuan
- /buyer/promotion/seckill
- /buyer/memberEvaluation/**/goodsEvaluation
- /buyer/memberEvaluation/**/evaluationNumber
- /store/login/**
- /manager/user/login
- /manager/user/refresh/**
- /druid/** - /druid/**
- /swagger-ui.html - /swagger-ui.html
- /doc.html - /doc.html
@ -176,7 +160,7 @@ logging:
config: classpath:logback-spring.xml config: classpath:logback-spring.xml
# 输出级别 # 输出级别
level: level:
root: error root: info
# org.hibernate: debug # org.hibernate: debug
# org.springframework: debug # org.springframework: debug
file: file:

View File

@ -20,6 +20,22 @@
</encoder> </encoder>
</appender> </appender>
<appender name="RocketmqClientAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_FILE_PATH}/rocketmq.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE_PATH}/rocketmq/rocketmq-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
<totalSizeCap>30MB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
</encoder>
</appender>
<logger name="RocketmqClient" additivity="false">
<level value="info" />
<appender-ref ref="RocketmqClientAppender"/>
</logger>
<!--输出到elk的LOGSTASH--> <!--输出到elk的LOGSTASH-->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址--> <!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址-->

View File

@ -1,21 +0,0 @@
---
singleServerConfig:
idleConnectionTimeout: 10000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
password: lilishop
subscriptionsPerConnection: 5
clientName: null
address: "redis://127.0.0.1:6379"
subscriptionConnectionMinimumIdleSize: 1
subscriptionConnectionPoolSize: 50
connectionMinimumIdleSize: 24
connectionPoolSize: 64
database: 0
dnsMonitoringInterval: 5000
threads: 16
nettyThreads: 32
codec: !<org.redisson.codec.MarshallingCodec> {}
transportMode: "NIO"

View File

@ -124,26 +124,31 @@ ignored:
- /MP_verify_qSyvBPhDsPdxvOhC.txt - /MP_verify_qSyvBPhDsPdxvOhC.txt
- /weixin/** - /weixin/**
- /source/** - /source/**
- /buyer/mini-program/** - /store/passport/login/**
- /buyer/cashier/** - /store/passport/login/refresh/**
- /buyer/pageData/** - /common/common/slider/**
- /buyer/article/** - /common/common/sms/**
- /buyer/payment/cashier/**
- /buyer/other/pageData/**
- /buyer/other/article/**
- /buyer/goods/** - /buyer/goods/**
- /buyer/category/**
- /buyer/store/** - /buyer/store/**
- /buyer/connect/** - /buyer/passport/connect/**
- /buyer/members/** - /buyer/members/**
- /buyer/passport/member/**
- /buyer/passport/member/refresh/**
- /buyer/promotion/pintuan/** - /buyer/promotion/pintuan/**
- /buyer/promotion/seckill/** - /buyer/promotion/seckill/**
- /buyer/promotion/pointsGoods/** - /buyer/promotion/pointsGoods/**
- /buyer/promotion/coupon - /buyer/promotion/coupon
- /buyer/memberEvaluation/**/goodsEvaluation - /buyer/member/evaluation/**/goodsEvaluation
- /buyer/memberEvaluation/**/evaluationNumber - /buyer/member/evaluation/**/evaluationNumber
- /buyer/appVersion/** - /buyer/other/appVersion/**
- /buyer/broadcast/studio/** - /buyer/broadcast/studio/**
- /store/login/** - /manager/passport/user/login
- /manager/user/login - /manager/passport/user/refresh/**
- /manager/user/refresh/** - /manager/other/elasticsearch
- /manager/other/customWords
- /druid/** - /druid/**
- /swagger-ui.html - /swagger-ui.html
- /doc.html - /doc.html
@ -183,7 +188,7 @@ mybatis-plus:
logging: logging:
# 输出级别 # 输出级别
level: level:
root: info cn.lili: info
# org.hibernate: debug # org.hibernate: debug
# org.springframework: debug # org.springframework: debug
# org.springframework.data.mongodb.core: debug # org.springframework.data.mongodb.core: debug
@ -232,7 +237,7 @@ lili:
# 0不做脱敏处理 # 0不做脱敏处理
# 1管理端用户手机号等信息脱敏 # 1管理端用户手机号等信息脱敏
# 2商家端信息脱敏为2时表示管理端商家端同时脱敏 # 2商家端信息脱敏为2时表示管理端商家端同时脱敏
# sensitiveLevel: 2 sensitiveLevel: 1
statistics: statistics:
# 在线人数统计 X 小时。这里设置48即统计过去48小时每小时在线人数 # 在线人数统计 X 小时。这里设置48即统计过去48小时每小时在线人数
@ -302,9 +307,10 @@ lili:
notice-group: lili_notice_group notice-group: lili_notice_group
notice-send-topic: lili_send_notice_topic notice-send-topic: lili_send_notice_topic
notice-send-group: lili_send_notice_group notice-send-group: lili_send_notice_group
after-sale-topic: lili_after_sale_topic
after-sale-group: lili_after_sale_group
rocketmq: rocketmq:
name-server: 192.168.0.116:9876 name-server: 192.168.0.116:9876
namesrvAddr: 192.168.0.116:9876
isVIPChannel: false isVIPChannel: false
producer: producer:
group: lili_group group: lili_group

View File

@ -14,6 +14,7 @@ public class ConsumerApplication {
public static void main(String[] args) { public static void main(String[] args) {
System.setProperty("es.set.netty.runtime.available.processors", "false"); System.setProperty("es.set.netty.runtime.available.processors", "false");
System.setProperty("rocketmq.client.logUseSlf4j","true");
SpringApplication.run(ConsumerApplication.class, args); SpringApplication.run(ConsumerApplication.class, args);
} }

View File

@ -25,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.script.DefaultRedisScript; import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -79,6 +80,7 @@ public class StockUpdateExecute implements OrderStatusChangeEvent {
private PointsGoodsService pointsGoodsService; private PointsGoodsService pointsGoodsService;
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void orderChange(OrderMessage orderMessage) { public void orderChange(OrderMessage orderMessage) {
switch (orderMessage.getNewStatus()) { switch (orderMessage.getNewStatus()) {
@ -330,7 +332,7 @@ public class StockUpdateExecute implements OrderStatusChangeEvent {
Integer num = promotionGoods.get(i).getNum(); Integer num = promotionGoods.get(i).getNum();
promotionGoods.get(i).setNum((num != null ? num : 0) + order.getOrder().getGoodsNum()); promotionGoods.get(i).setNum((num != null ? num : 0) + order.getOrder().getGoodsNum());
} }
promotionGoodsService.updateBatchById(promotionGoods); promotionGoodsService.updatePromotionGoodsStock(promotionGoods);
} }
//商品库存包含sku库存集合批量更新商品库存相关 //商品库存包含sku库存集合批量更新商品库存相关
goodsSkuService.updateGoodsStuck(goodsSkus); goodsSkuService.updateGoodsStuck(goodsSkus);

View File

@ -0,0 +1,18 @@
package cn.lili.sucurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.stereotype.Component;
/**
* @author paulG
* @since 2022/2/18
**/
@Component
public class ConsumerSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.formLogin().disable();
}
}

View File

@ -8,6 +8,7 @@ import cn.lili.modules.system.entity.dto.SeckillSetting;
import cn.lili.modules.system.entity.enums.SettingEnum; import cn.lili.modules.system.entity.enums.SettingEnum;
import cn.lili.modules.system.service.SettingService; import cn.lili.modules.system.service.SettingService;
import cn.lili.timetask.handler.EveryDayExecute; import cn.lili.timetask.handler.EveryDayExecute;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.google.gson.Gson; import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -44,24 +45,40 @@ public class PromotionEverydayExecute implements EveryDayExecute {
*/ */
@Override @Override
public void execute() { public void execute() {
//清除所以商品索引的无效促销活动 try {
//清除所有商品索引的无效促销活动
this.esGoodsIndexService.cleanInvalidPromotion(); this.esGoodsIndexService.cleanInvalidPromotion();
} catch (Exception e) {
log.error("清楚商品索引中无效促销异常", e);
}
try {
//定时创建活动 //定时创建活动
addSeckill(); addSeckill();
} catch (Exception e) {
log.error("秒杀活动添加异常", e);
}
} }
/** /**
* 添加秒杀活动 * 添加秒杀活动
* 从系统设置中获取秒杀活动的配置 * 从系统设置中获取秒杀活动的配置
* 添加30天后的秒杀活动 * 添加天后的秒杀活动
*/ */
private void addSeckill() { private void addSeckill() {
Setting setting = settingService.get(SettingEnum.SECKILL_SETTING.name()); Setting setting = settingService.get(SettingEnum.SECKILL_SETTING.name());
SeckillSetting seckillSetting = new Gson().fromJson(setting.getSettingValue(), SeckillSetting.class); SeckillSetting seckillSetting = new Gson().fromJson(setting.getSettingValue(), SeckillSetting.class);
log.info("生成秒杀活动设置:{}", seckillSetting);
for (int i = 1; i <= SeckillService.PRE_CREATION; i++) { for (int i = 1; i <= SeckillService.PRE_CREATION; i++) {
Seckill seckill = new Seckill(i, seckillSetting.getHours(), seckillSetting.getSeckillRule()); Seckill seckill = new Seckill(i, seckillSetting.getHours(), seckillSetting.getSeckillRule());
seckillService.savePromotions(seckill);
LambdaQueryWrapper<Seckill> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(Seckill::getStartTime, seckill.getStartTime());
//如果已经存在促销则不再次保存
if (seckillService.list(lambdaQueryWrapper).isEmpty()) {
boolean result = seckillService.savePromotions(seckill);
log.info("生成秒杀活动参数:{},结果:{}", seckill, result);
}
} }
} }
} }

View File

@ -179,7 +179,7 @@ logging:
config: classpath:logback-spring.xml config: classpath:logback-spring.xml
# 输出级别 # 输出级别
level: level:
root: error root: info
# org.hibernate: debug # org.hibernate: debug
# org.springframework: debug # org.springframework: debug
file: file:

View File

@ -20,6 +20,22 @@
</encoder> </encoder>
</appender> </appender>
<appender name="RocketmqClientAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_FILE_PATH}/rocketmq.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE_PATH}/rocketmq/rocketmq-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
<totalSizeCap>30MB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
</encoder>
</appender>
<logger name="RocketmqClient" additivity="false">
<level value="info" />
<appender-ref ref="RocketmqClientAppender"/>
</logger>
<!--输出到elk的LOGSTASH--> <!--输出到elk的LOGSTASH-->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址--> <!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址-->

View File

@ -1,21 +0,0 @@
---
singleServerConfig:
idleConnectionTimeout: 10000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
password: lilishop
subscriptionsPerConnection: 5
clientName: null
address: "redis://127.0.0.1:6379"
subscriptionConnectionMinimumIdleSize: 1
subscriptionConnectionPoolSize: 50
connectionMinimumIdleSize: 24
connectionPoolSize: 64
database: 0
dnsMonitoringInterval: 5000
threads: 16
nettyThreads: 32
codec: !<org.redisson.codec.MarshallingCodec> {}
transportMode: "NIO"

View File

@ -1,12 +1,17 @@
package cn.lili.cache.config.redis; package cn.lili.cache.config.redis;
import cn.hutool.core.text.CharSequenceUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.parser.ParserConfig; import com.alibaba.fastjson.parser.ParserConfig;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
import org.redisson.Redisson; import org.redisson.Redisson;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
import org.redisson.config.ClusterServersConfig;
import org.redisson.config.Config; import org.redisson.config.Config;
import org.redisson.config.SentinelServersConfig;
import org.redisson.config.SingleServerConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@ -20,7 +25,6 @@ import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary; import org.springframework.context.annotation.Primary;
import org.springframework.core.io.ClassPathResource;
import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.cache.RedisCacheWriter; import org.springframework.data.redis.cache.RedisCacheWriter;
@ -31,9 +35,10 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializationContext; import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer;
import java.io.IOException;
import java.time.Duration; import java.time.Duration;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@ -54,6 +59,9 @@ public class RedisConfig extends CachingConfigurerSupport {
@Value("${lili.cache.timeout:7200}") @Value("${lili.cache.timeout:7200}")
private Integer timeout; private Integer timeout;
@Autowired
private RedisProperties redisProperties;
/** /**
* 当有多个管理器的时候必须使用该注解在一个管理器上注释表示该管理器为默认的管理器 * 当有多个管理器的时候必须使用该注解在一个管理器上注释表示该管理器为默认的管理器
@ -105,9 +113,41 @@ public class RedisConfig extends CachingConfigurerSupport {
} }
@Bean(destroyMethod = "shutdown") @Bean(destroyMethod = "shutdown")
public RedissonClient redisson() throws IOException { public RedissonClient redisson() {
return Redisson.create( Config config = new Config();
Config.fromYAML(new ClassPathResource("redisson.yaml").getInputStream()));
if (redisProperties.getSentinel() != null && !redisProperties.getSentinel().getNodes().isEmpty()) {
// 哨兵模式
SentinelServersConfig sentinelServersConfig = config.useSentinelServers();
sentinelServersConfig.setMasterName(redisProperties.getSentinel().getMaster());
List<String> sentinelAddress = new ArrayList<>();
for (String node : redisProperties.getCluster().getNodes()) {
sentinelAddress.add("redis://" + node);
}
sentinelServersConfig.setSentinelAddresses(sentinelAddress);
if (CharSequenceUtil.isNotEmpty(redisProperties.getSentinel().getPassword())) {
sentinelServersConfig.setSentinelPassword(redisProperties.getSentinel().getPassword());
}
} else if (redisProperties.getCluster() != null && !redisProperties.getCluster().getNodes().isEmpty()) {
// 集群模式
ClusterServersConfig clusterServersConfig = config.useClusterServers();
List<String> clusterNodes = new ArrayList<>();
for (String node : redisProperties.getCluster().getNodes()) {
clusterNodes.add("redis://" + node);
}
clusterServersConfig.setNodeAddresses(clusterNodes);
if (CharSequenceUtil.isNotEmpty(redisProperties.getPassword())) {
clusterServersConfig.setPassword(redisProperties.getPassword());
}
} else {
SingleServerConfig singleServerConfig = config.useSingleServer();
singleServerConfig.setAddress("redis://" + redisProperties.getHost() + ":" + redisProperties.getPort());
if (CharSequenceUtil.isNotEmpty(redisProperties.getPassword())) {
singleServerConfig.setPassword(redisProperties.getPassword());
}
}
return Redisson.create(config);
} }
/** /**

View File

@ -1,7 +1,7 @@
package cn.lili.cache.limit.interceptor; package cn.lili.cache.limit.interceptor;
import cn.lili.cache.limit.enums.LimitTypeEnums;
import cn.lili.cache.limit.annotation.LimitPoint; import cn.lili.cache.limit.annotation.LimitPoint;
import cn.lili.cache.limit.enums.LimitTypeEnums;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
import cn.lili.common.utils.IpUtils; import cn.lili.common.utils.IpUtils;
@ -17,7 +17,6 @@ import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.io.Serializable; import java.io.Serializable;
/** /**

View File

@ -1,7 +1,6 @@
package cn.lili.common.aop.annotation; package cn.lili.common.aop.annotation;
import java.lang.annotation.*; import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;
/** /**
* 防止重复提交注解 * 防止重复提交注解

View File

@ -26,7 +26,7 @@ public class DemoInterceptor {
@Before("@annotation(demoSite)") @Before("@annotation(demoSite)")
public void doAfter(DemoSite demoSite) { public void doAfter(DemoSite demoSite) {
if (systemSettingProperties.getIsDemoSite()) { if (Boolean.TRUE.equals(systemSettingProperties.getIsDemoSite())) {
throw new ServiceException(ResultCode.DEMO_SITE_EXCEPTION); throw new ServiceException(ResultCode.DEMO_SITE_EXCEPTION);
} }
} }

View File

@ -257,6 +257,7 @@ public enum ResultCode {
* 活动 * 活动
*/ */
PROMOTION_GOODS_NOT_EXIT(40000, "当前促销商品不存在!"), PROMOTION_GOODS_NOT_EXIT(40000, "当前促销商品不存在!"),
PROMOTION_GOODS_QUANTITY_NOT_EXIT(40020, "当前促销商品库存不足!"),
PROMOTION_SAME_ACTIVE_EXIST(40001, "活动时间内已存在同类活动,请选择关闭、删除当前时段的活动"), PROMOTION_SAME_ACTIVE_EXIST(40001, "活动时间内已存在同类活动,请选择关闭、删除当前时段的活动"),
PROMOTION_START_TIME_ERROR(40002, "活动起始时间不能小于当前时间"), PROMOTION_START_TIME_ERROR(40002, "活动起始时间不能小于当前时间"),
PROMOTION_END_TIME_ERROR(40003, "活动结束时间不能小于当前时间"), PROMOTION_END_TIME_ERROR(40003, "活动结束时间不能小于当前时间"),

View File

@ -77,6 +77,11 @@ public class SensitiveWordsFilter implements Serializable {
int step = 1; int step = 1;
//计算此位置开始2个字符的hash //计算此位置开始2个字符的hash
int hash = sp.nextTwoCharHash(i); int hash = sp.nextTwoCharHash(i);
//如果没有敏感词则直接返回内容
if (nodes.length == 0) {
return sentence;
}
/* /*
* 根据hash获取第一个节点 * 根据hash获取第一个节点
* 真正匹配的节点可能不是第一个 * 真正匹配的节点可能不是第一个

View File

@ -1,15 +1,11 @@
package cn.lili.common.utils; package cn.lili.common.utils;
import cn.lili.cache.Cache; import cn.lili.cache.Cache;
import com.alibaba.fastjson.JSON;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.util.concurrent.TimeUnit;
/** /**
* SnowflakeInitiator * SnowflakeInitiator
@ -25,7 +21,7 @@ public class SnowflakeInitiator {
/** /**
* 缓存前缀 * 缓存前缀
*/ */
private static String KEY = "{Snowflake}"; private static final String KEY = "{Snowflake}";
@Autowired @Autowired
private Cache cache; private Cache cache;

View File

@ -1,5 +1,6 @@
package cn.lili.modules.connect.serviceimpl; package cn.lili.modules.connect.serviceimpl;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import cn.lili.cache.Cache; import cn.lili.cache.Cache;
@ -13,7 +14,6 @@ import cn.lili.common.security.context.UserContext;
import cn.lili.common.security.token.Token; import cn.lili.common.security.token.Token;
import cn.lili.common.utils.CookieUtil; import cn.lili.common.utils.CookieUtil;
import cn.lili.common.utils.HttpUtils; import cn.lili.common.utils.HttpUtils;
import cn.lili.common.utils.StringUtils;
import cn.lili.modules.connect.entity.Connect; import cn.lili.modules.connect.entity.Connect;
import cn.lili.modules.connect.entity.dto.ConnectAuthUser; import cn.lili.modules.connect.entity.dto.ConnectAuthUser;
import cn.lili.modules.connect.entity.dto.WechatMPLoginParams; import cn.lili.modules.connect.entity.dto.WechatMPLoginParams;
@ -35,6 +35,7 @@ import lombok.extern.slf4j.Slf4j;
import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.crypto.Cipher; import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.IvParameterSpec;
@ -55,6 +56,7 @@ import java.util.concurrent.TimeUnit;
@Service @Service
public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> implements ConnectService { public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> implements ConnectService {
static final boolean AUTO_REGION = true;
@Autowired @Autowired
private SettingService settingService; private SettingService settingService;
@ -65,10 +67,8 @@ public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> impl
@Autowired @Autowired
private Cache cache; private Cache cache;
static boolean AUTO_REGION = true;
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Token unionLoginCallback(String type, String unionid, String uuid, boolean longTerm) throws NoPermissionException { public Token unionLoginCallback(String type, String unionid, String uuid, boolean longTerm) throws NoPermissionException {
try { try {
@ -94,6 +94,7 @@ public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> impl
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Token unionLoginCallback(String type, ConnectAuthUser authUser, String uuid) { public Token unionLoginCallback(String type, ConnectAuthUser authUser, String uuid) {
Token token; Token token;
@ -126,6 +127,7 @@ public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> impl
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void unbind(String type) { public void unbind(String type) {
LambdaQueryWrapper<Connect> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Connect> queryWrapper = new LambdaQueryWrapper<>();
@ -142,13 +144,12 @@ public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> impl
queryWrapper.eq(Connect::getUserId, UserContext.getCurrentUser().getId()); queryWrapper.eq(Connect::getUserId, UserContext.getCurrentUser().getId());
List<Connect> connects = this.list(queryWrapper); List<Connect> connects = this.list(queryWrapper);
List<String> keys = new ArrayList<>(); List<String> keys = new ArrayList<>();
connects.forEach(item -> { connects.forEach(item -> keys.add(item.getUnionType()));
keys.add(item.getUnionType());
});
return keys; return keys;
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Token appLoginCallback(ConnectAuthUser authUser, String uuid) { public Token appLoginCallback(ConnectAuthUser authUser, String uuid) {
try { try {
return this.unionLoginCallback(authUser.getSource(), authUser.getUuid(), uuid, true); return this.unionLoginCallback(authUser.getSource(), authUser.getUuid(), uuid, true);
@ -209,6 +210,7 @@ public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> impl
* @param unionId 微信unionid * @param unionId 微信unionid
* @return * @return
*/ */
@Transactional(rollbackFor = Exception.class)
public Token phoneMpBindAndLogin(String sessionKey, WechatMPLoginParams params, String openId, String unionId) { public Token phoneMpBindAndLogin(String sessionKey, WechatMPLoginParams params, String openId, String unionId) {
String encryptedData = params.getEncryptedData(), iv = params.getIv(); String encryptedData = params.getEncryptedData(), iv = params.getIv();
JSONObject userInfo = this.getUserInfo(encryptedData, sessionKey, iv); JSONObject userInfo = this.getUserInfo(encryptedData, sessionKey, iv);
@ -237,9 +239,9 @@ public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> impl
public Connect queryConnect(ConnectQueryDTO connectQueryDTO) { public Connect queryConnect(ConnectQueryDTO connectQueryDTO) {
LambdaQueryWrapper<Connect> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Connect> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(StringUtils.isNotEmpty(connectQueryDTO.getUserId()), Connect::getUserId, connectQueryDTO.getUserId()) queryWrapper.eq(CharSequenceUtil.isNotEmpty(connectQueryDTO.getUserId()), Connect::getUserId, connectQueryDTO.getUserId())
.eq(StringUtils.isNotEmpty(connectQueryDTO.getUnionType()), Connect::getUnionType, connectQueryDTO.getUnionType()) .eq(CharSequenceUtil.isNotEmpty(connectQueryDTO.getUnionType()), Connect::getUnionType, connectQueryDTO.getUnionType())
.eq(StringUtils.isNotEmpty(connectQueryDTO.getUnionId()), Connect::getUnionId, connectQueryDTO.getUnionId()); .eq(CharSequenceUtil.isNotEmpty(connectQueryDTO.getUnionId()), Connect::getUnionId, connectQueryDTO.getUnionId());
return this.getOne(queryWrapper); return this.getOne(queryWrapper);
} }
@ -258,7 +260,7 @@ public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> impl
//如果unionid 不为空 则为账号绑定unionid //如果unionid 不为空 则为账号绑定unionid
if (StringUtils.isNotEmpty(unionId)) { if (CharSequenceUtil.isNotEmpty(unionId)) {
LambdaQueryWrapper<Connect> lambdaQueryWrapper = new LambdaQueryWrapper(); LambdaQueryWrapper<Connect> lambdaQueryWrapper = new LambdaQueryWrapper();
lambdaQueryWrapper.eq(Connect::getUnionId, unionId); lambdaQueryWrapper.eq(Connect::getUnionId, unionId);
lambdaQueryWrapper.eq(Connect::getUnionType, ConnectEnum.WECHAT.name()); lambdaQueryWrapper.eq(Connect::getUnionType, ConnectEnum.WECHAT.name());
@ -271,12 +273,12 @@ public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> impl
this.save(connect); this.save(connect);
} }
}//如果openid 不为空 则为账号绑定openid }//如果openid 不为空 则为账号绑定openid
if (StringUtils.isNotEmpty(openId)) { if (CharSequenceUtil.isNotEmpty(openId)) {
LambdaQueryWrapper<Connect> lambdaQueryWrapper = new LambdaQueryWrapper(); LambdaQueryWrapper<Connect> lambdaQueryWrapper = new LambdaQueryWrapper();
lambdaQueryWrapper.eq(Connect::getUnionId, openId); lambdaQueryWrapper.eq(Connect::getUnionId, openId);
lambdaQueryWrapper.eq(Connect::getUnionType, ConnectEnum.WECHAT_MP_OPEN_ID.name()); lambdaQueryWrapper.eq(Connect::getUnionType, ConnectEnum.WECHAT_MP_OPEN_ID.name());
List<Connect> connects = this.list(lambdaQueryWrapper); List<Connect> connects = this.list(lambdaQueryWrapper);
if (connects.size() == 0) { if (connects.isEmpty()) {
Connect connect = new Connect(); Connect connect = new Connect();
connect.setUnionId(openId); connect.setUnionId(openId);
connect.setUserId(member.getId()); connect.setUserId(member.getId());
@ -290,7 +292,7 @@ public class ConnectServiceImpl extends ServiceImpl<ConnectMapper, Connect> impl
/** /**
* 获取微信小程序配置 * 获取微信小程序配置
* *
* @return * @return 微信小程序配置
*/ */
private WechatConnectSettingItem getWechatMPSetting() { private WechatConnectSettingItem getWechatMPSetting() {
Setting setting = settingService.get(SettingEnum.WECHAT_CONNECT.name()); Setting setting = settingService.get(SettingEnum.WECHAT_CONNECT.name());

View File

@ -3,22 +3,22 @@ package cn.lili.modules.connect.util;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import cn.lili.cache.Cache; import cn.lili.cache.Cache;
import cn.lili.cache.CachePrefix; import cn.lili.cache.CachePrefix;
import cn.lili.common.enums.ClientTypeEnum;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.enums.ResultUtil; import cn.lili.common.enums.ResultUtil;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
import cn.lili.common.security.token.Token;
import cn.lili.common.vo.ResultMessage;
import cn.lili.common.properties.ApiProperties; import cn.lili.common.properties.ApiProperties;
import cn.lili.common.properties.DomainProperties; import cn.lili.common.properties.DomainProperties;
import cn.lili.common.enums.ClientTypeEnum; import cn.lili.common.security.token.Token;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.connect.config.AuthConfig; import cn.lili.modules.connect.config.AuthConfig;
import cn.lili.modules.connect.config.ConnectAuthEnum; import cn.lili.modules.connect.config.ConnectAuthEnum;
import cn.lili.modules.connect.entity.dto.AuthCallback; import cn.lili.modules.connect.entity.dto.AuthCallback;
import cn.lili.modules.connect.entity.dto.AuthResponse; import cn.lili.modules.connect.entity.dto.AuthResponse;
import cn.lili.modules.connect.entity.dto.ConnectAuthUser; import cn.lili.modules.connect.entity.dto.ConnectAuthUser;
import cn.lili.modules.connect.exception.AuthException; import cn.lili.modules.connect.exception.AuthException;
import cn.lili.modules.connect.request.BaseAuthQQRequest;
import cn.lili.modules.connect.request.AuthRequest; import cn.lili.modules.connect.request.AuthRequest;
import cn.lili.modules.connect.request.BaseAuthQQRequest;
import cn.lili.modules.connect.request.BaseAuthWeChatPCRequest; import cn.lili.modules.connect.request.BaseAuthWeChatPCRequest;
import cn.lili.modules.connect.request.BaseAuthWeChatRequest; import cn.lili.modules.connect.request.BaseAuthWeChatRequest;
import cn.lili.modules.connect.service.ConnectService; import cn.lili.modules.connect.service.ConnectService;
@ -62,7 +62,7 @@ public class ConnectUtil {
private DomainProperties domainProperties; private DomainProperties domainProperties;
static String prefix = "/buyer/connect/callback/"; static String prefix = "/buyer/passport/connect/connect/callback/";
/** /**
* 回调地址获取 * 回调地址获取

View File

@ -57,6 +57,7 @@ public class DistributionCashServiceImpl extends ServiceImpl<DistributionCashMap
private RocketmqCustomProperties rocketmqCustomProperties; private RocketmqCustomProperties rocketmqCustomProperties;
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean cash(Double applyMoney) { public Boolean cash(Double applyMoney) {
//检查分销功能开关 //检查分销功能开关
@ -75,7 +76,7 @@ public class DistributionCashServiceImpl extends ServiceImpl<DistributionCashMap
distributionService.updateById(distribution); distributionService.updateById(distribution);
//提现申请记录 //提现申请记录
DistributionCash distributionCash = new DistributionCash("D" + SnowFlake.getId(), distribution.getId(), applyMoney, distribution.getMemberName()); DistributionCash distributionCash = new DistributionCash("D" + SnowFlake.getId(), distribution.getId(), applyMoney, distribution.getMemberName());
Boolean result = this.save(distributionCash); boolean result = this.save(distributionCash);
if (result) { if (result) {
//发送提现消息 //发送提现消息
MemberWithdrawalMessage memberWithdrawalMessage = new MemberWithdrawalMessage(); MemberWithdrawalMessage memberWithdrawalMessage = new MemberWithdrawalMessage();
@ -109,6 +110,7 @@ public class DistributionCashServiceImpl extends ServiceImpl<DistributionCashMap
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public DistributionCash audit(String id, String result) { public DistributionCash audit(String id, String result) {
//检查分销功能开关 //检查分销功能开关
@ -120,7 +122,7 @@ public class DistributionCashServiceImpl extends ServiceImpl<DistributionCashMap
if (distributorCash != null) { if (distributorCash != null) {
//获取分销员 //获取分销员
Distribution distribution = distributionService.getById(distributorCash.getDistributionId()); Distribution distribution = distributionService.getById(distributorCash.getDistributionId());
if (distribution != null && distributorCash != null && distribution.getDistributionStatus().equals(DistributionStatusEnum.PASS.name())) { if (distribution != null && distribution.getDistributionStatus().equals(DistributionStatusEnum.PASS.name())) {
MemberWithdrawalMessage memberWithdrawalMessage = new MemberWithdrawalMessage(); MemberWithdrawalMessage memberWithdrawalMessage = new MemberWithdrawalMessage();
//审核通过 //审核通过
if (result.equals(WithdrawStatusEnum.VIA_AUDITING.name())) { if (result.equals(WithdrawStatusEnum.VIA_AUDITING.name())) {

View File

@ -21,7 +21,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;

View File

@ -79,6 +79,7 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
* @param orderSn 订单编号 * @param orderSn 订单编号
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void calculationDistribution(String orderSn) { public void calculationDistribution(String orderSn) {
//根据订单编号获取订单数据 //根据订单编号获取订单数据
@ -148,6 +149,7 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
* @param orderSn 订单编号 * @param orderSn 订单编号
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void cancelOrder(String orderSn) { public void cancelOrder(String orderSn) {
//根据订单编号获取订单数据 //根据订单编号获取订单数据
Order order = orderService.getBySn(orderSn); Order order = orderService.getBySn(orderSn);

View File

@ -8,7 +8,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/** /**
* 分销选择商品接口实现 * 分销选择商品接口实现

View File

@ -7,7 +7,6 @@ import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
import cn.lili.common.security.context.UserContext; import cn.lili.common.security.context.UserContext;
import cn.lili.common.utils.BeanUtil; import cn.lili.common.utils.BeanUtil;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.common.vo.PageVO; import cn.lili.common.vo.PageVO;
import cn.lili.modules.distribution.entity.dos.Distribution; import cn.lili.modules.distribution.entity.dos.Distribution;
import cn.lili.modules.distribution.entity.dto.DistributionApplyDTO; import cn.lili.modules.distribution.entity.dto.DistributionApplyDTO;
@ -21,6 +20,7 @@ import cn.lili.modules.system.entity.dos.Setting;
import cn.lili.modules.system.entity.dto.DistributionSetting; import cn.lili.modules.system.entity.dto.DistributionSetting;
import cn.lili.modules.system.entity.enums.SettingEnum; import cn.lili.modules.system.entity.enums.SettingEnum;
import cn.lili.modules.system.service.SettingService; import cn.lili.modules.system.service.SettingService;
import cn.lili.mybatis.util.PageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -69,6 +69,7 @@ public class DistributionServiceImpl extends ServiceImpl<DistributionMapper, Dis
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Distribution applyDistribution(DistributionApplyDTO distributionApplyDTO) { public Distribution applyDistribution(DistributionApplyDTO distributionApplyDTO) {
//检查分销开关 //检查分销开关
@ -173,7 +174,7 @@ public class DistributionServiceImpl extends ServiceImpl<DistributionMapper, Dis
//获取分销是否开启 //获取分销是否开启
Setting setting = settingService.get(SettingEnum.DISTRIBUTION_SETTING.name()); Setting setting = settingService.get(SettingEnum.DISTRIBUTION_SETTING.name());
DistributionSetting distributionSetting = JSONUtil.toBean(setting.getSettingValue(), DistributionSetting.class); DistributionSetting distributionSetting = JSONUtil.toBean(setting.getSettingValue(), DistributionSetting.class);
if (!distributionSetting.getIsOpen()) { if (Boolean.FALSE.equals(distributionSetting.getIsOpen())) {
throw new ServiceException(ResultCode.DISTRIBUTION_CLOSE); throw new ServiceException(ResultCode.DISTRIBUTION_CLOSE);
} }
} }

View File

@ -1,10 +1,9 @@
package cn.lili.modules.file.serviceimpl; package cn.lili.modules.file.serviceimpl;
import cn.hutool.core.text.CharSequenceUtil;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
import cn.lili.common.security.AuthUser; import cn.lili.common.security.AuthUser;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.common.utils.StringUtils;
import cn.lili.common.vo.PageVO; import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.SearchVO; import cn.lili.common.vo.SearchVO;
import cn.lili.modules.file.entity.File; import cn.lili.modules.file.entity.File;
@ -12,12 +11,12 @@ import cn.lili.modules.file.entity.dto.FileOwnerDTO;
import cn.lili.modules.file.mapper.FileMapper; import cn.lili.modules.file.mapper.FileMapper;
import cn.lili.modules.file.plugin.FileManagerPlugin; import cn.lili.modules.file.plugin.FileManagerPlugin;
import cn.lili.modules.file.service.FileService; import cn.lili.modules.file.service.FileService;
import cn.lili.mybatis.util.PageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -37,7 +36,7 @@ public class FileServiceImpl extends ServiceImpl<FileMapper, File> implements Fi
@Override @Override
public void batchDelete(List<String> ids) { public void batchDelete(List<String> ids) {
LambdaQueryWrapper<File> queryWrapper = new LambdaQueryWrapper(); LambdaQueryWrapper<File> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(File::getId, ids); queryWrapper.in(File::getId, ids);
List<File> files = this.list(queryWrapper); List<File> files = this.list(queryWrapper);
@ -49,7 +48,7 @@ public class FileServiceImpl extends ServiceImpl<FileMapper, File> implements Fi
@Override @Override
public void batchDelete(List<String> ids, AuthUser authUser) { public void batchDelete(List<String> ids, AuthUser authUser) {
LambdaQueryWrapper<File> queryWrapper = new LambdaQueryWrapper(); LambdaQueryWrapper<File> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(File::getId, ids); queryWrapper.in(File::getId, ids);
queryWrapper.eq(File::getUserEnums, authUser.getRole().name()); queryWrapper.eq(File::getUserEnums, authUser.getRole().name());
@ -76,26 +75,24 @@ public class FileServiceImpl extends ServiceImpl<FileMapper, File> implements Fi
@Override @Override
public IPage<File> customerPage(File file, SearchVO searchVO, PageVO pageVo) { public IPage<File> customerPage(File file, SearchVO searchVO, PageVO pageVo) {
LambdaQueryWrapper<File> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<File> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(StringUtils.isNotEmpty(file.getName()), File::getName, file.getName()) queryWrapper.like(CharSequenceUtil.isNotEmpty(file.getName()), File::getName, file.getName())
.like(StringUtils.isNotEmpty(file.getFileKey()), File::getFileKey, file.getFileKey()) .like(CharSequenceUtil.isNotEmpty(file.getFileKey()), File::getFileKey, file.getFileKey())
.like(StringUtils.isNotEmpty(file.getFileType()), File::getFileType, file.getFileType()) .like(CharSequenceUtil.isNotEmpty(file.getFileType()), File::getFileType, file.getFileType())
.between(StringUtils.isNotEmpty(searchVO.getStartDate()) && StringUtils.isNotEmpty(searchVO.getEndDate()), .between(CharSequenceUtil.isNotEmpty(searchVO.getStartDate()) && CharSequenceUtil.isNotEmpty(searchVO.getEndDate()),
File::getCreateTime, searchVO.getStartDate(), searchVO.getEndDate()); File::getCreateTime, searchVO.getStartDate(), searchVO.getEndDate());
IPage<File> page = this.page(PageUtil.initPage(pageVo), queryWrapper); return this.page(PageUtil.initPage(pageVo), queryWrapper);
return page;
} }
@Override @Override
public IPage<File> customerPageOwner(FileOwnerDTO ownerDTO, File file, SearchVO searchVO, PageVO pageVo) { public IPage<File> customerPageOwner(FileOwnerDTO ownerDTO, File file, SearchVO searchVO, PageVO pageVo) {
LambdaQueryWrapper<File> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<File> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(StringUtils.isNotEmpty(ownerDTO.getOwnerId()), File::getOwnerId, ownerDTO.getOwnerId()) queryWrapper.eq(CharSequenceUtil.isNotEmpty(ownerDTO.getOwnerId()), File::getOwnerId, ownerDTO.getOwnerId())
.eq(File::getUserEnums, ownerDTO.getUserEnums()) .eq(File::getUserEnums, ownerDTO.getUserEnums())
.like(StringUtils.isNotEmpty(file.getName()), File::getName, file.getName()) .like(CharSequenceUtil.isNotEmpty(file.getName()), File::getName, file.getName())
.like(StringUtils.isNotEmpty(file.getFileKey()), File::getFileKey, file.getFileKey()) .like(CharSequenceUtil.isNotEmpty(file.getFileKey()), File::getFileKey, file.getFileKey())
.like(StringUtils.isNotEmpty(file.getFileType()), File::getFileType, file.getFileType()) .like(CharSequenceUtil.isNotEmpty(file.getFileType()), File::getFileType, file.getFileType())
.between(StringUtils.isNotEmpty(searchVO.getStartDate()) && StringUtils.isNotEmpty(searchVO.getEndDate()), .between(CharSequenceUtil.isNotEmpty(searchVO.getStartDate()) && CharSequenceUtil.isNotEmpty(searchVO.getEndDate()),
File::getCreateTime, searchVO.getStartDate(), searchVO.getEndDate()); File::getCreateTime, searchVO.getStartDate(), searchVO.getEndDate());
IPage<File> page = this.page(PageUtil.initPage(pageVo), queryWrapper); return this.page(PageUtil.initPage(pageVo), queryWrapper);
return page;
} }
} }

View File

@ -8,7 +8,6 @@ import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import java.io.Serializable;
import java.util.List; import java.util.List;
/** /**

View File

@ -20,7 +20,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -110,7 +109,7 @@ public class BrandServiceImpl extends ServiceImpl<BrandMapper, Brand> implements
/** /**
* 校验绑定关系 * 校验绑定关系
* *
* @param brandIds * @param brandIds 品牌Ids
*/ */
private void checkBind(List<String> brandIds) { private void checkBind(List<String> brandIds) {
//分了绑定关系查询 //分了绑定关系查询
@ -130,19 +129,11 @@ public class BrandServiceImpl extends ServiceImpl<BrandMapper, Brand> implements
} }
} }
/**
* 校验绑定关系
*
* @param brandIds
*/
private void checkoutGoods(List<String> brandIds) {
}
/** /**
* 校验是否存在 * 校验是否存在
* *
* @param brandId * @param brandId 品牌ID
* @return * @return 品牌
*/ */
private Brand checkExist(String brandId) { private Brand checkExist(String brandId) {
Brand brand = getById(brandId); Brand brand = getById(brandId);

View File

@ -38,6 +38,7 @@ public class CategoryBrandServiceImpl extends ServiceImpl<CategoryBrandMapper, C
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void saveCategoryBrandList(String categoryId, List<String> brandIds) { public void saveCategoryBrandList(String categoryId, List<String> brandIds) {
//删除分类品牌绑定信息 //删除分类品牌绑定信息
this.deleteByCategoryId(categoryId); this.deleteByCategoryId(categoryId);

View File

@ -3,7 +3,6 @@ package cn.lili.modules.goods.serviceimpl;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
import cn.lili.common.properties.RocketmqCustomProperties;
import cn.lili.modules.goods.entity.dos.CategoryParameterGroup; import cn.lili.modules.goods.entity.dos.CategoryParameterGroup;
import cn.lili.modules.goods.entity.dos.Goods; import cn.lili.modules.goods.entity.dos.Goods;
import cn.lili.modules.goods.entity.dos.Parameters; import cn.lili.modules.goods.entity.dos.Parameters;
@ -17,7 +16,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -47,12 +45,6 @@ public class CategoryParameterGroupServiceImpl extends ServiceImpl<CategoryParam
@Autowired @Autowired
private GoodsService goodsService; private GoodsService goodsService;
@Autowired
private RocketmqCustomProperties rocketmqCustomProperties;
@Autowired
private RocketMQTemplate rocketMQTemplate;
@Override @Override
public List<ParameterGroupVO> getCategoryParams(String categoryId) { public List<ParameterGroupVO> getCategoryParams(String categoryId) {
//根据id查询参数组 //根据id查询参数组
@ -75,6 +67,7 @@ public class CategoryParameterGroupServiceImpl extends ServiceImpl<CategoryParam
* @return 是否成功 * @return 是否成功
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public boolean updateCategoryGroup(CategoryParameterGroup categoryParameterGroup) { public boolean updateCategoryGroup(CategoryParameterGroup categoryParameterGroup) {
CategoryParameterGroup origin = this.getById(categoryParameterGroup.getId()); CategoryParameterGroup origin = this.getById(categoryParameterGroup.getId());
if (origin == null) { if (origin == null) {

View File

@ -6,10 +6,7 @@ import cn.lili.cache.CachePrefix;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
import cn.lili.modules.goods.entity.dos.Category; import cn.lili.modules.goods.entity.dos.Category;
import cn.lili.modules.goods.entity.dos.CategoryParameterGroup;
import cn.lili.modules.goods.entity.vos.CategoryVO; import cn.lili.modules.goods.entity.vos.CategoryVO;
import cn.lili.modules.goods.entity.vos.GoodsParamsGroupVO;
import cn.lili.modules.goods.entity.vos.GoodsParamsVO;
import cn.lili.modules.goods.mapper.CategoryMapper; import cn.lili.modules.goods.mapper.CategoryMapper;
import cn.lili.modules.goods.service.CategoryBrandService; import cn.lili.modules.goods.service.CategoryBrandService;
import cn.lili.modules.goods.service.CategoryParameterGroupService; import cn.lili.modules.goods.service.CategoryParameterGroupService;
@ -25,7 +22,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -199,6 +199,7 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public boolean saveCategory(Category category) { public boolean saveCategory(Category category) {
//判断分类佣金是否正确 //判断分类佣金是否正确
if (category.getCommissionRate() < 0) { if (category.getCommissionRate() < 0) {
@ -215,6 +216,7 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateCategory(Category category) { public void updateCategory(Category category) {
//判断分类佣金是否正确 //判断分类佣金是否正确
if (category.getCommissionRate() < 0) { if (category.getCommissionRate() < 0) {
@ -240,6 +242,7 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void delete(String id) { public void delete(String id) {
this.removeById(id); this.removeById(id);
removeCache(); removeCache();
@ -250,6 +253,7 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateCategoryStatus(String categoryId, Boolean enableOperations) { public void updateCategoryStatus(String categoryId, Boolean enableOperations) {
//禁用子分类 //禁用子分类
CategoryVO categoryVO = new CategoryVO(this.getById(categoryId)); CategoryVO categoryVO = new CategoryVO(this.getById(categoryId));
@ -303,34 +307,6 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
} }
} }
/**
* 拼装返回值
*
* @param paramList 参数列表
* @return 拼装后的返回值
*/
private List<GoodsParamsGroupVO> convertParamList(List<CategoryParameterGroup> groupList, List<GoodsParamsVO> paramList) {
Map<String, List<GoodsParamsVO>> map = new HashMap<>(16);
for (GoodsParamsVO param : paramList) {
if (map.get(param.getGroupId()) != null) {
map.get(param.getGroupId()).add(param);
} else {
List<GoodsParamsVO> list = new ArrayList<>();
list.add(param);
map.put(param.getGroupId(), list);
}
}
List<GoodsParamsGroupVO> resList = new ArrayList<>();
for (CategoryParameterGroup group : groupList) {
GoodsParamsGroupVO list = new GoodsParamsGroupVO();
list.setGroupName(group.getGroupName());
list.setGroupId(group.getId());
list.setParams(map.get(group.getId()));
resList.add(list);
}
return resList;
}
/** /**
* 获取所有的子分类ID * 获取所有的子分类ID
* *

View File

@ -7,7 +7,6 @@ import cn.lili.modules.goods.service.CategorySpecificationService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;

View File

@ -27,6 +27,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -46,6 +47,7 @@ public class CommodityServiceImpl extends ServiceImpl<CommodityMapper, Commodity
private GoodsSkuService goodsSkuService; private GoodsSkuService goodsSkuService;
@Override @Override
@Transactional(rollbackFor = Exception.class)
public boolean addCommodity(List<Commodity> commodityList) { public boolean addCommodity(List<Commodity> commodityList) {
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
for (Commodity commodity : commodityList) { for (Commodity commodity : commodityList) {
@ -54,7 +56,7 @@ public class CommodityServiceImpl extends ServiceImpl<CommodityMapper, Commodity
commodity.setStoreId(storeId); commodity.setStoreId(storeId);
//添加直播商品 //添加直播商品
JSONObject json = wechatLivePlayerUtil.addGoods(commodity); JSONObject json = wechatLivePlayerUtil.addGoods(commodity);
if(!"0".equals(json.getStr("errcode"))){ if (!"0".equals(json.getStr("errcode"))) {
log.error(json.getStr("errmsg")); log.error(json.getStr("errmsg"));
throw new ServiceException(ResultCode.COMMODITY_ERROR); throw new ServiceException(ResultCode.COMMODITY_ERROR);
} }
@ -93,10 +95,11 @@ public class CommodityServiceImpl extends ServiceImpl<CommodityMapper, Commodity
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void getGoodsWareHouse() { public void getGoodsWareHouse() {
//查询审核中的商品 //查询审核中的商品
List<String> goodsIdList = this.baseMapper.getAuditCommodity(); List<String> goodsIdList = this.baseMapper.getAuditCommodity();
if (goodsIdList.size() > 0) { if (!goodsIdList.isEmpty()) {
//同步状态 //同步状态
JSONObject json = wechatLivePlayerUtil.getGoodsWareHouse(goodsIdList); JSONObject json = wechatLivePlayerUtil.getGoodsWareHouse(goodsIdList);
//修改状态 //修改状态

View File

@ -8,7 +8,6 @@ import cn.lili.modules.goods.entity.dos.Category;
import cn.lili.modules.goods.entity.dos.DraftGoods; import cn.lili.modules.goods.entity.dos.DraftGoods;
import cn.lili.modules.goods.entity.dos.GoodsGallery; import cn.lili.modules.goods.entity.dos.GoodsGallery;
import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.entity.dos.GoodsSku;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.modules.goods.entity.dto.DraftGoodsDTO; import cn.lili.modules.goods.entity.dto.DraftGoodsDTO;
import cn.lili.modules.goods.entity.dto.DraftGoodsSearchParams; import cn.lili.modules.goods.entity.dto.DraftGoodsSearchParams;
import cn.lili.modules.goods.entity.dto.GoodsParamsDTO; import cn.lili.modules.goods.entity.dto.GoodsParamsDTO;
@ -18,11 +17,11 @@ import cn.lili.modules.goods.service.CategoryService;
import cn.lili.modules.goods.service.DraftGoodsService; import cn.lili.modules.goods.service.DraftGoodsService;
import cn.lili.modules.goods.service.GoodsGalleryService; import cn.lili.modules.goods.service.GoodsGalleryService;
import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.goods.service.GoodsSkuService;
import cn.lili.mybatis.util.PageUtil;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.util.*;

View File

@ -36,6 +36,7 @@ public class GoodsGalleryServiceImpl extends ServiceImpl<GoodsGalleryMapper, Goo
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void add(List<String> goodsGalleryList, String goodsId) { public void add(List<String> goodsGalleryList, String goodsId) {
//删除原来商品相册信息 //删除原来商品相册信息
this.baseMapper.delete(new UpdateWrapper<GoodsGallery>().eq("goods_id", goodsId)); this.baseMapper.delete(new UpdateWrapper<GoodsGallery>().eq("goods_id", goodsId));

View File

@ -121,6 +121,7 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void underStoreGoods(String storeId) { public void underStoreGoods(String storeId) {
//获取商品ID列表 //获取商品ID列表
List<String> list = this.baseMapper.getGoodsIdByStoreId(storeId); List<String> list = this.baseMapper.getGoodsIdByStoreId(storeId);
@ -135,6 +136,7 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
* @param params 商品参数 * @param params 商品参数
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateGoodsParams(String goodsId, String params) { public void updateGoodsParams(String goodsId, String params) {
LambdaUpdateWrapper<Goods> updateWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<Goods> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(Goods::getId, goodsId); updateWrapper.eq(Goods::getId, goodsId);
@ -151,6 +153,7 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void addGoods(GoodsOperationDTO goodsOperationDTO) { public void addGoods(GoodsOperationDTO goodsOperationDTO) {
Goods goods = new Goods(goodsOperationDTO); Goods goods = new Goods(goodsOperationDTO);
//检查商品 //检查商品
@ -174,6 +177,7 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void editGoods(GoodsOperationDTO goodsOperationDTO, String goodsId) { public void editGoods(GoodsOperationDTO goodsOperationDTO, String goodsId) {
Goods goods = new Goods(goodsOperationDTO); Goods goods = new Goods(goodsOperationDTO);
goods.setId(goodsId); goods.setId(goodsId);
@ -264,6 +268,7 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public boolean auditGoods(List<String> goodsIds, GoodsAuthEnum goodsAuthEnum) { public boolean auditGoods(List<String> goodsIds, GoodsAuthEnum goodsAuthEnum) {
boolean result = false; boolean result = false;
for (String goodsId : goodsIds) { for (String goodsId : goodsIds) {
@ -282,6 +287,7 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateGoodsMarketAble(List<String> goodsIds, GoodsStatusEnum goodsStatusEnum, String underReason) { public Boolean updateGoodsMarketAble(List<String> goodsIds, GoodsStatusEnum goodsStatusEnum, String underReason) {
boolean result; boolean result;
@ -311,6 +317,7 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean managerUpdateGoodsMarketAble(List<String> goodsIds, GoodsStatusEnum goodsStatusEnum, String underReason) { public Boolean managerUpdateGoodsMarketAble(List<String> goodsIds, GoodsStatusEnum goodsStatusEnum, String underReason) {
boolean result; boolean result;
@ -342,6 +349,7 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteGoods(List<String> goodsIds) { public Boolean deleteGoods(List<String> goodsIds) {
LambdaUpdateWrapper<Goods> updateWrapper = this.getUpdateWrapperByStoreAuthority(); LambdaUpdateWrapper<Goods> updateWrapper = this.getUpdateWrapperByStoreAuthority();
@ -365,6 +373,7 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean freight(List<String> goodsIds, String templateId) { public Boolean freight(List<String> goodsIds, String templateId) {
AuthUser authUser = this.checkStoreAuthority(); AuthUser authUser = this.checkStoreAuthority();
@ -383,7 +392,6 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateStock(String goodsId, Integer quantity) { public void updateStock(String goodsId, Integer quantity) {
LambdaUpdateWrapper<Goods> lambdaUpdateWrapper = Wrappers.lambdaUpdate(); LambdaUpdateWrapper<Goods> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
lambdaUpdateWrapper.set(Goods::getQuantity, quantity); lambdaUpdateWrapper.set(Goods::getQuantity, quantity);
@ -425,6 +433,7 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateStoreDetail(Store store) { public void updateStoreDetail(Store store) {
UpdateWrapper updateWrapper = new UpdateWrapper<>() UpdateWrapper updateWrapper = new UpdateWrapper<>()
.eq("store_id", store.getId()) .eq("store_id", store.getId())

View File

@ -7,6 +7,7 @@ import cn.hutool.core.util.NumberUtil;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import cn.lili.cache.Cache; import cn.lili.cache.Cache;
import cn.lili.cache.CachePrefix;
import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.enums.PromotionTypeEnum;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
@ -113,6 +114,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
private ApplicationEventPublisher applicationEventPublisher; private ApplicationEventPublisher applicationEventPublisher;
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void add(List<Map<String, Object>> skuList, Goods goods) { public void add(List<Map<String, Object>> skuList, Goods goods) {
// 检查是否需要生成索引 // 检查是否需要生成索引
List<GoodsSku> newSkuList; List<GoodsSku> newSkuList;
@ -186,6 +188,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
* @param goodsSku sku信息 * @param goodsSku sku信息
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void update(GoodsSku goodsSku) { public void update(GoodsSku goodsSku) {
this.updateById(goodsSku); this.updateById(goodsSku);
cache.remove(GoodsSkuService.getCacheKeys(goodsSku.getId())); cache.remove(GoodsSkuService.getCacheKeys(goodsSku.getId()));
@ -319,6 +322,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
* @param goods 商品信息(Id,MarketEnable/AuthFlag) * @param goods 商品信息(Id,MarketEnable/AuthFlag)
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateGoodsSkuStatus(Goods goods) { public void updateGoodsSkuStatus(Goods goods) {
LambdaUpdateWrapper<GoodsSku> updateWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<GoodsSku> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(GoodsSku::getGoodsId, goods.getId()); updateWrapper.eq(GoodsSku::getGoodsId, goods.getId());
@ -431,6 +435,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateStocks(List<GoodsSkuStockDTO> goodsSkuStockDTOS) { public void updateStocks(List<GoodsSkuStockDTO> goodsSkuStockDTOS) {
for (GoodsSkuStockDTO goodsSkuStockDTO : goodsSkuStockDTOS) { for (GoodsSkuStockDTO goodsSkuStockDTO : goodsSkuStockDTOS) {
this.updateStock(goodsSkuStockDTO.getSkuId(), goodsSkuStockDTO.getQuantity()); this.updateStock(goodsSkuStockDTO.getSkuId(), goodsSkuStockDTO.getQuantity());
@ -438,6 +443,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateStock(String skuId, Integer quantity) { public void updateStock(String skuId, Integer quantity) {
GoodsSku goodsSku = getGoodsSkuByIdFromCache(skuId); GoodsSku goodsSku = getGoodsSkuByIdFromCache(skuId);
if (goodsSku != null) { if (goodsSku != null) {
@ -445,7 +451,10 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
goodsIndexService.deleteIndexById(goodsSku.getId()); goodsIndexService.deleteIndexById(goodsSku.getId());
} }
goodsSku.setQuantity(quantity); goodsSku.setQuantity(quantity);
this.update(new LambdaUpdateWrapper<GoodsSku>().eq(GoodsSku::getId, skuId).set(GoodsSku::getQuantity, quantity)); boolean update = this.update(new LambdaUpdateWrapper<GoodsSku>().eq(GoodsSku::getId, skuId).set(GoodsSku::getQuantity, quantity));
if (update) {
cache.remove(CachePrefix.GOODS.getPrefix() + goodsSku.getGoodsId());
}
cache.put(GoodsSkuService.getCacheKeys(skuId), goodsSku); cache.put(GoodsSkuService.getCacheKeys(skuId), goodsSku);
cache.put(GoodsSkuService.getStockCacheKey(skuId), quantity); cache.put(GoodsSkuService.getStockCacheKey(skuId), quantity);
@ -470,6 +479,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateGoodsStuck(List<GoodsSku> goodsSkus) { public void updateGoodsStuck(List<GoodsSku> goodsSkus) {
//商品id集合 hashset 去重复 //商品id集合 hashset 去重复
Set<String> goodsIds = new HashSet<>(); Set<String> goodsIds = new HashSet<>();
@ -498,6 +508,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateGoodsSkuCommentNum(String skuId) { public void updateGoodsSkuCommentNum(String skuId) {
//获取商品信息 //获取商品信息
GoodsSku goodsSku = this.getGoodsSkuByIdFromCache(skuId); GoodsSku goodsSku = this.getGoodsSkuByIdFromCache(skuId);
@ -578,7 +589,6 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper, GoodsSku> i
* @param skuList sku列表 * @param skuList sku列表
* @param goods 商品信息 * @param goods 商品信息
*/ */
@Transactional(rollbackFor = Exception.class)
List<GoodsSku> addGoodsSku(List<Map<String, Object>> skuList, Goods goods) { List<GoodsSku> addGoodsSku(List<Map<String, Object>> skuList, Goods goods) {
List<GoodsSku> skus = new ArrayList<>(); List<GoodsSku> skus = new ArrayList<>();
for (Map<String, Object> skuVO : skuList) { for (Map<String, Object> skuVO : skuList) {

View File

@ -5,7 +5,6 @@ import cn.lili.modules.goods.mapper.GoodsWordsMapper;
import cn.lili.modules.goods.service.GoodsWordsService; import cn.lili.modules.goods.service.GoodsWordsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/** /**
* 商品关键字业务层实现 * 商品关键字业务层实现

View File

@ -19,6 +19,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -51,6 +52,7 @@ public class ParametersServiceImpl extends ServiceImpl<ParametersMapper, Paramet
* @return 是否更新成功 * @return 是否更新成功
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public boolean updateParameter(Parameters parameters) { public boolean updateParameter(Parameters parameters) {
Parameters origin = this.getById(parameters.getId()); Parameters origin = this.getById(parameters.getId());
if (origin == null) { if (origin == null) {

View File

@ -3,13 +3,11 @@ package cn.lili.modules.goods.serviceimpl;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
import cn.lili.modules.goods.entity.dos.Category;
import cn.lili.modules.goods.entity.dos.CategorySpecification; import cn.lili.modules.goods.entity.dos.CategorySpecification;
import cn.lili.modules.goods.entity.dos.Specification; import cn.lili.modules.goods.entity.dos.Specification;
import cn.lili.modules.goods.mapper.SpecificationMapper; import cn.lili.modules.goods.mapper.SpecificationMapper;
import cn.lili.modules.goods.service.CategorySpecificationService; import cn.lili.modules.goods.service.CategorySpecificationService;
import cn.lili.modules.goods.service.SpecificationService; import cn.lili.modules.goods.service.SpecificationService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -41,21 +39,20 @@ public class SpecificationServiceImpl extends ServiceImpl<SpecificationMapper, S
@Override @Override
public boolean deleteSpecification(List<String> ids) { public boolean deleteSpecification(List<String> ids) {
boolean result = false;
for (String id : ids) { for (String id : ids) {
//如果此规格绑定分类则不允许删除 //如果此规格绑定分类则不允许删除
List<CategorySpecification> list = categorySpecificationService.list(new QueryWrapper<CategorySpecification>().eq("specification_id", id)); List<CategorySpecification> list = categorySpecificationService.list(new QueryWrapper<CategorySpecification>().eq("specification_id", id));
if (!list.isEmpty()) { if (!list.isEmpty()) {
List<String> categoryIds = new ArrayList<>(); List<String> categoryIds = new ArrayList<>();
list.forEach(item -> { list.forEach(item -> categoryIds.add(item.getCategoryId()));
categoryIds.add(item.getCategoryId());
});
throw new ServiceException(ResultCode.SPEC_DELETE_ERROR, throw new ServiceException(ResultCode.SPEC_DELETE_ERROR,
JSONUtil.toJsonStr(categoryService.getCategoryNameByIds(categoryIds))); JSONUtil.toJsonStr(categoryService.getCategoryNameByIds(categoryIds)));
} }
//删除规格 //删除规格
this.removeById(id); result = this.removeById(id);
} }
return true; return result;
} }
} }

View File

@ -83,6 +83,7 @@ public class StoreGoodsLabelServiceImpl extends ServiceImpl<StoreGoodsLabelMappe
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public StoreGoodsLabel addStoreGoodsLabel(StoreGoodsLabel storeGoodsLabel) { public StoreGoodsLabel addStoreGoodsLabel(StoreGoodsLabel storeGoodsLabel) {
//获取当前登录商家账号 //获取当前登录商家账号
AuthUser tokenUser = UserContext.getCurrentUser(); AuthUser tokenUser = UserContext.getCurrentUser();
@ -98,6 +99,7 @@ public class StoreGoodsLabelServiceImpl extends ServiceImpl<StoreGoodsLabelMappe
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public StoreGoodsLabel editStoreGoodsLabel(StoreGoodsLabel storeGoodsLabel) { public StoreGoodsLabel editStoreGoodsLabel(StoreGoodsLabel storeGoodsLabel) {
//修改当前店铺的商品分类 //修改当前店铺的商品分类
AuthUser tokenUser = UserContext.getCurrentUser(); AuthUser tokenUser = UserContext.getCurrentUser();

View File

@ -35,6 +35,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Map; import java.util.Map;
@ -63,6 +64,7 @@ public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> impleme
private GoodsService goodsService; private GoodsService goodsService;
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean create(Studio studio) { public Boolean create(Studio studio) {
studio.setStoreId(Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId()); studio.setStoreId(Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId());
//创建小程序直播 //创建小程序直播
@ -97,6 +99,7 @@ public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> impleme
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean edit(Studio studio) { public Boolean edit(Studio studio) {
Studio oldStudio = this.getById(studio.getId()); Studio oldStudio = this.getById(studio.getId());
wechatLivePlayerUtil.editRoom(studio); wechatLivePlayerUtil.editRoom(studio);
@ -153,6 +156,7 @@ public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> impleme
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean push(Integer roomId, Integer goodsId, String storeId) { public Boolean push(Integer roomId, Integer goodsId, String storeId) {
//判断直播间是否已添加商品 //判断直播间是否已添加商品
@ -183,6 +187,7 @@ public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> impleme
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean goodsDeleteInRoom(Integer roomId, Integer goodsId, String storeId) { public Boolean goodsDeleteInRoom(Integer roomId, Integer goodsId, String storeId) {
Goods goods = goodsService.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getId, goodsId).eq(Goods::getStoreId, storeId)); Goods goods = goodsService.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getId, goodsId).eq(Goods::getStoreId, storeId));
if (goods == null) { if (goods == null) {

View File

@ -3,9 +3,12 @@ package cn.lili.modules.member.entity.vo;
import cn.lili.common.enums.ClientTypeEnum; import cn.lili.common.enums.ClientTypeEnum;
import cn.lili.common.security.sensitive.Sensitive; import cn.lili.common.security.sensitive.Sensitive;
import cn.lili.common.security.sensitive.enums.SensitiveStrategy; import cn.lili.common.security.sensitive.enums.SensitiveStrategy;
import cn.lili.common.utils.BeanUtil;
import cn.lili.modules.member.entity.dos.Member;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable; import java.io.Serializable;
@ -16,6 +19,7 @@ import java.util.Date;
* @since 2021/11/8 * @since 2021/11/8
**/ **/
@Data @Data
@NoArgsConstructor
public class MemberVO implements Serializable { public class MemberVO implements Serializable {
private static final long serialVersionUID = 1810890757303309436L; private static final long serialVersionUID = 1810890757303309436L;
@ -24,9 +28,11 @@ public class MemberVO implements Serializable {
private String id; private String id;
@ApiModelProperty(value = "会员用户名") @ApiModelProperty(value = "会员用户名")
@Sensitive(strategy = SensitiveStrategy.PHONE)
private String username; private String username;
@ApiModelProperty(value = "昵称") @ApiModelProperty(value = "昵称")
@Sensitive(strategy = SensitiveStrategy.PHONE)
private String nickName; private String nickName;
@ApiModelProperty(value = "会员性别,1为男0为女") @ApiModelProperty(value = "会员性别,1为男0为女")
@ -89,4 +95,7 @@ public class MemberVO implements Serializable {
@ApiModelProperty(value = "创建时间", hidden = true) @ApiModelProperty(value = "创建时间", hidden = true)
private Date createTime; private Date createTime;
public MemberVO(Member member) {
BeanUtil.copyProperties(member, this);
}
} }

View File

@ -145,6 +145,7 @@ public interface MemberService extends IService<Member> {
*/ */
IPage<MemberVO> getMemberPage(MemberSearchVO memberSearchVO, PageVO page); IPage<MemberVO> getMemberPage(MemberSearchVO memberSearchVO, PageVO page);
/** /**
* 一键注册会员 * 一键注册会员
* *
@ -253,4 +254,11 @@ public interface MemberService extends IService<Member> {
* @return 是否更新成功 * @return 是否更新成功
*/ */
boolean updateMemberLoginTime(String memberId); boolean updateMemberLoginTime(String memberId);
/**
* 获取用户VO
* @param id 会员id
* @return 用户VO
*/
MemberVO getMember(String id);
} }

View File

@ -36,6 +36,7 @@ public class FootprintServiceImpl extends ServiceImpl<FootprintMapper, FootPrint
private EsGoodsSearchService esGoodsSearchService; private EsGoodsSearchService esGoodsSearchService;
@Override @Override
@Transactional(rollbackFor = Exception.class)
public FootPrint saveFootprint(FootPrint footPrint) { public FootPrint saveFootprint(FootPrint footPrint) {
LambdaQueryWrapper<FootPrint> queryWrapper = Wrappers.lambdaQuery(); LambdaQueryWrapper<FootPrint> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(FootPrint::getMemberId, footPrint.getMemberId()); queryWrapper.eq(FootPrint::getMemberId, footPrint.getMemberId());
@ -69,8 +70,7 @@ public class FootprintServiceImpl extends ServiceImpl<FootprintMapper, FootPrint
LambdaQueryWrapper<FootPrint> lambdaQueryWrapper = Wrappers.lambdaQuery(); LambdaQueryWrapper<FootPrint> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(FootPrint::getMemberId, UserContext.getCurrentUser().getId()); lambdaQueryWrapper.eq(FootPrint::getMemberId, UserContext.getCurrentUser().getId());
lambdaQueryWrapper.in(FootPrint::getGoodsId, ids); lambdaQueryWrapper.in(FootPrint::getGoodsId, ids);
this.remove(lambdaQueryWrapper); return this.remove(lambdaQueryWrapper);
return true;
} }
@Override @Override

View File

@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;

View File

@ -55,6 +55,7 @@ public class MemberAddressServiceImpl extends ServiceImpl<MemberAddressMapper, M
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public MemberAddress saveMemberAddress(MemberAddress memberAddress) { public MemberAddress saveMemberAddress(MemberAddress memberAddress) {
//判断当前地址是否为默认地址如果为默认需要将其他的地址修改为非默认 //判断当前地址是否为默认地址如果为默认需要将其他的地址修改为非默认
removeDefaultAddress(memberAddress); removeDefaultAddress(memberAddress);
@ -65,6 +66,7 @@ public class MemberAddressServiceImpl extends ServiceImpl<MemberAddressMapper, M
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public MemberAddress updateMemberAddress(MemberAddress memberAddress) { public MemberAddress updateMemberAddress(MemberAddress memberAddress) {
MemberAddress originalMemberAddress = this.getMemberAddress(memberAddress.getId()); MemberAddress originalMemberAddress = this.getMemberAddress(memberAddress.getId());
if (originalMemberAddress != null && if (originalMemberAddress != null &&

View File

@ -11,7 +11,6 @@ import cn.lili.common.properties.RocketmqCustomProperties;
import cn.lili.common.security.context.UserContext; import cn.lili.common.security.context.UserContext;
import cn.lili.common.security.enums.UserEnums; import cn.lili.common.security.enums.UserEnums;
import cn.lili.common.sensitive.SensitiveWordsFilter; import cn.lili.common.sensitive.SensitiveWordsFilter;
import cn.lili.common.utils.StringUtils;
import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.entity.dos.GoodsSku;
import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.goods.service.GoodsSkuService;
import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dos.Member;
@ -106,17 +105,22 @@ public class MemberEvaluationServiceImpl extends ServiceImpl<MemberEvaluationMap
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public MemberEvaluationDTO addMemberEvaluation(MemberEvaluationDTO memberEvaluationDTO, Boolean isSelf) { public MemberEvaluationDTO addMemberEvaluation(MemberEvaluationDTO memberEvaluationDTO, Boolean isSelf) {
//获取子订单信息 //获取子订单信息
OrderItem orderItem = orderItemService.getBySn(memberEvaluationDTO.getOrderItemSn()); OrderItem orderItem = orderItemService.getBySn(memberEvaluationDTO.getOrderItemSn());
//获取订单信息 //获取订单信息
Order order = orderService.getBySn(orderItem.getOrderSn()); Order order = orderService.getBySn(orderItem.getOrderSn());
//检测是否可以添加会员评价 //检测是否可以添加会员评价
if (isSelf) { Member member;
if (Boolean.TRUE.equals(isSelf)) {
checkMemberEvaluation(orderItem, order); checkMemberEvaluation(orderItem, order);
//获取用户信息 非自己评价时读取数据库
member = memberService.getById(order.getMemberId());
} else {
//自我评价商品时获取当前登录用户信息
member = memberService.getUserInfo();
} }
//获取用户信息
Member member = memberService.getUserInfo();
//获取商品信息 //获取商品信息
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(memberEvaluationDTO.getSkuId()); GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(memberEvaluationDTO.getSkuId());
//新增用户评价 //新增用户评价
@ -160,7 +164,7 @@ public class MemberEvaluationServiceImpl extends ServiceImpl<MemberEvaluationMap
UpdateWrapper<MemberEvaluation> updateWrapper = Wrappers.update(); UpdateWrapper<MemberEvaluation> updateWrapper = Wrappers.update();
updateWrapper.set("reply_status", true); updateWrapper.set("reply_status", true);
updateWrapper.set("reply", reply); updateWrapper.set("reply", reply);
if (StringUtils.isNotEmpty(replyImage)) { if (CharSequenceUtil.isNotEmpty(replyImage)) {
updateWrapper.set("have_reply_image", true); updateWrapper.set("have_reply_image", true);
updateWrapper.set("reply_image", replyImage); updateWrapper.set("reply_image", replyImage);
} }

View File

@ -1,8 +1,8 @@
package cn.lili.modules.member.serviceimpl; package cn.lili.modules.member.serviceimpl;
import cn.hutool.core.text.CharSequenceUtil;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
import cn.lili.common.utils.StringUtils;
import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dos.Member;
import cn.lili.modules.member.entity.dos.MemberNotice; import cn.lili.modules.member.entity.dos.MemberNotice;
import cn.lili.modules.member.entity.dos.MemberNoticeSenter; import cn.lili.modules.member.entity.dos.MemberNoticeSenter;
@ -42,6 +42,7 @@ public class MemberNoticeSenterServiceImpl extends ServiceImpl<MemberNoticeSente
private MemberNoticeService memberNoticeService; private MemberNoticeService memberNoticeService;
@Override @Override
@Transactional(rollbackFor = Exception.class)
public boolean customSave(MemberNoticeSenter memberNoticeSenter) { public boolean customSave(MemberNoticeSenter memberNoticeSenter) {
if (this.saveOrUpdate(memberNoticeSenter)) { if (this.saveOrUpdate(memberNoticeSenter)) {
@ -49,7 +50,7 @@ public class MemberNoticeSenterServiceImpl extends ServiceImpl<MemberNoticeSente
//如果是选中会员发送 //如果是选中会员发送
if (memberNoticeSenter.getSendType().equals(SendTypeEnum.SELECT.name())) { if (memberNoticeSenter.getSendType().equals(SendTypeEnum.SELECT.name())) {
//判定消息是否有效 //判定消息是否有效
if (!StringUtils.isEmpty(memberNoticeSenter.getMemberIds())) { if (!CharSequenceUtil.isEmpty(memberNoticeSenter.getMemberIds())) {
String[] ids = memberNoticeSenter.getMemberIds().split(","); String[] ids = memberNoticeSenter.getMemberIds().split(",");
MemberNotice memberNotice; MemberNotice memberNotice;
for (String id : ids) { for (String id : ids) {
@ -77,7 +78,7 @@ public class MemberNoticeSenterServiceImpl extends ServiceImpl<MemberNoticeSente
} }
} }
//防止没有会员导致报错 //防止没有会员导致报错
if (memberNotices.size() > 0) { if (!memberNotices.isEmpty()) {
//批量保存 //批量保存
if (memberNoticeService.saveBatch(memberNotices)) { if (memberNoticeService.saveBatch(memberNotices)) {
return true; return true;

View File

@ -2,7 +2,6 @@ package cn.lili.modules.member.serviceimpl;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
import cn.lili.common.utils.StringUtils;
import cn.lili.common.vo.PageVO; import cn.lili.common.vo.PageVO;
import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dos.Member;
import cn.lili.modules.member.entity.dos.MemberPointsHistory; import cn.lili.modules.member.entity.dos.MemberPointsHistory;
@ -49,7 +48,7 @@ public class MemberPointsHistoryServiceImpl extends ServiceImpl<MemberPointsHist
.eq(CharSequenceUtil.isNotEmpty(memberId), MemberPointsHistory::getMemberId, memberId) .eq(CharSequenceUtil.isNotEmpty(memberId), MemberPointsHistory::getMemberId, memberId)
.like(CharSequenceUtil.isNotEmpty(memberName), MemberPointsHistory::getMemberName, memberName); .like(CharSequenceUtil.isNotEmpty(memberName), MemberPointsHistory::getMemberName, memberName);
//如果排序为空则默认创建时间倒序 //如果排序为空则默认创建时间倒序
if (StringUtils.isEmpty(page.getSort())) { if (CharSequenceUtil.isEmpty(page.getSort())) {
page.setSort("createTime"); page.setSort("createTime");
page.setOrder("desc"); page.setOrder("desc");
} }

View File

@ -4,7 +4,6 @@ package cn.lili.modules.member.serviceimpl;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
import cn.lili.common.utils.BeanUtil; import cn.lili.common.utils.BeanUtil;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.common.vo.PageVO; import cn.lili.common.vo.PageVO;
import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dos.Member;
import cn.lili.modules.member.entity.dos.MemberReceipt; import cn.lili.modules.member.entity.dos.MemberReceipt;
@ -13,12 +12,14 @@ import cn.lili.modules.member.entity.vo.MemberReceiptVO;
import cn.lili.modules.member.mapper.MemberReceiptMapper; import cn.lili.modules.member.mapper.MemberReceiptMapper;
import cn.lili.modules.member.service.MemberReceiptService; import cn.lili.modules.member.service.MemberReceiptService;
import cn.lili.modules.member.service.MemberService; import cn.lili.modules.member.service.MemberService;
import cn.lili.mybatis.util.PageUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
@ -40,13 +41,14 @@ public class MemberReceiptServiceImpl extends ServiceImpl<MemberReceiptMapper, M
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean addMemberReceipt(MemberReceiptAddVO memberReceiptAddVO, String memberId) { public Boolean addMemberReceipt(MemberReceiptAddVO memberReceiptAddVO, String memberId) {
//校验发票抬头是否重复 //校验发票抬头是否重复
List<MemberReceipt> receipts = this.baseMapper.selectList(new QueryWrapper<MemberReceipt>() List<MemberReceipt> receipts = this.baseMapper.selectList(new QueryWrapper<MemberReceipt>()
.eq("member_id", memberId) .eq("member_id", memberId)
.eq("receipt_title", memberReceiptAddVO.getReceiptTitle()) .eq("receipt_title", memberReceiptAddVO.getReceiptTitle())
); );
if (receipts.size() > 0) { if (!receipts.isEmpty()) {
throw new ServiceException(ResultCode.USER_RECEIPT_REPEAT_ERROR); throw new ServiceException(ResultCode.USER_RECEIPT_REPEAT_ERROR);
} }
//参数封装 //参数封装
@ -60,7 +62,7 @@ public class MemberReceiptServiceImpl extends ServiceImpl<MemberReceiptMapper, M
//设置发票默认 //设置发票默认
List<MemberReceipt> list = this.baseMapper.selectList(new QueryWrapper<MemberReceipt>().eq("member_id", memberId)); List<MemberReceipt> list = this.baseMapper.selectList(new QueryWrapper<MemberReceipt>().eq("member_id", memberId));
//如果当前会员只有一个发票则默认为默认发票反之需要校验参数默认值做一些处理 //如果当前会员只有一个发票则默认为默认发票反之需要校验参数默认值做一些处理
if (list.size() <= 0) { if (list.isEmpty()) {
memberReceipt.setIsDefault(1); memberReceipt.setIsDefault(1);
} else { } else {
if (memberReceiptAddVO.getIsDefault().equals(1)) { if (memberReceiptAddVO.getIsDefault().equals(1)) {
@ -78,6 +80,7 @@ public class MemberReceiptServiceImpl extends ServiceImpl<MemberReceiptMapper, M
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean editMemberReceipt(MemberReceiptAddVO memberReceiptAddVO, String memberId) { public Boolean editMemberReceipt(MemberReceiptAddVO memberReceiptAddVO, String memberId) {
//根据会员id查询发票信息 //根据会员id查询发票信息
MemberReceipt memberReceiptDb = this.baseMapper.selectById(memberReceiptAddVO.getId()); MemberReceipt memberReceiptDb = this.baseMapper.selectById(memberReceiptAddVO.getId());
@ -92,7 +95,7 @@ public class MemberReceiptServiceImpl extends ServiceImpl<MemberReceiptMapper, M
.eq("receipt_title", memberReceiptAddVO.getReceiptTitle()) .eq("receipt_title", memberReceiptAddVO.getReceiptTitle())
.ne("id", memberReceiptAddVO.getId()) .ne("id", memberReceiptAddVO.getId())
); );
if (receipts.size() > 0) { if (!receipts.isEmpty()) {
throw new ServiceException(ResultCode.USER_RECEIPT_REPEAT_ERROR); throw new ServiceException(ResultCode.USER_RECEIPT_REPEAT_ERROR);
} }
BeanUtil.copyProperties(memberReceiptAddVO, memberReceiptDb); BeanUtil.copyProperties(memberReceiptAddVO, memberReceiptDb);

View File

@ -51,6 +51,7 @@ import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -372,6 +373,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
@Override @Override
@PointLogPoint @PointLogPoint
@Transactional(rollbackFor = Exception.class)
public Boolean updateMemberPoint(Long point, String type, String memberId, String content) { public Boolean updateMemberPoint(Long point, String type, String memberId, String content) {
//获取当前会员信息 //获取当前会员信息
Member member = this.getById(memberId); Member member = this.getById(memberId);
@ -626,6 +628,11 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
return this.update(updateWrapper); return this.update(updateWrapper);
} }
@Override
public MemberVO getMember(String id) {
return new MemberVO(this.getById(id));
}
/** /**
* 检测会员 * 检测会员
* *

View File

@ -2,34 +2,30 @@ package cn.lili.modules.member.serviceimpl;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
import cn.lili.modules.member.entity.enums.PointTypeEnum; import cn.lili.common.properties.RocketmqCustomProperties;
import cn.lili.modules.system.entity.dto.PointSettingItem;
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
import cn.lili.rocketmq.tags.MemberTagsEnum;
import cn.lili.common.security.AuthUser; import cn.lili.common.security.AuthUser;
import cn.lili.common.security.context.UserContext; import cn.lili.common.security.context.UserContext;
import cn.lili.common.utils.CurrencyUtil; import cn.lili.common.utils.CurrencyUtil;
import cn.lili.common.utils.DateUtil; import cn.lili.common.utils.DateUtil;
import cn.lili.common.utils.StringUtils;
import cn.lili.common.properties.RocketmqCustomProperties;
import cn.lili.modules.member.entity.dos.MemberSign; import cn.lili.modules.member.entity.dos.MemberSign;
import cn.lili.modules.member.entity.enums.PointTypeEnum;
import cn.lili.modules.member.mapper.MemberSignMapper; import cn.lili.modules.member.mapper.MemberSignMapper;
import cn.lili.modules.member.service.MemberService; import cn.lili.modules.member.service.MemberService;
import cn.lili.modules.member.service.MemberSignService; import cn.lili.modules.member.service.MemberSignService;
import cn.lili.modules.system.entity.dos.Setting; import cn.lili.modules.system.entity.dos.Setting;
import cn.lili.modules.system.entity.dto.PointSetting; import cn.lili.modules.system.entity.dto.PointSetting;
import cn.lili.modules.system.entity.dto.PointSettingItem;
import cn.lili.modules.system.entity.enums.SettingEnum; import cn.lili.modules.system.entity.enums.SettingEnum;
import cn.lili.modules.system.service.SettingService; import cn.lili.modules.system.service.SettingService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
import cn.lili.rocketmq.tags.MemberTagsEnum;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.gson.Gson; import com.google.gson.Gson;
import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 会员签到业务层实现 * 会员签到业务层实现
@ -74,7 +70,7 @@ public class MemberSignServiceImpl extends ServiceImpl<MemberSignMapper, MemberS
memberSign.setMemberId(authUser.getId()); memberSign.setMemberId(authUser.getId());
memberSign.setMemberName(authUser.getUsername()); memberSign.setMemberName(authUser.getUsername());
//如果size大于0 说明昨天已经签到过获取昨天的签到数反之新签到 //如果size大于0 说明昨天已经签到过获取昨天的签到数反之新签到
if (signs.size() > 0) { if (!signs.isEmpty()) {
//截止目前为止 签到总天数 不带今天 //截止目前为止 签到总天数 不带今天
Integer signDay = signs.get(0).getSignDay(); Integer signDay = signs.get(0).getSignDay();
memberSign.setSignDay(CurrencyUtil.add(signDay, 1).intValue()); memberSign.setSignDay(CurrencyUtil.add(signDay, 1).intValue());

View File

@ -17,6 +17,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Optional; import java.util.Optional;
@ -50,6 +51,7 @@ public class StoreCollectionServiceImpl extends ServiceImpl<StoreCollectionMappe
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public StoreCollection addStoreCollection(String storeId) { public StoreCollection addStoreCollection(String storeId) {
if (this.getOne(new LambdaUpdateWrapper<StoreCollection>() if (this.getOne(new LambdaUpdateWrapper<StoreCollection>()
.eq(StoreCollection::getMemberId, UserContext.getCurrentUser().getId()) .eq(StoreCollection::getMemberId, UserContext.getCurrentUser().getId())
@ -63,6 +65,7 @@ public class StoreCollectionServiceImpl extends ServiceImpl<StoreCollectionMappe
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public boolean deleteStoreCollection(String storeId) { public boolean deleteStoreCollection(String storeId) {
QueryWrapper<StoreCollection> queryWrapper = new QueryWrapper(); QueryWrapper<StoreCollection> queryWrapper = new QueryWrapper();
queryWrapper.eq("member_id", UserContext.getCurrentUser().getId()); queryWrapper.eq("member_id", UserContext.getCurrentUser().getId());

View File

@ -1,14 +1,14 @@
package cn.lili.modules.message.serviceimpl; package cn.lili.modules.message.serviceimpl;
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
import cn.lili.rocketmq.tags.OtherTagsEnum;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.common.vo.PageVO;
import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.common.properties.RocketmqCustomProperties;
import cn.lili.common.vo.PageVO;
import cn.lili.modules.message.entity.dos.Message; import cn.lili.modules.message.entity.dos.Message;
import cn.lili.modules.message.entity.vos.MessageVO; import cn.lili.modules.message.entity.vos.MessageVO;
import cn.lili.modules.message.mapper.MessageMapper; import cn.lili.modules.message.mapper.MessageMapper;
import cn.lili.modules.message.service.MessageService; import cn.lili.modules.message.service.MessageService;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
import cn.lili.rocketmq.tags.OtherTagsEnum;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.apache.rocketmq.spring.core.RocketMQTemplate;
@ -38,6 +38,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean sendMessage(Message message) { public Boolean sendMessage(Message message) {
//保存站内信信息 //保存站内信信息
this.save(message); this.save(message);

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