bug
jiangqs
2023-09-06 1ca4c6c6c7861c07980ad0dcd8d5df4b0219bfdc
bug
2 文件已重命名
46个文件已修改
1115 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/sys/SysStaff.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/ShopProportionVo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/concole/GoodsController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java 86 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPlaceOrderDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPlaceOrderVo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppUserOrderGoodsPageVo.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java 434 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderGoodsMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml 95 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/test/java/com/ruoyi/order/orderTest.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtAgencyTaskRecordPageVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthPageVo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopTaskRecordPageVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffAgencyTaskRecordPageVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffMyShopTaskRecordPageVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskRecordServiceImpl.java 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskRecordServiceImpl.java 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/StaffController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/staff/StaffSysController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysDeptController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysUserController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysDeptServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysStaffService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/mapper/sys/SysDeptMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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()) &lt;= 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()) &gt;= 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()) &lt;= 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()) &gt;= 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()) &lt;= 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()) &gt;= 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.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,16 +919,12 @@
        //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);
            }
        } finally {
            redissonLock.unlock();
        }
        // 定义购买数量,服务数量,商品数量
        BigDecimal buyNumBig;
@@ -950,7 +937,6 @@
        BigDecimal goodsTotalPrice;
        BigDecimal goodsRealPrice;
        BigDecimal discountMoney = new BigDecimal("0.00");
        BigDecimal discountPercent;
        BigDecimal goodsDeposit;
        Integer useCoupon;
        BigDecimal orderGoodsMoney = new BigDecimal("0.00");
@@ -1000,7 +986,6 @@
        appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl());
        // 设置购买数量,商品价格,服务数量
        appSureOrderGoodsVo.setBuyNum(buyNum);
        goodsPrice = goods.getSalesPrice();
        serviceNum = goods.getServiceNum();
        // 获取活动价格
        goodsPrice = activityGoodsGetVo.getActivityPrice();
@@ -1137,8 +1122,6 @@
        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);
@@ -1152,7 +1135,7 @@
            // 小程序微信下单支付
            createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), outTradeNo,
                    orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(),
                    appPlaceActivityDto.getSpbillCreateIp(), goodsNameList,2);
                        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);
@@ -1181,6 +1164,14 @@
        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();
        }
        return appPlaceOrderVo;
    }
@@ -1397,11 +1388,71 @@
        if (order.getOrderStatus() != 2) {
            throw new ServiceException(AppErrorConstant.VERIFY_USED);
        }
        // 根据订单用户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);
        }
        // 根据订单ID获取订单商品列表
        List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId);
        }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())) {
        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();
                ShopProportionVo shopProportion = null;
                BigDecimal proportionPercent = null;
                //商户订单获取统一分成 活动订单获取活动分成
                if(orderFrom==1){
                    proportionPercent = redisService.getCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION);
                }else{
                R<ShopProportionVo> resultShopProportion = remoteShopService.getShopProportion(shopId);
                ShopProportionVo shopProportion = resultShopProportion.getData();
                if (null != shopProportion) {
                    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();
@@ -2836,6 +2961,9 @@
                    mgtMapIntTotalVo.setMapKey("单品");
                    mgtMapBigTotalVo.setMapKey("单品");
                    noGoods = false;
                }
                goodsTypeTotalList.add(mgtMapIntTotalVo);
                goodsTypeMoneyList.add(mgtMapBigTotalVo);
                }
                //补充缺少类型
                if(noCycle){
@@ -2876,9 +3004,6 @@
                    mgtMapBigTotalVo = new MgtMapBigTotalVo();
                    mgtMapBigTotalVo.setMapKey("单品");
                    mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
                    goodsTypeMoneyList.add(mgtMapBigTotalVo);
                }
                goodsTypeTotalList.add(mgtMapIntTotalVo);
                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) &gt;= #{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) &gt;= #{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) &gt;= #{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) &gt;= #{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) &gt;= #{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) &gt;= #{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}