ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java
@@ -115,4 +115,6 @@ String GOODS_SURE_FAILED = "商品没有确认次数"; String BIRTHDAYCARD_NO_GIFT = "请先配置礼物再开启"; String SYSTEM_FAILED = "系统正忙,请稍后再试"; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/sys/SysStaff.java
File was renamed from ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/staff/SysStaff.java @@ -1,4 +1,4 @@ package com.ruoyi.system.domain.pojo.staff; package com.ruoyi.system.api.domain.poji.sys; import com.baomidou.mybatisplus.activerecord.Model; import com.baomidou.mybatisplus.annotation.TableField; ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/ShopProportionVo.java
File was renamed from ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/ShopProportionVo.java @@ -1,4 +1,4 @@ package com.ruoyi.system.api.domain.poji.shop; package com.ruoyi.system.api.domain.vo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java
@@ -7,6 +7,7 @@ import com.ruoyi.system.api.domain.poji.config.Activeness; import com.ruoyi.system.api.domain.poji.config.DelayTask; import com.ruoyi.system.api.domain.poji.config.SysClassification; import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.api.domain.vo.AppOtherConfigGetVo; import com.ruoyi.system.api.domain.vo.MgtSysSimpleUserVo; import com.ruoyi.system.api.service.RemoteConfigService; @@ -85,6 +86,11 @@ return R.fail("获取客服电话失败:" + throwable.getMessage()); } @Override public R<List<SysStaff>> listSysStaffByIds(List<Long> userIdList) { return R.fail("通过id获取员工列表失败:" + throwable.getMessage()); } @Override public R<List<SysTag>> listSysTag(Integer tagType) { ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java
@@ -2,7 +2,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.dto.*; import com.ruoyi.system.api.domain.poji.shop.ShopProportionVo; import com.ruoyi.system.api.domain.vo.ShopProportionVo; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.model.QwH5LoginVo; import com.ruoyi.system.api.model.QwUserDetailDto; ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java
@@ -9,6 +9,7 @@ import com.ruoyi.system.api.domain.poji.config.DelayTask; import com.ruoyi.system.api.domain.poji.config.SysClassification; import com.ruoyi.system.api.domain.poji.config.SysTag; import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.api.domain.vo.AppOtherConfigGetVo; import com.ruoyi.system.api.domain.vo.MgtSysSimpleUserVo; import com.ruoyi.system.api.factory.RemoteConfigFallbackFactory; @@ -137,4 +138,14 @@ */ @PostMapping("/config/getServicePhone") public R<String> getServicePhone(); /** * @description 通过id获取员工列表 * @author jqs * @date 2023/9/5 10:01 * @param userIdList * @return R<List<SysStaff>> */ @PostMapping("/config/listSysStaffByIds") public R<List<SysStaff>> listSysStaffByIds(@RequestBody List<Long> userIdList); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java
@@ -4,7 +4,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.dto.*; import com.ruoyi.system.api.domain.poji.shop.Shop; import com.ruoyi.system.api.domain.poji.shop.ShopProportionVo; import com.ruoyi.system.api.domain.vo.ShopProportionVo; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.factory.RemoteShopFallbackFactory; import com.ruoyi.system.api.model.QwH5LoginVo; ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java
@@ -10,7 +10,7 @@ /** * 缓存有效期,默认720(分钟) */ public final static long EXPIRATION = 1440; public final static long EXPIRATION = 14400; /** * 缓存刷新时间,默认120(分钟) ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/concole/GoodsController.java
@@ -120,6 +120,13 @@ return R.ok(goodsPriceListVoList); } /** * @description 改变商品统计 * @author jqs * @date 2023/9/5 15:01 * @param goodsTotalChangeDtoList * @return R */ @PostMapping("/changeGoodsTotal") public R changeGoodsTotal(@RequestBody List<GoodsTotalChangeDto> goodsTotalChangeDtoList) { ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
@@ -36,6 +36,8 @@ import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; @@ -627,6 +629,7 @@ * @return void */ @Override @Transactional(propagation = Propagation.REQUIRES_NEW) public void changeActivityStock(AGStockChangeDto agStockChangeDto){ RLock lock = redissonClient.getLock("stock_clock_"+agStockChangeDto.getActivityId()+"_"+agStockChangeDto.getGoodsId()); try { ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
@@ -399,23 +399,32 @@ memberCoupon.setUserId(userId); memberCoupon.setShopId(coupon.getShopId()); memberCoupon.setCouponType(coupon.getCouponType()); if(coupon.getCouponType()==1){ memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold()); memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); }else if(coupon.getCouponType()==2){ memberCoupon.setDiscountPercent(coupon.getDiscountPercent()); }else if(coupon.getCouponType()==3){ memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); }else{ memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); } memberCoupon.setCouponStatus(coupon.getCouponStatus()); memberCoupon.setCouponName(coupon.getCouponName()); memberCoupon.setSendType(coupon.getSendType()); memberCoupon.setSendTarget(coupon.getSendTarget()); memberCoupon.setSendTimeType(coupon.getSendTimeType()); memberCoupon.setSendTime(coupon.getSendTime()); memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold()); memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); memberCoupon.setDiscountPercent(coupon.getDiscountPercent()); memberCoupon.setUseScope(coupon.getUseScope()); if(memberCoupon.getUseScope()==2){ memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); } memberCoupon.setValidTimeType(coupon.getValidTimeType()); memberCoupon.setValidStartTime(coupon.getValidStartTime()); memberCoupon.setValidEndTime(coupon.getValidEndTime()); memberCoupon.setValidDay(coupon.getValidDay()); memberCoupon.setCouponFrom(coupon.getCouponFrom()); memberCoupon.setReceiveTime(nowTime); memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); //有效期处理1.时间段2.领取之日起 if(coupon.getValidTimeType()==1){ memberCoupon.setDeadlineTime(coupon.getValidEndTime()); @@ -442,23 +451,32 @@ memberCoupon.setUserId(userId); //memberCoupon.setShopId(coupon.getShopId()); memberCoupon.setCouponType(coupon.getCouponType()); if(coupon.getCouponType()==1){ memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold()); memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); }else if(coupon.getCouponType()==2){ memberCoupon.setDiscountPercent(coupon.getDiscountPercent()); }else if(coupon.getCouponType()==3){ memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); }else{ memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); } memberCoupon.setCouponStatus(coupon.getCouponStatus()); memberCoupon.setCouponName(coupon.getCouponName()); memberCoupon.setSendType(coupon.getSendType()); memberCoupon.setSendTarget(coupon.getSendTarget()); memberCoupon.setSendTimeType(coupon.getSendTimeType()); memberCoupon.setSendTime(coupon.getSendTime()); memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold()); memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); memberCoupon.setDiscountPercent(coupon.getDiscountPercent()); memberCoupon.setUseScope(coupon.getUseScope()); if(memberCoupon.getUseScope()==2){ memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); } memberCoupon.setValidTimeType(coupon.getValidTimeType()); memberCoupon.setValidStartTime(coupon.getValidStartTime()); memberCoupon.setValidEndTime(coupon.getValidEndTime()); memberCoupon.setValidDay(coupon.getValidDay()); memberCoupon.setCouponFrom(coupon.getCouponFrom()); memberCoupon.setReceiveTime(nowTime); memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); //有效期处理1.时间段2.领取之日起 if(coupon.getValidTimeType()==1){ memberCoupon.setDeadlineTime(coupon.getValidEndTime()); @@ -534,20 +552,29 @@ memberCoupon.setCouponStatus(coupon.getCouponStatus()); memberCoupon.setCouponName(coupon.getCouponName()); memberCoupon.setSendType(coupon.getSendType()); if(coupon.getCouponType()==1){ memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold()); memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); }else if(coupon.getCouponType()==2){ memberCoupon.setDiscountPercent(coupon.getDiscountPercent()); }else if(coupon.getCouponType()==3){ memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); }else{ memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); } memberCoupon.setSendTarget(coupon.getSendTarget()); memberCoupon.setSendTimeType(coupon.getSendTimeType()); memberCoupon.setSendTime(coupon.getSendTime()); memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold()); memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); memberCoupon.setDiscountPercent(coupon.getDiscountPercent()); memberCoupon.setUseScope(coupon.getUseScope()); if(memberCoupon.getUseScope()==2){ memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); } memberCoupon.setValidTimeType(coupon.getValidTimeType()); memberCoupon.setValidStartTime(coupon.getValidStartTime()); memberCoupon.setValidEndTime(coupon.getValidEndTime()); memberCoupon.setValidDay(coupon.getValidDay()); memberCoupon.setCouponFrom(coupon.getCouponFrom()); memberCoupon.setReceiveTime(nowTime); memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); //有效期处理1.时间段2.领取之日起 if(coupon.getValidTimeType()==1){ memberCoupon.setDeadlineTime(coupon.getValidEndTime()); @@ -1083,17 +1110,26 @@ memberCoupon.setCouponId(couponId); memberCoupon.setUserId(userId); memberCoupon.setShopId(shopId); memberCoupon.setCouponType(coupon.getCouponType()); if(coupon.getCouponType()==1){ memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold()); memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); }else if(coupon.getCouponType()==2){ memberCoupon.setDiscountPercent(coupon.getDiscountPercent()); }else if(coupon.getCouponType()==3){ memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); }else{ memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); } memberCoupon.setCouponStatus(coupon.getCouponStatus()); memberCoupon.setCouponName(coupon.getCouponName()); memberCoupon.setSendType(coupon.getSendType()); memberCoupon.setSendTarget(coupon.getSendTarget()); memberCoupon.setSendTimeType(coupon.getSendTimeType()); memberCoupon.setSendTime(coupon.getSendTime()); memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold()); memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); memberCoupon.setDiscountPercent(coupon.getDiscountPercent()); memberCoupon.setUseScope(coupon.getUseScope()); if(memberCoupon.getUseScope()==2){ memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); } memberCoupon.setValidTimeType(coupon.getValidTimeType()); memberCoupon.setValidStartTime(coupon.getValidStartTime()); memberCoupon.setValidEndTime(coupon.getValidEndTime()); @@ -1106,7 +1142,6 @@ }else if(coupon.getValidTimeType()==2){ memberCoupon.setDeadlineTime(DateUtils.addDays(new Date(),coupon.getValidDay())); } memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); memberCouponList.add(memberCoupon); } memberCouponRecordService.updateMemberCouponRecord(coupon,userId,birthdayGiftSendDto.getCouponNumber()); @@ -1194,16 +1229,26 @@ memberCoupon.setShopId(shopId); } memberCoupon.setCouponType(coupon.getCouponType()); if(coupon.getCouponType()==1){ memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold()); memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); }else if(coupon.getCouponType()==2){ memberCoupon.setDiscountPercent(coupon.getDiscountPercent()); }else if(coupon.getCouponType()==3){ memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); }else{ memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); } memberCoupon.setCouponStatus(coupon.getCouponStatus()); memberCoupon.setCouponName(coupon.getCouponName()); memberCoupon.setSendType(coupon.getSendType()); memberCoupon.setSendTarget(coupon.getSendTarget()); memberCoupon.setSendTimeType(coupon.getSendTimeType()); memberCoupon.setSendTime(coupon.getSendTime()); memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold()); memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); memberCoupon.setDiscountPercent(coupon.getDiscountPercent()); memberCoupon.setUseScope(coupon.getUseScope()); if(memberCoupon.getUseScope()==2){ memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); } memberCoupon.setValidTimeType(coupon.getValidTimeType()); memberCoupon.setValidStartTime(coupon.getValidStartTime()); memberCoupon.setValidEndTime(coupon.getValidEndTime()); @@ -1216,7 +1261,6 @@ }else if(coupon.getValidTimeType()==2){ memberCoupon.setDeadlineTime(DateUtils.addDays(new Date(),coupon.getValidDay())); } memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); memberCouponService.save(memberCoupon); memberCouponRecordService.updateMemberCouponRecord(coupon,userId,1); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
@@ -23,6 +23,8 @@ import com.ruoyi.system.api.service.RemoteGoodsService; import com.ruoyi.system.api.service.RemoteShopService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; @@ -247,6 +249,7 @@ * @return void */ @Override @Transactional(propagation = Propagation.REQUIRES_NEW) public void useMemberCoupon(String memberCouponIds){ memberCouponMapper.useMemberCoupon(memberCouponIds); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -1,5 +1,5 @@ package com.ruoyi.member.service.impl.member; import com.google.common.collect.Lists; import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import com.alibaba.fastjson.JSONObject; @@ -1229,10 +1229,36 @@ @Override public MgtTotalMemberTotalVo getTotalMemberTotal(MgtBaseShopDto mgtBaseShopDto) { Date nowDay = DateUtils.getNowDate(); MgtTotalMemberTotalVo mgtTotalMemberTotalVo = new MgtTotalMemberTotalVo(); mgtTotalMemberTotalVo.setMemberTotal(0); mgtTotalMemberTotalVo.setOnlineTotal(0); mgtTotalMemberTotalVo.setOfflineTotal(0); mgtTotalMemberTotalVo.setIntroduceTotal(0); mgtTotalMemberTotalVo.setCycleTotal(0); mgtTotalMemberTotalVo.setExperienceTotal(0); mgtTotalMemberTotalVo.setServiceTotal(0); mgtTotalMemberTotalVo.setManTotal(0); mgtTotalMemberTotalVo.setManPercent(new BigDecimal("0")); mgtTotalMemberTotalVo.setWomenTotal(0); mgtTotalMemberTotalVo.setWomenPercent(new BigDecimal("0")); mgtTotalMemberTotalVo.setAgeKey(new String[0]); mgtTotalMemberTotalVo.setAgeValue(new Integer[0]); mgtTotalMemberTotalVo.setNurseTotalVos(Lists.newArrayList()); mgtTotalMemberTotalVo.setMemberLevelTotalVos(Lists.newArrayList()); mgtTotalMemberTotalVo.setGoodsTypeTotalVos(Lists.newArrayList()); mgtTotalMemberTotalVo.setActivenessList(Lists.newArrayList()); mgtTotalMemberTotalVo.setCustomerSourceList(Lists.newArrayList()); mgtTotalMemberTotalVo.setMemberPayList(Lists.newArrayList()); // 获取店铺ID Long shopId = mgtBaseShopDto.getShopId(); // 获取总会员数和不同年龄段的会员数 MgtTotalMemberTotalVo mgtTotalMemberTotalVo = memberMapper.getTotalMemberTotal(mgtBaseShopDto); MgtTotalMemberTotalVo totalMemberTotalVo = memberMapper.getTotalMemberTotal(mgtBaseShopDto); mgtTotalMemberTotalVo.setMemberTotal(totalMemberTotalVo.getMemberTotal()); mgtTotalMemberTotalVo.setOnlineTotal(totalMemberTotalVo.getOnlineTotal()); mgtTotalMemberTotalVo.setOfflineTotal(totalMemberTotalVo.getOfflineTotal()); mgtTotalMemberTotalVo.setCycleTotal(totalMemberTotalVo.getCycleTotal()); mgtTotalMemberTotalVo.setExperienceTotal(totalMemberTotalVo.getExperienceTotal()); mgtTotalMemberTotalVo.setServiceTotal(totalMemberTotalVo.getServiceTotal()); MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getTotalMemberTotalAge(mgtBaseShopDto); Integer manTotal = mgtAgeTotalVo.getManTotal(); Integer womenTotal = mgtAgeTotalVo.getWomenTotal(); @@ -1360,6 +1386,25 @@ */ @Override public MgtPlTotalMemberTotalVo getPlTotalMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) { MgtPlTotalMemberTotalVo plTotalMemberTotalVo = new MgtPlTotalMemberTotalVo(); plTotalMemberTotalVo.setMemberTotal(0); plTotalMemberTotalVo.setMemberYesterday(0); plTotalMemberTotalVo.setMemberSeven(0); plTotalMemberTotalVo.setManTotal(0); plTotalMemberTotalVo.setManPercent(new BigDecimal("0")); plTotalMemberTotalVo.setWomenTotal(0); plTotalMemberTotalVo.setWomenPercent(new BigDecimal("0")); plTotalMemberTotalVo.setAgeKey(new String[0]); plTotalMemberTotalVo.setAgeValue(new Integer[0]); plTotalMemberTotalVo.setAgePercent(new BigDecimal[0]); plTotalMemberTotalVo.setNurseTotalVos(Lists.newArrayList()); plTotalMemberTotalVo.setMemberLevelTotalVos(Lists.newArrayList()); plTotalMemberTotalVo.setGoodsTypeTotalVos(Lists.newArrayList()); plTotalMemberTotalVo.setActivenessList(Lists.newArrayList()); plTotalMemberTotalVo.setCustomerSourceList(Lists.newArrayList()); plTotalMemberTotalVo.setMemberPayList(Lists.newArrayList()); plTotalMemberTotalVo.setMemberGoodsRankList(Lists.newArrayList()); plTotalMemberTotalVo.setShopMemberRankList(Lists.newArrayList()); Date nowDay = DateUtils.getNowDate(); //如果区域代码不为null获取对应的商户id if (StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) { @@ -1373,11 +1418,16 @@ list = Arrays.stream(mgtShopIdByCodeVo.getShopIds().split(",")) .map(Long::valueOf) .collect(Collectors.toList()); }else{ return plTotalMemberTotalVo; } mgtBasePlatformDto.setShopIdList(list); } //获取基础统计 MgtPlTotalMemberTotalVo plTotalMemberTotalVo = memberMapper.getPlTotalMemberTotal(mgtBasePlatformDto); MgtPlTotalMemberTotalVo plTotalMemberTotalByDayVo = memberMapper.getPlTotalMemberTotal(mgtBasePlatformDto); plTotalMemberTotalVo.setMemberTotal(plTotalMemberTotalByDayVo.getMemberTotal()); plTotalMemberTotalVo.setMemberYesterday(plTotalMemberTotalByDayVo.getMemberYesterday()); plTotalMemberTotalVo.setMemberSeven(plTotalMemberTotalByDayVo.getMemberSeven()); MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getPlTotalMemberTotalAge(mgtBasePlatformDto); if (mgtAgeTotalVo != null) { Integer manTotal = mgtAgeTotalVo.getManTotal(); @@ -1683,11 +1733,6 @@ } MerMemberFixedTotalVo memberFixedTotalVo = new MerMemberFixedTotalVo(); Date nowDay = DateUtils.getNowDate(); if(merTotalDto.getShopAllFlag()!=null&&merTotalDto.getShopAllFlag()==1){ List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData(); merTotalDto.setShopIdList(shopIdList); merTotalDto.setShopId(null); } MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getMerMemberTotalAge(merTotalDto); Integer manTotal = mgtAgeTotalVo.getManTotal(); Integer womenTotal = mgtAgeTotalVo.getWomenTotal(); @@ -1742,11 +1787,17 @@ if (nurseTotalVos != null && nurseTotalVos.size() > 0) { nurseTotalVos = listRemoveNull(nurseTotalVos); memberFixedTotalVo.setNurseTotalVos(nurseTotalVos); }else{ nurseTotalVos = new ArrayList<>(); memberFixedTotalVo.setNurseTotalVos(nurseTotalVos); } //获取不同等级的会员数 List<MgtMapIntTotalVo> memberLevelTotalVos = memberMapper.getMerMemberTotalLevel(merTotalDto); if (memberLevelTotalVos != null && memberLevelTotalVos.size() > 0) { memberLevelTotalVos = listRemoveNull(memberLevelTotalVos); memberFixedTotalVo.setMemberLevelTotalVos(memberLevelTotalVos); }else{ memberLevelTotalVos = new ArrayList<>(); memberFixedTotalVo.setMemberLevelTotalVos(memberLevelTotalVos); } // 获取不同商品类型的会员数 @@ -1754,11 +1805,17 @@ if (goodsTypeTotalVos != null && goodsTypeTotalVos.size() > 0) { goodsTypeTotalVos = listRemoveNull(goodsTypeTotalVos); memberFixedTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos); }else{ goodsTypeTotalVos = new ArrayList<>(); memberFixedTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos); } //获取会员消费排名 List<MgtMapIntTotalVo> memberPayList = memberMapper.getMerMemberPayRank(merTotalDto); if (memberPayList != null && memberPayList.size() > 0) { memberPayList = listRemoveNull(memberPayList); memberFixedTotalVo.setMemberPayList(memberPayList); }else{ memberPayList = new ArrayList<>(); memberFixedTotalVo.setMemberPayList(memberPayList); } // 获取不同活跃度的会员数 @@ -1768,7 +1825,7 @@ String actStartDate; String actEndDate; Integer count; List<MgtMapIntTotalVo> MgtMapIntTotalVoList = new ArrayList<>(); List<MgtMapIntTotalVo> mgtMapIntTotalVoList = new ArrayList<>(); MgtMapIntTotalVo MgtMapIntTotalVo; // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组 for (int i = 0; i < activenessList.size(); i++) { @@ -1781,9 +1838,12 @@ MgtMapIntTotalVo = new MgtMapIntTotalVo(); MgtMapIntTotalVo.setMapKey(activeness.getActivenessName()); MgtMapIntTotalVo.setMapValue(count); MgtMapIntTotalVoList.add(MgtMapIntTotalVo); mgtMapIntTotalVoList.add(MgtMapIntTotalVo); } memberFixedTotalVo.setActivenessList(MgtMapIntTotalVoList); memberFixedTotalVo.setActivenessList(mgtMapIntTotalVoList); }else{ List<MgtMapIntTotalVo> mgtMapIntTotalVoList = new ArrayList<>(); memberFixedTotalVo.setActivenessList(mgtMapIntTotalVoList); } return memberFixedTotalVo; } ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
@@ -403,9 +403,9 @@ SELECT IFNULL(SUM(CASE WHEN gender = 0 THEN 1 ELSE 0 END),0) manTotal, IFNULL(SUM(CASE WHEN gender = 1 THEN 1 ELSE 0 END),0) womenTotal, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 THEN 1 ELSE 0 END),0) AS tenAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 31 THEN 1 ELSE 0 END),0) AS twentyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 41 THEN 1 ELSE 0 END),0) AS ThirtyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) <= 20 THEN 1 ELSE 0 END),0) AS tenAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 THEN 1 ELSE 0 END),0) AS twentyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 THEN 1 ELSE 0 END),0) AS ThirtyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 THEN 1 ELSE 0 END),0) AS fortyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) >= 51 THEN 1 ELSE 0 END),0) AS fiftyAge FROM t_member WHERE del_flag = 0 AND binding_flag = 1 @@ -538,10 +538,10 @@ AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 </if> <if test="param.ageType != null and param.ageType ==2"> AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 31 AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 </if> <if test="param.ageType != null and param.ageType ==3"> AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 41 AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 </if> <if test="param.ageType != null and param.ageType ==4"> AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 @@ -563,15 +563,21 @@ COUNT(CASE WHEN DATE(binding_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) THEN 1 END) AS memberYesterday, COUNT(CASE WHEN binding_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 6 DAY) AND DATE_SUB(CURDATE(), INTERVAL -1 DAY) THEN 1 END) AS memberSeven FROM t_member WHERE del_flag = 0 AND binding_flag = 1 <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND relation_shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </select> <select id="getPlTotalMemberTotalAge" resultType="com.ruoyi.member.domain.vo.MgtAgeTotalVo"> SELECT IFNULL(SUM(CASE WHEN gender = 0 THEN 1 ELSE 0 END),0) manTotal, IFNULL(SUM(CASE WHEN gender = 1 THEN 1 ELSE 0 END),0) womenTotal, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 THEN 1 ELSE 0 END),0) AS tenAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 31 THEN 1 ELSE 0 END),0) AS twentyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 41 THEN 1 ELSE 0 END),0) AS ThirtyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) <= 20 THEN 1 ELSE 0 END),0) AS tenAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 THEN 1 ELSE 0 END),0) AS twentyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 THEN 1 ELSE 0 END),0) AS ThirtyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 THEN 1 ELSE 0 END),0) AS fortyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) >= 51 THEN 1 ELSE 0 END),0) AS fiftyAge FROM t_member WHERE del_flag = 0 AND binding_flag = 1 @@ -783,8 +789,8 @@ IFNULL(SUM(CASE WHEN gender = 0 THEN 1 ELSE 0 END),0) manTotal, IFNULL(SUM(CASE WHEN gender = 1 THEN 1 ELSE 0 END),0) womenTotal, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) <= 20 THEN 1 ELSE 0 END),0) AS tenAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 31 THEN 1 ELSE 0 END),0) AS twentyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 41 THEN 1 ELSE 0 END),0) AS ThirtyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 THEN 1 ELSE 0 END),0) AS twentyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 THEN 1 ELSE 0 END),0) AS ThirtyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 THEN 1 ELSE 0 END),0) AS fortyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) >= 51 THEN 1 ELSE 0 END),0) AS fiftyAge FROM t_member WHERE del_flag = 0 AND binding_flag = 1 @@ -994,10 +1000,10 @@ AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 0 AND 20 </if> <if test="param.ageType !=null and param.ageType == 2"> AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 31 AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 </if> <if test="param.ageType !=null and param.ageType == 3"> AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 41 AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 </if> <if test="param.ageType !=null and param.ageType == 4"> AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java
@@ -8,7 +8,6 @@ import com.ruoyi.order.domain.vo.*; import com.ruoyi.order.service.order.OrderService; import com.ruoyi.system.api.domain.dto.AppBaseGetDto; import com.ruoyi.system.api.domain.dto.AppMemberBindingDto; import com.ruoyi.system.api.domain.poji.member.Member; import com.ruoyi.system.api.model.LoginUser; import com.ruoyi.system.api.service.RemoteMemberService; @@ -85,20 +84,9 @@ if (userId != null) { Member member = memberService.getMember(userId).getData(); appPlaceOrderDto.setUserId(userId); if (member != null) { appPlaceOrderDto.setOpenid(member.getMiniOpenid()); appPlaceOrderDto.setShopId(member.getRelationShopId()); if (member.getBindingFlag() != 1) { //绑定商户 AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); appMemberBindingDto.setShopId(appPlaceOrderDto.getShopId()); appMemberBindingDto.setUserId(userId); appMemberBindingDto.setBindingFlag(1); appMemberBindingDto.setBindingType(1); memberService.updateMemberBinding(appMemberBindingDto); appPlaceOrderDto.setNewMemberFlag(1); } } } AppPlaceOrderVo appPlaceOrderVo = orderService.placeOrder(appPlaceOrderDto); @@ -117,16 +105,6 @@ if (member != null && member.getRelationShopId() != null) { appPlaceActivityDto.setOpenid(member.getMiniOpenid()); appPlaceActivityDto.setShopId(member.getRelationShopId()); } if (member.getBindingFlag() != 1) { //绑定商户 AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); appMemberBindingDto.setShopId(appPlaceActivityDto.getShopId()); appMemberBindingDto.setUserId(userId); appMemberBindingDto.setBindingFlag(1); appMemberBindingDto.setBindingType(2); memberService.updateMemberBinding(appMemberBindingDto); appPlaceActivityDto.setNewMemberFlag(1); } } AppPlaceOrderVo appPlaceOrderVo = orderService.placeActivityOrder(appPlaceActivityDto); ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPlaceOrderDto.java
@@ -30,7 +30,4 @@ @ApiModelProperty(value = "购物车列表") List<AppBuyGoodsDto> appBuyGoodsDtoList; @ApiModelProperty(value = "获客标记",hidden = true) private Integer newMemberFlag; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPlaceOrderVo.java
@@ -26,7 +26,7 @@ @ApiModelProperty(value = "订单编号") private String orderNo; @ApiModelProperty(value = "金额为零无需支付") @ApiModelProperty(value = "金额为零无需支付 0否1是") private Integer zeroFlag; @ApiModelProperty(value = "支付方式1.全款2.订金") ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppUserOrderGoodsPageVo.java
@@ -55,5 +55,6 @@ @ApiModelProperty(value="服务次数") private Integer serviceNum; @ApiModelProperty(value = "优惠券id") private String couponId; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java
@@ -81,10 +81,13 @@ @ApiModelProperty(value = "店铺活动次数排行") private List<MgtMapIntTotalVo> activityRankList; @ApiModelProperty(value = "店铺活动销售额排名") private List<MgtMapBigTotalVo> shopSalesRankList; @ApiModelProperty(value = "店铺活动销售额排名店铺名称") private String[] shopSalesRankKey; @ApiModelProperty(value = "店铺活动销售额排名") @ApiModelProperty(value = "店铺活动销售额排名金额") private BigDecimal[] shopSalesRankValue; @ApiModelProperty(value = "店铺活动分类销售额排名") private List<MgtMapBigTotalVo> activitySalesRankList; /*@ApiModelProperty(value = "活动年龄分布key") ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
@@ -437,7 +437,7 @@ * @author jqs34 * @date 2023/6/19 22:48 */ List<MgtMapBigTotalVo> listPlTotalShopActivityRank(@Param("param") MgtBasePlatformDto mgtBasePlatformDto); List<MgtMapIntTotalVo> listPlTotalShopActivityRank(@Param("param") MgtBasePlatformDto mgtBasePlatformDto); /** * @description listTotalActivityTotal ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -1,6 +1,5 @@ package com.ruoyi.order.service.impl.order; import com.google.common.collect.Lists; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -12,7 +11,6 @@ import com.github.binarywang.wxpay.config.WxPayConfig; import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.service.WxPayService; import com.google.common.base.Joiner; import com.google.gson.Gson; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; @@ -54,7 +52,7 @@ import com.ruoyi.system.api.domain.poji.member.MemberCoupon; import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord; import com.ruoyi.system.api.domain.poji.shop.Shop; import com.ruoyi.system.api.domain.poji.shop.ShopProportionVo; import com.ruoyi.system.api.domain.vo.ShopProportionVo; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.service.*; @@ -147,6 +145,8 @@ @Resource private OrderRefundService orderRefundService; /** * @description: buyGoods @@ -318,8 +318,6 @@ } else { entity.setUseFlag(0); } } // 过滤商品优惠券列表 List<AppMemberCouponVo> appGoodsMemberCouponVoList; @@ -559,6 +557,7 @@ // 将用户优惠券列表转换为Map,方便后续查找 Map<String, AppMemberCouponVo> appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity())); AppMemberCouponVo appMemberCouponVo; AppShopGoodsGetDto appShopGoodsGetDto; Integer couponType; BigDecimal moneyThreshold; BigDecimal discountMoney = new BigDecimal("0.00"); @@ -605,7 +604,7 @@ goodsPrice = goods.getSalesPrice(); serviceNum = goods.getServiceNum(); // 获取商户定制价格 AppShopGoodsGetDto appShopGoodsGetDto = new AppShopGoodsGetDto(); appShopGoodsGetDto = new AppShopGoodsGetDto(); appShopGoodsGetDto.setGoodsId(goods.getGoodsId()); appShopGoodsGetDto.setShopId(appPlaceOrderDto.getShopId()); ShopGoods shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); @@ -748,9 +747,6 @@ order.setOrderRemark(appPlaceOrderDto.getOrderRemark()); order.setGoodsNum(goodsNum); order.setCreateTime(new Date()); if(appPlaceOrderDto.getNewMemberFlag()!=null&&appPlaceOrderDto.getNewMemberFlag()==1){ order.setNewMemberFlag(1); } // 保存订单 this.save(order); appPlaceOrderVo.setOrderId(orderId); @@ -778,7 +774,7 @@ // 小程序微信下单支付 createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, outTradeNo, orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(), appPlaceOrderDto.getSpbillCreateIp(), goodsNameList,1); appPlaceOrderDto.getSpbillCreateIp()); //生成自动取消订单延时任务 String payStr = appPlaceOrderVo.getAppId()+"-"+appPlaceOrderVo.getTimeStamp()+"-"+appPlaceOrderVo.getNonceStr()+"-"+appPlaceOrderVo.getPackageStr()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getPaySign(); redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, payStr , delayTime.longValue(), TimeUnit.MINUTES); @@ -815,23 +811,23 @@ * @param payMoney * @param openid * @param payerClientIp * @param goodsNameList */ private void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId, String goodsName, String outTradeNo, String orderId, BigDecimal payMoney, String openid, String payerClientIp, List<String> goodsNameList,Integer orderFrom){ String openid, String payerClientIp){ try { // 创建支付订单 R<String> resultMch = remoteShopService.getShopSubMchId(shopId); //2023-09-05 需求变更为统一支付到矗众 /*R<String> resultMch = remoteShopService.getShopSubMchId(shopId); String subMchId = resultMch.getData(); if (StringUtils.isEmpty(subMchId)) { throw new ServiceException("获取微信商户号失败"); } }*/ String mainMchId = WxPayConfiguration.getPlatformTyMacId(); WxPayConfig config = wxService.getConfig(); config.setSubMchId(subMchId); config.setSubMchId(mainMchId); PartnerTransactionsRequest request = new PartnerTransactionsRequest(); request.setSpAppid(config.getAppId()); request.setSpMchid(config.getMchId()); @@ -845,11 +841,7 @@ // 结算信息 PartnerTransactionsRequest.SettleInfo settleInfo = new PartnerTransactionsRequest.SettleInfo(); // TODO 分账处理 if(orderFrom==2){ settleInfo.setProfitSharing(true); }else{ settleInfo.setProfitSharing(false); } settleInfo.setProfitSharing(true); settleInfo.setSubsidyAmount(BigDecimal.ZERO); request.setSettleInfo(settleInfo); @@ -872,7 +864,6 @@ PartnerTransactionsRequest.SceneInfo sceneInfo = new PartnerTransactionsRequest.SceneInfo(); sceneInfo.setPayerClientIp(payerClientIp); request.setSceneInfo(sceneInfo); TransactionsResult.JsapiResult result = wxService.getEcommerceService().partnerTransactions(TradeTypeEnum.JSAPI, request); // 请求参数 @@ -895,9 +886,9 @@ paymentMessageService.savePaymentMessage("1", orderId, payRequestJson, payResponseJson); // 保存支付订单统一下单支付记录 orderPaymentService.saveOrderPayment(userId, shopId, subMchId, orderId, outTradeNo, payMoney, orderPaymentService.saveOrderPayment(userId, shopId, mainMchId, orderId, outTradeNo, payMoney, appPlaceOrderVo.getEndTime(), "Y", openid, Joiner.on(";").join(goodsNameList), result.getPackageValue()); goodsName, result.getPackageValue()); } catch (WxPayException e) { throw new ServiceException(e.getMessage()); @@ -928,259 +919,259 @@ //redis分布式锁库存控制 String goodsLock = "goods_lock_" + activityId + "_" + goodsId; RLock redissonLock = redissonClient.getLock(goodsLock); Integer surpNum = 0; try { redissonLock.lock(30, TimeUnit.SECONDS); Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId); surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId); if (surpNum == null || surpNum < buyNum) { throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL); } else { redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId, surpNum - buyNum); } // 定义购买数量,服务数量,商品数量 BigDecimal buyNumBig; Integer serviceNum; Integer goodsNum = 0; // 定义商品,商品文件,商品价格,商品总价,商品实际价格,折扣金额,折扣百分比,商品押金,使用优惠券,订单商品金额,优惠券折扣,订单支付押金,订单支付金额 Goods goods; GoodsFile goodsFile; BigDecimal goodsPrice; BigDecimal goodsTotalPrice; BigDecimal goodsRealPrice; BigDecimal discountMoney = new BigDecimal("0.00"); BigDecimal goodsDeposit; Integer useCoupon; BigDecimal orderGoodsMoney = new BigDecimal("0.00"); BigDecimal couponDiscount = new BigDecimal("0.00"); BigDecimal orderPayDeposit = new BigDecimal("0.00"); BigDecimal orderPayMoney = new BigDecimal("0.00"); // 创建活动商品对象,并设置活动ID,商品ID,用户ID ActivityGoodsGetDto activityGoodsGetDto = new ActivityGoodsGetDto(); activityGoodsGetDto.setActivityId(activityId); activityGoodsGetDto.setGoodsId(goodsId); activityGoodsGetDto.setUserId(userId); // 获取用户活动商品 ActivityGoodsGetVo activityGoodsGetVo = remoteActivityService.getUserActivityGoods(activityGoodsGetDto).getData(); // 检查活动状态 if (activityGoodsGetVo.getActivityStatus() == 0) { throw new ServiceException(AppErrorConstant.ACTIVITY_NO_START); } if (activityGoodsGetVo.getActivityStatus() == 2) { throw new ServiceException(AppErrorConstant.ACTIVITY_END); } if (activityGoodsGetVo.getAvailableBuyNum() < 1) { throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL); } if (activityGoodsGetVo.getAvailableBuyNum() < buyNum) { throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_BEYOND); } // 创建订单ID和订单号 String orderId = IdUtils.simpleUUID(); String orderNo = CodeFactoryUtil.getShopOrderNo(); // 创建订单商品对象和订单商品ID OrderGoods orderGoods; String orderGoodsId; // 创建商品类型集合 HashSet<String> goodsTypeSet = new HashSet<>(); HashSet<String> goodsNurseSet = new HashSet<>(); // 创建商品订单对象,并设置商品ID,商品名称,商品介绍,商品类型 appSureOrderGoodsVo = new AppSureOrderGoodsVo(); useCoupon = 0; goodsId = appPlaceActivityDto.getGoodsId(); goods = remoteGoodsService.getGoods(goodsId).getData(); appSureOrderGoodsVo.setGoodsId(goodsId); appSureOrderGoodsVo.setGoodsName(goods.getGoodsName()); appSureOrderGoodsVo.setGoodsIntroduction(goods.getGoodsIntroduction()); appSureOrderGoodsVo.setGoodsType(goods.getGoodsType()); // 获取商品图片 goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData(); appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl()); // 设置购买数量,商品价格,服务数量 appSureOrderGoodsVo.setBuyNum(buyNum); serviceNum = goods.getServiceNum(); // 获取活动价格 goodsPrice = activityGoodsGetVo.getActivityPrice(); appSureOrderGoodsVo.setGoodsPrice(goodsPrice); // 计算商品总价,商品实际价格 buyNumBig = BigDecimal.valueOf(buyNum); goodsTotalPrice = goodsPrice.multiply(buyNumBig); goodsRealPrice = goodsTotalPrice; // 设置使用优惠券,商品总价,优惠券折扣,商品实际价格 appSureOrderGoodsVo.setUseCoupon(useCoupon); appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice); appSureOrderGoodsVo.setCouponDiscount(discountMoney); appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice); // 获取商品押金 goodsDeposit = activityGoodsGetVo.getActivitySubscription(); if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO) == 0) { goodsDeposit = new BigDecimal("0.00"); } else { goodsDeposit = goodsDeposit.multiply(buyNumBig); } appSureOrderGoodsVo.setGoodsDeposit(goodsDeposit); // 计算商品数量,订单商品金额,优惠券折扣,订单支付押金,订单支付金额 goodsNum = goodsNum + buyNum; orderGoodsMoney = orderGoodsMoney.add(goodsTotalPrice); couponDiscount = couponDiscount.add(discountMoney); orderPayDeposit = orderPayDeposit.add(goodsDeposit); orderPayMoney = orderPayMoney.add(goodsRealPrice); // 创建订单商品,并设置订单商品ID,删除标志,订单ID,商品ID,购买数量,商品价格,商品押金,商品总金额,商品应收金额,周期数量标志,服务数量,商品类型,商品名称,商品图片 orderGoods = new OrderGoods(); orderGoodsId = IdUtils.simpleUUID(); orderGoods.setOrderGoodsId(orderGoodsId); orderGoods.setDelFlag(0); orderGoods.setOrderId(orderId); orderGoods.setGoodsId(goodsId); orderGoods.setBuyNum(buyNum); orderGoods.setGoodsPrice(goodsPrice); orderGoods.setGoodsDeposit(goodsDeposit); orderGoods.setGoodsTotalMoney(orderGoodsMoney); orderGoods.setGoodsReceivableMoney(goodsRealPrice); orderGoods.setCycleNumFlag(goods.getCycleNumFlag()); orderGoods.setServiceNum(serviceNum); orderGoods.setGoodsType(goods.getGoodsType()); orderGoods.setGoodsTag(goods.getGoodsTags()); orderGoods.setGoodsName(goods.getGoodsName()); orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); orderGoods.setGoodsPicture(goodsFile.getFileUrl()); // 保存订单商品 orderGoodsService.save(orderGoods); // 清空购物车 AppShoppingCartDelDto appShoppingCartDelDto = new AppShoppingCartDelDto(); appShoppingCartDelDto.setGoodsId(goodsId); appShoppingCartDelDto.setUserId(userId); remoteShoppingCartService.deleteShoppingCart(appShoppingCartDelDto); // 根据商品类型添加到商品类型集合中 if (goods.getGoodsType() == 1) { goodsTypeSet.add("周期"); } else if (goods.getGoodsType() == 2) { goodsTypeSet.add("服务"); } else if (goods.getGoodsType() == 3) { goodsTypeSet.add("体验"); } else if (goods.getGoodsType() == 4) { goodsTypeSet.add("单品"); } String goodsNurse = goods.getGoodsNurses(); if (StringUtils.isNotBlank(goodsNurse)) { String[] goodsNurseArr = goodsNurse.split(","); for (String str : goodsNurseArr) { goodsNurseSet.add(str); } } // 创建订单,并设置订单ID,删除标志,订单状态,订单号,订单来源,店铺ID,用户ID,订单金额,优惠券金额,折扣金额,应收金额,应收押金,变动应收金额,支付类型 Order order = new Order(); order.setOrderId(orderId); order.setDelFlag(0); order.setOrderStatus(1); order.setOrderNo(orderNo); order.setOrderFrom(2); order.setShopId(appPlaceActivityDto.getShopId()); order.setUserId(userId); order.setOrderMoney(orderGoodsMoney); order.setCouponMoney(couponDiscount); order.setDiscountMoney(couponDiscount); order.setReceivableMoney(orderPayMoney); order.setReceivableDeposit(orderPayDeposit); order.setActivityId(activityId); order.setActivityName(activityGoodsGetVo.getActivityName()); order.setOfflinePayMoney(BigDecimal.ZERO); // 根据支付类型设置订单支付金额,在线支付金额,订单支付金额,未支付金额,关闭标志 if (appPlaceActivityDto.getPayType() == 1) { order.setPayMoney(orderPayMoney); order.setOnlinePayMoney(orderPayMoney); appPlaceOrderVo.setPayMoney(orderPayMoney); appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); order.setPayType(1); order.setCloseFlag(1); order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount)); } else if (appPlaceActivityDto.getPayType() == 2) { order.setPayMoney(orderPayDeposit); order.setOnlinePayMoney(orderPayDeposit); appPlaceOrderVo.setPayMoney(orderPayDeposit); appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); order.setPayType(2); order.setCloseFlag(0); order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount).subtract(orderPayDeposit)); } // 设置订单备注,商品数量,创建时间 order.setOrderRemark(appPlaceActivityDto.getOrderRemark()); order.setGoodsNum(goodsNum); order.setCreateTime(new Date()); if(appPlaceActivityDto.getNewMemberFlag()!=null&&appPlaceActivityDto.getNewMemberFlag()==1){ order.setNewMemberFlag(1); } // 保存订单 this.save(order); // 更新用户商品类型 if (goodsTypeSet != null || goodsNurseSet != null) { AppMemberGoodsTypeDto appMemberGoodsTypeDto = new AppMemberGoodsTypeDto(); appMemberGoodsTypeDto.setUserId(userId); appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet); appMemberGoodsTypeDto.setGoodsNurseSet(goodsNurseSet); remoteMemberService.updateMemberGoodsType(appMemberGoodsTypeDto); } // 设置订单ID和订单号 appPlaceOrderVo.setOrderId(orderId); appPlaceOrderVo.setOrderNo(orderNo); //改变活动库存 AGStockChangeDto agStockChangeDto = new AGStockChangeDto(); agStockChangeDto.setActivityId(activityId); agStockChangeDto.setGoodsId(goodsId); agStockChangeDto.setChangeType(2); agStockChangeDto.setChangeNum(buyNum); agStockChangeDto.setShopId(order.getShopId()); agStockChangeDto.setUserId(order.getUserId()); remoteActivityService.changeActivityStock(agStockChangeDto); //支付金额大于0走支付 负责直接完成订单 if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.ZERO)>0){ String outTradeNo = IdUtils.simpleUUID(); // 保存订单 交易流水 order.setOutTradeNo(outTradeNo); this.saveOrUpdate(order); //自动取消订单任务时间获取 Integer delayTime = 30; if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); } appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); // 小程序微信下单支付 createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), outTradeNo, orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(), appPlaceActivityDto.getSpbillCreateIp()); //生成自动取消订单延时任务 String payStr = appPlaceOrderVo.getAppId()+"-"+appPlaceOrderVo.getTimeStamp()+"-"+appPlaceOrderVo.getNonceStr()+"-"+appPlaceOrderVo.getPackageStr()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getPaySign(); redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, payStr , delayTime.longValue(), TimeUnit.MINUTES); DelayTask delayTask = new DelayTask(); delayTask.setDelFlag(0); delayTask.setCreateTime(new Date()); delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime)); delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); remoteConfigService.addDelayTask(delayTask); appPlaceOrderVo.setZeroFlag(0); }else{ order.setOrderStatus(2); this.saveOrUpdate(order); appPlaceOrderVo.setZeroFlag(1); } //生成活动参加记录 ActivityRecord activityRecord = new ActivityRecord(); activityRecord.setDelFlag(0); activityRecord.setActivityId(activityId); activityRecord.setUserId(userId); activityRecord.setOrderTime(order.getCreateTime()); activityRecord.setOrderMoney(order.getOrderMoney()); activityRecord.setOrderId(orderId); activityRecord.setCreateTime(new Date()); activityRecord.setBuyNum(orderGoods.getBuyNum()); activityRecord.setGoodsId(orderGoods.getGoodsId()); activityRecord.setActivityMoney(activityGoodsGetVo.getActivityPrice()); remoteActivityService.addActivityRecord(activityRecord); //扣除redis库存 redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId, surpNum - buyNum); } catch (Exception e){ log.error("活动订单购买失败:"+e.getMessage()); throw new ServiceException(e.getMessage()); } finally { redissonLock.unlock(); } // 定义购买数量,服务数量,商品数量 BigDecimal buyNumBig; Integer serviceNum; Integer goodsNum = 0; // 定义商品,商品文件,商品价格,商品总价,商品实际价格,折扣金额,折扣百分比,商品押金,使用优惠券,订单商品金额,优惠券折扣,订单支付押金,订单支付金额 Goods goods; GoodsFile goodsFile; BigDecimal goodsPrice; BigDecimal goodsTotalPrice; BigDecimal goodsRealPrice; BigDecimal discountMoney = new BigDecimal("0.00"); BigDecimal discountPercent; BigDecimal goodsDeposit; Integer useCoupon; BigDecimal orderGoodsMoney = new BigDecimal("0.00"); BigDecimal couponDiscount = new BigDecimal("0.00"); BigDecimal orderPayDeposit = new BigDecimal("0.00"); BigDecimal orderPayMoney = new BigDecimal("0.00"); // 创建活动商品对象,并设置活动ID,商品ID,用户ID ActivityGoodsGetDto activityGoodsGetDto = new ActivityGoodsGetDto(); activityGoodsGetDto.setActivityId(activityId); activityGoodsGetDto.setGoodsId(goodsId); activityGoodsGetDto.setUserId(userId); // 获取用户活动商品 ActivityGoodsGetVo activityGoodsGetVo = remoteActivityService.getUserActivityGoods(activityGoodsGetDto).getData(); // 检查活动状态 if (activityGoodsGetVo.getActivityStatus() == 0) { throw new ServiceException(AppErrorConstant.ACTIVITY_NO_START); } if (activityGoodsGetVo.getActivityStatus() == 2) { throw new ServiceException(AppErrorConstant.ACTIVITY_END); } if (activityGoodsGetVo.getAvailableBuyNum() < 1) { throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL); } if (activityGoodsGetVo.getAvailableBuyNum() < buyNum) { throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_BEYOND); } // 创建订单ID和订单号 String orderId = IdUtils.simpleUUID(); String orderNo = CodeFactoryUtil.getShopOrderNo(); // 创建订单商品对象和订单商品ID OrderGoods orderGoods; String orderGoodsId; // 创建商品类型集合 HashSet<String> goodsTypeSet = new HashSet<>(); HashSet<String> goodsNurseSet = new HashSet<>(); // 创建商品订单对象,并设置商品ID,商品名称,商品介绍,商品类型 appSureOrderGoodsVo = new AppSureOrderGoodsVo(); useCoupon = 0; goodsId = appPlaceActivityDto.getGoodsId(); goods = remoteGoodsService.getGoods(goodsId).getData(); appSureOrderGoodsVo.setGoodsId(goodsId); appSureOrderGoodsVo.setGoodsName(goods.getGoodsName()); appSureOrderGoodsVo.setGoodsIntroduction(goods.getGoodsIntroduction()); appSureOrderGoodsVo.setGoodsType(goods.getGoodsType()); // 获取商品图片 goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData(); appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl()); // 设置购买数量,商品价格,服务数量 appSureOrderGoodsVo.setBuyNum(buyNum); goodsPrice = goods.getSalesPrice(); serviceNum = goods.getServiceNum(); // 获取活动价格 goodsPrice = activityGoodsGetVo.getActivityPrice(); appSureOrderGoodsVo.setGoodsPrice(goodsPrice); // 计算商品总价,商品实际价格 buyNumBig = BigDecimal.valueOf(buyNum); goodsTotalPrice = goodsPrice.multiply(buyNumBig); goodsRealPrice = goodsTotalPrice; // 设置使用优惠券,商品总价,优惠券折扣,商品实际价格 appSureOrderGoodsVo.setUseCoupon(useCoupon); appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice); appSureOrderGoodsVo.setCouponDiscount(discountMoney); appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice); // 获取商品押金 goodsDeposit = activityGoodsGetVo.getActivitySubscription(); if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO) == 0) { goodsDeposit = new BigDecimal("0.00"); } else { goodsDeposit = goodsDeposit.multiply(buyNumBig); } appSureOrderGoodsVo.setGoodsDeposit(goodsDeposit); // 计算商品数量,订单商品金额,优惠券折扣,订单支付押金,订单支付金额 goodsNum = goodsNum + buyNum; orderGoodsMoney = orderGoodsMoney.add(goodsTotalPrice); couponDiscount = couponDiscount.add(discountMoney); orderPayDeposit = orderPayDeposit.add(goodsDeposit); orderPayMoney = orderPayMoney.add(goodsRealPrice); // 创建订单商品,并设置订单商品ID,删除标志,订单ID,商品ID,购买数量,商品价格,商品押金,商品总金额,商品应收金额,周期数量标志,服务数量,商品类型,商品名称,商品图片 orderGoods = new OrderGoods(); orderGoodsId = IdUtils.simpleUUID(); orderGoods.setOrderGoodsId(orderGoodsId); orderGoods.setDelFlag(0); orderGoods.setOrderId(orderId); orderGoods.setGoodsId(goodsId); orderGoods.setBuyNum(buyNum); orderGoods.setGoodsPrice(goodsPrice); orderGoods.setGoodsDeposit(goodsDeposit); orderGoods.setGoodsTotalMoney(orderGoodsMoney); orderGoods.setGoodsReceivableMoney(goodsRealPrice); orderGoods.setCycleNumFlag(goods.getCycleNumFlag()); orderGoods.setServiceNum(serviceNum); orderGoods.setGoodsType(goods.getGoodsType()); orderGoods.setGoodsTag(goods.getGoodsTags()); orderGoods.setGoodsName(goods.getGoodsName()); orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); orderGoods.setGoodsPicture(goodsFile.getFileUrl()); // 保存订单商品 orderGoodsService.save(orderGoods); // 清空购物车 AppShoppingCartDelDto appShoppingCartDelDto = new AppShoppingCartDelDto(); appShoppingCartDelDto.setGoodsId(goodsId); appShoppingCartDelDto.setUserId(userId); remoteShoppingCartService.deleteShoppingCart(appShoppingCartDelDto); // 根据商品类型添加到商品类型集合中 if (goods.getGoodsType() == 1) { goodsTypeSet.add("周期"); } else if (goods.getGoodsType() == 2) { goodsTypeSet.add("服务"); } else if (goods.getGoodsType() == 3) { goodsTypeSet.add("体验"); } else if (goods.getGoodsType() == 4) { goodsTypeSet.add("单品"); } String goodsNurse = goods.getGoodsNurses(); if (StringUtils.isNotBlank(goodsNurse)) { String[] goodsNurseArr = goodsNurse.split(","); for (String str : goodsNurseArr) { goodsNurseSet.add(str); } } // 创建订单,并设置订单ID,删除标志,订单状态,订单号,订单来源,店铺ID,用户ID,订单金额,优惠券金额,折扣金额,应收金额,应收押金,变动应收金额,支付类型 Order order = new Order(); order.setOrderId(orderId); order.setDelFlag(0); order.setOrderStatus(1); order.setOrderNo(orderNo); order.setOrderFrom(2); order.setShopId(appPlaceActivityDto.getShopId()); order.setUserId(userId); order.setOrderMoney(orderGoodsMoney); order.setCouponMoney(couponDiscount); order.setDiscountMoney(couponDiscount); order.setReceivableMoney(orderPayMoney); order.setReceivableDeposit(orderPayDeposit); order.setActivityId(activityId); order.setActivityName(activityGoodsGetVo.getActivityName()); order.setOfflinePayMoney(BigDecimal.ZERO); // 根据支付类型设置订单支付金额,在线支付金额,订单支付金额,未支付金额,关闭标志 if (appPlaceActivityDto.getPayType() == 1) { order.setPayMoney(orderPayMoney); order.setOnlinePayMoney(orderPayMoney); appPlaceOrderVo.setPayMoney(orderPayMoney); appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); order.setPayType(1); order.setCloseFlag(1); order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount)); } else if (appPlaceActivityDto.getPayType() == 2) { order.setPayMoney(orderPayDeposit); order.setOnlinePayMoney(orderPayDeposit); appPlaceOrderVo.setPayMoney(orderPayDeposit); appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); order.setPayType(2); order.setCloseFlag(0); order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount).subtract(orderPayDeposit)); } // 设置订单备注,商品数量,创建时间 order.setOrderRemark(appPlaceActivityDto.getOrderRemark()); order.setGoodsNum(goodsNum); order.setCreateTime(new Date()); if(appPlaceActivityDto.getNewMemberFlag()!=null&&appPlaceActivityDto.getNewMemberFlag()==1){ order.setNewMemberFlag(1); } // 保存订单 this.save(order); // 更新用户商品类型 if (goodsTypeSet != null || goodsNurseSet != null) { AppMemberGoodsTypeDto appMemberGoodsTypeDto = new AppMemberGoodsTypeDto(); appMemberGoodsTypeDto.setUserId(userId); appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet); appMemberGoodsTypeDto.setGoodsNurseSet(goodsNurseSet); remoteMemberService.updateMemberGoodsType(appMemberGoodsTypeDto); } // 设置订单ID和订单号 appPlaceOrderVo.setOrderId(orderId); appPlaceOrderVo.setOrderNo(orderNo); //改变活动库存 AGStockChangeDto agStockChangeDto = new AGStockChangeDto(); agStockChangeDto.setActivityId(activityId); agStockChangeDto.setGoodsId(goodsId); agStockChangeDto.setChangeType(2); agStockChangeDto.setChangeNum(buyNum); agStockChangeDto.setShopId(order.getShopId()); agStockChangeDto.setUserId(order.getUserId()); remoteActivityService.changeActivityStock(agStockChangeDto); //支付金额大于0走支付 负责直接完成订单 if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.ZERO)>0){ List<String> goodsNameList = new ArrayList<>(); goodsNameList.add(orderGoods.getGoodsName()); String outTradeNo = IdUtils.simpleUUID(); // 保存订单 交易流水 order.setOutTradeNo(outTradeNo); this.saveOrUpdate(order); //自动取消订单任务时间获取 Integer delayTime = 30; if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); } appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); // 小程序微信下单支付 createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), outTradeNo, orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(), appPlaceActivityDto.getSpbillCreateIp(), goodsNameList,2); //生成自动取消订单延时任务 String payStr = appPlaceOrderVo.getAppId()+"-"+appPlaceOrderVo.getTimeStamp()+"-"+appPlaceOrderVo.getNonceStr()+"-"+appPlaceOrderVo.getPackageStr()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getPaySign(); redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, payStr , delayTime.longValue(), TimeUnit.MINUTES); DelayTask delayTask = new DelayTask(); delayTask.setDelFlag(0); delayTask.setCreateTime(new Date()); delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime)); delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); remoteConfigService.addDelayTask(delayTask); appPlaceOrderVo.setZeroFlag(0); }else{ order.setOrderStatus(2); this.saveOrUpdate(order); appPlaceOrderVo.setZeroFlag(1); } //生成活动参加记录 ActivityRecord activityRecord = new ActivityRecord(); activityRecord.setDelFlag(0); activityRecord.setActivityId(activityId); activityRecord.setUserId(userId); activityRecord.setOrderTime(order.getCreateTime()); activityRecord.setOrderMoney(order.getOrderMoney()); activityRecord.setOrderId(orderId); activityRecord.setCreateTime(new Date()); activityRecord.setBuyNum(orderGoods.getBuyNum()); activityRecord.setGoodsId(orderGoods.getGoodsId()); activityRecord.setActivityMoney(activityGoodsGetVo.getActivityPrice()); remoteActivityService.addActivityRecord(activityRecord); return appPlaceOrderVo; } @@ -1397,11 +1388,71 @@ if (order.getOrderStatus() != 2) { throw new ServiceException(AppErrorConstant.VERIFY_USED); } if (!order.getShopId().equals(shopId)) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } // 根据订单用户ID获取用户信息 Member member = remoteMemberService.getMember(order.getUserId()).getData(); // 根据订单ID获取订单商品列表 List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); //绑定用户判断核销商户 if(member.getBindingFlag()==1){ //绑定用户需直接判断商户 if (!order.getShopId().equals(shopId)) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } }else{ //商城订单需判断商户 if(order.getOrderFrom()==1){ if (!order.getShopId().equals(shopId)) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } } //未绑定用户需判断核销商城订单判断商品单价和优惠券 /*StringJoiner goodsIdSJ = new StringJoiner(","); for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { goodsIdSJ.add(appUserOrderGoodsPageVo.getGoodsId()); } //获取商品列表 List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(goodsIdSJ.toString()).getData(); Map<String, Goods> goodsMap = goodsList.stream() .collect(Collectors.toMap(Goods::getGoodsId, Function.identity())); Goods goods; ShopGoods shopGoods; AppShopGoodsGetDto appShopGoodsGetDto; for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { appShopGoodsGetDto= new AppShopGoodsGetDto(); appShopGoodsGetDto.setShopId(shopId); appShopGoodsGetDto.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId()); //当商户定制价格不为空时判断商品定制价格否则判断商品价格是否一致 if(shopGoods!=null){ if(shopGoods.getSalesPrice().compareTo(appUserOrderGoodsPageVo.getGoodsPrice())!=0){ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } if(appUserOrderGoodsPageVo.getCycleNumFlag()==0){ if(shopGoods.getServiceNum()!=null){ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } }else{ if(shopGoods.getServiceNum()!=appUserOrderGoodsPageVo.getServiceNum()){ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } } }else{ if(goods.getSalesPrice().compareTo(appUserOrderGoodsPageVo.getGoodsPrice())!=0){ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } if(appUserOrderGoodsPageVo.getCycleNumFlag()==0){ if(goods.getServiceNum()!=null){ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } }else{ if(goods.getServiceNum()!=appUserOrderGoodsPageVo.getServiceNum()){ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } } } }*/ } // 设置返回对象的属性值 merVerifyOrderVo.setOrderId(orderId); merVerifyOrderVo.setOrderNo(order.getOrderNo()); @@ -1433,8 +1484,6 @@ } } merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(merVerifyOrderVo.getReceiveMoney())); // 根据订单用户ID获取用户信息 Member member = remoteMemberService.getMember(order.getUserId()).getData(); merVerifyOrderVo.setUserId(order.getUserId()); merVerifyOrderVo.setUserName(member.getRealName()); merVerifyOrderVo.setUserMobile(member.getMobile()); @@ -1462,11 +1511,74 @@ if (order.getOrderStatus() != 2) { throw new ServiceException(AppErrorConstant.VERIFY_USED); } Member member = remoteMemberService.getMember(order.getUserId()).getData(); //获取核销商户 ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyOrderDto.getUserId()).getData(); if (!shopRelUserVo.getShopId().equals(order.getShopId())) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); Long shopId = shopRelUserVo.getShopId(); //获取订单商品列表 List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); //绑定用户判断核销商户 if(member.getBindingFlag()==1){ //绑定用户需直接判断商户 if (!order.getShopId().equals(shopId)) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } }else{ //商城订单需判断商户 if(order.getOrderFrom()==1){ if (!order.getShopId().equals(shopId)) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } } //未绑定用户需判断核销商城订单判断商品单价和优惠券 /*StringJoiner goodsIdSJ = new StringJoiner(","); for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { goodsIdSJ.add(appUserOrderGoodsPageVo.getGoodsId()); } //获取商品列表 List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(goodsIdSJ.toString()).getData(); Map<String, Goods> goodsMap = goodsList.stream() .collect(Collectors.toMap(Goods::getGoodsId, Function.identity())); Goods goods; ShopGoods shopGoods; AppShopGoodsGetDto appShopGoodsGetDto; for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { appShopGoodsGetDto= new AppShopGoodsGetDto(); appShopGoodsGetDto.setShopId(shopId); appShopGoodsGetDto.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId()); //当商户定制价格不为空时判断商品定制价格否则判断商品价格是否一致 if(shopGoods!=null){ if(shopGoods.getSalesPrice().compareTo(appUserOrderGoodsPageVo.getGoodsPrice())!=0){ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } if(appUserOrderGoodsPageVo.getCycleNumFlag()==0){ if(shopGoods.getServiceNum()!=null){ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } }else{ if(shopGoods.getServiceNum()!=appUserOrderGoodsPageVo.getServiceNum()){ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } } }else{ if(goods.getSalesPrice().compareTo(appUserOrderGoodsPageVo.getGoodsPrice())!=0){ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } if(appUserOrderGoodsPageVo.getCycleNumFlag()==0){ if(goods.getServiceNum()!=null){ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } }else{ if(goods.getServiceNum()!=appUserOrderGoodsPageVo.getServiceNum()){ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } } } }*/ } order.setShopId(shopId); order.setOrderStatus(3); order.setUseTime(nowTime); order.setUseUserId(merVerifyOrderDto.getUserId()); @@ -1474,6 +1586,7 @@ order.setOffPayTime(nowTime); order.setPayMoney(order.getPayMoney().add(relPayMoney)); order.setChangeReceivableMoney(relReceiveMoney); //判断订单是否结清 if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) { order.setCloseFlag(1); } else { @@ -1481,7 +1594,7 @@ } this.saveOrUpdate(order); //创建服务商品 List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); //获取商品信息(商品简介,调理问题) StringJoiner goodsIdSj = new StringJoiner(","); for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { goodsIdSj.add(appUserOrderGoodsPageVo.getGoodsId()); @@ -1493,9 +1606,11 @@ ConsumerGoods consumerGoods; String consumerGoodsId; Goods goods; //循环生成商品服务 List<ConsumerGoods> consumerGoodsList = new ArrayList<>(); for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { Integer buyNum = appUserOrderGoodsPageVo.getBuyNum(); //判断是否次数未确认商品 是则创建未确认周期商品服务 否则循环创建商品服务 if (appUserOrderGoodsPageVo.getCycleNumFlag() == 0) { consumerGoods = new ConsumerGoods(); goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId()); @@ -1559,11 +1674,6 @@ merVerifyOrderVo.setOrderGoodsMoney(order.getOrderMoney()); merVerifyOrderVo.setCouponDiscount(order.getCouponMoney()); merVerifyOrderVo.setReceivableDeposit(order.getReceivableDeposit()); if(order.getPayType()==1){ merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getPayMoney())); }else{ merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getCouponMoney()).subtract(order.getReceivableDeposit())); } merVerifyOrderVo.setPayMoney(order.getPayMoney()); merVerifyOrderVo.setOrderRemark(order.getOrderRemark()); merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList); @@ -1572,9 +1682,12 @@ merVerifyOrderVo.setUseTime(order.getUseTime()); merVerifyOrderVo.setPayType(order.getPayType()); merVerifyOrderVo.setRealReceiveMoney(order.getChangeReceivableMoney()); //根据支付方式返回应收金额和已收金额 if(order.getPayType()==1){ merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getPayMoney())); merVerifyOrderVo.setReceiveMoney(order.getPayMoney()); }else{ merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getCouponMoney()).subtract(order.getReceivableDeposit())); if(order.getOfflinePayMoney()!=null){ merVerifyOrderVo.setReceiveMoney(order.getOfflinePayMoney()); }else{ @@ -1582,17 +1695,24 @@ } } merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(merVerifyOrderVo.getReceiveMoney())); Member member = remoteMemberService.getMember(order.getUserId()).getData(); merVerifyOrderVo.setUserId(order.getUserId()); merVerifyOrderVo.setUserName(member.getRealName()); merVerifyOrderVo.setUserMobile(member.getMobile()); merVerifyOrderVo.setCloseFlag(order.getCloseFlag()); // TODO 活动才分账 if (order.getOrderFrom() == 2) { // 活动才分账 submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOnlinePayMoney()); //判断用户是否绑定 2023-09-05需求改变核销时绑定用户 if (member.getBindingFlag() != 1) { //绑定商户 AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); appMemberBindingDto.setShopId(order.getShopId()); appMemberBindingDto.setUserId(order.getUserId()); appMemberBindingDto.setBindingFlag(1); appMemberBindingDto.setBindingType(1); remoteMemberService.updateMemberBinding(appMemberBindingDto); } // 订单金额大于0时进行分账 if (order.getOnlinePayMoney().compareTo(BigDecimal.ZERO)>0) { submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOnlinePayMoney(),order.getOrderFrom()); } //创建支付记录 if(merVerifyOrderDto.getRelPayMoney().compareTo(BigDecimal.ZERO)>0){ PayRecord payRecord = new PayRecord(); @@ -1610,38 +1730,40 @@ return merVerifyOrderVo; } private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney) { private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney, Integer orderFrom) { String sendMessage = ""; String resultMessage = ""; try { // 核销完成 开始分账(平台收取服务费) OrderPayment payment = orderPaymentService.getByOrderId(orderId); String transactionId = payment.getTransactionId(); // 平台特约商户号,用户平台收取服务费 String platformTyMacId = WxPayConfiguration.getPlatformTyMacId(); R<String> resultMch = remoteShopService.getShopSubMchId(shopId); String subMchId = resultMch.getData(); if (StringUtils.isEmpty(subMchId)) { throw new ServiceException("获取微信商户号失败"); } // 平台特约商户号,用户平台收取服务费 2023-09-05改变分账方式 String platformTyMacId = WxPayConfiguration.getPlatformTyMacId(); if (!StringUtils.isEmpty(subMchId)) { WxPayConfig config = wxService.getConfig(); R<ShopProportionVo> resultShopProportion = remoteShopService.getShopProportion(shopId); ShopProportionVo shopProportion = resultShopProportion.getData(); if (null != shopProportion) { ShopProportionVo shopProportion = null; BigDecimal proportionPercent = null; //商户订单获取统一分成 活动订单获取活动分成 if(orderFrom==1){ proportionPercent = redisService.getCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION); }else{ R<ShopProportionVo> resultShopProportion = remoteShopService.getShopProportion(shopId); shopProportion = resultShopProportion.getData(); proportionPercent = shopProportion.getProportionPercent(); } if (null != proportionPercent) { ProfitSharingRequest request = new ProfitSharingRequest(); request.setAppid(config.getAppId()); request.setSubMchid(subMchId); request.setSubMchid(platformTyMacId); request.setTransactionId(transactionId); request.setOutOrderNo(IdUtils.simpleUUID()); List<ProfitSharingRequest.Receiver> receiverList = new ArrayList<>(); String description = "订单:" + orderNo + " 平台抽取佣金"; //获取商户分成 BigDecimal proportionPercent = shopProportion.getProportionPercent(); if (null == proportionPercent) { proportionPercent = BigDecimal.ZERO; } String description = "订单:" + orderNo + " 平台分账"; //平台分成 proportionPercent = new BigDecimal("100.00").subtract(proportionPercent); if(proportionPercent.compareTo(BigDecimal.ZERO)>0){ @@ -1655,20 +1777,17 @@ // 分账创建 ProfitSharingRequest.Receiver receiver = new ProfitSharingRequest.Receiver(); receiver.setType("MERCHANT_ID"); receiver.setReceiverAccount(platformTyMacId); receiver.setReceiverAccount(subMchId); receiver.setAmount(amount); receiver.setDescription(description); receiverList.add(receiver); request.setReceivers(receiverList); // 分账完成 request.setFinish(true); result = wxService.getEcommerceService().profitSharing(request); } // 创建分账记录 profitSharingService.saveProfitSharing(shopId, orderId, orderMoney, result); // 保存请求信息 sendMessage = JSONObject.toJSONString(request); resultMessage = JSONObject.toJSONString(result); @@ -2809,6 +2928,12 @@ Boolean noService = true; Boolean noExperience = true; Boolean noGoods = true; mgtTotalOrderTotalVo.setCycleTotal(0); mgtTotalOrderTotalVo.setCycleMoney(BigDecimal.ZERO); mgtTotalOrderTotalVo.setServiceTotal(0); mgtTotalOrderTotalVo.setServiceMoney(BigDecimal.ZERO); mgtTotalOrderTotalVo.setExperienceTotal(0); mgtTotalOrderTotalVo.setExperienceMoney(BigDecimal.ZERO); for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) { mgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapBigTotalVo = new MgtMapBigTotalVo(); @@ -2837,48 +2962,48 @@ mgtMapBigTotalVo.setMapKey("单品"); noGoods = false; } //补充缺少类型 if(noCycle){ mgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapIntTotalVo.setMapKey("周期"); mgtMapIntTotalVo.setMapValue(0); goodsTypeTotalList.add(mgtMapIntTotalVo); mgtMapBigTotalVo = new MgtMapBigTotalVo(); mgtMapBigTotalVo.setMapKey("周期"); mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); goodsTypeMoneyList.add(mgtMapBigTotalVo); } if(noService){ mgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapIntTotalVo.setMapKey("服务"); mgtMapIntTotalVo.setMapValue(0); goodsTypeTotalList.add(mgtMapIntTotalVo); mgtMapBigTotalVo = new MgtMapBigTotalVo(); mgtMapBigTotalVo.setMapKey("服务"); mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); goodsTypeMoneyList.add(mgtMapBigTotalVo); } if(noExperience){ mgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapIntTotalVo.setMapKey("体验"); mgtMapIntTotalVo.setMapValue(0); goodsTypeTotalList.add(mgtMapIntTotalVo); mgtMapBigTotalVo = new MgtMapBigTotalVo(); mgtMapBigTotalVo.setMapKey("体验"); mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); goodsTypeMoneyList.add(mgtMapBigTotalVo); } if(noGoods){ mgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapIntTotalVo.setMapKey("单品"); mgtMapIntTotalVo.setMapValue(0); goodsTypeTotalList.add(mgtMapIntTotalVo); mgtMapBigTotalVo = new MgtMapBigTotalVo(); mgtMapBigTotalVo.setMapKey("单品"); mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); goodsTypeMoneyList.add(mgtMapBigTotalVo); } goodsTypeTotalList.add(mgtMapIntTotalVo); goodsTypeMoneyList.add(mgtMapBigTotalVo); } //补充缺少类型 if(noCycle){ mgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapIntTotalVo.setMapKey("周期"); mgtMapIntTotalVo.setMapValue(0); goodsTypeTotalList.add(mgtMapIntTotalVo); mgtMapBigTotalVo = new MgtMapBigTotalVo(); mgtMapBigTotalVo.setMapKey("周期"); mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); goodsTypeMoneyList.add(mgtMapBigTotalVo); } if(noService){ mgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapIntTotalVo.setMapKey("服务"); mgtMapIntTotalVo.setMapValue(0); goodsTypeTotalList.add(mgtMapIntTotalVo); mgtMapBigTotalVo = new MgtMapBigTotalVo(); mgtMapBigTotalVo.setMapKey("服务"); mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); goodsTypeMoneyList.add(mgtMapBigTotalVo); } if(noExperience){ mgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapIntTotalVo.setMapKey("体验"); mgtMapIntTotalVo.setMapValue(0); goodsTypeTotalList.add(mgtMapIntTotalVo); mgtMapBigTotalVo = new MgtMapBigTotalVo(); mgtMapBigTotalVo.setMapKey("体验"); mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); goodsTypeMoneyList.add(mgtMapBigTotalVo); } if(noGoods){ mgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapIntTotalVo.setMapKey("单品"); mgtMapIntTotalVo.setMapValue(0); goodsTypeTotalList.add(mgtMapIntTotalVo); mgtMapBigTotalVo = new MgtMapBigTotalVo(); mgtMapBigTotalVo.setMapKey("单品"); mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); goodsTypeMoneyList.add(mgtMapBigTotalVo); } mgtTotalOrderTotalVo.setGoodsTypeTotalList(goodsTypeTotalList); @@ -2960,8 +3085,32 @@ */ @Override public MgtTotalActivityTotalVo getTotalActivityTotal(MgtBaseShopDto mgtBaseShopDto) { MgtTotalActivityTotalVo totalActivityTotalVo = new MgtTotalActivityTotalVo(); totalActivityTotalVo.setOrderTotal(0); totalActivityTotalVo.setCycleTotal(0); totalActivityTotalVo.setExperienceTotal(0); totalActivityTotalVo.setServiceTotal(0); totalActivityTotalVo.setOrderMoney(new BigDecimal("0")); totalActivityTotalVo.setCycleMoney(new BigDecimal("0")); totalActivityTotalVo.setExperienceMoney(new BigDecimal("0")); totalActivityTotalVo.setServiceMoney(new BigDecimal("0")); totalActivityTotalVo.setOrderJoinPerson(0); totalActivityTotalVo.setOrderPerson(0); totalActivityTotalVo.setCyclePerson(0); totalActivityTotalVo.setExperiencePerson(0); totalActivityTotalVo.setServicePerson(0); totalActivityTotalVo.setOrderTotalKey(new String[0]); totalActivityTotalVo.setOrderTotalValue(new Integer[0]); totalActivityTotalVo.setOrderMoneyValue(new BigDecimal[0]); totalActivityTotalVo.setGoodsTypeTotalList(Lists.newArrayList()); totalActivityTotalVo.setGoodsTypeMoneyList(Lists.newArrayList()); totalActivityTotalVo.setJoinMemberTotalKey(new String[0]); totalActivityTotalVo.setJoinMemberTotalValue(new Integer[0]); //获取基础统计 总订单数 订单金额 参与人数 MgtTotalActivityTotalVo totalActivityTotalVo = orderMapper.getTotalActivityTotal(mgtBaseShopDto); MgtTotalActivityTotalVo mgtTotalActivityTotalVo = orderMapper.getTotalActivityTotal(mgtBaseShopDto); totalActivityTotalVo.setOrderTotal(mgtTotalActivityTotalVo.getOrderTotal()); totalActivityTotalVo.setOrderMoney(mgtTotalActivityTotalVo.getOrderMoney()); totalActivityTotalVo.setOrderJoinPerson(mgtTotalActivityTotalVo.getOrderJoinPerson()); //获客人数 MgtTotalActivityTotalVo totalActivityMemberTotalVo = orderMapper.getTotalActivityMemberTotal(mgtBaseShopDto); totalActivityTotalVo.setOrderPerson(totalActivityMemberTotalVo.getOrderPerson()); @@ -3083,8 +3232,8 @@ totalActivityTotalVo.setOrderTotalValue(orderTotalValue); totalActivityTotalVo.setOrderMoneyValue(orderMoneyValue); } //参与人数 List<MgtMapIntTotalVo> joinList = orderMapper.getActivityMemberTotal(mgtBaseShopDto); //参与人数 2023-09-06 另开接口 /*List<MgtMapIntTotalVo> joinList = orderMapper.getActivityMemberTotal(mgtBaseShopDto); // 将查询结果转为Map Map<String, Integer> mgtMapIntTotalVoMap = new HashMap<>(); if (joinList != null && !joinList.isEmpty()) { @@ -3107,7 +3256,7 @@ joinMemberTotalValue[i] = (value != null) ? value : 0; } totalActivityTotalVo.setJoinMemberTotalKey(joinMemberTotalKey); totalActivityTotalVo.setJoinMemberTotalValue(joinMemberTotalValue); totalActivityTotalVo.setJoinMemberTotalValue(joinMemberTotalValue);*/ return totalActivityTotalVo; } @@ -3319,14 +3468,49 @@ mgtBasePlatformDto.setUserIdList(userIdList); } } MgtTotalOrderTotalVo mgtTotalOrderTotalVo = new MgtTotalOrderTotalVo(); mgtTotalOrderTotalVo.setOrderTotal(0); mgtTotalOrderTotalVo.setOnlineTotal(0); mgtTotalOrderTotalVo.setOfflineTotal(0); mgtTotalOrderTotalVo.setActivityTotal(0); mgtTotalOrderTotalVo.setCycleTotal(0); mgtTotalOrderTotalVo.setExperienceTotal(0); mgtTotalOrderTotalVo.setServiceTotal(0); mgtTotalOrderTotalVo.setOrderMoney(new BigDecimal("0")); mgtTotalOrderTotalVo.setOnlineMoney(new BigDecimal("0")); mgtTotalOrderTotalVo.setOfflineMoney(new BigDecimal("0")); mgtTotalOrderTotalVo.setActivityMoney(new BigDecimal("0")); mgtTotalOrderTotalVo.setCycleMoney(new BigDecimal("0")); mgtTotalOrderTotalVo.setExperienceMoney(new BigDecimal("0")); mgtTotalOrderTotalVo.setServiceMoney(new BigDecimal("0")); mgtTotalOrderTotalVo.setOrderTotalKey(new String[0]); mgtTotalOrderTotalVo.setOrderTotalValue(new Integer[0]); mgtTotalOrderTotalVo.setOrderMoneyValue(new BigDecimal[0]); mgtTotalOrderTotalVo.setGoodsTypeTotalList(Lists.newArrayList()); mgtTotalOrderTotalVo.setGoodsTypeMoneyList(Lists.newArrayList()); mgtTotalOrderTotalVo.setGoodsRankList(Lists.newArrayList()); mgtTotalOrderTotalVo.setOrderFromRankList(Lists.newArrayList()); List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); if (mgtBasePlatformDto.getUserId() != null || StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) { if(shopIdList==null||shopIdList.isEmpty()){ return mgtTotalOrderTotalVo; } } if(mgtBasePlatformDto.getShopId()!=null){ shopIdList = new ArrayList<>(); shopIdList.add(mgtBasePlatformDto.getShopId()); } mgtBasePlatformDto.setShopIdList(shopIdList); //获取基础统计 MgtTotalOrderTotalVo mgtTotalOrderTotalVo = orderMapper.getPlTotalOrderTotalOrderFrom(mgtBasePlatformDto); MgtTotalOrderTotalVo totalOrderTotalVo = orderMapper.getPlTotalOrderTotalOrderFrom(mgtBasePlatformDto); mgtTotalOrderTotalVo.setOrderTotal(totalOrderTotalVo.getOrderTotal()); mgtTotalOrderTotalVo.setOnlineTotal(totalOrderTotalVo.getOnlineTotal()); mgtTotalOrderTotalVo.setOfflineTotal(totalOrderTotalVo.getOfflineTotal()); mgtTotalOrderTotalVo.setActivityTotal(0); mgtTotalOrderTotalVo.setOrderMoney(totalOrderTotalVo.getOrderMoney()); mgtTotalOrderTotalVo.setOnlineMoney(totalOrderTotalVo.getOnlineMoney()); mgtTotalOrderTotalVo.setOfflineMoney(totalOrderTotalVo.getOfflineMoney()); mgtTotalOrderTotalVo.setActivityMoney(totalOrderTotalVo.getActivityMoney()); //获取商品分类销售数据 List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listPlTotalOrderTotalGoodsType(mgtBasePlatformDto); List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>(); @@ -3477,21 +3661,33 @@ if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){ return new MgtPlTotalActivityTotalVo(); } //获取需要关联的用户id集合 /*if (mgtBasePlatformDto.getDeptId() != null) { List<Long> userIdList = new ArrayList<>(); if (mgtBasePlatformDto.getUserId() != null) { userIdList.add(mgtBasePlatformDto.getUserId()); } else { MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept(); mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId()); mgtUserIdByDept = remoteConfigService.getUserIdByDept(mgtUserIdByDept).getData(); userIdList = mgtUserIdByDept.getUserIdList(); } if (!userIdList.isEmpty()) { mgtBasePlatformDto.setUserIdList(userIdList); } }*/ MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo(); totalActivityTotalVo.setOrderTotal(0); totalActivityTotalVo.setCycleTotal(0); totalActivityTotalVo.setExperienceTotal(0); totalActivityTotalVo.setServiceTotal(0); totalActivityTotalVo.setOrderMoney(new BigDecimal("0")); totalActivityTotalVo.setCycleMoney(new BigDecimal("0")); totalActivityTotalVo.setExperienceMoney(new BigDecimal("0")); totalActivityTotalVo.setServiceMoney(new BigDecimal("0")); totalActivityTotalVo.setOrderJoinPerson(0); totalActivityTotalVo.setOrderPerson(0); totalActivityTotalVo.setCyclePerson(0); totalActivityTotalVo.setExperiencePerson(0); totalActivityTotalVo.setServicePerson(0); totalActivityTotalVo.setOrderTotalKey(new String[0]); totalActivityTotalVo.setOrderTotalValue(new Integer[0]); totalActivityTotalVo.setOrderMoneyValue(new BigDecimal[0]); totalActivityTotalVo.setGoodsTypeTotalList(Lists.newArrayList()); totalActivityTotalVo.setGoodsTypeMoneyList(Lists.newArrayList()); totalActivityTotalVo.setActivityRankList(Lists.newArrayList()); totalActivityTotalVo.setShopSalesRankKey(new String[0]); totalActivityTotalVo.setShopSalesRankValue(new BigDecimal[0]); totalActivityTotalVo.setActivitySalesRankList(Lists.newArrayList()); totalActivityTotalVo.setJoinMemberTotalKey(new String[0]); totalActivityTotalVo.setJoinMemberTotalValue(new Integer[0]); totalActivityTotalVo.setGetMemberTotalKey(new String[0]); totalActivityTotalVo.setGetMemberTotalValue(new Integer[0]); List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); if(mgtBasePlatformDto.getShopId()!=null){ shopIdList = new ArrayList<>(); @@ -3499,7 +3695,10 @@ } mgtBasePlatformDto.setShopIdList(shopIdList); //获取基础统计 MgtPlTotalActivityTotalVo totalActivityTotalVo = orderMapper.getPlTotalActivityTotal(mgtBasePlatformDto); MgtPlTotalActivityTotalVo mgtTotalActivityTotalVo = orderMapper.getPlTotalActivityTotal(mgtBasePlatformDto); totalActivityTotalVo.setOrderTotal(mgtTotalActivityTotalVo.getOrderTotal()); totalActivityTotalVo.setOrderMoney(mgtTotalActivityTotalVo.getOrderMoney()); totalActivityTotalVo.setOrderJoinPerson(mgtTotalActivityTotalVo.getOrderJoinPerson()); //获客人数 MgtPlTotalActivityTotalVo totalActivityMemberTotalVo = orderMapper.getPlTotalActivityMemberTotal(mgtBasePlatformDto); totalActivityTotalVo.setOrderPerson(totalActivityMemberTotalVo.getOrderPerson()); @@ -3634,26 +3833,30 @@ Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream() .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); //商户活动次数排名 List<MgtMapBigTotalVo> shopActivityRank = orderMapper.listPlTotalShopActivityRank(mgtBasePlatformDto); List<MgtMapIntTotalVo> shopActivityRank = orderMapper.listPlTotalShopActivityRank(mgtBasePlatformDto); if (shopActivityRank != null && shopActivityRank.size() > 0) { shopActivityRank = bigListRemoveNull(shopActivityRank); for(MgtMapBigTotalVo mgtMapBigTotalVo : shopActivityRank){ if(shopMap.get(mgtMapBigTotalVo.getMapKey())!=null){ mgtMapBigTotalVo.setMapKey(shopMap.get(mgtMapBigTotalVo.getMapKey()).getShopName()); for(MgtMapIntTotalVo mgtMapIntTotalVo : shopActivityRank){ if(shopMap.get(Long.valueOf(mgtMapIntTotalVo.getMapKey()))!=null){ mgtMapIntTotalVo.setMapKey(shopMap.get(Long.valueOf(mgtMapIntTotalVo.getMapKey())).getShopName()); } } totalActivityTotalVo.setShopSalesRankList(shopActivityRank); totalActivityTotalVo.setActivityRankList(shopActivityRank); } //商户活动销售额排名 List<MgtMapBigTotalVo> shopActivitySalesRank = orderMapper.listPlTotalShopActivitySalesRank(mgtBasePlatformDto); if (shopActivitySalesRank != null && shopActivitySalesRank.size() > 0) { shopActivitySalesRank = bigListRemoveNull(shopActivitySalesRank); for(MgtMapBigTotalVo mgtMapBigTotalVo : shopActivitySalesRank){ if(shopMap.get(mgtMapBigTotalVo.getMapKey())!=null){ mgtMapBigTotalVo.setMapKey(shopMap.get(mgtMapBigTotalVo.getMapKey()).getShopName()); String[] shopSalesRankKey = new String[shopActivitySalesRank.size()]; BigDecimal[] shopSalesRankValue = new BigDecimal[shopActivitySalesRank.size()]; MgtMapBigTotalVo mgtMapBigTotalVo; for(int i=0;i<shopActivitySalesRank.size();i++){ mgtMapBigTotalVo = shopActivitySalesRank.get(i); if(shopMap.get(Long.valueOf(mgtMapBigTotalVo.getMapKey()))!=null){ shopSalesRankKey[i] = shopMap.get(Long.valueOf(mgtMapBigTotalVo.getMapKey())).getShopName(); } shopSalesRankValue[i] = mgtMapBigTotalVo.getMapValue(); } totalActivityTotalVo.setShopSalesRankList(shopActivitySalesRank); totalActivityTotalVo.setShopSalesRankKey(shopSalesRankKey); totalActivityTotalVo.setShopSalesRankValue(shopSalesRankValue); } //活动销售额排名 List<MgtMapBigTotalVo> activitySalesRank = orderMapper.listPlTotalActivitySalesRank(mgtBasePlatformDto); @@ -3667,8 +3870,8 @@ List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData(); mgtBasePlatformDto.setUserIdList(userIdList); } //参与人数 List<MgtMapIntTotalVo> joinList = orderMapper.getMgtActivityMemberTotal(mgtBasePlatformDto); //参与人数 2023-09-06 另开接口 /*List<MgtMapIntTotalVo> joinList = orderMapper.getMgtActivityMemberTotal(mgtBasePlatformDto); // 将查询结果转为Map Map<String, Integer> mgtMapIntTotalVoMap = new HashMap<>(); if (joinList != null && !joinList.isEmpty()) { @@ -3711,7 +3914,7 @@ getMemberTotalValue[i] = (value != null) ? value : 0; } totalActivityTotalVo.setGetMemberTotalKey(getMemberTotalKey); totalActivityTotalVo.setGetMemberTotalValue(getMemberTotalValue); totalActivityTotalVo.setGetMemberTotalValue(getMemberTotalValue);*/ return totalActivityTotalVo; } @@ -3741,6 +3944,10 @@ mgtBasePlatformDto.setUserIdList(userIdList); } List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); if(mgtBasePlatformDto.getShopId()!=null){ shopIdList = new ArrayList<>(); shopIdList.add(mgtBasePlatformDto.getShopId()); } mgtBasePlatformDto.setShopIdList(shopIdList); MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo(); //日期全部时固定为5天 @@ -3801,6 +4008,10 @@ mgtBasePlatformDto.setUserIdList(userIdList); } List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); if(mgtBasePlatformDto.getShopId()!=null){ shopIdList = new ArrayList<>(); shopIdList.add(mgtBasePlatformDto.getShopId()); } mgtBasePlatformDto.setShopIdList(shopIdList); MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo(); //日期全部时固定为5天 @@ -5365,6 +5576,7 @@ } } @GlobalTransactional(rollbackFor = Exception.class) private void autoTimeCancelOrder(Order order) { String orderId = order.getOrderId(); order.setOrderStatus(0); ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml
@@ -41,9 +41,10 @@ mchKey: J8v9JDHKJYDHW9bdk30o2bdjy6z9mn1A platformTyMacId: 1650744551 subAppId: #服务商模式下的子商户公众账号ID subMchId: #服务商模式下的子商户号 subMchId: 1650744551 keyPath: /home/cert/apiclient_cert.p12 apiV3Key: J8v9JDHKJYDHW9bdk30o2bdjy6z9mn1A privateKeyPath: /home/cert/apiclient_key.pem privateCertPath: /home/cert/apiclient_cert.pem ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderGoodsMapper.xml
@@ -115,7 +115,8 @@ tog.goods_picture goodsPicture, tog.goods_total_money goodsRealPrice, tog.cycle_num_flag cycleNumFlag, tog.service_num serviceNum tog.service_num serviceNum, tog.coupon_id couponId FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 AND toc.order_id = #{orderId} ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -291,7 +291,7 @@ toc.order_no orderNo, toc.order_status orderStatus, toc.order_from orderFrom, toc.activity_id aactivityId, toc.activity_id activityId, toc.receivable_money receivableMoney, toc.goods_num goodsNum, toc.shop_id shopId, @@ -847,7 +847,7 @@ IFNULL(SUM(tog.goods_receivable_money),0) AS mapValueSecond FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 AND toc.order_status IN (2,3) WHERE toc.del_flag = 0 AND toc.order_status = 3 <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> @@ -906,12 +906,9 @@ <select id="getTotalActivityTotal" resultType="com.ruoyi.order.domain.vo.MgtTotalActivityTotalVo"> SELECT COUNT(CASE WHEN order_status = 3 THEN order_id ELSE NULL END) orderTotal, IFNULL(SUM(change_receivable_money),0) orderMoney, IFNULL(SUM(CASE WHEN order_status = 3 AND pay_type = 1 THEN change_receivable_money WHEN order_status = 3 AND pay_type = 2 THEN change_receivable_money + online_pay_money ELSE 0 END),0) orderMoney, COUNT(DISTINCT user_id) orderJoinPerson FROM t_order WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3) <if test="param.shopId != null and param.shopId != ''"> AND shop_id = #{param.shopId} </if> FROM t_order WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3) AND shop_id = #{param.shopId} <if test="param.startDate!=null and param.startDate!=''"> AND Date(create_time) >= #{param.startDate} </if> @@ -928,10 +925,7 @@ COUNT(DISTINCT toc.user_id) AS mapValueThird FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 AND order_from = 2 AND order_status IN (2,3) <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> WHERE toc.del_flag = 0 AND order_from = 2 AND order_status = 3 AND shop_id = #{param.shopId} <if test="param.startDate!=null and param.startDate!=''"> AND Date(toc.create_time) >= #{param.startDate} </if> @@ -947,10 +941,7 @@ COUNT(DISTINCT order_id) AS mapValueFirst, IFNULL(SUM(CASE WHEN pay_type = 1 THEN change_receivable_money WHEN pay_type = 2 THEN change_receivable_money + online_pay_money ELSE 0 END),0) AS mapValueSecond FROM t_order WHERE del_flag = 0 AND order_from = 2 AND order_status = 3 <if test="param.shopId != null and param.shopId != ''"> AND shop_id = #{param.shopId} </if> WHERE del_flag = 0 AND order_from = 2 AND order_status = 3 AND shop_id = #{param.shopId} <if test="param.startDate!=null and param.startDate!=''"> AND Date(create_time) >= #{param.startDate} </if> @@ -1297,6 +1288,9 @@ IFNULL(SUM(CASE WHEN order_status = 3 AND pay_type = 1 THEN change_receivable_money WHEN order_status = 3 AND pay_type = 2 THEN change_receivable_money + online_pay_money ELSE 0 END),0) orderMoney, COUNT(DISTINCT user_id) orderJoinPerson FROM t_order WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3) <if test="param.shopId != null and param.shopId != ''"> AND shop_id = #{param.shopId} </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1304,7 +1298,7 @@ </foreach> </if> <if test="param.activityId!=null and param.activityId!=''"> AND toc.activity_id = #{param.activityId} AND activity_id = #{param.activityId} </if> <if test="param.startDate!=null and param.startDate!=''"> AND Date(create_time) >= #{param.startDate} @@ -1323,6 +1317,12 @@ FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 AND toc.order_from = 2 AND toc.order_status = 3 AND toc.new_member_flag = 1 <if test="param.activityId!=null and param.activityId!=''"> AND toc.activity_id = #{param.activityId} </if> <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND toc.shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1345,10 +1345,7 @@ COUNT(DISTINCT CASE WHEN tog.goods_type = 2 THEN toc.user_id ELSE NULL END) servicePerson FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 AND toc.order_from = 2 AND toc.order_status = 3 AND toc.new_member_flag = 1 <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> WHERE toc.del_flag = 0 AND toc.order_from = 2 AND toc.order_status = 3 AND toc.new_member_flag = 1 AND toc.shop_id = #{param.shopId} <if test="param.startDate!=null and param.startDate!=''"> AND Date(toc.create_time) >= #{param.startDate} </if> @@ -1366,6 +1363,12 @@ FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 AND toc.order_from = 2 AND order_status = 3 <if test="param.activityId!=null and param.activityId!=''"> AND toc.activity_id = #{param.activityId} </if> <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND toc.shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1388,6 +1391,12 @@ IFNULL(SUM(CASE WHEN pay_type = 1 THEN change_receivable_money WHEN pay_type = 2 THEN change_receivable_money + online_pay_money ELSE 0 END),0) AS mapValueSecond FROM t_order WHERE del_flag = 0 AND order_from = 2 AND order_status = 3 <if test="param.activityId!=null and param.activityId!=''"> AND activity_id = #{param.activityId} </if> <if test="param.shopId != null and param.shopId != ''"> AND shop_id = #{param.shopId} </if> <if test="param.startDate!=null and param.startDate!=''"> AND Date(create_time) >= #{param.startDate} </if> @@ -1443,12 +1452,15 @@ mapValue ASC </select> <select id="listPlTotalShopActivityRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo"> <select id="listPlTotalShopActivityRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT shop_id AS mapKey, COUNT(order_id) AS mapValue FROM t_order WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3) WHERE del_flag = 0 AND order_from = 2 AND order_status = 3 <if test="param.activityId!=null and param.activityId!=''"> AND activity_id = #{param.activityId} </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1470,7 +1482,13 @@ shop_id AS mapKey, IFNULL(SUM(CASE WHEN pay_type = 1 THEN change_receivable_money WHEN pay_type = 2 THEN change_receivable_money+online_pay_money ELSE 0 END),0) AS mapValue FROM t_order WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3) WHERE del_flag = 0 AND order_from = 2 AND order_status = 3 <if test="param.activityId!=null and param.activityId!=''"> AND activity_id = #{param.activityId} </if> <if test="param.shopId != null and param.shopId != ''"> AND shop_id = #{param.shopId} </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1492,7 +1510,13 @@ activity_name AS mapKey, IFNULL(SUM(CASE WHEN pay_type = 1 THEN change_receivable_money WHEN pay_type = 2 THEN change_receivable_money+online_pay_money ELSE 0 END),0) AS mapValue FROM t_order WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3) WHERE del_flag = 0 AND order_from = 2 AND order_status = 3 <if test="param.activityId!=null and param.activityId!=''"> AND activity_id = #{param.activityId} </if> <if test="param.shopId != null and param.shopId != ''"> AND shop_id = #{param.shopId} </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1606,7 +1630,7 @@ IFNULL(SUM(tog.goods_receivable_money),0) AS mapValueSecond FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 AND toc.order_status IN (2,3) WHERE toc.del_flag = 0 AND toc.order_status = 3 <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> @@ -1896,6 +1920,12 @@ FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.order_from = 2 AND toc.new_member_flag = 1 AND toc.order_status = 3 <if test="param.activityId!=null and param.activityId!=''"> AND toc.activity_id = #{param.activityId} </if> <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND toc.shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1923,7 +1953,7 @@ COUNT(DISTINCT toc.user_id) AS mapValue FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 AND toc.shop_id = #{param.shopId} AND toc.order_from = 2 AND toc.order_status IN (2,3) WHERE toc.del_flag = 0 AND toc.shop_id = #{param.shopId} AND toc.order_from = 2 AND toc.order_status = 3 <if test="param.activityId !=null and param.activityId != ''"> AND toc.activity_id = #{param.activityId} </if> @@ -1950,6 +1980,12 @@ FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 AND toc.order_from = 2 AND toc.order_status IN (2,3) <if test="param.activityId!=null and param.activityId!=''"> AND toc.activity_id = #{param.activityId} </if> <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND toc.shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1977,9 +2013,12 @@ COUNT(DISTINCT toc.user_id) AS mapValue FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 AND toc.order_from = 2 AND toc.order_status IN (2,3) WHERE toc.del_flag = 0 AND toc.order_from = 2 <if test="param.shopId == null"> AND toc.order_status IN (2,3) AND toc.shop_id = #{param.shopId} </if> <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} AND toc.order_status = 3 AND toc.shop_id = #{param.shopId} </if> <if test="param.userIdList !=null and param.userIdList.size()>0"> AND toc.user_id IN ruoyi-modules/ruoyi-order/src/test/java/com/ruoyi/order/orderTest.java
@@ -1,7 +1,7 @@ package com.ruoyi.order; import com.ruoyi.order.service.order.OrderService; import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; import com.ruoyi.system.api.domain.dto.MgtBaseShopDto; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; @@ -26,8 +26,9 @@ @Test public void main() { MgtBasePlatformDto mgtBasePlatformDto = new MgtBasePlatformDto(); orderService.getPlTotalOrderTotal(mgtBasePlatformDto); MgtBaseShopDto q = new MgtBaseShopDto(); q.setShopId(31L); orderService.getTotalOrderTotal(q); } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java
@@ -16,7 +16,7 @@ import com.ruoyi.system.api.constant.AppErrorConstant; import com.ruoyi.system.api.domain.dto.*; import com.ruoyi.system.api.domain.poji.shop.Shop; import com.ruoyi.system.api.domain.poji.shop.ShopProportionVo; import com.ruoyi.system.api.domain.vo.ShopProportionVo; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.model.QwH5LoginVo; ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtAgencyTaskRecordPageVo.java
@@ -27,6 +27,9 @@ @ApiModelProperty(value = "用户头像") private String userPicture; @ApiModelProperty(value = "用户岗位") private String userPosition; @ApiModelProperty(value = "跟进id") private Long followId; ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthPageVo.java
@@ -44,7 +44,7 @@ @ApiModelProperty(value = "签约链接") private String signUrl; @ApiModelProperty(value = "分账方标记1是0否 0的时候需要添加为分账方") @ApiModelProperty(value = "分账方标记1是0否 auditStatus=6,accountFlag=0的时候需要添加分账方操作") private Integer accountFlag; } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopTaskRecordPageVo.java
@@ -27,6 +27,9 @@ @ApiModelProperty(value = "用户头像") private String userPicture; @ApiModelProperty(value = "用户岗位") private String userPosition; @ApiModelProperty(value = "跟进id") private Long followId; ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffAgencyTaskRecordPageVo.java
@@ -27,6 +27,9 @@ @ApiModelProperty(value = "用户头像") private String userPicture; @ApiModelProperty(value = "用户岗位") private String userPosition; @ApiModelProperty(value = "跟进id") private Long followId; ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffMyShopTaskRecordPageVo.java
@@ -27,6 +27,9 @@ @ApiModelProperty(value = "用户头像") private String userPicture; @ApiModelProperty(value = "用户岗位") private String userPosition; @ApiModelProperty(value = "跟进id") private Long followId; ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -32,6 +32,7 @@ import com.ruoyi.shop.service.task.ShopTaskService; import com.ruoyi.shop.util.WechatPayUtils; import com.ruoyi.system.api.constant.AppErrorConstant; import com.ruoyi.system.api.constant.SecurityConstant; import com.ruoyi.system.api.domain.dto.*; import com.ruoyi.system.api.domain.poji.config.SysTag; import com.ruoyi.system.api.domain.poji.member.Member; @@ -375,7 +376,11 @@ shopProportion.setDelFlag(0); shopProportion.setShopId(shop.getShopId()); shopProportion.setShopType(shop.getShopType()); shopProportion.setProportionPercent(new BigDecimal("100.00")); BigDecimal proportionPercent = redisService.getCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION); if(proportionPercent==null){ proportionPercent = new BigDecimal("30"); } shopProportion.setProportionPercent(proportionPercent); shopProportion.setUpdateTime(new Date()); shopProportion.setUpdateUserId(userId); shopProportionService.save(shopProportion); @@ -438,7 +443,7 @@ }else{ shop.setCooperativeFlag(0); } shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag())); shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag(),shop.getAccountFlag())); shop.setUpdateTime(new Date()); shop.setUpdateUserId(mgtTerminateCooperationDto.getUserId()); this.saveOrUpdate(shop); @@ -459,7 +464,7 @@ }else{ shop.setFrozenFlag(0); } shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag())); shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag(),shop.getAccountFlag())); this.saveOrUpdate(shop); } @@ -470,13 +475,13 @@ * @param * @return Integer */ private Integer handelShopStatus(Integer frozenFlag, Integer cooperativeFlag, Integer authFlag){ private Integer handelShopStatus(Integer frozenFlag, Integer cooperativeFlag, Integer authFlag,Integer accountFlag){ Integer shopStatus = 1; if(frozenFlag == 1){ shopStatus = 0; return shopStatus; } if(authFlag == 0){ if(authFlag == 0 || accountFlag==0){ shopStatus = 3; return shopStatus; } @@ -1484,7 +1489,7 @@ private void applySuccessUpdateShopStatus(Long shopId){ // 更新商户状态为正常 Shop shop = this.getById(shopId); Integer shopStatus = handelShopStatus(shop.getFrozenFlag(), shop.getCooperativeFlag(), 1); Integer shopStatus = handelShopStatus(shop.getFrozenFlag(), shop.getCooperativeFlag(), 1,shop.getAccountFlag()); LambdaUpdateWrapper<Shop> updateWrapper = Wrappers.lambdaUpdate(); updateWrapper.eq(Shop::getShopId, shopId) .set(Shop::getShopStatus, shopStatus) @@ -1594,7 +1599,7 @@ /** * @description * @description 添加分账方 * @author jqs * @date 2023/8/23 9:44 * @param @@ -1612,6 +1617,7 @@ ProfitSharingReceiverResult result = wechatPayUtils.addProfitSharingReceiver(request); if(StringUtils.isNotBlank(result.getAccount())){ shop.setAccountFlag(1); shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag(),1)); this.saveOrUpdate(shop); } } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskRecordServiceImpl.java
@@ -15,13 +15,16 @@ import com.ruoyi.shop.mapper.task.AgencyTaskRecordMapper; import com.ruoyi.shop.service.task.AgencyTaskRecordService; import com.ruoyi.shop.service.task.TaskFileService; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.service.RemoteUserService; import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.api.service.RemoteConfigService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; /** @@ -42,7 +45,7 @@ private TaskFileService taskFileService; @Resource private RemoteUserService remoteUserService; private RemoteConfigService remoteConfigService; /** * * @param page @@ -117,13 +120,24 @@ List<FileDto> video = new ArrayList<>(); List<FileDto> audio = new ArrayList<>(); Long userId; SysUser sysUser; SysStaff sysStaff; HashSet<Long> userIdSet = new HashSet<>(); for(MgtAgencyTaskRecordPageVo mgtAgencyTaskRecordPageVo : mgtAgencyTaskRecordPageVoList){ userIdSet.add(mgtAgencyTaskRecordPageVo.getUserId()); } List<Long> useIdList = new ArrayList<>(userIdSet); List<SysStaff> sysStaffList = remoteConfigService.listSysStaffByIds(useIdList).getData(); Map<Long,SysStaff> sysStaffMap = sysStaffList.stream() .collect(Collectors.toMap(SysStaff::getUserId, Function.identity())); for(MgtAgencyTaskRecordPageVo mgtAgencyTaskRecordPageVo : mgtAgencyTaskRecordPageVoList){ //获取任务用户信息 userId = mgtAgencyTaskRecordPageVo.getUserId(); sysUser = remoteUserService.getSysUser(userId).getData(); mgtAgencyTaskRecordPageVo.setUserName(sysUser.getNickName()); mgtAgencyTaskRecordPageVo.setUserPicture(sysUser.getAvatar()); sysStaff = sysStaffMap.get(userId); if(sysStaff!=null){ mgtAgencyTaskRecordPageVo.setUserName(sysStaff.getStaffName()); mgtAgencyTaskRecordPageVo.setUserPicture(sysStaff.getStaffAvatar()); mgtAgencyTaskRecordPageVo.setUserPosition(sysStaff.getStaffPost()); } //获取任务详情文件 followId = mgtAgencyTaskRecordPageVo.getFollowId(); taskFileList = taskFileService.listByFollowIdAndFollowType(followId,1); @@ -185,13 +199,24 @@ List<FileDto> video = new ArrayList<>(); List<FileDto> audio = new ArrayList<>(); Long userId; SysUser sysUser; SysStaff sysStaff; HashSet<Long> userIdSet = new HashSet<>(); for(StaffAgencyTaskRecordPageVo staffAgencyTaskRecordPageVo : agencyTaskRecordPageVoList){ userIdSet.add(staffAgencyTaskRecordPageVo.getUserId()); } List<Long> useIdList = new ArrayList<>(userIdSet); List<SysStaff> sysStaffList = remoteConfigService.listSysStaffByIds(useIdList).getData(); Map<Long,SysStaff> sysStaffMap = sysStaffList.stream() .collect(Collectors.toMap(SysStaff::getUserId, Function.identity())); for(StaffAgencyTaskRecordPageVo staffAgencyTaskRecordPageVo : agencyTaskRecordPageVoList){ //获取任务用户信息 userId = staffAgencyTaskRecordPageVo.getUserId(); sysUser = remoteUserService.getSysUser(userId).getData(); staffAgencyTaskRecordPageVo.setUserName(sysUser.getNickName()); staffAgencyTaskRecordPageVo.setUserPicture(sysUser.getAvatar()); sysStaff = sysStaffMap.get(userId); if(sysStaff!=null){ staffAgencyTaskRecordPageVo.setUserName(sysStaff.getStaffName()); staffAgencyTaskRecordPageVo.setUserPicture(sysStaff.getStaffAvatar()); staffAgencyTaskRecordPageVo.setUserPosition(sysStaff.getStaffPost()); } //获取任务详情文件 followId = staffAgencyTaskRecordPageVo.getFollowId(); taskFileList = taskFileService.listByFollowIdAndFollowType(followId,1); ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskRecordServiceImpl.java
@@ -8,17 +8,23 @@ import com.ruoyi.shop.domain.pojo.task.ShopTaskRecord; import com.ruoyi.shop.domain.pojo.task.TaskFile; import com.ruoyi.shop.domain.vo.MgtShopTaskRecordPageVo; import com.ruoyi.shop.domain.vo.StaffAgencyTaskRecordPageVo; import com.ruoyi.shop.domain.vo.StaffMyShopTaskRecordPageVo; import com.ruoyi.shop.mapper.task.ShopTaskRecordMapper; import com.ruoyi.shop.service.task.ShopTaskRecordService; import com.ruoyi.shop.service.task.TaskFileService; import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.service.RemoteConfigService; import com.ruoyi.system.api.service.RemoteUserService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; /** @@ -39,7 +45,7 @@ private TaskFileService taskFileService; @Resource private RemoteUserService remoteUserService; private RemoteConfigService remoteConfigService; /** * 平台分页获取平台跟进任务 @@ -55,13 +61,24 @@ List<FileDto> video = new ArrayList<>(); List<FileDto> audio = new ArrayList<>(); Long userId; SysUser sysUser; SysStaff sysStaff; HashSet<Long> userIdSet = new HashSet<>(); for(MgtShopTaskRecordPageVo mgtShopTaskRecordPageVo : mgtShopTaskRecordPageVoList){ userIdSet.add(mgtShopTaskRecordPageVo.getUserId()); } List<Long> useIdList = new ArrayList<>(userIdSet); List<SysStaff> sysStaffList = remoteConfigService.listSysStaffByIds(useIdList).getData(); Map<Long,SysStaff> sysStaffMap = sysStaffList.stream() .collect(Collectors.toMap(SysStaff::getUserId, Function.identity())); for(MgtShopTaskRecordPageVo mgtShopTaskRecordPageVo : mgtShopTaskRecordPageVoList){ //获取任务用户信息 userId = mgtShopTaskRecordPageVo.getUserId(); sysUser = remoteUserService.getSysUser(userId).getData(); mgtShopTaskRecordPageVo.setUserName(sysUser.getNickName()); mgtShopTaskRecordPageVo.setUserPicture(sysUser.getAvatar()); sysStaff = sysStaffMap.get(userId); if(sysStaff!=null){ mgtShopTaskRecordPageVo.setUserName(sysStaff.getStaffName()); mgtShopTaskRecordPageVo.setUserPicture(sysStaff.getStaffAvatar()); mgtShopTaskRecordPageVo.setUserPosition(sysStaff.getStaffPost()); } //获取任务详情文件 followId = mgtShopTaskRecordPageVo.getFollowId(); taskFileList = taskFileService.listByFollowIdAndFollowType(followId,1); @@ -123,13 +140,24 @@ List<FileDto> video = new ArrayList<>(); List<FileDto> audio = new ArrayList<>(); Long userId; SysUser sysUser; SysStaff sysStaff; HashSet<Long> userIdSet = new HashSet<>(); for(StaffMyShopTaskRecordPageVo staffMyShopTaskRecordPageVo : myShopTaskRecordPageVoList){ userIdSet.add(staffMyShopTaskRecordPageVo.getUserId()); } List<Long> useIdList = new ArrayList<>(userIdSet); List<SysStaff> sysStaffList = remoteConfigService.listSysStaffByIds(useIdList).getData(); Map<Long,SysStaff> sysStaffMap = sysStaffList.stream() .collect(Collectors.toMap(SysStaff::getUserId, Function.identity())); for(StaffMyShopTaskRecordPageVo staffMyShopTaskRecordPageVo : myShopTaskRecordPageVoList){ //获取任务用户信息 userId = staffMyShopTaskRecordPageVo.getUserId(); sysUser = remoteUserService.getSysUser(userId).getData(); staffMyShopTaskRecordPageVo.setUserName(sysUser.getNickName()); staffMyShopTaskRecordPageVo.setUserPicture(sysUser.getAvatar()); sysStaff = sysStaffMap.get(userId); if(sysStaff!=null){ staffMyShopTaskRecordPageVo.setUserName(sysStaff.getStaffName()); staffMyShopTaskRecordPageVo.setUserPicture(sysStaff.getStaffAvatar()); staffMyShopTaskRecordPageVo.setUserPosition(sysStaff.getStaffPost()); } //获取任务详情文件 followId = staffMyShopTaskRecordPageVo.getFollowId(); taskFileList = taskFileService.listByFollowIdAndFollowType(followId,1); @@ -191,13 +219,24 @@ List<FileDto> video = new ArrayList<>(); List<FileDto> audio = new ArrayList<>(); Long userId; SysUser sysUser; SysStaff sysStaff; HashSet<Long> userIdSet = new HashSet<>(); for(StaffMyShopTaskRecordPageVo staffMyShopTaskRecordPageVo : myShopTaskRecordPageVoList){ userIdSet.add(staffMyShopTaskRecordPageVo.getUserId()); } List<Long> useIdList = new ArrayList<>(userIdSet); List<SysStaff> sysStaffList = remoteConfigService.listSysStaffByIds(useIdList).getData(); Map<Long,SysStaff> sysStaffMap = sysStaffList.stream() .collect(Collectors.toMap(SysStaff::getUserId, Function.identity())); for(StaffMyShopTaskRecordPageVo staffMyShopTaskRecordPageVo : myShopTaskRecordPageVoList){ //获取任务用户信息 userId = staffMyShopTaskRecordPageVo.getUserId(); sysUser = remoteUserService.getSysUser(userId).getData(); staffMyShopTaskRecordPageVo.setUserName(sysUser.getNickName()); staffMyShopTaskRecordPageVo.setUserPicture(sysUser.getAvatar()); sysStaff = sysStaffMap.get(userId); if(sysStaff!=null){ staffMyShopTaskRecordPageVo.setUserName(sysStaff.getStaffName()); staffMyShopTaskRecordPageVo.setUserPicture(sysStaff.getStaffAvatar()); staffMyShopTaskRecordPageVo.setUserPosition(sysStaff.getStaffPost()); } //获取任务详情文件 followId = staffMyShopTaskRecordPageVo.getFollowId(); taskFileList = taskFileService.listByFollowIdAndFollowType(followId,1); ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java
@@ -307,7 +307,7 @@ shopTask.setDelFlag(0); shopTask.setShopId(oldShopTask.getShopId()); shopTask.setTaskDate(staffFollowShopTaskDto.getNextTaskDate()); shopTask.setFollowContent(staffFollowShopTaskDto.getNextTaskContent()); shopTask.setTaskTitle(staffFollowShopTaskDto.getNextTaskContent()); String nowTimeStr = DateUtils.getDate(); int i = staffFollowShopTaskDto.getNextTaskDate().compareTo(nowTimeStr); if(i>0){ ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
@@ -933,8 +933,17 @@ ts.belong_user_id userId, CONCAT('[', GROUP_CONCAT(tst.task_title SEPARATOR '],['), ']') taskTitle FROM t_shop_task tst INNER JOIN t_shop ts ON tst.shop_id = ts.shop_id INNER JOIN t_shop ts ON tst.shop_id = ts.shop_id AND ts.del_flag = 0 WHERE tst.del_flag = 0 AND tst.task_status = 1 AND tst.task_date = CURRENT_DATE GROUP BY userId UNION ALL SELECT tsru.user_id userId, CONCAT('[', GROUP_CONCAT(tst.task_content SEPARATOR '],['), ']') taskTitle FROM t_agency_task tst INNER JOIN t_shop_rel_user tsru ON tsru.shop_id = tst.shop_id AND tsru.del_flag = 0 WHERE tst.del_flag = 0 AND tst.task_status = 1 AND tst.task_date = CURRENT_DATE GROUP BY userId </select> </mapper> ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java
@@ -8,10 +8,12 @@ import com.ruoyi.system.api.domain.poji.config.DelayTask; import com.ruoyi.system.api.domain.poji.config.SysClassification; import com.ruoyi.system.api.domain.poji.config.SysTag; import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.api.domain.vo.AppOtherConfigGetVo; import com.ruoyi.system.api.domain.vo.MgtSysSimpleUserVo; import com.ruoyi.system.domain.dto.MgtCustomConfigDto; import com.ruoyi.system.service.config.*; import com.ruoyi.system.service.staff.SysStaffService; import com.ruoyi.system.service.sys.ISysUserService; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -50,6 +52,9 @@ @Resource private CustomConfigService customConfigService; @Resource private SysStaffService sysStaffService; /** @@ -218,4 +223,18 @@ } return R.ok(servicePhone); } /** * @description 通过id获取员工列表 * @author jqs * @date 2023/9/5 10:01 * @param userIdList * @return R<List<SysStaff>> */ @PostMapping("/listSysStaffByIds") public R<List<SysStaff>> listSysStaffByIds(@RequestBody List<Long> userIdList) { List<SysStaff> sysStaffList = sysStaffService.listSysStaffByIds(userIdList); return R.ok(sysStaffList); } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/StaffController.java
@@ -3,7 +3,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.system.api.domain.dto.MerEditUserDto; import com.ruoyi.system.domain.pojo.staff.SysStaff; import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.service.staff.SysStaffService; import com.ruoyi.system.service.staff.SysWxCpService; import io.swagger.annotations.Api; ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/staff/StaffSysController.java
@@ -9,7 +9,7 @@ import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.domain.dto.MgtSysStaffImportDto; import com.ruoyi.system.domain.dto.StaffUseSuggestDto; import com.ruoyi.system.domain.pojo.staff.SysStaff; import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.domain.vo.StaffSuggestPageVo; import com.ruoyi.system.domain.vo.StaffUserGetVo; import com.ruoyi.system.service.config.StaffSuggestService; ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysDeptController.java
@@ -29,6 +29,8 @@ @Autowired private ISysDeptService deptService; /** * 获取部门列表 */ ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysUserController.java
@@ -22,7 +22,7 @@ import com.ruoyi.system.api.model.QwH5LoginVo; import com.ruoyi.system.api.model.QwUserDetailDto; import com.ruoyi.system.domain.dto.UserMenuEditDto; import com.ruoyi.system.domain.pojo.staff.SysStaff; import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.service.staff.SysStaffService; import com.ruoyi.system.service.sys.*; import io.swagger.annotations.ApiOperation; ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java
@@ -3,7 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.system.domain.dto.MgtStaffPageDto; import com.ruoyi.system.domain.pojo.staff.SysStaff; import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.domain.vo.DeptSimpleVo; import com.ruoyi.system.domain.vo.MgtDeptStaffListVo; import com.ruoyi.system.domain.vo.MgtStaffPageVo; @@ -57,4 +57,14 @@ * @return List<DeptSimpleVo> */ List<DeptSimpleVo> listSimpleDept(); /** * @description 通过id获取员工列表 * @author jqs * @date 2023/9/5 10:02 * @param userIdList * @return List<SysStaff> */ List<SysStaff> listSysStaffByIds(@Param("userIdList")List<Long> userIdList); } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java
@@ -14,17 +14,21 @@ import com.ruoyi.system.api.domain.dto.MerEditUserDto; import com.ruoyi.system.api.domain.dto.MgtBaseGetDto; import com.ruoyi.system.api.domain.dto.MgtShopStaffEditDto; import com.ruoyi.system.api.domain.poji.sys.SysDept; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.service.RemoteShopService; import com.ruoyi.system.domain.dto.MgtStaffEditDto; import com.ruoyi.system.domain.dto.MgtStaffPageDto; import com.ruoyi.system.domain.dto.MgtSysStaffImportDto; import com.ruoyi.system.domain.pojo.staff.SysStaff; import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.domain.dto.MgtWxCPStaffDto; import com.ruoyi.system.domain.vo.DeptSimpleVo; import com.ruoyi.system.domain.vo.MgtDeptStaffListVo; import com.ruoyi.system.domain.vo.MgtStaffPageVo; import com.ruoyi.system.mapper.staff.SysStaffMapper; import com.ruoyi.system.service.staff.SysStaffService; import com.ruoyi.system.service.staff.SysWxCpService; import com.ruoyi.system.service.sys.ISysDeptService; import com.ruoyi.system.service.sys.ISysUserService; import com.ruoyi.system.util.QiYeUtils; import org.springframework.stereotype.Service; @@ -59,6 +63,12 @@ @Resource private RemoteShopService remoteShopService; @Resource private SysWxCpService sysWxCpService; @Resource private ISysDeptService sysDeptService; /** @@ -126,6 +136,7 @@ queryWrapper.eq(SysStaff::getDelFlag,0); queryWrapper.eq(SysStaff::getStaffMobile,mgtStaffEditDto.getStaffMobile()); SysStaff sysStaffSame = this.getOne(queryWrapper, false); SysDept sysDept = sysDeptService.selectDeptById(mgtStaffEditDto.getDeptId()); if(StringUtils.isBlank(mgtStaffEditDto.getStaffAvatar())){ mgtStaffEditDto.setStaffAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png"); } @@ -171,12 +182,25 @@ sysStaff.setHeadFlag(mgtStaffEditDto.getHeadFlag()); sysStaff.setWxUserId(mgtStaffEditDto.getWxUserId()); this.saveOrUpdate(sysStaff); //同步修改商户员工信息 MgtShopStaffEditDto mgtShopStaffEditDto = new MgtShopStaffEditDto(); mgtShopStaffEditDto.setUserId(sysStaff.getUserId()); mgtShopStaffEditDto.setStaffName(sysStaff.getStaffName()); mgtShopStaffEditDto.setStaffMobile(sysStaff.getStaffMobile()); mgtShopStaffEditDto.setStaffAvatar(sysStaff.getStaffAvatar()); remoteShopService.editMgtShopStaff(mgtShopStaffEditDto); //如果wxUserId和wxDeptId不为空 同步到企业微信 if(mgtStaffEditDto.getWxUserId()!=null&&sysDept.getWxDeptId()!=null){ MgtWxCPStaffDto mgtWxCPStaffDto = new MgtWxCPStaffDto(); mgtWxCPStaffDto.setWxDeptId(sysDept.getWxDeptId()); mgtWxCPStaffDto.setWxUserId(mgtStaffEditDto.getWxUserId()); mgtWxCPStaffDto.setStaffName(mgtStaffEditDto.getStaffName()); mgtWxCPStaffDto.setStaffMobile(mgtStaffEditDto.getStaffMobile()); mgtWxCPStaffDto.setStaffPost(mgtStaffEditDto.getStaffPost()); mgtWxCPStaffDto.setStaffEmail(mgtStaffEditDto.getStaffEmail()); mgtWxCPStaffDto.setHeadFlag(mgtStaffEditDto.getHeadFlag()); sysWxCpService.addWxCpStaff(mgtWxCPStaffDto); } } /** @@ -385,29 +409,6 @@ } } } /*tagName = entity.getTagName(); sysTagSame = null; // 验证是否存在这个用户 queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SysTag::getDelFlag, 0) // 查询条件:delFlag=0 .eq(SysTag::getTagType, tagType) // 查询条件:tagType=mgtTagEditDto的tagType属性 .eq(SysTag::getTagName, tagName); // 查询条件:tagName=mgtTagEditDto的tagName属性 // 执行查询,获取与查询条件匹配的SysTag对象 sysTagSame = this.getOne(queryWrapper); if (sysTagSame == null) { sysTagNew = new SysTag(); sysTagNew.setDelFlag(0); sysTagNew.setTagType(tagType); sysTagNew.setTagName(tagName); sysTagNew.setCreateTime(nowTime); sysTagNew.setSynFlag(0); this.save(sysTagNew); successNum++; successMsg.append("<br/>" + successNum + "、标签 " + sysTagNew.getTagName() + " 导入成功"); } else { failureNum++; failureMsg.append("<br/>" + failureNum + "、标签 " + sysTagSame.getTagName() + " 已存在"); }*/ } catch (Exception e) { failureNum++; String msg = "<br/>" + failureNum + "员工 " + entity.getStaffName() + " 导入失败:"; @@ -423,4 +424,16 @@ } return successMsg.toString(); } /** * @description 通过id获取员工列表 * @author jqs * @date 2023/9/5 10:02 * @param userIdList * @return List<SysStaff> */ @Override public List<SysStaff> listSysStaffByIds(List<Long> userIdList){ return sysStaffMapper.listSysStaffByIds(userIdList); } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java
@@ -5,7 +5,7 @@ import com.ruoyi.system.api.domain.vo.MgtUserTaskMsgVo; import com.ruoyi.system.api.service.RemoteShopService; import com.ruoyi.system.domain.dto.MgtWxCPStaffDto; import com.ruoyi.system.domain.pojo.staff.SysStaff; import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.service.staff.SysStaffService; import com.ruoyi.system.service.staff.SysWxCpService; import com.ruoyi.system.service.sys.ISysDeptService; ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysDeptServiceImpl.java
@@ -15,6 +15,7 @@ import com.ruoyi.system.mapper.sys.SysDeptMapper; import com.ruoyi.system.mapper.sys.SysDeptMenuMapper; import com.ruoyi.system.mapper.sys.SysRoleMapper; import com.ruoyi.system.service.staff.SysWxCpService; import com.ruoyi.system.service.sys.ISysDeptService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -40,6 +41,9 @@ @Autowired private SysDeptMenuMapper deptMenuMapper; @Autowired private SysWxCpService sysWxCpService; /** * 查询部门管理数据 @@ -224,6 +228,8 @@ throw new ServiceException("部门停用,不允许新增"); } dept.setAncestors(info.getAncestors() + "," + dept.getParentId()); Long wxDeptId = sysWxCpService.addWxCpDept(1L,dept.getDeptName()); dept.setWxDeptId(wxDeptId); //新增部门 int i = deptMapper.insertDept(dept); if(dept.getMenuIds()!=null||dept.getStaffMenuIds()!=null){ @@ -284,6 +290,9 @@ dept.setAncestors(newAncestors); updateDeptChildren(dept.getDeptId(), newAncestors, oldAncestors); } if(oldDept.getWxDeptId()!=null&&!oldDept.getDeptName().equals(dept.getDeptName())){ sysWxCpService.updateWxCpDept(oldDept.getWxDeptId(),dept.getDeptName()); } int result = deptMapper.updateDept(dept); if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors()) && !StringUtils.equals("0", dept.getAncestors())) ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysStaffService.java
@@ -6,7 +6,7 @@ import com.ruoyi.system.domain.dto.MgtStaffEditDto; import com.ruoyi.system.domain.dto.MgtStaffPageDto; import com.ruoyi.system.domain.dto.MgtSysStaffImportDto; import com.ruoyi.system.domain.pojo.staff.SysStaff; import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.system.domain.vo.MgtDeptStaffListVo; import com.ruoyi.system.domain.vo.MgtStaffPageVo; @@ -106,4 +106,13 @@ * @return void */ String importSysStaff(List<MgtSysStaffImportDto> staffImportDtoList); /** * @description 通过id获取员工列表 * @author jqs * @date 2023/9/5 10:02 * @param userIdList * @return List<SysStaff> */ List<SysStaff> listSysStaffByIds(List<Long> userIdList); } ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml
@@ -66,4 +66,12 @@ FROM sys_dept WHERE del_flag = '0' </select> <select id="listSysStaffByIds" resultType="com.ruoyi.system.api.domain.poji.sys.SysStaff"> SELECT * FROM t_sys_staff WHERE del_flag = 0 AND user_id IN <foreach collection="userIdList" item="userId" open="(" separator="," close=")"> #{userId} </foreach> </select> </mapper> ruoyi-modules/ruoyi-system/src/main/resources/mapper/sys/SysDeptMapper.xml
@@ -137,6 +137,7 @@ <if test="status != null and status != ''">status = #{status},</if> <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> <if test="dataScope != null and dataScope != ''">data_scope = #{dataScope},</if> <if test="wxDeptId != null and wxDeptId != ''">wx_dept_id = #{wxDeptId},</if> update_time = sysdate() </set> where dept_id = #{deptId}