From 25ef12504f10cb066db53541bd7bc7bac4c09ac4 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期二, 11 七月 2023 18:39:10 +0800
Subject: [PATCH] 管理台bug和用户端
---
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java | 371 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 365 insertions(+), 6 deletions(-)
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java
index ef6f2e0..b0155f3 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java
@@ -3,20 +3,36 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.order.domain.dto.AppConsumerPageDto;
-import com.ruoyi.order.domain.dto.MerConsumerGoodsDto;
-import com.ruoyi.order.domain.dto.MerSureConsumerGoodsDto;
-import com.ruoyi.order.domain.dto.MerSureConsumerGoodsListDto;
+import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.utils.uuid.IdUtils;
+import com.ruoyi.order.domain.dto.*;
import com.ruoyi.order.domain.pojo.order.ConsumerGoods;
+import com.ruoyi.order.domain.pojo.order.UserServiceRecord;
import com.ruoyi.order.domain.vo.AppConsumerPageVo;
import com.ruoyi.order.domain.vo.MerConsumerGoodsListVo;
import com.ruoyi.order.domain.vo.MerConsumerGoodsVo;
+import com.ruoyi.order.domain.vo.MerMemberConsumerGoodsTotalVo;
import com.ruoyi.order.mapper.order.ConsumerGoodsMapper;
import com.ruoyi.order.service.order.ConsumerGoodsService;
+import com.ruoyi.order.service.order.UserServiceRecordService;
+import com.ruoyi.system.api.constant.AppErrorConstant;
+import com.ruoyi.system.api.domain.dto.AppShopGoodsGetDto;
+import com.ruoyi.system.api.domain.dto.BirthdayGiftSendDto;
+import com.ruoyi.system.api.domain.dto.MemberTotalChangeDto;
+import com.ruoyi.system.api.domain.dto.ShopTotalChangeDto;
+import com.ruoyi.system.api.domain.poji.goods.Goods;
+import com.ruoyi.system.api.domain.poji.goods.GoodsFile;
+import com.ruoyi.system.api.domain.poji.goods.ShopGoods;
+import com.ruoyi.system.api.service.RemoteGoodsService;
+import com.ruoyi.system.api.service.RemoteMemberService;
+import com.ruoyi.system.api.service.RemoteShopService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
-import java.util.List;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
/**
* <p>
@@ -31,6 +47,18 @@
@Resource
private ConsumerGoodsMapper consumerGoodsMapper;
+
+ @Resource
+ private UserServiceRecordService userServiceRecordService;
+
+ @Resource
+ private RemoteMemberService remoteMemberService;
+
+ @Resource
+ private RemoteShopService remoteShopService;
+
+ @Resource
+ private RemoteGoodsService remoteGoodsService;
/**
* 获取用户服务
@@ -69,12 +97,343 @@
List<MerSureConsumerGoodsListDto> merSureConsumerGoodsListDtoList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList();
if(merSureConsumerGoodsListDtoList!=null && !merSureConsumerGoodsListDtoList.isEmpty()){
ConsumerGoods consumerGoods;
+ Integer serviceCount = 0;
+ Integer cycleService = 0;
+ Integer cyclePerson = 0;
+ Integer serviceService = 0;
+ Integer servicePerson = 0;
+ Integer experienceService = 0;
+ Integer experiencePerson = 0;
+ MerMemberConsumerGoodsTotalVo memberConsumerGoodsTotalVo = this.getMemberConsumerGoodsTotalVo(merSureConsumerGoodsDto.getUserId(), merSureConsumerGoodsDto.getShopId());
for(MerSureConsumerGoodsListDto merSureConsumerGoodsListDto : merSureConsumerGoodsListDtoList){
consumerGoods = this.getById(merSureConsumerGoodsListDto.getConsumerGoodsId());
consumerGoods.setCycleNumFlag(1);
- consumerGoods.setServiceNum(merSureConsumerGoodsListDto.getService_num());
+ consumerGoods.setServiceNum(merSureConsumerGoodsListDto.getServiceNum());
this.saveOrUpdate(consumerGoods);
+ //处理商品服务次数
+ switch (consumerGoods.getGoodsType()) {
+ case 1:
+ cycleService = cycleService + consumerGoods.getServiceNum();
+ break;
+ case 2:
+ serviceService = serviceService + consumerGoods.getServiceNum();
+ break;
+ case 3:
+ experienceService = experienceService + consumerGoods.getServiceNum();
+ break;
+ default:
+ break;
+ }
+ }
+ //判断是否加人
+ if (cycleService > 0 && memberConsumerGoodsTotalVo.getCycleOrder() == 0) {
+ cyclePerson = 1;
+ }
+ if (serviceService > 0 && memberConsumerGoodsTotalVo.getServiceOrder() == 0) {
+ servicePerson = 1;
+ }
+ if (experienceService > 0 && memberConsumerGoodsTotalVo.getExperienceOrder() == 0) {
+ experiencePerson = 1;
+ }
+ serviceCount = cycleService + serviceService + experienceService;
+ //更新商户和会员服务统计
+ MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
+ memberTotalChangeDto.setUserId(merSureConsumerGoodsDto.getUserId());
+ memberTotalChangeDto.setTypeService(1);
+ memberTotalChangeDto.setServiceCount(serviceCount);
+ remoteMemberService.changeMemberTotal(memberTotalChangeDto);
+ ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
+ shopTotalChangeDto.setShopId(merSureConsumerGoodsDto.getShopId());
+ shopTotalChangeDto.setTypeCycleService(1);
+ shopTotalChangeDto.setCycleService(cycleService);
+ shopTotalChangeDto.setCyclePerson(cyclePerson);
+ shopTotalChangeDto.setTypeServiceService(1);
+ shopTotalChangeDto.setServiceService(serviceService);
+ shopTotalChangeDto.setServicePerson(servicePerson);
+ shopTotalChangeDto.setTypeExperienceService(1);
+ shopTotalChangeDto.setExperienceService(experienceService);
+ shopTotalChangeDto.setExperiencePerson(experiencePerson);
+ remoteShopService.changeShopTotal(shopTotalChangeDto);
+ }
+ }
+
+ /**
+ * 消费服务商品
+ * @param merSureConsumerGoodsDto
+ */
+ @Override
+ public void useMerConsumerGoods(MerSureConsumerGoodsDto merSureConsumerGoodsDto){
+ List<MerSureConsumerGoodsListDto> goodsList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList();
+ if (goodsList != null && !goodsList.isEmpty()) {
+ ConsumerGoods goods;
+ Integer serviceNum;
+ Integer usedNum;
+ Integer useNum;
+ Integer surplusNum;
+ Long shopId = null;
+ Long userId = null;
+ String goodsNames = "";
+ String goodsIds = "";
+ Integer serviceType = 1;
+ Integer serviceCount = 0;
+ Integer cycleService = 0;
+ Integer cyclePerson = 0;
+ Integer serviceService = 0;
+ Integer servicePerson = 0;
+ Integer experienceService = 0;
+ Integer experiencePerson = 0;
+ //获取会员商品总数
+ MerMemberConsumerGoodsTotalVo memberGoodsTotal = this.getMemberConsumerGoodsTotalVo(merSureConsumerGoodsDto.getUserId(), merSureConsumerGoodsDto.getShopId());
+ for (MerSureConsumerGoodsListDto goodsDto : goodsList) {
+ goods = this.getById(goodsDto.getConsumerGoodsId());
+ serviceNum = goods.getServiceNum();
+ usedNum = goods.getUsedNum();
+ surplusNum = serviceNum - usedNum;
+ useNum = goodsDto.getServiceNum();
+ //判断使用数量是否超过剩余数量
+ if (useNum > surplusNum) {
+ throw new ServiceException(AppErrorConstant.BEYOND_SURP_NUM);
+ }
+ goods.setUsedNum(usedNum + useNum);
+ goods.setUseTime(new Date());
+ //判断商品是否已使用完
+ if (goods.getUsedNum().equals(serviceNum)) {
+ goods.setServiceStatus(2);
+ goods.setCompleteTime(new Date());
+ }
+ this.saveOrUpdate(goods);
+ shopId = goods.getShopId();
+ userId = goods.getUserId();
+ serviceType = goods.getGoodsType();
+ //拼接商品ID
+ if (StringUtils.isBlank(goodsIds)) {
+ goodsIds = goods.getConsumerGoodsId();
+ } else {
+ goodsIds = goodsIds + "," + goods.getConsumerGoodsId();
+ }
+ //拼接商品名称
+ if (StringUtils.isBlank(goodsNames)) {
+ goodsNames = goods.getGoodsName();
+ } else {
+ goodsNames = goodsNames + "、" + goods.getGoodsName();
+ }
+ //处理商品服务次数
+ switch (goods.getGoodsType()) {
+ case 1:
+ cycleService = cycleService + useNum;
+ break;
+ case 2:
+ serviceService = serviceService + useNum;
+ break;
+ case 3:
+ experienceService = experienceService + useNum;
+ break;
+ default:
+ break;
+ }
+ }
+ //判断是否减人
+ if (cycleService > 0 && memberGoodsTotal.getCycleOrder() - cycleService < 1) {
+ cyclePerson = 1;
+ }
+ if (serviceService > 0 && memberGoodsTotal.getServiceOrder() - serviceService < 1) {
+ servicePerson = 1;
+ }
+ if (experienceService > 0 && memberGoodsTotal.getExperienceOrder() - experienceService < 1) {
+ experiencePerson = 1;
+ }
+ serviceCount = cycleService + serviceService + experienceService;
+ UserServiceRecord serviceRecord = new UserServiceRecord();
+ serviceRecord.setCreateTime(new Date());
+ serviceRecord.setServiceType(serviceType);
+ serviceRecord.setDelFlag(0);
+ serviceRecord.setShopId(shopId);
+ serviceRecord.setUserId(userId);
+ serviceRecord.setConsumerGoodsIds(goodsIds);
+ serviceRecord.setConsumerGoodsNames(goodsNames);
+ userServiceRecordService.saveOrUpdate(serviceRecord);
+ //更新商户和会员服务统计
+ MemberTotalChangeDto memberTotalChange = new MemberTotalChangeDto();
+ memberTotalChange.setUserId(merSureConsumerGoodsDto.getUserId());
+ memberTotalChange.setTypeService(2);
+ memberTotalChange.setServiceCount(serviceCount);
+ remoteMemberService.changeMemberTotal(memberTotalChange);
+ ShopTotalChangeDto shopTotalChange = new ShopTotalChangeDto();
+ shopTotalChange.setShopId(merSureConsumerGoodsDto.getShopId());
+ shopTotalChange.setTypeCycleService(2);
+ shopTotalChange.setCycleService(cycleService);
+ shopTotalChange.setCyclePerson(cyclePerson);
+ shopTotalChange.setTypeServiceService(2);
+ shopTotalChange.setServiceService(serviceService);
+ shopTotalChange.setServicePerson(servicePerson);
+ shopTotalChange.setTypeExperienceService(2);
+ shopTotalChange.setExperienceService(experienceService);
+ shopTotalChange.setExperiencePerson(experiencePerson);
+ remoteShopService.changeShopTotal(shopTotalChange);
+ }
+ }
+
+ /**
+ * 分页获取用户服务次数列表
+ * @param page
+ * @param merConsumerGoodsPageDto
+ * @return
+ */
+ @Override
+ public List<MerConsumerGoodsListVo> pageMerConsumerGoodsNum(Page page, MerConsumerGoodsPageDto merConsumerGoodsPageDto){
+ List<MerConsumerGoodsListVo> merConsumerGoodsListVos = consumerGoodsMapper.pageMerConsumerGoodsNum(page, merConsumerGoodsPageDto);
+ return merConsumerGoodsListVos;
+ }
+
+ /**
+ * @description 获取用户在商户
+ * @author jqs
+ * @date 2023/6/29 15:13
+ * @param userId
+ * @param shopId
+ * @return MerMemberConsumerGoodsTotalVo
+ */
+ @Override
+ public MerMemberConsumerGoodsTotalVo getMemberConsumerGoodsTotalVo(Long userId, Long shopId){
+ return consumerGoodsMapper.getMemberConsumerGoodsTotalVo(userId, shopId);
+ }
+
+ /**
+ * @description 发放用户商品礼物
+ * @author jqs
+ * @date 2023/7/7 18:51
+ * @param giftSendDtoList
+ * @return void
+ */
+ @Override
+ public void sendGoodsGift(List<BirthdayGiftSendDto> giftSendDtoList){
+ // 使用StringJoiner拼接goodsId
+ StringJoiner goodsSj = new StringJoiner(",");
+ for (BirthdayGiftSendDto birthdayGiftSendDto : giftSendDtoList) {
+ goodsSj.add(birthdayGiftSendDto.getGoodsId());
+ }
+ String goodsIds = goodsSj.toString();
+ // 获取商品列表
+ List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(goodsIds).getData();
+ // 初始化变量
+ List<ConsumerGoods> consumerGoodsList = new ArrayList<>();
+ Map<String, Goods> goodsMap = goodsList.stream()
+ .collect(Collectors.toMap(Goods::getGoodsId, Function.identity()));
+ ConsumerGoods consumerGoods;
+ String consumerGoodsId;
+ Goods goods;
+ String goodsId;
+ GoodsFile goodsFile;
+ AppShopGoodsGetDto appShopGoodsGetDto;
+ ShopGoods shopGoods = null;
+ // 遍历giftSendDtoList
+ for (BirthdayGiftSendDto birthdayGiftSendDto : giftSendDtoList) {
+ goodsId = birthdayGiftSendDto.getGoodsId();
+ goods = goodsMap.get(goodsId);
+ goodsFile = remoteGoodsService.getGoodsFile(goods.getGoodsId()).getData();
+ // 获取商户服务次数
+ if (birthdayGiftSendDto.getGiftFrom() == 2) {
+ appShopGoodsGetDto = new AppShopGoodsGetDto();
+ appShopGoodsGetDto.setGoodsId(goodsId);
+ appShopGoodsGetDto.setShopId(birthdayGiftSendDto.getShopId());
+ shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData();
+ }
+ // 根据goodsNumber创建ConsumerGoods对象并添加到列表中
+ for (int i = 0; i < birthdayGiftSendDto.getGoodsNumber(); i++) {
+ consumerGoods = new ConsumerGoods();
+ consumerGoodsId = IdUtils.simpleUUID();
+ consumerGoods.setConsumerGoodsId(consumerGoodsId);
+ consumerGoods.setDelFlag(0);
+ consumerGoods.setServiceStatus(1);
+ consumerGoods.setShopId(birthdayGiftSendDto.getShopId());
+ consumerGoods.setUserId(birthdayGiftSendDto.getUserId());
+ consumerGoods.setGoodsId(goodsId);
+ consumerGoods.setGoodsName(goods.getGoodsName());
+ consumerGoods.setCycleNumFlag(goods.getCycleNumFlag());
+ consumerGoods.setServiceNum(goods.getServiceNum());
+ consumerGoods.setUsedNum(0);
+ consumerGoods.setCreateTime(new Date());
+ consumerGoods.setGoodsType(goods.getGoodsType());
+ consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
+ consumerGoods.setGoodsPicture(goodsFile.getFileUrl());
+ consumerGoods.setGoodsNurses(goods.getGoodsNurses());
+ consumerGoods.setSourceFrom(3);
+ // 如果shopGoods不为空,则使用shopGoods的serviceNum
+ if (shopGoods != null) {
+ consumerGoods.setServiceNum(shopGoods.getServiceNum());
+ }
+ consumerGoodsList.add(consumerGoods);
}
}
+ // 批量保存consumerGoodsList
+ this.saveBatchConsumerGoods(consumerGoodsList);
+ }
+
+
+ /**
+ * @description
+ * @author jqs
+ * @date 2023/7/7 19:31
+ * @param consumerGoodsList
+ * @return boolean
+ */
+ @Override
+ public boolean saveBatchConsumerGoods(List<ConsumerGoods> consumerGoodsList){
+ Integer serviceCount = 0;
+ Integer cycleService = 0;
+ Integer cyclePerson = 0;
+ Integer serviceService = 0;
+ Integer servicePerson = 0;
+ Integer experienceService = 0;
+ Integer experiencePerson = 0;
+ Long shopId = consumerGoodsList.get(0).getShopId();
+ Long userId = consumerGoodsList.get(0).getUserId();
+ MerMemberConsumerGoodsTotalVo memberConsumerGoodsTotalVo = this.getMemberConsumerGoodsTotalVo(userId, shopId);
+ for(ConsumerGoods consumerGoods : consumerGoodsList){
+ //处理商品服务次数
+ switch (consumerGoods.getGoodsType()) {
+ case 1:
+ cycleService = cycleService + consumerGoods.getServiceNum();
+ break;
+ case 2:
+ serviceService = serviceService + consumerGoods.getServiceNum();
+ break;
+ case 3:
+ experienceService = experienceService + consumerGoods.getServiceNum();
+ break;
+ default:
+ break;
+ }
+ }
+ //判断是否加人
+ if (cycleService > 0 && memberConsumerGoodsTotalVo.getCycleOrder() == 0) {
+ cyclePerson = 1;
+ }
+ if (serviceService > 0 && memberConsumerGoodsTotalVo.getServiceOrder() == 0) {
+ servicePerson = 1;
+ }
+ if (experienceService > 0 && memberConsumerGoodsTotalVo.getExperienceOrder() == 0) {
+ experiencePerson = 1;
+ }
+ serviceCount = cycleService + serviceService + experienceService;
+ //更新商户和会员服务统计
+ MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
+ memberTotalChangeDto.setUserId(userId);
+ memberTotalChangeDto.setTypeService(1);
+ memberTotalChangeDto.setServiceCount(serviceCount);
+ remoteMemberService.changeMemberTotal(memberTotalChangeDto);
+ ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
+ shopTotalChangeDto.setShopId(shopId);
+ shopTotalChangeDto.setTypeCycleService(1);
+ shopTotalChangeDto.setCycleService(cycleService);
+ shopTotalChangeDto.setCyclePerson(cyclePerson);
+ shopTotalChangeDto.setTypeServiceService(1);
+ shopTotalChangeDto.setServiceService(serviceService);
+ shopTotalChangeDto.setServicePerson(servicePerson);
+ shopTotalChangeDto.setTypeExperienceService(1);
+ shopTotalChangeDto.setExperienceService(experienceService);
+ shopTotalChangeDto.setExperiencePerson(experiencePerson);
+ remoteShopService.changeShopTotal(shopTotalChangeDto);
+ return this.saveBatch(consumerGoodsList);
}
}
--
Gitblit v1.7.1