| | |
| | | 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.MemberTotalChangeDto; |
| | | import com.ruoyi.system.api.domain.dto.ShopTotalChangeDto; |
| | | import com.ruoyi.system.api.service.RemoteMemberService; |
| | | import com.ruoyi.system.api.service.RemoteShopService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | |
| | | |
| | | @Resource |
| | | private UserServiceRecordService userServiceRecordService; |
| | | |
| | | @Resource |
| | | private RemoteMemberService remoteMemberService; |
| | | |
| | | @Resource |
| | | private RemoteShopService remoteShopService; |
| | | |
| | | /** |
| | | * 获取用户服务 |
| | | * @param page |
| | |
| | | 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.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); |
| | | } |
| | | } |
| | | |
| | |
| | | */ |
| | | @Override |
| | | public void useMerConsumerGoods(MerSureConsumerGoodsDto merSureConsumerGoodsDto){ |
| | | List<MerSureConsumerGoodsListDto> merSureConsumerGoodsListDtoList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList(); |
| | | if(merSureConsumerGoodsListDtoList!=null && !merSureConsumerGoodsListDtoList.isEmpty()){ |
| | | ConsumerGoods consumerGoods; |
| | | List<MerSureConsumerGoodsListDto> goodsList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList(); |
| | | if (goodsList != null && !goodsList.isEmpty()) { |
| | | ConsumerGoods goods; |
| | | Integer serviceNum; |
| | | Integer usedNum; |
| | | Integer useNum; |
| | | Integer surpNum; |
| | | Integer surplusNum; |
| | | Long shopId = null; |
| | | Long userId = null; |
| | | String consumerGoodsNames = ""; |
| | | String consumerGoodsIds = ""; |
| | | String goodsNames = ""; |
| | | String goodsIds = ""; |
| | | Integer serviceType = 1; |
| | | for(MerSureConsumerGoodsListDto merSureConsumerGoodsListDto : merSureConsumerGoodsListDtoList){ |
| | | consumerGoods = this.getById(merSureConsumerGoodsListDto.getConsumerGoodsId()); |
| | | serviceNum = consumerGoods.getServiceNum(); |
| | | usedNum = consumerGoods.getUsedNum(); |
| | | surpNum = serviceNum - usedNum; |
| | | useNum = merSureConsumerGoodsListDto.getServiceNum(); |
| | | if(useNum>surpNum){ |
| | | 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); |
| | | } |
| | | consumerGoods.setUsedNum(usedNum+useNum); |
| | | consumerGoods.setUseTime(new Date()); |
| | | if(consumerGoods.getUsedNum().equals(serviceNum)){ |
| | | consumerGoods.setServiceStatus(2); |
| | | consumerGoods.setCompleteTime(new Date()); |
| | | goods.setUsedNum(usedNum + useNum); |
| | | goods.setUseTime(new Date()); |
| | | //判断商品是否已使用完 |
| | | if (goods.getUsedNum().equals(serviceNum)) { |
| | | goods.setServiceStatus(2); |
| | | goods.setCompleteTime(new Date()); |
| | | } |
| | | this.saveOrUpdate(consumerGoods); |
| | | shopId = consumerGoods.getShopId(); |
| | | userId= consumerGoods.getUserId(); |
| | | serviceType = consumerGoods.getGoodsType(); |
| | | if(StringUtils.isBlank(consumerGoodsIds)){ |
| | | consumerGoodsIds = consumerGoods.getConsumerGoodsId(); |
| | | }else{ |
| | | consumerGoodsIds = consumerGoodsIds + "," + consumerGoods.getConsumerGoodsId(); |
| | | 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(consumerGoodsNames)){ |
| | | consumerGoodsNames = consumerGoods.getGoodsName(); |
| | | }else{ |
| | | consumerGoodsNames = consumerGoodsNames + "、" + consumerGoods.getGoodsName(); |
| | | //拼接商品名称 |
| | | 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; |
| | | } |
| | | } |
| | | UserServiceRecord userServiceRecord = new UserServiceRecord(); |
| | | userServiceRecord.setCreateTime(new Date()); |
| | | userServiceRecord.setServiceType(serviceType); |
| | | userServiceRecord.setDelFlag(0); |
| | | userServiceRecord.setShopId(shopId); |
| | | userServiceRecord.setUserId(userId); |
| | | userServiceRecord.setConsumerGoodsIds(consumerGoodsIds); |
| | | userServiceRecord.setConsumerGoodsNames(consumerGoodsNames); |
| | | userServiceRecordService.saveOrUpdate(userServiceRecord); |
| | | //判断是否减人 |
| | | 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 |
| | |
| | | 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); |
| | | } |
| | | } |