From 975550374af6cc821bf1f73f12b52cfd140d2458 Mon Sep 17 00:00:00 2001 From: pikachu <1321288662@qq.com> Date: Fri, 18 Jun 2021 07:55:25 +0800 Subject: [PATCH 01/18] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BC=9A=E5=91=98?= =?UTF-8?q?=E7=AB=99=E5=86=85=E4=BF=A1=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/MemberMessageBuyerController.java | 6 +- .../listener/NoticeSendMessageListener.java | 150 ++++++++++++++---- .../member/serviceimpl/MemberServiceImpl.java | 6 +- .../entity/dos/MemberMessage.java | 5 +- .../modules/message/entity/dos/Message.java | 6 +- .../entity/enums/MessageSendClient.java | 27 ++++ .../entity/vos}/MemberMessageQueryVO.java | 11 +- .../mapper/MemberMessageMapper.java | 4 +- .../service/MemberMessageService.java | 17 +- .../message/service/StoreMessageService.java | 4 +- .../serviceimpl/MemberMessageServiceImpl.java | 19 ++- .../MemberMessageManagerController.java | 45 ++++++ 12 files changed, 249 insertions(+), 51 deletions(-) rename framework/src/main/java/cn/lili/modules/{member => message}/entity/dos/MemberMessage.java (89%) create mode 100644 framework/src/main/java/cn/lili/modules/message/entity/enums/MessageSendClient.java rename framework/src/main/java/cn/lili/modules/{member/entity/vo => message/entity/vos}/MemberMessageQueryVO.java (66%) rename framework/src/main/java/cn/lili/modules/{member => message}/mapper/MemberMessageMapper.java (69%) rename framework/src/main/java/cn/lili/modules/{member => message}/service/MemberMessageService.java (74%) rename framework/src/main/java/cn/lili/modules/{member => message}/serviceimpl/MemberMessageServiceImpl.java (78%) create mode 100644 manager-api/src/main/java/cn/lili/controller/member/MemberMessageManagerController.java diff --git a/buyer-api/src/main/java/cn/lili/controller/member/MemberMessageBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/member/MemberMessageBuyerController.java index 0460250c..1dae47d7 100644 --- a/buyer-api/src/main/java/cn/lili/controller/member/MemberMessageBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/member/MemberMessageBuyerController.java @@ -4,9 +4,9 @@ import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.message.entity.enums.MessageStatusEnum; -import cn.lili.modules.member.entity.dos.MemberMessage; -import cn.lili.modules.member.entity.vo.MemberMessageQueryVO; -import cn.lili.modules.member.service.MemberMessageService; +import cn.lili.modules.message.entity.dos.MemberMessage; +import cn.lili.modules.message.entity.vos.MemberMessageQueryVO; +import cn.lili.modules.message.service.MemberMessageService; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; diff --git a/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java b/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java index f30d41e7..01433f64 100644 --- a/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java @@ -1,18 +1,27 @@ package cn.lili.listener; import cn.hutool.json.JSONUtil; +import cn.lili.common.enums.SwitchEnum; import cn.lili.common.rocketmq.tags.OtherTagsEnum; import cn.lili.common.sms.SmsUtil; +import cn.lili.common.vo.PageVO; +import cn.lili.modules.member.entity.dos.Member; +import cn.lili.modules.member.entity.vo.MemberSearchVO; import cn.lili.modules.member.mapper.MemberMapper; +import cn.lili.modules.member.service.MemberService; +import cn.lili.modules.message.entity.dos.MemberMessage; import cn.lili.modules.message.entity.dos.Message; import cn.lili.modules.message.entity.dos.StoreMessage; import cn.lili.modules.message.entity.dto.SmsReachDTO; +import cn.lili.modules.message.entity.enums.MessageSendClient; import cn.lili.modules.message.entity.enums.MessageStatusEnum; import cn.lili.modules.message.entity.enums.RangeEnum; +import cn.lili.modules.message.service.MemberMessageService; import cn.lili.modules.message.service.StoreMessageService; import cn.lili.modules.store.entity.dos.Store; import cn.lili.modules.store.service.StoreService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.rocketmq.common.message.MessageExt; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; @@ -41,9 +50,15 @@ public class NoticeSendMessageListener implements RocketMQListener { //店铺消息 @Autowired private StoreMessageService storeMessageService; + //会员消息 + @Autowired + private MemberMessageService memberMessageService; //店铺 @Autowired private StoreService storeService; + //会员 + @Autowired + private MemberService memberService; @Override public void onMessage(MessageExt messageExt) { @@ -51,7 +66,6 @@ public class NoticeSendMessageListener implements RocketMQListener { case SMS: String smsJsonStr = new String(messageExt.getBody()); SmsReachDTO smsReachDTO = JSONUtil.toBean(smsJsonStr, SmsReachDTO.class); - //发送全部会员 if (smsReachDTO.getSmsRange().equals(RangeEnum.ALL.name())) { //获取所有会员的手机号 @@ -65,38 +79,118 @@ public class NoticeSendMessageListener implements RocketMQListener { //管理员发送站内信 case MESSAGE: Message message = JSONUtil.toBean(new String(messageExt.getBody()), Message.class); - List list = new ArrayList<>(); - //保存商家记录 - if (message.getMessageRange().equals("ALL")) { - List storeList = storeService.list(new QueryWrapper().eq("store_disable", "OPEN")); - storeList.forEach(item -> { - StoreMessage storeMessage = new StoreMessage(); - storeMessage.setMessageId(message.getId()); - storeMessage.setStoreName(item.getStoreName()); - storeMessage.setStoreId(item.getId()); - storeMessage.setStatus(MessageStatusEnum.UN_READY.name()); - storeMessage.setTitle(message.getTitle()); - storeMessage.setContent(message.getContent()); - list.add(storeMessage); - }); + // 管理端发送给商家的站内信 + if (message.getMessageClient().equals(MessageSendClient.STORE.name().toLowerCase())) { + saveStoreMessage(message); } else { - int i = 0; - for (String str : message.getUserIds()) { - StoreMessage storeMessage = new StoreMessage(); - storeMessage.setMessageId(message.getId()); - storeMessage.setStoreId(str); - storeMessage.setStoreName(message.getUserNames()[i]); - storeMessage.setStatus(MessageStatusEnum.UN_READY.name()); - storeMessage.setTitle(message.getTitle()); - storeMessage.setContent(message.getContent()); - list.add(storeMessage); - i++; - } + //管理员发送给会员的站内信 + saveMemberMessage(message); } - storeMessageService.save(list); break; default: break; } } + + /** + * 保存店铺消息 + * + * @param message 消息 + */ + private void saveStoreMessage(Message message) { + List list = new ArrayList<>(); + //发送全部商家情况 + if (message.getMessageRange().equals("ALL")) { + List storeList = storeService.list(new QueryWrapper().eq("store_disable", "OPEN")); + storeList.forEach(item -> { + StoreMessage storeMessage = new StoreMessage(); + storeMessage.setMessageId(message.getId()); + storeMessage.setStoreName(item.getStoreName()); + storeMessage.setStoreId(item.getId()); + storeMessage.setStatus(MessageStatusEnum.UN_READY.name()); + storeMessage.setTitle(message.getTitle()); + storeMessage.setContent(message.getContent()); + list.add(storeMessage); + }); + } else { + //发送给指定商家情况 + int i = 0; + for (String str : message.getUserIds()) { + StoreMessage storeMessage = new StoreMessage(); + storeMessage.setMessageId(message.getId()); + storeMessage.setStoreId(str); + storeMessage.setStoreName(message.getUserNames()[i]); + storeMessage.setStatus(MessageStatusEnum.UN_READY.name()); + storeMessage.setTitle(message.getTitle()); + storeMessage.setContent(message.getContent()); + list.add(storeMessage); + i++; + } + } + if (list.size() > 0) { + //执行保存 + storeMessageService.save(list); + } + } + + /** + * 保存会员消息 + * + * @param message 消息 + */ + private void saveMemberMessage(Message message) { + List list = new ArrayList<>(); + //如果是给所有会员发送消息 + if (message.getMessageRange().equals("ALL")) { + //查询所有会员总数,因为会员总数比较大 如果一次性查出来会占用数据库资源,所以要分页查询 + MemberSearchVO memberSearchVO = new MemberSearchVO(); + memberSearchVO.setDisabled(SwitchEnum.OPEN.name()); + Integer memberNum = memberService.getMemberNum(memberSearchVO); + //构建分页查询参数 + //100条查一次 + Integer pageSize = 200; + Integer pageCount = 0; + pageCount = memberNum / pageSize; + pageCount = memberNum % pageSize > 0 ? pageCount + 1 : pageCount; + for (int i = 1; i <= pageCount; i++) { + PageVO pageVO = new PageVO(); + pageVO.setPageSize(pageSize); + pageVO.setPageNumber(i); + IPage page = memberService.getMemberPage(memberSearchVO, pageVO); + //循环要保存的信息 + page.getRecords().forEach(item -> { + MemberMessage memberMessage = new MemberMessage(); + memberMessage.setContent(message.getContent()); + memberMessage.setTitle(message.getTitle()); + memberMessage.setMessageId(message.getId()); + memberMessage.setMemberId(item.getId()); + memberMessage.setMemberName(item.getUsername()); + memberMessage.setStatus(MessageStatusEnum.UN_READY.name()); + list.add(memberMessage); + }); + } + + } else { + //如果是给指定会员发送消息 + int i = 0; + for (String str : message.getUserIds()) { + MemberMessage memberMessage = new MemberMessage(); + memberMessage.setMessageId(message.getId()); + memberMessage.setMemberId(str); + memberMessage.setMemberName(message.getUserNames()[i]); + memberMessage.setStatus(MessageStatusEnum.UN_READY.name()); + memberMessage.setTitle(message.getTitle()); + memberMessage.setContent(message.getContent()); + list.add(memberMessage); + i++; + } + } + if (list.size() > 0) { + //执行保存 + memberMessageService.save(list); + } + + } + + } diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java index 2ca33490..59b3ad34 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java @@ -541,9 +541,9 @@ public class MemberServiceImpl extends ServiceImpl impleme queryWrapper.like(StringUtils.isNotBlank(memberSearchVO.getUsername()), "username", memberSearchVO.getUsername()); //按照电话号码查询 queryWrapper.like(StringUtils.isNotBlank(memberSearchVO.getMobile()), "mobile", memberSearchVO.getMobile()); - //按照电话号码查询 - queryWrapper.like(StringUtils.isNotBlank(memberSearchVO.getDisabled()), "disabled", memberSearchVO.getDisabled()); - queryWrapper.orderByDesc("create_time"); + //按照状态查询 + queryWrapper.eq(StringUtils.isNotBlank(memberSearchVO.getDisabled()), "disabled", + memberSearchVO.getDisabled().equals(SwitchEnum.OPEN.name()) ? 1 : 0); queryWrapper.orderByDesc("create_time"); return this.count(queryWrapper); } diff --git a/framework/src/main/java/cn/lili/modules/member/entity/dos/MemberMessage.java b/framework/src/main/java/cn/lili/modules/message/entity/dos/MemberMessage.java similarity index 89% rename from framework/src/main/java/cn/lili/modules/member/entity/dos/MemberMessage.java rename to framework/src/main/java/cn/lili/modules/message/entity/dos/MemberMessage.java index d0ce5fa6..f148ab05 100644 --- a/framework/src/main/java/cn/lili/modules/member/entity/dos/MemberMessage.java +++ b/framework/src/main/java/cn/lili/modules/message/entity/dos/MemberMessage.java @@ -1,4 +1,4 @@ -package cn.lili.modules.member.entity.dos; +package cn.lili.modules.message.entity.dos; import cn.lili.base.BaseEntity; import cn.lili.modules.message.entity.enums.MessageStatusEnum; @@ -37,6 +37,9 @@ public class MemberMessage extends BaseEntity { @ApiModelProperty(value = "消息内容") private String content; + @ApiModelProperty(value = "关联消息id") + private String messageId; + /** * @see MessageStatusEnum */ diff --git a/framework/src/main/java/cn/lili/modules/message/entity/dos/Message.java b/framework/src/main/java/cn/lili/modules/message/entity/dos/Message.java index 5be9f77f..34d0aacc 100644 --- a/framework/src/main/java/cn/lili/modules/message/entity/dos/Message.java +++ b/framework/src/main/java/cn/lili/modules/message/entity/dos/Message.java @@ -2,6 +2,7 @@ package cn.lili.modules.message.entity.dos; import cn.lili.base.BaseEntity; import cn.lili.modules.message.entity.enums.RangeEnum; +import cn.lili.modules.message.entity.enums.MessageSendClient; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -37,7 +38,10 @@ public class Message extends BaseEntity { @ApiModelProperty(value = "发送范围") private String messageRange; - @ApiModelProperty(value = "发送客户端 商家和会员") + /** + * @see MessageSendClient + */ + @ApiModelProperty(value = "发送客户端 商家或者会员") private String messageClient; @Transient diff --git a/framework/src/main/java/cn/lili/modules/message/entity/enums/MessageSendClient.java b/framework/src/main/java/cn/lili/modules/message/entity/enums/MessageSendClient.java new file mode 100644 index 00000000..f063535b --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/message/entity/enums/MessageSendClient.java @@ -0,0 +1,27 @@ +package cn.lili.modules.message.entity.enums; + +/** + * 消息发送客户端 + * + * @author pikachu + * @date 2020/12/8 9:46 + */ +public enum MessageSendClient { + + //全部用户 + MEMBER("会员"), + //指定用户 + STORE("店铺"); + + private final String description; + + MessageSendClient(String description) { + this.description = description; + } + + public String getDescription() { + return description; + } + + +} diff --git a/framework/src/main/java/cn/lili/modules/member/entity/vo/MemberMessageQueryVO.java b/framework/src/main/java/cn/lili/modules/message/entity/vos/MemberMessageQueryVO.java similarity index 66% rename from framework/src/main/java/cn/lili/modules/member/entity/vo/MemberMessageQueryVO.java rename to framework/src/main/java/cn/lili/modules/message/entity/vos/MemberMessageQueryVO.java index 4264facf..1311d052 100644 --- a/framework/src/main/java/cn/lili/modules/member/entity/vo/MemberMessageQueryVO.java +++ b/framework/src/main/java/cn/lili/modules/message/entity/vos/MemberMessageQueryVO.java @@ -1,17 +1,19 @@ -package cn.lili.modules.member.entity.vo; +package cn.lili.modules.message.entity.vos; import cn.lili.modules.message.entity.enums.MessageStatusEnum; +import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** - * 会员消息查询 + * 会员接收消息查询vo * * @author Chopper - * @date 2020-02-25 14:10:16 + * @date 2020/12/2 17:50 */ @Data +@ApiModel(value = "会员接收消息查询vo") public class MemberMessageQueryVO { private static final long serialVersionUID = 1L; @@ -22,6 +24,9 @@ public class MemberMessageQueryVO { @ApiModelProperty(value = "状态") private String status; + @ApiModelProperty(value = "消息id") + private String messageId; + @ApiModelProperty(value = "消息标题") private String title; diff --git a/framework/src/main/java/cn/lili/modules/member/mapper/MemberMessageMapper.java b/framework/src/main/java/cn/lili/modules/message/mapper/MemberMessageMapper.java similarity index 69% rename from framework/src/main/java/cn/lili/modules/member/mapper/MemberMessageMapper.java rename to framework/src/main/java/cn/lili/modules/message/mapper/MemberMessageMapper.java index a727b6e2..72f4f373 100644 --- a/framework/src/main/java/cn/lili/modules/member/mapper/MemberMessageMapper.java +++ b/framework/src/main/java/cn/lili/modules/message/mapper/MemberMessageMapper.java @@ -1,7 +1,7 @@ -package cn.lili.modules.member.mapper; +package cn.lili.modules.message.mapper; -import cn.lili.modules.member.entity.dos.MemberMessage; +import cn.lili.modules.message.entity.dos.MemberMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; diff --git a/framework/src/main/java/cn/lili/modules/member/service/MemberMessageService.java b/framework/src/main/java/cn/lili/modules/message/service/MemberMessageService.java similarity index 74% rename from framework/src/main/java/cn/lili/modules/member/service/MemberMessageService.java rename to framework/src/main/java/cn/lili/modules/message/service/MemberMessageService.java index b271110f..70e4ef9d 100644 --- a/framework/src/main/java/cn/lili/modules/member/service/MemberMessageService.java +++ b/framework/src/main/java/cn/lili/modules/message/service/MemberMessageService.java @@ -1,11 +1,13 @@ -package cn.lili.modules.member.service; +package cn.lili.modules.message.service; import cn.lili.common.vo.PageVO; -import cn.lili.modules.member.entity.dos.MemberMessage; -import cn.lili.modules.member.entity.vo.MemberMessageQueryVO; +import cn.lili.modules.message.entity.dos.MemberMessage; +import cn.lili.modules.message.entity.vos.MemberMessageQueryVO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * 消息发送业务层 * @@ -41,4 +43,13 @@ public interface MemberMessageService extends IService { Boolean deleteMessage(String messageId); + /** + * 保存消息信息 + * + * @param messages 消息 + * @return + */ + boolean save(List messages); + + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/message/service/StoreMessageService.java b/framework/src/main/java/cn/lili/modules/message/service/StoreMessageService.java index ad700035..7b8aa737 100644 --- a/framework/src/main/java/cn/lili/modules/message/service/StoreMessageService.java +++ b/framework/src/main/java/cn/lili/modules/message/service/StoreMessageService.java @@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; /** - * 消息发送业务层 + * 店铺接收消息业务层 * * @author Chopper * @date 2020/11/17 3:44 下午 @@ -34,7 +34,7 @@ public interface StoreMessageService extends IService { IPage getPage(StoreMessageQueryVO storeMessageQueryVO, PageVO pageVO); /** - * 保存消息信息 + * 保存店铺消息信息 * * @param messages 消息 * @return diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberMessageServiceImpl.java b/framework/src/main/java/cn/lili/modules/message/serviceimpl/MemberMessageServiceImpl.java similarity index 78% rename from framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberMessageServiceImpl.java rename to framework/src/main/java/cn/lili/modules/message/serviceimpl/MemberMessageServiceImpl.java index db131c08..835dcdf7 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberMessageServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/message/serviceimpl/MemberMessageServiceImpl.java @@ -1,19 +1,21 @@ -package cn.lili.modules.member.serviceimpl; +package cn.lili.modules.message.serviceimpl; import cn.lili.common.utils.PageUtil; import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; -import cn.lili.modules.member.entity.dos.MemberMessage; -import cn.lili.modules.member.entity.vo.MemberMessageQueryVO; -import cn.lili.modules.member.mapper.MemberMessageMapper; -import cn.lili.modules.member.service.MemberMessageService; +import cn.lili.modules.message.entity.dos.MemberMessage; +import cn.lili.modules.message.mapper.MemberMessageMapper; +import cn.lili.modules.message.service.MemberMessageService; +import cn.lili.modules.message.entity.vos.MemberMessageQueryVO; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + /** * 会员消息业务层实现 * @@ -28,6 +30,8 @@ public class MemberMessageServiceImpl extends ServiceImpl getPage(MemberMessageQueryVO memberMessageQueryVO, PageVO pageVO) { QueryWrapper queryWrapper = new QueryWrapper<>(); + //消息id + queryWrapper.like(StringUtils.isNotEmpty(memberMessageQueryVO.getMessageId()), "message_id", memberMessageQueryVO.getMessageId()); //消息标题 queryWrapper.like(StringUtils.isNotEmpty(memberMessageQueryVO.getTitle()), "title", memberMessageQueryVO.getTitle()); //会员id @@ -61,4 +65,9 @@ public class MemberMessageServiceImpl extends ServiceImpl messages) { + return saveBatch(messages); + } } \ No newline at end of file diff --git a/manager-api/src/main/java/cn/lili/controller/member/MemberMessageManagerController.java b/manager-api/src/main/java/cn/lili/controller/member/MemberMessageManagerController.java new file mode 100644 index 00000000..49b17813 --- /dev/null +++ b/manager-api/src/main/java/cn/lili/controller/member/MemberMessageManagerController.java @@ -0,0 +1,45 @@ +package cn.lili.controller.member; + +import cn.lili.common.enums.ResultUtil; +import cn.lili.common.vo.PageVO; +import cn.lili.common.vo.ResultMessage; +import cn.lili.modules.message.entity.dos.MemberMessage; +import cn.lili.modules.message.entity.dos.StoreMessage; +import cn.lili.modules.message.entity.vos.MemberMessageQueryVO; +import cn.lili.modules.message.entity.vos.StoreMessageQueryVO; +import cn.lili.modules.message.service.MemberMessageService; +import cn.lili.modules.message.service.StoreMessageService; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +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.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +/** + * 管理端,会员消息消息管理接口 + * + * @author pikachu + * @date: 2020/12/6 16:09 + */ +@Transactional +@RestController +@Api(tags = "管理端,会员消息消息管理接口") +@RequestMapping("/manager/message/member") +public class MemberMessageManagerController { + @Autowired + private MemberMessageService memberMessageService; + + + @GetMapping + @ApiOperation(value = "多条件分页获取") + public ResultMessage> getByCondition(MemberMessageQueryVO memberMessageQueryVO, + PageVO pageVo) { + IPage page = memberMessageService.getPage(memberMessageQueryVO, pageVo); + return ResultUtil.data(page); + } + +} From aaf53440ac7a109d2c83a8225140c0b3ca559b48 Mon Sep 17 00:00:00 2001 From: pikachu <1321288662@qq.com> Date: Sun, 20 Jun 2021 11:05:14 +0800 Subject: [PATCH 02/18] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=B3=A8=E8=A7=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/modules/message/entity/dos/MemberMessage.java | 2 +- .../main/java/cn/lili/modules/message/entity/dos/Message.java | 2 ++ .../cn/lili/modules/message/entity/dos/NoticeMessage.java | 4 ++-- .../java/cn/lili/modules/message/entity/dos/StoreMessage.java | 2 +- .../cn/lili/modules/message/mapper/MemberMessageMapper.java | 2 +- .../java/cn/lili/modules/message/mapper/MessageMapper.java | 2 +- .../modules/message/mapper/NoticeMessageTemplateMapper.java | 2 +- .../cn/lili/modules/message/mapper/StoreMessageMapper.java | 2 +- .../cn/lili/modules/message/service/MemberMessageService.java | 2 +- .../java/cn/lili/modules/message/service/MessageService.java | 2 +- .../cn/lili/modules/message/service/NoticeMessageService.java | 2 +- .../modules/message/serviceimpl/MemberMessageServiceImpl.java | 2 +- .../lili/modules/message/serviceimpl/MessageServiceImpl.java | 2 +- .../modules/message/serviceimpl/NoticeMessageServiceImpl.java | 2 +- 14 files changed, 16 insertions(+), 14 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/message/entity/dos/MemberMessage.java b/framework/src/main/java/cn/lili/modules/message/entity/dos/MemberMessage.java index f148ab05..378e35b6 100644 --- a/framework/src/main/java/cn/lili/modules/message/entity/dos/MemberMessage.java +++ b/framework/src/main/java/cn/lili/modules/message/entity/dos/MemberMessage.java @@ -11,7 +11,7 @@ import javax.persistence.Entity; import javax.persistence.Table; /** - * 会员消息 + * 会员接受消息对象 * * @author Chopper * @date 2020-02-25 14:10:16 diff --git a/framework/src/main/java/cn/lili/modules/message/entity/dos/Message.java b/framework/src/main/java/cn/lili/modules/message/entity/dos/Message.java index 34d0aacc..941e1391 100644 --- a/framework/src/main/java/cn/lili/modules/message/entity/dos/Message.java +++ b/framework/src/main/java/cn/lili/modules/message/entity/dos/Message.java @@ -14,6 +14,8 @@ import javax.persistence.Table; import javax.persistence.Transient; /** + * 管理段发送消息对象 + * * @author lili */ diff --git a/framework/src/main/java/cn/lili/modules/message/entity/dos/NoticeMessage.java b/framework/src/main/java/cn/lili/modules/message/entity/dos/NoticeMessage.java index 817aff46..5ff11608 100644 --- a/framework/src/main/java/cn/lili/modules/message/entity/dos/NoticeMessage.java +++ b/framework/src/main/java/cn/lili/modules/message/entity/dos/NoticeMessage.java @@ -10,7 +10,7 @@ import javax.persistence.Entity; import javax.persistence.Table; /** - * 站内消息模板设置 + * 通知类站内信模版对象 * * @author Bulbasaur * @version v4.1 @@ -20,7 +20,7 @@ import javax.persistence.Table; @Entity @Table(name = "li_notice_message") @TableName("li_notice_message") -@ApiModel(value = "站内消息模板") +@ApiModel(value = "通知类消息模板") public class NoticeMessage extends BaseEntity { private static final long serialVersionUID = 1L; diff --git a/framework/src/main/java/cn/lili/modules/message/entity/dos/StoreMessage.java b/framework/src/main/java/cn/lili/modules/message/entity/dos/StoreMessage.java index 12479e53..25fdfbd0 100644 --- a/framework/src/main/java/cn/lili/modules/message/entity/dos/StoreMessage.java +++ b/framework/src/main/java/cn/lili/modules/message/entity/dos/StoreMessage.java @@ -17,7 +17,7 @@ import javax.persistence.*; import java.util.Date; /** - * 店铺消息 + * 店铺接收消息对象 * @author Chopper * @date 2021/1/30 4:13 下午 */ diff --git a/framework/src/main/java/cn/lili/modules/message/mapper/MemberMessageMapper.java b/framework/src/main/java/cn/lili/modules/message/mapper/MemberMessageMapper.java index 72f4f373..a745aa83 100644 --- a/framework/src/main/java/cn/lili/modules/message/mapper/MemberMessageMapper.java +++ b/framework/src/main/java/cn/lili/modules/message/mapper/MemberMessageMapper.java @@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** - * 会员消息数据处理层 + * 会员接收到消息数据处理层 * * @author lili * @date 2020-02-25 14:10:16 diff --git a/framework/src/main/java/cn/lili/modules/message/mapper/MessageMapper.java b/framework/src/main/java/cn/lili/modules/message/mapper/MessageMapper.java index 64df8a05..8292f430 100644 --- a/framework/src/main/java/cn/lili/modules/message/mapper/MessageMapper.java +++ b/framework/src/main/java/cn/lili/modules/message/mapper/MessageMapper.java @@ -4,7 +4,7 @@ import cn.lili.modules.message.entity.dos.Message; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** - * 消息内容数据处理层 + * 管理端发送消息内容数据处理层 * @author Chopper * @date 2020/12/2 17:50 */ diff --git a/framework/src/main/java/cn/lili/modules/message/mapper/NoticeMessageTemplateMapper.java b/framework/src/main/java/cn/lili/modules/message/mapper/NoticeMessageTemplateMapper.java index 38f1c3d6..689af2be 100644 --- a/framework/src/main/java/cn/lili/modules/message/mapper/NoticeMessageTemplateMapper.java +++ b/framework/src/main/java/cn/lili/modules/message/mapper/NoticeMessageTemplateMapper.java @@ -4,7 +4,7 @@ import cn.lili.modules.message.entity.dos.NoticeMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** - * 消息模板数据处理层 + * 通知类消息模板数据处理层 * * @author Bulbasaur * @date 2020/12/8 9:46 diff --git a/framework/src/main/java/cn/lili/modules/message/mapper/StoreMessageMapper.java b/framework/src/main/java/cn/lili/modules/message/mapper/StoreMessageMapper.java index 4c580c00..64fa41d2 100644 --- a/framework/src/main/java/cn/lili/modules/message/mapper/StoreMessageMapper.java +++ b/framework/src/main/java/cn/lili/modules/message/mapper/StoreMessageMapper.java @@ -9,7 +9,7 @@ import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; /** - * 消息发送数据处理层 + * 店铺接收到消息发送数据处理层 * * @author Chopper * @date 2021/1/30 4:17 下午 diff --git a/framework/src/main/java/cn/lili/modules/message/service/MemberMessageService.java b/framework/src/main/java/cn/lili/modules/message/service/MemberMessageService.java index 70e4ef9d..f66de34c 100644 --- a/framework/src/main/java/cn/lili/modules/message/service/MemberMessageService.java +++ b/framework/src/main/java/cn/lili/modules/message/service/MemberMessageService.java @@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; /** - * 消息发送业务层 + * 会员消息发送业务层 * * @author Chopper * @date 2020/11/17 3:44 下午 diff --git a/framework/src/main/java/cn/lili/modules/message/service/MessageService.java b/framework/src/main/java/cn/lili/modules/message/service/MessageService.java index f5189caf..0b63799f 100644 --- a/framework/src/main/java/cn/lili/modules/message/service/MessageService.java +++ b/framework/src/main/java/cn/lili/modules/message/service/MessageService.java @@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; /** - * 消息内容业务层 + * 管理端发送消息内容业务层 * * @author Chopper * @date 2020/11/17 3:44 下午 diff --git a/framework/src/main/java/cn/lili/modules/message/service/NoticeMessageService.java b/framework/src/main/java/cn/lili/modules/message/service/NoticeMessageService.java index fabf2576..aac79e54 100644 --- a/framework/src/main/java/cn/lili/modules/message/service/NoticeMessageService.java +++ b/framework/src/main/java/cn/lili/modules/message/service/NoticeMessageService.java @@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; /** - * 消息模板业务层 + * 通知类消息模板业务层 * * @author Bulbasaur * @date 2020/12/8 9:47 diff --git a/framework/src/main/java/cn/lili/modules/message/serviceimpl/MemberMessageServiceImpl.java b/framework/src/main/java/cn/lili/modules/message/serviceimpl/MemberMessageServiceImpl.java index 835dcdf7..7b9a78ae 100644 --- a/framework/src/main/java/cn/lili/modules/message/serviceimpl/MemberMessageServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/message/serviceimpl/MemberMessageServiceImpl.java @@ -17,7 +17,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.List; /** - * 会员消息业务层实现 + * 会员接收消息业务层实现 * * @author Chopper * @date 2020/11/17 3:48 下午 diff --git a/framework/src/main/java/cn/lili/modules/message/serviceimpl/MessageServiceImpl.java b/framework/src/main/java/cn/lili/modules/message/serviceimpl/MessageServiceImpl.java index 357d60cf..94e52c20 100644 --- a/framework/src/main/java/cn/lili/modules/message/serviceimpl/MessageServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/message/serviceimpl/MessageServiceImpl.java @@ -17,7 +17,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** - * 消息内容业务层实现 + * 管理端发送消息内容业务层实现 * * @author Chopper * @date 2020/11/17 3:48 下午 diff --git a/framework/src/main/java/cn/lili/modules/message/serviceimpl/NoticeMessageServiceImpl.java b/framework/src/main/java/cn/lili/modules/message/serviceimpl/NoticeMessageServiceImpl.java index ab29dc40..3604fbd6 100644 --- a/framework/src/main/java/cn/lili/modules/message/serviceimpl/NoticeMessageServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/message/serviceimpl/NoticeMessageServiceImpl.java @@ -22,7 +22,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.Map; /** - * 消息模板业务层实现 + * 通知类消息模板业务层实现 * * @author Bulbasaur * @date 2020/12/8 9:48 From b8a2e905923f1b173a06dba5f2a425d11a2170eb Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 21 Jun 2021 14:57:20 +0800 Subject: [PATCH 03/18] =?UTF-8?q?=E8=A7=84=E8=8C=83sql=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- update.sql => update-sql/version4.0to4.1.sql | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename update.sql => update-sql/version4.0to4.1.sql (100%) diff --git a/update.sql b/update-sql/version4.0to4.1.sql similarity index 100% rename from update.sql rename to update-sql/version4.0to4.1.sql From 2db8eb73244224ad6a60d9c500f8079e6f53ae81 Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 21 Jun 2021 15:37:08 +0800 Subject: [PATCH 04/18] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/lili/common/utils/DateUtil.java | 13 ++- .../order/entity/dto/OrderSearchParams.java | 99 ++++++++----------- 2 files changed, 49 insertions(+), 63 deletions(-) diff --git a/framework/src/main/java/cn/lili/common/utils/DateUtil.java b/framework/src/main/java/cn/lili/common/utils/DateUtil.java index dcb4c89a..a5078149 100644 --- a/framework/src/main/java/cn/lili/common/utils/DateUtil.java +++ b/framework/src/main/java/cn/lili/common/utils/DateUtil.java @@ -87,6 +87,9 @@ public class DateUtil { * @return */ public static Date endOfDate(Date date) { + if (date == null) { + date = new Date(); + } Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY, 23); @@ -194,21 +197,23 @@ public class DateUtil { /** * 把日期转换成字符串型 * - * @param date 日期 + * @param date 日期 * @return */ public static String toString(Date date) { - return toString(date,STANDARD_FORMAT); + return toString(date, STANDARD_FORMAT); } + /** * 把日期转换成字符串型 * - * @param Long 日期 + * @param Long 日期 * @return */ public static String toString(Long date) { - return toString(date,STANDARD_FORMAT); + return toString(date, STANDARD_FORMAT); } + /** * 把日期转换成字符串型 * diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java index f93c77fd..888a80b4 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderSearchParams.java @@ -69,7 +69,7 @@ public class OrderSearchParams extends PageVO { * @see OrderTypeEnum * @see cn.lili.modules.order.order.entity.enums.OrderPromotionTypeEnum */ - @ApiModelProperty(value = "订单类型",allowableValues = "NORMAL,VIRTUAL,GIFT,PINTUAN,POINT" ) + @ApiModelProperty(value = "订单类型", allowableValues = "NORMAL,VIRTUAL,GIFT,PINTUAN,POINT") private String orderType; @ApiModelProperty(value = "支付方式") @@ -98,53 +98,60 @@ public class OrderSearchParams extends PageVO { //关键字查询 if (StringUtils.isNotEmpty(keywords)) { - wrapper.like("o.sn", keywords); - wrapper.like("oi.goods_name", keywords); + wrapper.and(queryWrapper -> wrapper.like("o.sn", keywords).or(). + like("oi.goods_name", keywords)); } //按卖家查询 - if (StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name())) { - wrapper.eq("o.store_id", UserContext.getCurrentUser().getStoreId()); - } - if (StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.MANAGER.name()) - && StringUtils.isNotEmpty(storeId)) { - wrapper.eq("o.store_id", storeId); - } + wrapper.eq(StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.STORE.name()), "o.store_id", UserContext.getCurrentUser().getStoreId()); + + //店铺查询 + wrapper.eq(StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.MANAGER.name()) + && StringUtils.isNotEmpty(storeId), "o.store_id", storeId); + //按买家查询 - if (StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.MEMBER.name())) { - wrapper.eq("o.member_id", UserContext.getCurrentUser().getId()); - } + wrapper.eq(StringUtils.equals(UserContext.getCurrentUser().getRole().name(), UserEnums.MEMBER.name()), "o.member_id", UserContext.getCurrentUser().getId()); + //按照买家查询 - if (StringUtils.isNotEmpty(memberId)) { - wrapper.like("o.member_id", memberId); - } + wrapper.like(StringUtils.isNotEmpty(memberId), "o.member_id", memberId); //按订单编号查询 - if (StringUtils.isNotEmpty(orderSn)) { - wrapper.like("o.sn", orderSn); - } + wrapper.like(StringUtils.isNotEmpty(orderSn), "o.sn", orderSn); //按时间查询 - if (startDate != null) { - wrapper.ge("o.create_time", startDate); - } - if (endDate != null) { - wrapper.le("o.create_time", DateUtil.endOfDate(endDate)); - } + wrapper.ge(startDate != null, "o.create_time", startDate); + + wrapper.le(endDate != null, "o.create_time", DateUtil.endOfDate(endDate)); //按购买人用户名 - if (StringUtils.isNotEmpty(buyerName)) { - wrapper.like("o.member_name", buyerName); - } + wrapper.like(StringUtils.isNotEmpty(buyerName), "o.member_name", buyerName); //按订单类型 if (StringUtils.isNotEmpty(orderType)) { - wrapper.eq("o.order_type", orderType) - .or().eq("o.order_promotion_type", orderType); + wrapper.and(queryWrapper-> queryWrapper.eq("o.order_type", orderType).or() + .eq("o.order_promotion_type", orderType)); } + + //物流查询 + wrapper.like(StringUtils.isNotEmpty(shipName), "o.ship_name", shipName); + + //按商品名称查询 + wrapper.like(StringUtils.isNotEmpty(goodsName), "oi.goods_name", goodsName); + + //付款方式 + wrapper.like(StringUtils.isNotEmpty(paymentType), "o.payment_type", paymentType); + //按支付方式 - if (StringUtils.isNotEmpty(paymentMethod)) { - wrapper.eq("o.payment_method", paymentMethod); - } + wrapper.eq(StringUtils.isNotEmpty(paymentMethod), "o.payment_method", paymentMethod); + + //订单状态 + wrapper.eq(StringUtils.isNotEmpty(orderStatus), "o.order_status", orderStatus); + + //付款状态 + wrapper.eq(StringUtils.isNotEmpty(payStatus), "o.pay_status", payStatus); + + //订单来源 + wrapper.like(StringUtils.isNotEmpty(clientType), "o.client_type", clientType); + //按标签查询 if (StringUtils.isNotEmpty(tag)) { @@ -176,33 +183,7 @@ public class OrderSearchParams extends PageVO { } } - if (StringUtils.isNotEmpty(shipName)) { - wrapper.like("o.ship_name", shipName); - } - //按商品名称查询 - if (StringUtils.isNotEmpty(goodsName)) { - wrapper.like("oi.goods_name", goodsName); - } - //付款方式 - if (StringUtils.isNotEmpty(paymentType)) { - wrapper.like("o.payment_type", paymentType); - } - - //订单状态 - if (StringUtils.isNotEmpty(orderStatus)) { - wrapper.eq("o.order_status", orderStatus); - } - - //付款状态 - if (StringUtils.isNotEmpty(payStatus)) { - wrapper.eq("o.pay_status", payStatus); - } - - //订单来源 - if (StringUtils.isNotEmpty(clientType)) { - wrapper.like("o.client_type", clientType); - } wrapper.eq("o.delete_flag", false); return wrapper; } From cdbaed22d9abf54dc636daa82439766c78e7edf1 Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 21 Jun 2021 16:38:29 +0800 Subject: [PATCH 05/18] =?UTF-8?q?=E9=AA=8C=E8=AF=81=E7=A0=81=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/SliderImageController.java | 5 ++-- .../common/aop/limiter/LimitInterceptor.java | 27 +++++++------------ .../java/cn/lili/common/enums/ResultCode.java | 2 ++ .../serviceimpl/GoodsSkuServiceImpl.java | 4 +++ 4 files changed, 18 insertions(+), 20 deletions(-) diff --git a/common-api/src/main/java/cn/lili/controller/common/SliderImageController.java b/common-api/src/main/java/cn/lili/controller/common/SliderImageController.java index cae8d3ef..ff8dbef5 100644 --- a/common-api/src/main/java/cn/lili/controller/common/SliderImageController.java +++ b/common-api/src/main/java/cn/lili/controller/common/SliderImageController.java @@ -1,6 +1,7 @@ package cn.lili.controller.common; import cn.lili.common.aop.limiter.annotation.LimitPoint; +import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.enums.ResultUtil; import cn.lili.common.verification.enums.VerificationEnums; @@ -37,8 +38,8 @@ public class SliderImageController { } catch (ServiceException e) { throw e; } catch (Exception e) { - log.error("获取校验接口错误",e); - return null; + log.error("获取校验接口错误", e); + throw new ServiceException(ResultCode.VERIFICATION_EXIST); } } diff --git a/framework/src/main/java/cn/lili/common/aop/limiter/LimitInterceptor.java b/framework/src/main/java/cn/lili/common/aop/limiter/LimitInterceptor.java index fd779456..ff0b5210 100644 --- a/framework/src/main/java/cn/lili/common/aop/limiter/LimitInterceptor.java +++ b/framework/src/main/java/cn/lili/common/aop/limiter/LimitInterceptor.java @@ -5,10 +5,8 @@ import cn.lili.common.exception.ServiceException; import com.google.common.collect.ImmutableList; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.reflect.MethodSignature; +import org.aspectj.lang.annotation.Before; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.core.RedisTemplate; @@ -18,7 +16,6 @@ import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; import java.io.Serializable; -import java.lang.reflect.Method; /** * 流量拦截 @@ -43,40 +40,34 @@ public class LimitInterceptor { this.limitScript = limitScript; } - @Around("execution(public * *(..)) && @annotation(cn.lili.common.aop.limiter.annotation.LimitPoint)") - public Object interceptor(ProceedingJoinPoint pjp) throws Throwable { - MethodSignature signature = (MethodSignature) pjp.getSignature(); - Method method = signature.getMethod(); - LimitPoint limitPointAnnotation = method.getAnnotation(LimitPoint.class); + @Before("@annotation(limitPointAnnotation)") + public void interceptor(LimitPoint limitPointAnnotation) { LimitType limitType = limitPointAnnotation.limitType(); String name = limitPointAnnotation.name(); String key; int limitPeriod = limitPointAnnotation.period(); int limitCount = limitPointAnnotation.limit(); switch (limitType) { - case IP: - key = limitPointAnnotation.key() + getIpAddress(); - break; case CUSTOMER: key = limitPointAnnotation.key(); break; default: - key = StringUtils.upperCase(method.getName()); + key = limitPointAnnotation.key() + getIpAddress(); } ImmutableList keys = ImmutableList.of(StringUtils.join(limitPointAnnotation.prefix(), key)); try { Number count = redisTemplate.execute(limitScript, keys, limitCount, limitPeriod); - log.info("Access try count is {} for name={} and key = {}", count, name, key); + log.info("限制请求{}, 当前请求{},缓存key{}", limitCount, count.intValue(), key); //如果缓存里没有值,或者他的值小于限制频率 - if (count.intValue() <= limitCount) { - return pjp.proceed(); - } else { + if (count.intValue() >= limitCount) { throw new ServiceException("访问过于频繁,请稍后再试"); } } //如果从redis中执行都值判定为空,则这里跳过 catch (NullPointerException e) { - return pjp.proceed(); + return; + } catch (ServiceException e) { + throw e; } catch (Exception e) { throw new RuntimeException("服务器异常,请稍后再试"); } diff --git a/framework/src/main/java/cn/lili/common/enums/ResultCode.java b/framework/src/main/java/cn/lili/common/enums/ResultCode.java index d6e4b16b..677ea0f6 100644 --- a/framework/src/main/java/cn/lili/common/enums/ResultCode.java +++ b/framework/src/main/java/cn/lili/common/enums/ResultCode.java @@ -34,6 +34,7 @@ public enum ResultCode { */ WECHAT_CONNECT_NOT_EXIST(1001, "微信联合登录未配置"), + VERIFICATION_EXIST(1002, "验证码服务异常"), /** * 分类 */ @@ -56,6 +57,7 @@ public enum ResultCode { GOODS_UPPER_ERROR(11004, "商品上架失败"), GOODS_AUTH_ERROR(11005, "商品审核失败"), POINT_GOODS_ERROR(11006, "积分商品业务异常,请稍后重试"), + GOODS_SKU_ERROR(11007, "SKU信息均为必填项,不能为空"), /** * 参数 diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index 57613d4c..0a4c2694 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.NumberUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import cn.lili.common.cache.Cache; +import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.common.rocketmq.tags.GoodsTagsEnum; @@ -603,6 +604,9 @@ public class GoodsSkuServiceImpl extends ServiceImpl i for (Map.Entry m : map.entrySet()) { //保存规格信息 if (m.getKey().equals("id") || m.getKey().equals("sn") || m.getKey().equals("cost") || m.getKey().equals("price") || m.getKey().equals("quantity") || m.getKey().equals("weight")) { + if (null == m.getValue()) { + throw new ServiceException(ResultCode.GOODS_SKU_ERROR); + } continue; } else { specMap.put(m.getKey(), m.getValue()); From 74ae262e79dcf122b0502eb6c79e701ee7eed66e Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 21 Jun 2021 17:12:55 +0800 Subject: [PATCH 06/18] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E9=83=A8=E5=88=86=E5=8F=82=E6=95=B0=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/lili/common/enums/ResultCode.java | 3 ++- .../lili/modules/goods/entity/dos/Goods.java | 20 ++++++++++++++++++- .../serviceimpl/GoodsSkuServiceImpl.java | 4 ---- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/framework/src/main/java/cn/lili/common/enums/ResultCode.java b/framework/src/main/java/cn/lili/common/enums/ResultCode.java index 677ea0f6..f2e8bd4d 100644 --- a/framework/src/main/java/cn/lili/common/enums/ResultCode.java +++ b/framework/src/main/java/cn/lili/common/enums/ResultCode.java @@ -57,7 +57,8 @@ public enum ResultCode { GOODS_UPPER_ERROR(11004, "商品上架失败"), GOODS_AUTH_ERROR(11005, "商品审核失败"), POINT_GOODS_ERROR(11006, "积分商品业务异常,请稍后重试"), - GOODS_SKU_ERROR(11007, "SKU信息均为必填项,不能为空"), + GOODS_SKU_SN_ERROR(11007, "商品SKU编号不能为空"), + GOODS_SKU_PRICE_ERROR(11008, "商品SKU价格不能小于等于0"), /** * 参数 diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java b/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java index 512d4498..333d9eb8 100644 --- a/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java +++ b/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java @@ -2,11 +2,14 @@ package cn.lili.modules.goods.entity.dos; import cn.hutool.json.JSONUtil; import cn.lili.base.BaseEntity; +import cn.lili.common.enums.ResultCode; +import cn.lili.common.exception.ServiceException; import cn.lili.modules.goods.entity.dto.GoodsOperationDTO; import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.xkcoding.http.util.StringUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,6 +19,7 @@ import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table; import javax.validation.constraints.Max; +import java.util.Map; /** * 商品 @@ -222,6 +226,20 @@ public class Goods extends BaseEntity { } //如果立即上架则 this.marketEnable = goodsOperationDTO.isRelease() ? GoodsStatusEnum.UPPER.name() : GoodsStatusEnum.DOWN.name(); - this.goodsType=goodsOperationDTO.getGoodsType(); + this.goodsType = goodsOperationDTO.getGoodsType(); + + // quantity/weight/cost + + //循环sku,判定sku是否有效 + for (Map sku : goodsOperationDTO.getSkuList()) { + //判定参数不能为空 + if (sku.get("sn") == null) { + throw new ServiceException(ResultCode.GOODS_SKU_SN_ERROR); + } + if (StringUtil.isEmpty(sku.get("price").toString()) || Integer.parseInt( sku.get("price").toString()) <= 0) { + throw new ServiceException(ResultCode.GOODS_SKU_PRICE_ERROR); + } + + } } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index 0a4c2694..57613d4c 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -5,7 +5,6 @@ import cn.hutool.core.util.NumberUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import cn.lili.common.cache.Cache; -import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.common.rocketmq.tags.GoodsTagsEnum; @@ -604,9 +603,6 @@ public class GoodsSkuServiceImpl extends ServiceImpl i for (Map.Entry m : map.entrySet()) { //保存规格信息 if (m.getKey().equals("id") || m.getKey().equals("sn") || m.getKey().equals("cost") || m.getKey().equals("price") || m.getKey().equals("quantity") || m.getKey().equals("weight")) { - if (null == m.getValue()) { - throw new ServiceException(ResultCode.GOODS_SKU_ERROR); - } continue; } else { specMap.put(m.getKey(), m.getValue()); From 65d106e5152a7de6e36dfb47f823af7141d6fb57 Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 21 Jun 2021 17:30:28 +0800 Subject: [PATCH 07/18] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E6=97=B6=EF=BC=8C=E5=8F=82=E6=95=B0=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/lili/common/enums/ResultCode.java | 40 +++++++++++++++++++ .../lili/modules/goods/entity/dos/Goods.java | 11 ++++- 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/framework/src/main/java/cn/lili/common/enums/ResultCode.java b/framework/src/main/java/cn/lili/common/enums/ResultCode.java index f2e8bd4d..9d9dc66d 100644 --- a/framework/src/main/java/cn/lili/common/enums/ResultCode.java +++ b/framework/src/main/java/cn/lili/common/enums/ResultCode.java @@ -59,77 +59,117 @@ public enum ResultCode { POINT_GOODS_ERROR(11006, "积分商品业务异常,请稍后重试"), GOODS_SKU_SN_ERROR(11007, "商品SKU编号不能为空"), GOODS_SKU_PRICE_ERROR(11008, "商品SKU价格不能小于等于0"), + GOODS_SKU_COST_ERROR(11009, "商品SKU成本价不能小于等于0"), + GOODS_SKU_WEIGHT_ERROR(11010, "商品重量不能为负数"), + GOODS_SKU_QUANTITY_ERROR(11011, "商品库存数量不能为负数"), /** * 参数 */ PARAMETER_SAVE_ERROR(12001, "参数添加失败"), + PARAMETER_UPDATE_ERROR(12002, "参数编辑失败"), /** * 规格 */ SPEC_SAVE_ERROR(13001, "规格修改失败"), + SPEC_UPDATE_ERROR(13002, "规格修改失败"), + SPEC_DELETE_ERROR(13003, "此规格已绑定分类不允许删除"), /** * 品牌 */ BRAND_SAVE_ERROR(14001, "品牌添加失败"), + BRAND_UPDATE_ERROR(14002, "品牌修改失败"), + BRAND_DISABLE_ERROR(14003, "品牌禁用失败"), + BRAND_DELETE_ERROR(14004, "品牌删除失败"), /** * 用户 */ USER_EDIT_SUCCESS(20001, "用户修改成功"), + USER_NOT_EXIST(20002, "用户不存在"), + USER_NOT_LOGIN(20003, "用户未登录"), + USER_AUTH_EXPIRED(20004, "用户已退出,请重新登录"), + USER_AUTHORITY_ERROR(20005, "权限不足"), + USER_CONNECT_LOGIN_ERROR(20006, "未找到登录信息"), + USER_NAME_EXIST(20007, "该用户名已被注册"), + USER_PHONE_EXIST(20008, "该手机号已被注册"), + USER_PHONE_NOT_EXIST(20009, "手机号不存在"), + USER_PASSWORD_ERROR(20010, "密码不正确"), + USER_NOT_PHONE(20011, "非当前用户的手机号"), + USER_CONNECT_ERROR(20012, "联合第三方登录,授权信息错误"), + USER_RECEIPT_REPEAT_ERROR(20013, "会员发票信息重复"), + USER_RECEIPT_NOT_EXIST(20014, "会员发票信息不存在"), + USER_EDIT_ERROR(20015, "用户修改失败"), + USER_OLD_PASSWORD_ERROR(20016, "旧密码不正确"), + USER_COLLECTION_EXIST(20017, "无法重复收藏"), + USER_GRADE_IS_DEFAULT(20018, "会员等级为默认会员等级"), + DELETE_EXIST(2001, "无法重复收藏"), /** * 权限 */ PERMISSION_DEPARTMENT_ROLE_ERROR(21001, "角色已绑定部门,请逐个删除"), + PERMISSION_USER_ROLE_ERROR(21002, "角色已绑定管理员,请逐个删除"), + PERMISSION_MENU_ROLE_ERROR(21003, "菜单已绑定角色,请先删除或编辑角色"), + PERMISSION_DEPARTMENT_DELETE_ERROR(21004, "部门已经绑定管理员,请先删除或编辑管理员"), + PERMISSION_BEYOND_TEN(21005, "最多可以设置10个角色"), /** * 分销 */ DISTRIBUTION_CLOSE(22000, "分销功能关闭"), + DISTRIBUTION_NOT_EXIST(22001, "分销员不存在"), + DISTRIBUTION_IS_APPLY(22002, "分销员已申请,无需重复提交"), + DISTRIBUTION_AUDIT_ERROR(22003, "审核分销员失败"), + DISTRIBUTION_RETREAT_ERROR(22004, "分销员清退失败"), + DISTRIBUTION_CASH_NOT_EXIST(22005, "分销员提现记录不存在"), + DISTRIBUTION_GOODS_DOUBLE(22006, "不能重复添加分销商品"), /** * 购物车 */ CART_ERROR(30001, "读取结算页的购物车异常"), + CART_PINTUAN_NOT_EXIST_ERROR(30002, "拼团活动不存在错误"), + CART_PINTUAN_LIMIT_ERROR(30003, "购买数量超过拼团活动限制数量"), + SHIPPING_NOT_APPLY(30005, "购物商品不支持当前收货地址配送"), /** diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java b/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java index 333d9eb8..5087459f 100644 --- a/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java +++ b/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java @@ -228,8 +228,6 @@ public class Goods extends BaseEntity { this.marketEnable = goodsOperationDTO.isRelease() ? GoodsStatusEnum.UPPER.name() : GoodsStatusEnum.DOWN.name(); this.goodsType = goodsOperationDTO.getGoodsType(); - // quantity/weight/cost - //循环sku,判定sku是否有效 for (Map sku : goodsOperationDTO.getSkuList()) { //判定参数不能为空 @@ -239,6 +237,15 @@ public class Goods extends BaseEntity { if (StringUtil.isEmpty(sku.get("price").toString()) || Integer.parseInt( sku.get("price").toString()) <= 0) { throw new ServiceException(ResultCode.GOODS_SKU_PRICE_ERROR); } + if (StringUtil.isEmpty(sku.get("cost").toString()) || Integer.parseInt( sku.get("cost").toString()) <= 0) { + throw new ServiceException(ResultCode.GOODS_SKU_COST_ERROR); + } + if (StringUtil.isEmpty(sku.get("weight").toString()) || Integer.parseInt( sku.get("weight").toString()) < 0) { + throw new ServiceException(ResultCode.GOODS_SKU_WEIGHT_ERROR); + } + if (StringUtil.isEmpty(sku.get("quantity").toString()) || Integer.parseInt( sku.get("quantity").toString()) < 0) { + throw new ServiceException(ResultCode.GOODS_SKU_QUANTITY_ERROR); + } } } From 41a86ff7dc6bf5f9b5407ef635dd7aebbfcd34b6 Mon Sep 17 00:00:00 2001 From: paulGao Date: Tue, 22 Jun 2021 00:07:33 +0800 Subject: [PATCH 08/18] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=95=86=E5=93=81?= =?UTF-8?q?=E7=B4=A2=E5=BC=95=E5=8F=82=E6=95=B0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/goods/entity/dos/GoodsParams.java | 12 +++++ .../serviceimpl/GoodsParamsServiceImpl.java | 7 +++ .../serviceimpl/GoodsSkuServiceImpl.java | 43 ++++++----------- .../search/entity/dos/EsGoodsIndex.java | 46 +++++++++++++------ .../search/service/EsGoodsIndexService.java | 4 +- .../serviceimpl/EsGoodsIndexServiceImpl.java | 6 ++- .../other/ElasticsearchController.java | 13 +----- 7 files changed, 73 insertions(+), 58 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dos/GoodsParams.java b/framework/src/main/java/cn/lili/modules/goods/entity/dos/GoodsParams.java index 54d59883..16045221 100644 --- a/framework/src/main/java/cn/lili/modules/goods/entity/dos/GoodsParams.java +++ b/framework/src/main/java/cn/lili/modules/goods/entity/dos/GoodsParams.java @@ -6,10 +6,14 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; import org.hibernate.validator.constraints.Length; import javax.persistence.Entity; import javax.persistence.Table; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; /** * 商品关联参数 @@ -17,6 +21,7 @@ import javax.persistence.Table; * @author pikachu * @date 2020-02-23 9:14:33 */ +@EqualsAndHashCode(callSuper = true) @Data @Entity @Table(name = "li_goods_params") @@ -52,4 +57,11 @@ public class GoodsParams extends BaseEntity { @Length(max = 100, message = "参数值字符不能大于120") private String paramValue; + @TableField(value = "is_index") + @ApiModelProperty(value = "是否可索引,0 不显示 1 显示", required = true) + @NotNull(message = "是否可索引必选") + @Min(value = 0, message = "是否可索引传值不正确") + @Max(value = 1, message = "是否可索引传值不正确") + private Integer isIndex = 0; + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsParamsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsParamsServiceImpl.java index 729d1c32..4fae7285 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsParamsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsParamsServiceImpl.java @@ -2,11 +2,13 @@ package cn.lili.modules.goods.serviceimpl; import cn.lili.modules.goods.entity.dos.CategoryParameterGroup; import cn.lili.modules.goods.entity.dos.GoodsParams; +import cn.lili.modules.goods.entity.dos.Parameters; import cn.lili.modules.goods.entity.vos.GoodsParamsGroupVO; import cn.lili.modules.goods.entity.vos.GoodsParamsVO; import cn.lili.modules.goods.mapper.GoodsParamsMapper; import cn.lili.modules.goods.service.CategoryParameterGroupService; import cn.lili.modules.goods.service.GoodsParamsService; +import cn.lili.modules.goods.service.ParametersService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -36,6 +38,9 @@ public class GoodsParamsServiceImpl extends ServiceImpl paramList, String goodsId) { //先删除现有商品参数 @@ -43,10 +48,12 @@ public class GoodsParamsServiceImpl extends ServiceImpl i @Override public void add(List> skuList, Goods goods) { // 检查是否需要生成索引 - boolean needIndex = checkNeedIndex(goods); List newSkuList; // 如果有规格 if (skuList != null && !skuList.isEmpty()) { // 添加商品sku - newSkuList = this.addGoodsSku(skuList, goods, needIndex); + newSkuList = this.addGoodsSku(skuList, goods); } else { throw new ServiceException("规格必须要有一个!"); } @@ -103,23 +102,8 @@ public class GoodsSkuServiceImpl extends ServiceImpl i generateEsCheck(goods); } - private boolean checkNeedIndex(Goods goods) { - if (goods.getParams() != null && !goods.getParams().isEmpty()) { - List goodsParams = JSONUtil.toList(goods.getParams(), GoodsParams.class); - for (GoodsParams goodsParam : goodsParams) { - Parameters parameters = parametersService.getById(goodsParam.getParamId()); - if (parameters.getIsIndex() == 1) { - return true; - } - } - } - return false; - } - @Override public void update(List> skuList, Goods goods, Boolean regeneratorSkuFlag) { - // 检查是否需要生成索引 - boolean needIndex = checkNeedIndex(goods); // 是否存在规格 if (skuList == null || skuList.isEmpty()) { throw new ServiceException("规格必须要有一个!"); @@ -139,7 +123,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i //删除sku相册 goodsGalleryService.removeByIds(oldSkuIds); // 添加商品sku - newSkuList = this.addGoodsSku(skuList, goods, needIndex); + newSkuList = this.addGoodsSku(skuList, goods); //发送mq消息 String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.SKU_DELETE.name(); @@ -161,9 +145,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i this.updateBatchById(newSkuList); } this.updateStock(newSkuList); - if (Boolean.TRUE.equals(needIndex)) { - generateEsCheck(goods); - } + generateEsCheck(goods); } /** @@ -206,9 +188,9 @@ public class GoodsSkuServiceImpl extends ServiceImpl i Map map = new HashMap<>(); GoodsSku goodsSku = this.getGoodsSkuByIdFromCache(skuId); + GoodsVO goodsVO = goodsService.getGoodsVO(goodsId); //如果规格为空则使用商品ID进行查询 if (goodsSku == null) { - GoodsVO goodsVO = goodsService.getGoodsVO(goodsId); skuId = goodsVO.getSkuList().get(0).getId(); goodsSku = this.getGoodsSkuByIdFromCache(skuId); //如果使用商品ID无法查询SKU则返回错误 @@ -219,8 +201,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i // 获取当前商品的索引信息 EsGoodsIndex goodsIndex = goodsIndexService.findById(skuId); if (goodsIndex == null) { - goodsIndex = new EsGoodsIndex(goodsSku); - goodsIndex.setPromotionMap(promotionService.getGoodsCurrentPromotionMap(goodsIndex)); + goodsIndex = goodsIndexService.resetEsGoodsIndex(goodsSku, goodsVO.getGoodsParamsList()); } //商品规格 GoodsSkuVO goodsSkuDetail = this.getGoodsSkuVO(goodsSku); @@ -456,6 +437,10 @@ public class GoodsSkuServiceImpl extends ServiceImpl i for (GoodsSku goodsSku : goodsSkuList) { EsGoodsIndex esGoodsOld = goodsIndexService.findById(goodsSku.getId()); EsGoodsIndex goodsIndex = new EsGoodsIndex(goodsSku); + if (goods.getParams() != null && !goods.getParams().isEmpty()) { + List goodsParams = JSONUtil.toList(goods.getParams(), GoodsParams.class); + goodsIndex = new EsGoodsIndex(goodsSku, goodsParams); + } //如果商品库存不为0,并且es中有数据 if (goodsSku.getQuantity() > 0 && esGoodsOld == null) { goodsIndexService.addIndex(goodsIndex); @@ -501,7 +486,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i * @param skuList sku列表 * @param goods 商品信息 */ - private List addGoodsSku(List> skuList, Goods goods, Boolean needIndex) { + private List addGoodsSku(List> skuList, Goods goods) { List skus = new ArrayList<>(); List goodsIndices = new ArrayList<>(); for (Map skuVO : skuList) { @@ -517,11 +502,9 @@ public class GoodsSkuServiceImpl extends ServiceImpl i stringRedisTemplate.opsForValue().set(GoodsSkuService.getStockCacheKey(goodsSku.getId()), goodsSku.getQuantity().toString()); } this.saveBatch(skus); - if (Boolean.TRUE.equals(needIndex)) { - String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GENERATOR_GOODS_INDEX.name(); - //发送mq消息 - rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(goodsIndices), RocketmqSendCallbackBuilder.commonCallback()); - } + String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GENERATOR_GOODS_INDEX.name(); + //发送mq消息 + rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(goodsIndices), RocketmqSendCallbackBuilder.commonCallback()); return skus; } diff --git a/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java b/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java index a1baae33..07e5d6c2 100644 --- a/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java +++ b/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java @@ -1,9 +1,11 @@ package cn.lili.modules.search.entity.dos; +import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import cn.lili.common.elasticsearch.EsSuffix; import cn.lili.common.utils.StringUtils; +import cn.lili.modules.goods.entity.dos.GoodsParams; import cn.lili.modules.goods.entity.dos.GoodsSku; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; @@ -275,22 +277,38 @@ public class EsGoodsIndex implements Serializable { this.intro = sku.getIntro(); this.grade = sku.getGrade(); this.releaseTime = new Date(); - if (StringUtils.isNotEmpty(sku.getSpecs())) { - List attributes = new ArrayList<>(); - JSONObject jsonObject = JSONUtil.parseObj(sku.getSpecs()); - for (Map.Entry entry : jsonObject.entrySet()) { - if (!entry.getKey().equals("images")) { - EsGoodsAttribute attribute = new EsGoodsAttribute(); - attribute.setType(0); - attribute.setName(entry.getKey()); - attribute.setValue(entry.getValue().toString()); - attributes.add(attribute); - } - } - this.attrList = attributes; - } +// if (CharSequenceUtil.isNotEmpty(sku.getSpecs())) { +// List attributes = new ArrayList<>(); +// JSONObject jsonObject = JSONUtil.parseObj(sku.getSpecs()); +// for (Map.Entry entry : jsonObject.entrySet()) { +// if (!entry.getKey().equals("images")) { +// EsGoodsAttribute attribute = new EsGoodsAttribute(); +// attribute.setType(1); +// attribute.setName(entry.getKey()); +// attribute.setValue(entry.getValue().toString()); +// attributes.add(attribute); +// } +// } +// this.attrList = attributes; +// } } + } + public EsGoodsIndex(GoodsSku sku, List goodsParams) { + this(sku); + if (goodsParams != null && !goodsParams.isEmpty()) { + List attributes = new ArrayList<>(); + for (GoodsParams goodsParam : goodsParams) { + EsGoodsAttribute attribute = new EsGoodsAttribute(); + if (goodsParam.getIsIndex() == 1) { + attribute.setType(1); + attribute.setName(goodsParam.getParamName()); + attribute.setValue(goodsParam.getParamValue()); + attributes.add(attribute); + } + } + this.attrList = attributes; + } } public void setGoodsSku(GoodsSku sku) { diff --git a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java index 6f737c1d..fbc7bc17 100644 --- a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java +++ b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java @@ -1,5 +1,6 @@ package cn.lili.modules.search.service; +import cn.lili.modules.goods.entity.dos.GoodsParams; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.promotion.entity.dto.BasePromotion; @@ -145,7 +146,8 @@ public interface EsGoodsIndexService { * 重置当前商品索引 * * @param goodsSku 商品sku信息 + * @param goodsParams 商品参数 * @return 商品索引 */ - EsGoodsIndex resetEsGoodsIndex(GoodsSku goodsSku); + EsGoodsIndex resetEsGoodsIndex(GoodsSku goodsSku, List goodsParams); } diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index d0df2bf7..082b3616 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -8,6 +8,7 @@ import cn.hutool.extra.pinyin.PinyinUtil; import cn.lili.common.elasticsearch.BaseElasticsearchService; import cn.lili.common.elasticsearch.EsSuffix; import cn.lili.config.elasticsearch.ElasticsearchProperties; +import cn.lili.modules.goods.entity.dos.GoodsParams; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.entity.dos.GoodsWords; import cn.lili.modules.goods.entity.enums.GoodsWordsTypeEnum; @@ -367,11 +368,12 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements * 重置当前商品索引 * * @param goodsSku 商品sku信息 + * @param goodsParams 商品参数 * @return 商品索引 */ @Override - public EsGoodsIndex resetEsGoodsIndex(GoodsSku goodsSku) { - EsGoodsIndex index = new EsGoodsIndex(goodsSku); + public EsGoodsIndex resetEsGoodsIndex(GoodsSku goodsSku, List goodsParams) { + EsGoodsIndex index = new EsGoodsIndex(goodsSku, goodsParams); //获取活动信息 Map goodsCurrentPromotionMap = promotionService.getGoodsCurrentPromotionMap(index); //写入促销信息 diff --git a/manager-api/src/main/java/cn/lili/controller/other/ElasticsearchController.java b/manager-api/src/main/java/cn/lili/controller/other/ElasticsearchController.java index 7c2141e8..5ab07dbd 100644 --- a/manager-api/src/main/java/cn/lili/controller/other/ElasticsearchController.java +++ b/manager-api/src/main/java/cn/lili/controller/other/ElasticsearchController.java @@ -68,23 +68,14 @@ public class ElasticsearchController { String goodsId = null; //库存锁是在redis做的,所以生成索引,同时更新一下redis中的库存数量 for (GoodsSku goodsSku : list) { - boolean needIndex = false; if (goodsId == null || !goodsId.equals(goodsSku.getGoodsId())) { goodsId = goodsSku.getGoodsId(); Goods goods = goodsService.getById(goodsId); + EsGoodsIndex index = new EsGoodsIndex(goodsSku); if (goods.getParams() != null && !goods.getParams().isEmpty()) { List goodsParams = JSONUtil.toList(goods.getParams(), GoodsParams.class); - for (GoodsParams goodsParam : goodsParams) { - Parameters parameters = parametersService.getById(goodsParam.getParamId()); - if (parameters.getIsIndex() == 1) { - needIndex = true; - break; - } - } + index = new EsGoodsIndex(goodsSku, goodsParams); } - } - if (Boolean.TRUE.equals(needIndex)) { - EsGoodsIndex index = new EsGoodsIndex(goodsSku); Map goodsCurrentPromotionMap = promotionService.getGoodsCurrentPromotionMap(index); index.setPromotionMap(goodsCurrentPromotionMap); esGoodsIndices.add(index); From cfd8bceb10e2271209e510389015f5eee90fb47a Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 22 Jun 2021 09:23:50 +0800 Subject: [PATCH 09/18] =?UTF-8?q?=E7=B4=A2=E5=BC=95=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/modules/search/entity/dos/EsGoodsIndex.java | 6 +----- update-sql/version4.0to4.1.sql | 3 +++ 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java b/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java index 07e5d6c2..e8388bd1 100644 --- a/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java +++ b/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java @@ -1,10 +1,6 @@ package cn.lili.modules.search.entity.dos; -import cn.hutool.core.text.CharSequenceUtil; -import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; import cn.lili.common.elasticsearch.EsSuffix; -import cn.lili.common.utils.StringUtils; import cn.lili.modules.goods.entity.dos.GoodsParams; import cn.lili.modules.goods.entity.dos.GoodsSku; import com.fasterxml.jackson.annotation.JsonFormat; @@ -300,7 +296,7 @@ public class EsGoodsIndex implements Serializable { List attributes = new ArrayList<>(); for (GoodsParams goodsParam : goodsParams) { EsGoodsAttribute attribute = new EsGoodsAttribute(); - if (goodsParam.getIsIndex() == 1) { + if (goodsParam.getIsIndex() != null && goodsParam.getIsIndex() == 1) { attribute.setType(1); attribute.setName(goodsParam.getParamName()); attribute.setValue(goodsParam.getParamValue()); diff --git a/update-sql/version4.0to4.1.sql b/update-sql/version4.0to4.1.sql index d853abbf..b7eef5fb 100644 --- a/update-sql/version4.0to4.1.sql +++ b/update-sql/version4.0to4.1.sql @@ -12,3 +12,6 @@ ALTER TABLE li_coupon ADD range_day_type VARCHAR ( 32 ); ALTER TABLE li_coupon ADD effective_days INT; /**秒杀增加显示商品数量**/ ALTER TABLE li_seckill ADD goods_num INT; + +/**商品参数增加字段**/ +ALTER TABLE li_goods_params ADD is_index INT; From 8f93ac4d49f94cf9838c3c9ba158bfd589f11fa0 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 22 Jun 2021 11:50:08 +0800 Subject: [PATCH 10/18] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E6=8F=90=E7=A4=BA=E8=AF=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- framework/src/main/java/cn/lili/common/enums/ResultCode.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/common/enums/ResultCode.java b/framework/src/main/java/cn/lili/common/enums/ResultCode.java index 9d9dc66d..cb6d19d5 100644 --- a/framework/src/main/java/cn/lili/common/enums/ResultCode.java +++ b/framework/src/main/java/cn/lili/common/enums/ResultCode.java @@ -17,7 +17,7 @@ public enum ResultCode { /** * 失败返回码 */ - ERROR(400, "失败"), + ERROR(400, "服务器繁忙,请稍后重试"), /** * 失败返回码 From 19154aa2b8b541355838fe7c36cd9132852b15e5 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 22 Jun 2021 15:08:06 +0800 Subject: [PATCH 11/18] =?UTF-8?q?=E8=99=9A=E6=8B=9F=E5=95=86=E5=93=81?= =?UTF-8?q?=E9=87=8D=E9=87=8F=E5=AD=97=E6=AE=B5=E5=85=BC=E5=AE=B9=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/lili/modules/goods/entity/dos/Goods.java | 7 +++++-- .../java/cn/lili/modules/goods/entity/dos/GoodsSku.java | 7 +++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java b/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java index 5087459f..acf79d3d 100644 --- a/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java +++ b/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java @@ -240,8 +240,11 @@ public class Goods extends BaseEntity { if (StringUtil.isEmpty(sku.get("cost").toString()) || Integer.parseInt( sku.get("cost").toString()) <= 0) { throw new ServiceException(ResultCode.GOODS_SKU_COST_ERROR); } - if (StringUtil.isEmpty(sku.get("weight").toString()) || Integer.parseInt( sku.get("weight").toString()) < 0) { - throw new ServiceException(ResultCode.GOODS_SKU_WEIGHT_ERROR); + //虚拟商品没有重量字段 + if(sku.containsKey("weight")) { + if (StringUtil.isEmpty(sku.get("weight").toString()) || Integer.parseInt(sku.get("weight").toString()) < 0) { + throw new ServiceException(ResultCode.GOODS_SKU_WEIGHT_ERROR); + } } if (StringUtil.isEmpty(sku.get("quantity").toString()) || Integer.parseInt( sku.get("quantity").toString()) < 0) { throw new ServiceException(ResultCode.GOODS_SKU_QUANTITY_ERROR); diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dos/GoodsSku.java b/framework/src/main/java/cn/lili/modules/goods/entity/dos/GoodsSku.java index 7b9231f4..056e587d 100644 --- a/framework/src/main/java/cn/lili/modules/goods/entity/dos/GoodsSku.java +++ b/framework/src/main/java/cn/lili/modules/goods/entity/dos/GoodsSku.java @@ -164,6 +164,13 @@ public class GoodsSku extends BaseEntity { @ApiModelProperty(value = "商品类型", required = true) private String goodsType; + public Double getWeight() { + if (weight == null) { + return 0d; + } + return weight; + } + @Override public Date getUpdateTime() { if (super.getUpdateTime() == null) { From 3e237a8488f784f688073600a4da5a9cbac9e3d1 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 22 Jun 2021 15:21:02 +0800 Subject: [PATCH 12/18] =?UTF-8?q?=E5=95=86=E5=93=81=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=EF=BC=8C=E6=8F=90=E7=A4=BA=E8=AF=AD=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/lili/controller/trade/CartController.java | 2 +- .../cn/lili/modules/order/cart/service/CartServiceImpl.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/buyer-api/src/main/java/cn/lili/controller/trade/CartController.java b/buyer-api/src/main/java/cn/lili/controller/trade/CartController.java index 8150f750..5ee81233 100644 --- a/buyer-api/src/main/java/cn/lili/controller/trade/CartController.java +++ b/buyer-api/src/main/java/cn/lili/controller/trade/CartController.java @@ -242,7 +242,7 @@ public class CartController { //读取选中的列表 return ResultUtil.data(this.cartService.createTrade(tradeParams)); } catch (ServiceException se) { - log.error(se.getMsg(), se); + log.info(se.getMsg(), se); return ResultUtil.error(se.getResultCode().code(), se.getResultCode().message()); } catch (Exception e) { log.error(ResultCode.ORDER_ERROR.message(), e); diff --git a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java index 76c3b58f..4739eb25 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java @@ -510,6 +510,10 @@ public class CartServiceImpl implements CartService { tradeDTO.setClientType(tradeParams.getClient()); tradeDTO.setStoreRemark(tradeParams.getRemark()); tradeDTO.setParentOrderSn(tradeParams.getParentOrderSn()); + //订单无收货地址校验 + if(tradeDTO.getMemberAddress()==null){ + throw new ServiceException(ResultCode.MEMBER_ADDRESS_NOT_EXIST); + } //将购物车信息写入缓存,后续逻辑调用校验 this.resetTradeDTO(tradeDTO); //构建交易 From d40869fe2afee91bb79f21c4bd85eaa1695886fb Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 22 Jun 2021 15:40:08 +0800 Subject: [PATCH 13/18] =?UTF-8?q?consumer=20=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E8=BF=98=E5=8E=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- consumer/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/consumer/src/main/resources/application.yml b/consumer/src/main/resources/application.yml index 0e110495..0c8dd83a 100644 --- a/consumer/src/main/resources/application.yml +++ b/consumer/src/main/resources/application.yml @@ -77,7 +77,7 @@ spring: default-datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3306/Bulbasaur?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + url: jdbc:mysql://127.0.0.1:3306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai username: root password: lilishop maxActive: 20 From a3085405feed1839a03682908bc5743140054546 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 22 Jun 2021 15:47:44 +0800 Subject: [PATCH 14/18] =?UTF-8?q?=E6=B6=88=E8=B4=B9=E8=80=85=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=96=87=E4=BB=B6=E8=BF=98=E5=8E=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- consumer/src/main/resources/application.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/consumer/src/main/resources/application.yml b/consumer/src/main/resources/application.yml index 0c8dd83a..d50be0e6 100644 --- a/consumer/src/main/resources/application.yml +++ b/consumer/src/main/resources/application.yml @@ -4,6 +4,9 @@ server: servlet: context-path: / + # 正式部署时候,解开此处配置,防止文件夹被清除导致的文件上传失败问题 + # multipart: + # location: /Users/lifenlong/Desktop/ceshi tomcat: uri-encoding: UTF-8 threads: @@ -46,7 +49,7 @@ spring: open-in-view: false # Redis redis: - host: 192.168.0.116 + host: 127.0.0.1 port: 6379 password: lilishop lettuce: @@ -279,8 +282,6 @@ lili: notice-send-group: lili_send_notice_group after-sale-topic: lili_after_sale_topic after-sale-group: lili_after_sale_group - broadcast-topic: lili_broadcast_topic - broadcast-group: lili_broadcast_group rocketmq: name-server: 127.0.0.1:9876 producer: From 911df9742290ac436b5ed207694621d09a8fe1f0 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 22 Jun 2021 18:58:55 +0800 Subject: [PATCH 15/18] =?UTF-8?q?=E5=95=86=E5=93=81=E8=A7=84=E6=A0=BC?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../goods/entity/dto/SpecificationSearchParams.java | 6 +++--- .../goods/serviceimpl/SpecificationServiceImpl.java | 7 +++---- .../modules/order/cart/service/CartServiceImpl.java | 4 ++-- .../goods/CategorySpecificationManagerController.java | 11 +++++++---- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dto/SpecificationSearchParams.java b/framework/src/main/java/cn/lili/modules/goods/entity/dto/SpecificationSearchParams.java index 0b93badf..6160c66c 100644 --- a/framework/src/main/java/cn/lili/modules/goods/entity/dto/SpecificationSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/goods/entity/dto/SpecificationSearchParams.java @@ -15,8 +15,8 @@ import lombok.Data; public class SpecificationSearchParams { - @ApiModelProperty(value = "规格名") - private String specName; + @ApiModelProperty(value = "规格id") + private String specId; @ApiModelProperty(value = "绑定分类") private String categoryPath; @@ -26,7 +26,7 @@ public class SpecificationSearchParams { public QueryWrapper queryWrapper() { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.like(StringUtils.isNotEmpty(specName), "spec_name", specName); + queryWrapper.eq(StringUtils.isNotEmpty(specId), "spec_id", specId); queryWrapper.eq(deleteFlag != null, "delete_flag", deleteFlag); return queryWrapper; } diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/SpecificationServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/SpecificationServiceImpl.java index a74aa5df..cc99580b 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/SpecificationServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/SpecificationServiceImpl.java @@ -50,12 +50,11 @@ public class SpecificationServiceImpl extends ServiceImpl getSpecList(String specName) { + public List getSpecList(String specId) { QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq(StringUtils.isNotEmpty(specName), "s.spec_name", specName); + queryWrapper.eq(StringUtils.isNotEmpty(specId), "s.spec_id", specId); queryWrapper.orderByDesc("s.create_time"); - queryWrapper.groupBy("s.id"); return this.baseMapper.findSpecList(queryWrapper); } @@ -103,7 +102,7 @@ public class SpecificationServiceImpl extends ServiceImpl getSpecificationPage(SpecificationSearchParams searchParams, PageVO pageVo) { - List specList = this.getSpecList(searchParams.getSpecName()); + List specList = this.getSpecList(searchParams.getSpecId()); IPage page = new Page<>(pageVo.getPageNumber(), pageVo.getPageSize(), specList.size()); page.setRecords(PageUtil.listToPage(pageVo, specList)); return page; diff --git a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java index 4739eb25..4ccfd098 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java @@ -150,7 +150,7 @@ public class CartServiceImpl implements CartService { tradeDTO.setPlatformCoupon(null); this.resetTradeDTO(tradeDTO); } catch (ServiceException se) { - throw se; + throw se; } catch (Exception e) { log.error("购物车渲染异常", e); throw new ServiceException(errorMessage); @@ -511,7 +511,7 @@ public class CartServiceImpl implements CartService { tradeDTO.setStoreRemark(tradeParams.getRemark()); tradeDTO.setParentOrderSn(tradeParams.getParentOrderSn()); //订单无收货地址校验 - if(tradeDTO.getMemberAddress()==null){ + if (tradeDTO.getMemberAddress() == null) { throw new ServiceException(ResultCode.MEMBER_ADDRESS_NOT_EXIST); } //将购物车信息写入缓存,后续逻辑调用校验 diff --git a/manager-api/src/main/java/cn/lili/controller/goods/CategorySpecificationManagerController.java b/manager-api/src/main/java/cn/lili/controller/goods/CategorySpecificationManagerController.java index 4dd65c6f..920a6d7f 100644 --- a/manager-api/src/main/java/cn/lili/controller/goods/CategorySpecificationManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/goods/CategorySpecificationManagerController.java @@ -1,6 +1,5 @@ package cn.lili.controller.goods; -import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.goods.entity.dos.CategorySpecification; @@ -16,6 +15,7 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; /** @@ -68,9 +68,12 @@ public class CategorySpecificationManagerController { //删除分类规格绑定信息 this.categorySpecificationService.remove(new QueryWrapper().eq("category_id", categoryId)); //绑定规格信息 - for (String specId : categorySpecs) { - CategorySpecification categoryBrand = new CategorySpecification(categoryId, specId); - categorySpecificationService.save(categoryBrand); + if (categorySpecs != null && categorySpecs.length > 0) { + List categorySpecifications = new ArrayList<>(); + for (String categorySpec : categorySpecs) { + categorySpecifications.add( new CategorySpecification(categoryId, categorySpec)); + } + categorySpecificationService.saveBatch(categorySpecifications); } return ResultUtil.success(); } From 12238d39895971e09dbb06fc42433964c048ab60 Mon Sep 17 00:00:00 2001 From: paulGao Date: Tue, 22 Jun 2021 22:33:10 +0800 Subject: [PATCH 16/18] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=95=86=E5=93=81=E7=8A=B6=E6=80=81=E4=B8=8D=E4=BC=9A=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=BC=93=E5=AD=98=E5=95=86=E5=93=81=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../goods/GoodsBuyerController.java | 17 +++++- .../java/cn/lili/common/enums/ResultCode.java | 1 + .../goods/service/GoodsSkuService.java | 8 +++ .../serviceimpl/GoodsSkuServiceImpl.java | 53 +++++++++++++------ 4 files changed, 62 insertions(+), 17 deletions(-) diff --git a/buyer-api/src/main/java/cn/lili/controller/goods/GoodsBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/goods/GoodsBuyerController.java index e8e0b982..fea39510 100644 --- a/buyer-api/src/main/java/cn/lili/controller/goods/GoodsBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/goods/GoodsBuyerController.java @@ -1,6 +1,8 @@ package cn.lili.controller.goods; +import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; +import cn.lili.common.exception.ServiceException; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.distribution.service.DistributionService; @@ -20,6 +22,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.web.bind.annotation.GetMapping; @@ -37,6 +40,7 @@ import java.util.Map; * @author Chopper * @date 2020/11/16 10:06 下午 */ +@Slf4j @Api(tags = "买家端,商品接口") @RestController @RequestMapping("/buyer/goods") @@ -80,9 +84,18 @@ public class GoodsBuyerController { @PageViewPoint(type = PageViewEnum.SKU, id = "#id") public ResultMessage> getSku(@NotNull(message = "商品ID不能为空") @PathVariable("goodsId") String goodsId, @NotNull(message = "SKU ID不能为空") @PathVariable("skuId") String skuId) { + try { + // 读取选中的列表 + Map map = goodsSkuService.getGoodsSkuDetail(goodsId, skuId); + return ResultUtil.data(map); + } catch (ServiceException se) { + log.error(se.getMsg(), se); + return ResultUtil.error(se.getResultCode().code(), se.getResultCode().message()); + } catch (Exception e) { + log.error(ResultCode.GOODS_ERROR.message(), e); + return ResultUtil.error(ResultCode.GOODS_ERROR); + } - Map map = goodsSkuService.getGoodsSkuDetail(goodsId, skuId); - return ResultUtil.data(map); } @ApiOperation(value = "获取商品分页列表") diff --git a/framework/src/main/java/cn/lili/common/enums/ResultCode.java b/framework/src/main/java/cn/lili/common/enums/ResultCode.java index d6e4b16b..5d28b696 100644 --- a/framework/src/main/java/cn/lili/common/enums/ResultCode.java +++ b/framework/src/main/java/cn/lili/common/enums/ResultCode.java @@ -50,6 +50,7 @@ public enum ResultCode { /** * 商品 */ + GOODS_ERROR(11010, "读取商品异常"), GOODS_NOT_EXIST(11001, "商品已下架"), GOODS_NAME_ERROR(11002, "商品名称不正确,名称应为2-50字符"), GOODS_UNDER_ERROR(11003, "商品下架失败"), diff --git a/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java b/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java index b7f14218..877f4f5d 100644 --- a/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java +++ b/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java @@ -94,6 +94,14 @@ public interface GoodsSkuService extends IService { */ List getGoodsListByGoodsId(String goodsId); + /** + * 获取goodsId下所有的goodsSku + * + * @param goodsId 商品id + * @return goodsSku列表 + */ + List getGoodsSkuListByGoodsId(String goodsId); + /** * 根据goodsSku组装goodsSkuVO * diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index a628cdb0..c400c82d 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.NumberUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import cn.lili.common.cache.Cache; +import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.common.rocketmq.tags.GoodsTagsEnum; @@ -195,8 +196,10 @@ public class GoodsSkuServiceImpl extends ServiceImpl i goodsSku = this.getGoodsSkuByIdFromCache(skuId); //如果使用商品ID无法查询SKU则返回错误 if (goodsSku == null) { - throw new ServiceException("商品已下架"); + throw new ServiceException(ResultCode.GOODS_NOT_EXIST); } + } else if (!goodsSku.getMarketEnable().equals(GoodsStatusEnum.UPPER.name()) || !goodsVO.getIsAuth().equals(GoodsAuthEnum.PASS.name()) || Boolean.TRUE.equals(goodsSku.getDeleteFlag())) { + throw new ServiceException(ResultCode.GOODS_NOT_EXIST); } // 获取当前商品的索引信息 EsGoodsIndex goodsIndex = goodsIndexService.findById(skuId); @@ -254,8 +257,16 @@ public class GoodsSkuServiceImpl extends ServiceImpl i updateWrapper.eq(GoodsSku::getGoodsId, goods.getId()); updateWrapper.set(GoodsSku::getMarketEnable, goods.getMarketEnable()); updateWrapper.set(GoodsSku::getIsAuth, goods.getIsAuth()); - this.update(updateWrapper); - generateEsCheck(goods); + updateWrapper.set(GoodsSku::getDeleteFlag, goods.getDeleteFlag()); + boolean update = this.update(updateWrapper); + if (Boolean.TRUE.equals(update)) { + List goodsSkus = this.getGoodsSkuListByGoodsId(goods.getId()); + for (GoodsSku sku : goodsSkus) { + cache.remove(GoodsSkuService.getCacheKeys(sku.getId())); + cache.put(GoodsSkuService.getCacheKeys(sku.getId()), sku); + } + generateEsCheck(goods); + } } @Override @@ -282,6 +293,17 @@ public class GoodsSkuServiceImpl extends ServiceImpl i return this.getGoodsSkuVOList(list); } + /** + * 获取goodsId下所有的goodsSku + * + * @param goodsId 商品id + * @return goodsSku列表 + */ + @Override + public List getGoodsSkuListByGoodsId(String goodsId) { + return this.list(new LambdaQueryWrapper().eq(GoodsSku::getGoodsId, goodsId)); + } + @Override public List getGoodsSkuVOList(List list) { List goodsSkuVOS = new ArrayList<>(); @@ -432,8 +454,9 @@ public class GoodsSkuServiceImpl extends ServiceImpl i */ private void generateEsCheck(Goods goods) { //如果商品通过审核&&并且已上架 - if (goods.getIsAuth().equals(GoodsAuthEnum.PASS.name()) && goods.getMarketEnable().equals(GoodsStatusEnum.UPPER.name())) { - List goodsSkuList = this.list(new LambdaQueryWrapper().eq(GoodsSku::getGoodsId, goods.getId())); + List goodsSkuList = this.list(new LambdaQueryWrapper().eq(GoodsSku::getGoodsId, goods.getId())); + if (goods.getIsAuth().equals(GoodsAuthEnum.PASS.name()) && goods.getMarketEnable().equals(GoodsStatusEnum.UPPER.name()) && Boolean.FALSE.equals(goods.getDeleteFlag())) { + List goodsIndices = new ArrayList<>(); for (GoodsSku goodsSku : goodsSkuList) { EsGoodsIndex esGoodsOld = goodsIndexService.findById(goodsSku.getId()); EsGoodsIndex goodsIndex = new EsGoodsIndex(goodsSku); @@ -443,17 +466,19 @@ public class GoodsSkuServiceImpl extends ServiceImpl i } //如果商品库存不为0,并且es中有数据 if (goodsSku.getQuantity() > 0 && esGoodsOld == null) { - goodsIndexService.addIndex(goodsIndex); + goodsIndices.add(goodsIndex); } else if (goodsSku.getQuantity() > 0 && esGoodsOld != null) { goodsIndexService.updateIndex(goodsIndex); } - //删除sku缓存 - cache.remove(GoodsSkuService.getCacheKeys(goodsSku.getId())); + } + if (!goodsIndices.isEmpty()) { + String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GENERATOR_GOODS_INDEX.name(); + //发送mq消息 + rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(goodsIndices), RocketmqSendCallbackBuilder.commonCallback()); } } //如果商品状态值不支持es搜索,那么将商品信息做下架处理 else { - List goodsSkuList = this.list(new LambdaQueryWrapper().eq(GoodsSku::getGoodsId, goods.getId())); for (GoodsSku goodsSku : goodsSkuList) { EsGoodsIndex esGoodsOld = goodsIndexService.findById(goodsSku.getId()); if (esGoodsOld != null) { @@ -488,7 +513,6 @@ public class GoodsSkuServiceImpl extends ServiceImpl i */ private List addGoodsSku(List> skuList, Goods goods) { List skus = new ArrayList<>(); - List goodsIndices = new ArrayList<>(); for (Map skuVO : skuList) { Map resultMap = this.add(skuVO, goods); GoodsSku goodsSku = (GoodsSku) resultMap.get("goodsSku"); @@ -496,15 +520,10 @@ public class GoodsSkuServiceImpl extends ServiceImpl i goodsSku.setSelfOperated(goods.getSelfOperated()); } goodsSku.setGoodsType(goods.getGoodsType()); - EsGoodsIndex goodsIndex = (EsGoodsIndex) resultMap.get("goodsIndex"); skus.add(goodsSku); - goodsIndices.add(goodsIndex); stringRedisTemplate.opsForValue().set(GoodsSkuService.getStockCacheKey(goodsSku.getId()), goodsSku.getQuantity().toString()); } this.saveBatch(skus); - String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GENERATOR_GOODS_INDEX.name(); - //发送mq消息 - rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(goodsIndices), RocketmqSendCallbackBuilder.commonCallback()); return skus; } @@ -639,6 +658,10 @@ public class GoodsSkuServiceImpl extends ServiceImpl i } } + private void updateSkuCache() { + + } + @Autowired public void setGoodsService(GoodsService goodsService) { From 117fe762a894f708bd4017e7ee038043c7ace48d Mon Sep 17 00:00:00 2001 From: paulGao Date: Tue, 22 Jun 2021 22:36:28 +0800 Subject: [PATCH 17/18] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=95=86=E5=93=81=E7=8A=B6=E6=80=81=E4=B8=8D=E4=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index 2b9f2563..8a9e505f 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -658,11 +658,6 @@ public class GoodsSkuServiceImpl extends ServiceImpl i } } - private void updateSkuCache() { - - } - - @Autowired public void setGoodsService(GoodsService goodsService) { this.goodsService = goodsService; From a5fa7cadcda86ce5e0212ec88b8df0e48ea1aaf3 Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 23 Jun 2021 09:44:53 +0800 Subject: [PATCH 18/18] =?UTF-8?q?=E8=A7=84=E6=A0=BC=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E4=BB=A5=E8=A7=84=E6=A0=BCid=E4=B8=BA=E5=87=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/controller/goods/SpecificationManagerController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manager-api/src/main/java/cn/lili/controller/goods/SpecificationManagerController.java b/manager-api/src/main/java/cn/lili/controller/goods/SpecificationManagerController.java index fdd1c2ca..71540729 100644 --- a/manager-api/src/main/java/cn/lili/controller/goods/SpecificationManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/goods/SpecificationManagerController.java @@ -53,9 +53,9 @@ public class SpecificationManagerController { @GetMapping(value = "/page") @ApiOperation(value = "分页获取") - public ResultMessage> getByPage(@RequestParam(required = false) String specName, PageVO pageVo) { + public ResultMessage> getByPage(String specId, PageVO pageVo) { SpecificationSearchParams searchParams = new SpecificationSearchParams(); - searchParams.setSpecName(specName); + searchParams.setSpecId(specId); return ResultUtil.data(specificationService.getSpecificationPage(searchParams, pageVo)); }