bug
jiangqs
2023-09-07 64251287f735a6a26bc585a8ca593c3936113137
bug
38个文件已修改
1个文件已添加
584 ■■■■■ 已修改文件
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/constant/ConfigEnum.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MerActivityShopDto.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteActivityFallbackFactory.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteActivityService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-file/pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/concole/ActivityController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppActivityController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppHomeController.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtActivityListDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/coupon/Coupon.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtCouponGetVo.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerMemberNoClearOrderDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffAgencyTaskRecordPageVo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskRecordMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtShopConfigEditDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtAllCustomConfigVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/scheduler/SystemScheduler.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysDeptServiceImpl.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysStaffService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysWxCpService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/sys/ISysDeptService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java
@@ -74,7 +74,7 @@
    String SHOP_USER_DOUBLE = "账号已经关联其他商户登录";
    String SHOP_CLOSED = "商户在审核中暂时无法购买商品";
    String SHOP_CLOSED = "商户在资质审核中暂时无法购买商品";
    String COUPON_AUDIT_EDIT = "只能编辑审核拒绝的优惠券";
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/ConfigEnum.java
@@ -38,7 +38,7 @@
    HOME_STYLE("HOME_STYLE", 2,"首页风格"),
    HOME_SLOGAN("HOME_SLOGAN", 1,"首页广告语"),
    HOME_LOGO("HOME_LOGO", 1,"首页logo"),
    SHOP_COMMON_PROPORTION("SHOP_COMMON_PROPORTION", 1,"商户统一分成");
    SHOP_COMMON_PROPORTION("SHOP_COMMON_PROPORTION", 3,"商户统一分成");
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MerActivityShopDto.java
New file
@@ -0,0 +1,21 @@
package com.ruoyi.system.api.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName MerActivityShopDto
 * @Description TODO
 * @Author jqs
 * @Date 2023/9/7 14:10
 * @Version 1.0
 */
@Data
public class MerActivityShopDto {
    @ApiModelProperty(value = "商户id")
    private Long shopId;
    @ApiModelProperty(value = "活动id")
    private String activityId;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteActivityFallbackFactory.java
@@ -4,6 +4,7 @@
import com.ruoyi.system.api.domain.dto.AGStockChangeDto;
import com.ruoyi.system.api.domain.dto.ActivityGoodsGetDto;
import com.ruoyi.system.api.domain.dto.ActivityTotalChangeDto;
import com.ruoyi.system.api.domain.dto.MerActivityShopDto;
import com.ruoyi.system.api.domain.poji.activity.ActivityRecord;
import com.ruoyi.system.api.domain.vo.ActivityGoodsGetVo;
import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
@@ -82,6 +83,11 @@
            public R delActivityRecord(ActivityRecord activityRecord) {
                return R.fail("删除活动记录失败:" + throwable.getMessage());
            }
            @Override
            public R<Boolean> judgeActivityShop(MerActivityShopDto merActivityShopDto) {
                return R.fail("判断是否商户活动失败:" + throwable.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteActivityService.java
@@ -5,6 +5,7 @@
import com.ruoyi.system.api.domain.dto.AGStockChangeDto;
import com.ruoyi.system.api.domain.dto.ActivityGoodsGetDto;
import com.ruoyi.system.api.domain.dto.ActivityTotalChangeDto;
import com.ruoyi.system.api.domain.dto.MerActivityShopDto;
import com.ruoyi.system.api.domain.poji.activity.ActivityGoods;
import com.ruoyi.system.api.domain.poji.activity.ActivityRecord;
import com.ruoyi.system.api.domain.vo.ActivityGoodsGetVo;
@@ -121,4 +122,13 @@
    public R delActivityRecord(@RequestBody ActivityRecord activityRecord);
    /**
     * @description  判断商户是否在活动范围
     * @author  jqs
     * @date    2023/9/7 14:12
     * @param merActivityShopDto
     * @return  R<Boolean>
     */
    @PostMapping("/activity/judgeActivityShop")
    public R<Boolean> judgeActivityShop(@RequestBody MerActivityShopDto merActivityShopDto);
}
ruoyi-modules/ruoyi-file/pom.xml
@@ -94,13 +94,13 @@
            <version>5.8.20</version>
        </dependency>
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.5.1</version>
        </dependency>
    </dependencies>
    <build>
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java
@@ -11,8 +11,11 @@
import com.ruoyi.common.core.utils.uuid.IdUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Calendar;
import java.util.Date;
/**
 * @author jqs34
@@ -64,9 +67,8 @@
        OSS ossClient = createOss();
        PutObjectResult result = null;
        try {
            String fileName = FileUploadUtils.extractFilename(file);
            System.out.println(fileName + "开始上传");
            System.out.println(fileName + "开始上传" + new Date());
            String prefix = fileName.substring(fileName.lastIndexOf("."));
            String objectName = filePath + uuid + prefix;
            InputStream inputStream = file.getInputStream();
@@ -77,7 +79,7 @@
            // 创建PutObject请求。
            result = ossClient.putObject(putObjectRequest);
            // 如果上传成功,则返回200。
            System.out.println(fileName + "上传返回" + result.getResponse().getStatusCode());
            System.out.println(fileName + "上传返回"+ new Date() + result.getResponse().getStatusCode());
            inputStream.close();
            return result.getResponse().getUri();
        } catch (OSSException oe) {
@@ -118,7 +120,7 @@
        PutObjectResult result = null;
        try {
            System.out.println(fileName + "开始上传");
            System.out.println(fileName + "开始上传"+ new Date());
            String objectName = filePath + fileName + ".jpg";
            // 创建PutObjectRequest对象。
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);
@@ -127,7 +129,7 @@
            // 创建PutObject请求。
            result = ossClient.putObject(putObjectRequest);
            // 如果上传成功,则返回200。
            System.out.println(fileName + "上传返回" + result.getResponse().getStatusCode());
            System.out.println(fileName + "上传返回"+ new Date() + result.getResponse().getStatusCode());
            return result.getResponse().getUri();
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/concole/ActivityController.java
@@ -7,6 +7,7 @@
import com.ruoyi.system.api.domain.dto.AGStockChangeDto;
import com.ruoyi.system.api.domain.dto.ActivityGoodsGetDto;
import com.ruoyi.system.api.domain.dto.ActivityTotalChangeDto;
import com.ruoyi.system.api.domain.dto.MerActivityShopDto;
import com.ruoyi.system.api.domain.poji.activity.ActivityGoods;
import com.ruoyi.system.api.domain.poji.activity.ActivityRecord;
import com.ruoyi.system.api.domain.vo.ActivityGoodsGetVo;
@@ -172,4 +173,18 @@
        activityRecordService.delActivityRecord(activityRecord);
        return R.ok();
    }
    /**
     * @description  判断商户是否在活动范围
     * @author  jqs
     * @date    2023/9/7 14:12
     * @param merActivityShopDto
     * @return  R<Boolean>
     */
    @PostMapping("/judgeActivityShop")
    public R<Boolean> judgeActivityShop(@RequestBody MerActivityShopDto merActivityShopDto){
        Boolean judge = activityService.judgeActivityShop(merActivityShopDto);
        return R.ok(judge);
    }
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java
@@ -7,6 +7,7 @@
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.goods.domain.dto.MgtActivityEditDto;
import com.ruoyi.goods.domain.dto.MgtActivityListDto;
import com.ruoyi.goods.domain.dto.MgtActivityPageDto;
import com.ruoyi.goods.domain.dto.MgtActivityRecordPageDto;
import com.ruoyi.goods.domain.vo.MgtActivityGetVo;
@@ -109,9 +110,9 @@
    @RequestMapping(value = "/listMgtActivity", method = RequestMethod.POST)
    @ApiOperation(value = "获取活动列表")
    public R<List<MgtActivityListVo>> listMgtActivity() {
    public R<List<MgtActivityListVo>> listMgtActivity(@RequestBody MgtActivityListDto mgtActivityListDto) {
        List<MgtActivityListVo> activityListVoList = activityService.listMgtActivity();
        List<MgtActivityListVo> activityListVoList = activityService.listMgtActivity(mgtActivityListDto);
        return R.ok(activityListVoList);
    }
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppActivityController.java
@@ -49,8 +49,9 @@
    public R<Page<AppActivityPageVo>> pageAppActivity(@RequestBody AppPageDto appPageDto) {
        Long userId = SecurityUtils.getUserId();
        Long shopId = null;
        Member member = null;
        if(userId!=null){
            Member member = memberService.getMember(userId).getData();
            member = memberService.getMember(userId).getData();
            if(member!=null&&member.getRelationShopId()!=null){
                shopId = member.getRelationShopId();
            }
@@ -58,6 +59,9 @@
        if(shopId==null){
            throw new ServiceException(AppErrorConstant.NO_POSITION);
        }
        if(member!=null&&member.getBindingFlag()==0){
            shopId = null;
        }
        Page<AppActivityPageVo> page = new Page<>();
        page.setSize(appPageDto.getPageSize());
        page.setCurrent(appPageDto.getPageNum());
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppHomeController.java
@@ -50,8 +50,9 @@
    public R<AppHomeActivityVo> pageActivityGoods(@RequestBody AppRecommendGoodsPageDto appRecommendGoodsPageDto) {
        Long userId = SecurityUtils.getUserId();
        Long shopId = null;
        Member member = null;
        if(userId!=null){
            Member member = memberService.getMember(userId).getData();
            member = memberService.getMember(userId).getData();
            if(member!=null&&member.getRelationShopId()!=null){
                shopId = member.getRelationShopId();
            }
@@ -61,6 +62,9 @@
        }
        if(shopId==null){
            throw new ServiceException(AppErrorConstant.NO_POSITION);
        }
        if(member!=null&&member.getBindingFlag()==0){
            shopId = null;
        }
        AppHomeActivityVo homeActivityVo = goodsService.pageActivityGoods(shopId);
        return R.ok(homeActivityVo);
@@ -138,8 +142,9 @@
    @ApiOperation(value = "搜索活动商品")
    public R<Page<AppSimpleActivityGoodsVo>> pageSearchActivityGoods(@RequestBody AppSearchGoodsPageDto appSearchGoodsPageDto) {
        Long userId = SecurityUtils.getUserId();
        Member member = null;
        if(userId!=null){
            Member member = memberService.getMember(userId).getData();
            member = memberService.getMember(userId).getData();
            if(member!=null&&member.getRelationShopId()!=null){
                appSearchGoodsPageDto.setShopId(member.getRelationShopId());
            }else{
@@ -149,6 +154,9 @@
        if(appSearchGoodsPageDto.getShopId()==null){
            throw new ServiceException(AppErrorConstant.NO_POSITION);
        }
        if(member!=null&&member.getBindingFlag()==0){
            appSearchGoodsPageDto.setShopId(null);
        }
        Page<AppSimpleActivityGoodsVo> page = new Page<>();
        page.setSize(appSearchGoodsPageDto.getPageSize());
        page.setCurrent(appSearchGoodsPageDto.getPageNum());
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtActivityListDto.java
@@ -13,10 +13,10 @@
@Data
public class MgtActivityListDto {
    @ApiModelProperty(value="活动来源1平台2商户")
    @ApiModelProperty(value="活动来源0全部1平台2商户")
    private Integer activityFrom;
    @ApiModelProperty(value="活动类型1秒杀")
    @ApiModelProperty(value="活动类型0全部1秒杀")
    private Integer activityType;
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityService.java
@@ -2,16 +2,10 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.goods.domain.dto.MgtActivityEditDto;
import com.ruoyi.goods.domain.dto.MgtActivityPageDto;
import com.ruoyi.goods.domain.dto.MgtActivityRecordPageDto;
import com.ruoyi.goods.domain.dto.StaffActivityListDto;
import com.ruoyi.goods.domain.dto.*;
import com.ruoyi.goods.domain.pojo.activity.Activity;
import com.ruoyi.goods.domain.vo.*;
import com.ruoyi.system.api.domain.dto.AGStockChangeDto;
import com.ruoyi.system.api.domain.dto.ActivityGoodsGetDto;
import com.ruoyi.system.api.domain.dto.ActivityTotalChangeDto;
import com.ruoyi.system.api.domain.dto.MerPageDto;
import com.ruoyi.system.api.domain.dto.*;
import com.ruoyi.system.api.domain.vo.ActivityGoodsGetVo;
import java.util.List;
@@ -88,7 +82,7 @@
     * @param
     * @return  List<MgtActivityListVo>
     */
    List<MgtActivityListVo> listMgtActivity();
    List<MgtActivityListVo> listMgtActivity(MgtActivityListDto mgtActivityListDto);
    /**
     * @description  获取商户推荐活动
@@ -181,4 +175,14 @@
     * @return  List<MgtActivityListVo>
     */
    List<MgtActivityListVo> listStaffActivity(StaffActivityListDto staffActivityListDto);
    /**
     * @description  判断商户是否在活动范围
     * @author  jqs
     * @date    2023/9/7 14:13
     * @param merActivityShopDto
     * @return  Boolean
     */
    Boolean judgeActivityShop(MerActivityShopDto merActivityShopDto);
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
@@ -409,8 +409,12 @@
     * @return  List<MgtActivityListVo>
     */
    @Override
    public List<MgtActivityListVo> listMgtActivity(){
        return activityMapper.listMgtActivity();
    public List<MgtActivityListVo> listMgtActivity(MgtActivityListDto mgtActivityListDto){
        List<MgtActivityListVo> activityListVoList = new ArrayList<>();
        if(mgtActivityListDto.getActivityFrom()!=null&&mgtActivityListDto.getActivityFrom()!=2){
            activityListVoList = activityMapper.listMgtActivity();
        }
        return activityListVoList;
    }
    /**
@@ -662,4 +666,28 @@
        return activityListVoList;
    }
    /**
     * @description  判断商户是否在活动范围
     * @author  jqs
     * @date    2023/9/7 14:13
     * @param merActivityShopDto
     * @return  Boolean
     */
    @Override
    public Boolean judgeActivityShop(MerActivityShopDto merActivityShopDto){
        Boolean judge = false;
        Long shopId = merActivityShopDto.getShopId();
        Activity activity = this.getById(merActivityShopDto.getActivityId());
        //判断是否全部商户
        if(activity.getAreaFlag()==1&&activity.getShopFlag()==1){
            judge = true;
        }else{
            //判断是否在商户范围内
            String applicableShop = activity.getApplicableShop();
            applicableShop = ","+applicableShop+",";
            judge = applicableShop.contains(","+shopId.toString()+",");
        }
        return judge;
    }
}
ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml
@@ -111,7 +111,10 @@
    <select id="getRecommendActivity" resultType="com.ruoyi.goods.domain.pojo.activity.Activity">
        SELECT * FROM t_activity
        WHERE del_flag = 0 AND recommend_flag = 1 AND NOW() BETWEEN activity_start_time AND activity_end_time
        AND activity_status = 1 AND ((shop_flag = 1 AND area_flag = 1) OR (FIND_IN_SET(#{shopId}, applicable_shop) &gt; 0))
        AND activity_status = 1
        <if test="shopId != null and shopId != ''">
            AND ((shop_flag = 1 AND area_flag = 1) OR (FIND_IN_SET(#{shopId}, applicable_shop) &gt; 0))
        </if>
        ORDER BY activity_end_time - NOW()
        LIMIT 1;
    </select>
@@ -120,7 +123,9 @@
    <select id="listActivityIdByShopId" resultType="java.lang.String">
        SELECT activity_id FROM t_activity
        WHERE del_flag = 0 AND activity_status = 1 AND NOW() BETWEEN activity_start_time AND activity_end_time
        <if test="shopId != null and shopId != ''">
        AND ((shop_flag = 1 AND area_flag = 1) OR (FIND_IN_SET(#{shopId}, applicable_shop) &gt; 0))
        </if>
    </select>
    <select id="pageAppActivity" resultType="com.ruoyi.goods.domain.vo.AppActivityPageVo">
@@ -137,7 +142,10 @@
            ta.propaganda_poster propagandaPoster,
            ta.activity_introduce activityIntroduce
        FROM t_activity ta
        WHERE ta.del_flag = 0 AND ta.activity_status &lt;=1 AND CURRENT_TIME &lt; ta.activity_end_time AND ((ta.shop_flag = 1 AND ta.area_flag = 1) OR (FIND_IN_SET(#{shopId}, ta.applicable_shop) &gt; 0))
        WHERE ta.del_flag = 0 AND ta.activity_status &lt;=1 AND CURRENT_TIME &lt; ta.activity_end_time
        <if test="shopId != null and shopId != ''">
            AND ((ta.shop_flag = 1 AND ta.area_flag = 1) OR (FIND_IN_SET(#{shopId}, ta.applicable_shop) &gt; 0))
        </if>
        group by ta.activity_id
        ORDER BY ta.activity_status ASC,ta.create_time DESC
    </select>
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java
@@ -87,4 +87,10 @@
    @ApiModelProperty(value = "宣传海报")
    private String propagandaPoster;
    @ApiModelProperty(value = "发放限制数量")
    private String sendLimitNumber;
    @ApiModelProperty(value = "发放限制0否1是")
    private String sendLimitFlag;
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/coupon/Coupon.java
@@ -191,6 +191,18 @@
    @TableField("propaganda_poster")
    private String propagandaPoster;
    /**
     * 发放限制数量
     */
    @TableField("send_limit_number")
    private String sendLimitNumber;
    /**
     * 发放限制0否1是
     */
    @TableField("send_limit_flag")
    private String sendLimitFlag;
    @Override
    protected Serializable pkVal() {
        return this.couponId;
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtCouponGetVo.java
@@ -81,4 +81,10 @@
    @ApiModelProperty(value = "宣传海报")
    private String propagandaPoster;
    @ApiModelProperty(value = "发放限制数量")
    private String sendLimitNumber;
    @ApiModelProperty(value = "发放限制0否1是")
    private String sendLimitFlag;
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java
@@ -1,5 +1,7 @@
package com.ruoyi.order.controller.concole;
import com.github.binarywang.wxpay.bean.ecommerce.ProfitSharingResult;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.order.service.order.ConsumerGoodsService;
import com.ruoyi.order.service.order.OrderService;
@@ -7,10 +9,7 @@
import com.ruoyi.system.api.domain.dto.MerBaseDto;
import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
import com.ruoyi.system.api.domain.vo.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
@@ -170,4 +169,10 @@
        return R.ok(memberSimpleTotalVo);
    }
    @GetMapping("/queryBill")
    public R<ProfitSharingResult> queryBill(String transactionId,String outOrderNo) throws WxPayException {
        ProfitSharingResult result = orderService.queryBill(transactionId,outOrderNo);
        return R.ok(result);
    }
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java
@@ -42,7 +42,6 @@
    public R<MgtTotalOrderTotalVo> getTotalOrderTotal(@RequestBody MgtBaseShopDto mgtBaseShopDto) {
        Long userId = SecurityUtils.getUserId();
        MgtTotalOrderTotalVo totalOrderTotalVo = orderService.getTotalOrderTotal(mgtBaseShopDto);
        return R.ok(totalOrderTotalVo);
    }
@@ -60,7 +59,6 @@
    @ApiOperation(value = "获取商户活动统计(商户管理-统计经营-活动统计-参与人数)")
    public R<MgtTotalActivityTotalVo> getTotalActivityJoinMemberTotal(@RequestBody MgtBaseShopDto mgtBaseShopDto) {
        Long userId = SecurityUtils.getUserId();
        MgtTotalActivityTotalVo totalActivityTotal = orderService.getTotalActivityJoinMemberTotal(mgtBaseShopDto);
        return R.ok(totalActivityTotal);
    }
@@ -94,7 +92,6 @@
    @ApiOperation(value = "导出平台商户数据统计(统计-店铺数据统计)")
    public void exportPlTotalDataTotal(MgtBasePlatformDto mgtBasePlatformDto, HttpServletResponse response) {
        Long userId = SecurityUtils.getUserId();
        List<MgtTotalDataTotalVo> totalDataTotalVoList = orderService.getPlTotalDataTotal(mgtBasePlatformDto);
        ExcelUtil<MgtTotalDataTotalVo> util = new ExcelUtil<MgtTotalDataTotalVo>(MgtTotalDataTotalVo.class);
        util.exportExcel(response, totalDataTotalVoList, "店铺数据统计列表");
@@ -104,7 +101,6 @@
    @ApiOperation(value = "获取平台商户订单统计(统计-经营统计)")
    public R<MgtTotalOrderTotalVo> getPlTotalOrderTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto) {
        Long userId = SecurityUtils.getUserId();
        MgtTotalOrderTotalVo totalOrderTotalVo = orderService.getPlTotalOrderTotal(mgtBasePlatformDto);
        return R.ok(totalOrderTotalVo);
    }
@@ -113,7 +109,6 @@
    @ApiOperation(value = "获取平台商户活动统计(统计-活动统计)")
    public R<MgtPlTotalActivityTotalVo> getPlTotalActivityTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto) {
        Long userId = SecurityUtils.getUserId();
        MgtPlTotalActivityTotalVo totalActivityTotal = orderService.getPlTotalActivityTotal(mgtBasePlatformDto);
        return R.ok(totalActivityTotal);
    }
@@ -122,7 +117,6 @@
    @ApiOperation(value = "获取平台商户活动统计(统计-活动统计-参与人数)")
    public R<MgtPlTotalActivityTotalVo> getPlTotalActivityJoinMemberTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto) {
        Long userId = SecurityUtils.getUserId();
        MgtPlTotalActivityTotalVo totalActivityTotal = orderService.getPlTotalActivityJoinMemberTotal(mgtBasePlatformDto);
        return R.ok(totalActivityTotal);
    }
@@ -131,7 +125,6 @@
    @ApiOperation(value = "获取平台商户活动统计(统计-活动统计-获客人数)")
    public R<MgtPlTotalActivityTotalVo> getPlTotalActivityGetMemberTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto) {
        Long userId = SecurityUtils.getUserId();
        MgtPlTotalActivityTotalVo totalActivityTotal = orderService.getPlTotalActivityGetMemberTotal(mgtBasePlatformDto);
        return R.ok(totalActivityTotal);
    }
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java
@@ -115,14 +115,7 @@
    @ApiOperation(value = "分页获取用户订单")
    public R<Page<AppUserOrderPageVo>> pageUserOrder(@RequestBody AppUserOrderPageDto appUserOrderPageDto) {
        Long userId = SecurityUtils.getUserId();
        if (userId != null) {
            Member member = memberService.getMember(userId).getData();
            appUserOrderPageDto.setUserId(userId);
            if (member != null && member.getRelationShopId() != null) {
                appUserOrderPageDto.setShopId(member.getRelationShopId());
            }
        }
        logger.info("appUserOrderPageDto:" + appUserOrderPageDto.toString());
        Page<AppUserOrderPageVo> page = new Page<>();
        page.setSize(appUserOrderPageDto.getPageSize());
        page.setCurrent(appUserOrderPageDto.getPageNum());
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerMemberNoClearOrderDto.java
@@ -18,4 +18,6 @@
    @ApiModelProperty(value = "会员用户id")
    private Long memberUserId;
    @ApiModelProperty(value = "结清标记0未结清1已结清")
    private Integer closeFlag;
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java
@@ -59,4 +59,7 @@
    @ApiModelProperty(value = "支付方式1微信2现金3支付宝")
    private String thisReceiveType;
    @ApiModelProperty(value = "结清标记0未结清1已结清")
    private Integer closeFlag;
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -146,7 +146,8 @@
    @Resource
    private OrderRefundService orderRefundService;
    @Resource
    private RemoteMemberService memberService;
    /**
     * @description: buyGoods
@@ -1185,6 +1186,8 @@
     */
    @Override
    public List<AppUserOrderPageVo> pageUserOrder(Page page, AppUserOrderPageDto appUserOrderPageDto) {
        Long userId = appUserOrderPageDto.getUserId();
        Member member = memberService.getMember(userId).getData();
        List<AppUserOrderPageVo> appUserOrderPageVoList = orderMapper.pageUserOrder(page, appUserOrderPageDto);
        if (appUserOrderPageVoList != null && !appUserOrderPageVoList.isEmpty()) {
            Long shopId;
@@ -1210,6 +1213,9 @@
                delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
            }
            for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) {
                if(member.getBindingFlag()==0&&appUserOrderPageVo.getOrderFrom()==2){
                    appUserOrderPageVo.setShopName("全部店铺");
                }else{
                shop = shopMap.get(appUserOrderPageVo.getShopId());
                appUserOrderPageVo.setShopName(shop.getShopName());
                appUserOrderPageVo.setShopServicePhone(shop.getShopServicePhone());
@@ -1217,6 +1223,7 @@
                    appUserOrderPageVo.setSameShop(1);
                } else {
                    appUserOrderPageVo.setSameShop(0);
                    }
                }
                appUserOrderPageVo.setVerifyCode("1-" + appUserOrderPageVo.getOrderId());
                appUserOrderPageVo.setEndTime(DateUtils.addMinutes(appUserOrderPageVo.getCreateTime(), delayTime));
@@ -1405,6 +1412,17 @@
                    throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
                }
            }
            //未绑定用户需判断活动订单是否支持该店铺
            if(order.getOrderFrom()==2){
                String activityId = order.getActivityId();
                MerActivityShopDto merActivityShopDto = new MerActivityShopDto();
                merActivityShopDto.setShopId(shopId);
                merActivityShopDto.setActivityId(activityId);
                Boolean judge = remoteActivityService.judgeActivityShop(merActivityShopDto).getData();
                if(!judge){
                    throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
                }
            }
            //未绑定用户需判断核销商城订单判断商品单价和优惠券
            /*StringJoiner goodsIdSJ = new StringJoiner(",");
            for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) {
@@ -1527,6 +1545,17 @@
            //商城订单需判断商户
            if(order.getOrderFrom()==1){
                if (!order.getShopId().equals(shopId)) {
                    throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
                }
            }
            //未绑定用户需判断活动订单是否支持该店铺
            if(order.getOrderFrom()==2){
                String activityId = order.getActivityId();
                MerActivityShopDto merActivityShopDto = new MerActivityShopDto();
                merActivityShopDto.setShopId(shopId);
                merActivityShopDto.setActivityId(activityId);
                Boolean judge = remoteActivityService.judgeActivityShop(merActivityShopDto).getData();
                if(!judge){
                    throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
                }
            }
@@ -1744,13 +1773,13 @@
            }
            // 平台特约商户号,用户平台收取服务费 2023-09-05改变分账方式
            String platformTyMacId = WxPayConfiguration.getPlatformTyMacId();
            if (!StringUtils.isEmpty(subMchId)) {
            if (!StringUtils.isEmpty(platformTyMacId)) {
                WxPayConfig config = wxService.getConfig();
                ShopProportionVo shopProportion = null;
                BigDecimal proportionPercent = null;
                //商户订单获取统一分成 活动订单获取活动分成
                if(orderFrom==1){
                    proportionPercent = redisService.getCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION);
                    proportionPercent = new BigDecimal(redisService.getCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION).toString());
                }else{
                    R<ShopProportionVo> resultShopProportion = remoteShopService.getShopProportion(shopId);
                    shopProportion = resultShopProportion.getData();
@@ -1764,8 +1793,7 @@
                    request.setOutOrderNo(IdUtils.simpleUUID());
                    List<ProfitSharingRequest.Receiver> receiverList = new ArrayList<>();
                    String description = "订单:" + orderNo + " 平台分账";
                    //平台分成
                    proportionPercent = new BigDecimal("100.00").subtract(proportionPercent);
                    //商户分成
                    if(proportionPercent.compareTo(BigDecimal.ZERO)>0){
                        ProfitSharingResult result = new ProfitSharingResult();
                        result.setOutOrderNo(orderNo);
@@ -3658,9 +3686,6 @@
     */
    @Override
    public MgtPlTotalActivityTotalVo getPlTotalActivityTotal(MgtBasePlatformDto mgtBasePlatformDto) {
        if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){
            return new MgtPlTotalActivityTotalVo();
        }
        MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo();
        totalActivityTotalVo.setOrderTotal(0);
        totalActivityTotalVo.setCycleTotal(0);
@@ -3688,6 +3713,10 @@
        totalActivityTotalVo.setJoinMemberTotalValue(new Integer[0]);
        totalActivityTotalVo.setGetMemberTotalKey(new String[0]);
        totalActivityTotalVo.setGetMemberTotalValue(new Integer[0]);
        //店铺活动返回空
        if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom()==2){
            return totalActivityTotalVo;
        }
        List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
        if(mgtBasePlatformDto.getShopId()!=null){
            shopIdList = new ArrayList<>();
@@ -3921,9 +3950,13 @@
    @Override
    public MgtPlTotalActivityTotalVo getPlTotalActivityJoinMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) {
        //店铺活动返回空
        if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){
            return new MgtPlTotalActivityTotalVo();
        }
        /*if(mgtBasePlatformDto.getActivityType()!=null&&mgtBasePlatformDto.getActivityType()!=1){
            return new MgtPlTotalActivityTotalVo();
        }*/
        //获取需要关联的用户id集合
        /*if (mgtBasePlatformDto.getDeptId() != null) {
            List<Long> userIdList = new ArrayList<>();
@@ -3985,9 +4018,13 @@
    @Override
    public MgtPlTotalActivityTotalVo getPlTotalActivityGetMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) {
        //店铺活动返回空
        if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){
            return new MgtPlTotalActivityTotalVo();
        }
        /*if(mgtBasePlatformDto.getActivityType()!=null&&mgtBasePlatformDto.getActivityType()!=1){
            return new MgtPlTotalActivityTotalVo();
        }*/
        //获取需要关联的用户id集合
        /*if (mgtBasePlatformDto.getDeptId() != null) {
            List<Long> userIdList = new ArrayList<>();
@@ -5735,4 +5772,14 @@
    public MerMemberSimpleTotalVo getMerMemberSimpleTotalVo(MerBaseDto merBaseDto){
        return orderMapper.getMerMemberSimpleTotalVo(merBaseDto);
    }
    @Override
    public ProfitSharingResult queryBill(String transactionId,String outOrderNo) throws WxPayException {
        ProfitSharingQueryRequest request = new ProfitSharingQueryRequest();
        request.setSubMchid("1650744551");
        request.setTransactionId(transactionId);
        request.setOutOrderNo(outOrderNo);
        ProfitSharingResult profitSharingResult = wxService.getEcommerceService().queryProfitSharing(request);
        return profitSharingResult;
    }
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
@@ -3,8 +3,10 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.binarywang.wxpay.bean.ecommerce.PartnerTransactionsResult;
import com.github.binarywang.wxpay.bean.ecommerce.ProfitSharingResult;
import com.github.binarywang.wxpay.bean.ecommerce.RefundNotifyResult;
import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.ruoyi.order.domain.dto.MerVerifyPrizeDto;
import com.ruoyi.order.domain.dto.*;
import com.ruoyi.order.domain.pojo.order.Order;
@@ -584,4 +586,7 @@
     * @return  MerMemberSimpleTotalVo
     */
    MerMemberSimpleTotalVo getMerMemberSimpleTotalVo(MerBaseDto merBaseDto);
    ProfitSharingResult queryBill(String transactionId,String outOrderNo) throws WxPayException;
}
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -345,9 +345,13 @@
        toc.change_receivable_money relReceiveMoney,
        CASE toc.pay_type WHEN 1 THEN toc.pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END receiveMoney,
        toc.change_receivable_money - (CASE toc.pay_type WHEN 1 THEN toc.pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END) unPaidMoney,
        toc.create_time createTime
        toc.create_time createTime,
        toc.close_flag closeFlag
        FROM t_order toc
        WHERE toc.del_flag = 0 AND toc.user_id = #{userId} AND toc.order_status = 3  AND toc.close_flag = 0
        WHERE toc.del_flag = 0 AND toc.user_id = #{userId} AND toc.order_status = 3
        <if test="param.closeFlag != null and param.closeFlag != ''">
            AND toc.close_flag = #{param.closeFlag}
        </if>
        ORDER BY toc.create_time DESC
    </select>
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffAgencyTaskRecordPageVo.java
@@ -41,7 +41,7 @@
    private Date createTime;
    @ApiModelProperty(value="跟踪类型1电话2手动")
    private Integer followType;
    private String followType;
    @ApiModelProperty(value="自定义跟进类型")
    private String customeFollowType;
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java
@@ -136,6 +136,7 @@
            agencyTaskRecord.setCustomeFollowType(merFollowAgencyTaskDto.getCustomeFollowType());
            agencyTaskRecord.setFollowContent(merFollowAgencyTaskDto.getFollowContent());
            agencyTaskRecord.setCreateTime(new Date());
            agencyTaskRecordService.saveOrUpdate(agencyTaskRecord);
            //创建任务详情文件
            List<FileDto> picture = merFollowAgencyTaskDto.getPicture();
            List<FileDto> video = merFollowAgencyTaskDto.getVideo();
@@ -184,7 +185,7 @@
            if(taskFileList!=null&&!taskFileList.isEmpty()){
                taskFileService.saveBatch(taskFileList);
            }
            agencyTaskRecordService.saveOrUpdate(agencyTaskRecord);
        }
        //创建新任务
        if(StringUtils.isNotBlank(merFollowAgencyTaskDto.getNextTaskDate())){
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskRecordMapper.xml
@@ -55,7 +55,7 @@
            tmtr.id followId,
            tmtr.task_id taskId,
            tmt.create_time createTime,
            tmtr.follow_type followType,
            CASE tmtr.follow_type WHEN 1 THEN "电话跟进" WHEN 2 THEN "手动跟进" END followType,
            tmtr.custome_follow_type customeFollowType,
            tmtr.call_time callTime,
            tmtr.follow_content followContent,
@@ -64,7 +64,7 @@
                 INNER JOIN t_agency_task_record tmtr ON tmtr.task_id = tmt.task_id
                 INNER JOIN t_shop ts ON ts.shop_id = tmt.shop_id
                 INNER JOIN t_shop_file tsf ON tsf.shop_id = ts.shop_id AND tsf.del_flag = 0 AND tsf.file_type = 1
        WHERE tmt.del_flag = 0 AND tmt.agency_id = #{param.agencyId}
        WHERE tmt.del_flag = 0 AND tmt.shop_id = #{param.agencyId}
        ORDER BY tmtr.create_time DESC
    </select>
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtShopConfigEditDto.java
@@ -14,6 +14,9 @@
@Data
public class MgtShopConfigEditDto extends MgtBaseDto {
    @ApiModelProperty(value = "商户统一分成比例")
    private String shopCommonProportion;
    @ApiModelProperty(value = "合作商任务紧急程度")
    private String shopEmergencyDegree;
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtAllCustomConfigVo.java
@@ -45,6 +45,9 @@
    @ApiModelProperty(value = "合作商状态")
    private String shopCustomStatus;
    @ApiModelProperty(value = "商户统一分成比例")
    private String shopCommonProportion;
    @ApiModelProperty(value = "来源渠道")
    private String shopSourceChannel;
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/scheduler/SystemScheduler.java
@@ -1,7 +1,8 @@
package com.ruoyi.system.scheduler;
import com.ruoyi.system.service.staff.SysWxCpService;
import com.ruoyi.system.service.staff.SysStaffService;
import com.ruoyi.system.service.sys.ISysDeptService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
@@ -17,9 +18,10 @@
    private SchedulerUtils schedulerUtils;
    @Autowired
    private SysWxCpService sysWxCpService;
    private SysStaffService sysStaffService;
    @Autowired
    private ISysDeptService sysDeptService;
    /**
     * 每天凌晨2点定时同步企业微信部门
@@ -28,7 +30,7 @@
    private void timingCheckMemberCoupon(){
        if(schedulerUtils.getSchedulerRun()) {
            log.info("定时同步企业微信部门任务开始执行");
            sysWxCpService.syncDepartment();
            sysDeptService.syncDepartment();
        }
    }
@@ -39,7 +41,7 @@
    private void timingSendTaskMessage(){
        if(schedulerUtils.getSchedulerRun()) {
            log.info("定时发送通知任务任务开始执行");
            sysWxCpService.sendTaskMessage();
            sysStaffService.sendTaskMessage();
        }
    }
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java
@@ -205,6 +205,9 @@
                    case "SHOP_EMERGENCY_DEGREE":
                        mgtAllCustomConfigVo.setShopEmergencyDegree(value.getConfigValue());
                        break;
                    case "SHOP_COMMON_PROPORTION":
                        mgtAllCustomConfigVo.setShopCommonProportion(value.getConfigValue());
                        break;
                    case "SHOP_FOLLOW_TYPE":
                        mgtAllCustomConfigVo.setShopFollowType(value.getConfigValue());
                        break;
@@ -425,6 +428,13 @@
                        }
                        updatedCustomConfigs.add(customConfig);
                        break;
                    case "SHOP_COMMON_PROPORTION":
                        newValue = mgtShopConfigEditDto.getShopCommonProportion();
                        customConfig.setConfigValue(newValue);
                        customConfig.setUpdateTime(updateTime);
                        updatedCustomConfigs.add(customConfig);
                        redisService.setCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION,mgtShopConfigEditDto.getShopCommonProportion());
                        break;
                    default:
                        break;
                }
@@ -437,6 +447,7 @@
            createNewConfig(ConfigEnum.SHOP_FOLLOW_TYPE, mgtShopConfigEditDto.getShopFollowType(), updateTime);
            createNewConfig(ConfigEnum.SHOP_CUSTOM_STATUS, mgtShopConfigEditDto.getShopCustomStatus(), updateTime);
            createNewConfig(ConfigEnum.SHOP_SOURCE_CHANNEL, mgtShopConfigEditDto.getShopSourceChannel(), updateTime);
            createNewConfig(ConfigEnum.SHOP_COMMON_PROPORTION, mgtShopConfigEditDto.getShopCommonProportion(), updateTime);
        }
    }
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java
@@ -16,6 +16,7 @@
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.domain.vo.MgtUserTaskMsgVo;
import com.ruoyi.system.api.service.RemoteShopService;
import com.ruoyi.system.domain.dto.MgtStaffEditDto;
import com.ruoyi.system.domain.dto.MgtStaffPageDto;
@@ -31,6 +32,11 @@
import com.ruoyi.system.service.sys.ISysDeptService;
import com.ruoyi.system.service.sys.ISysUserService;
import com.ruoyi.system.util.QiYeUtils;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.bean.message.WxCpMessage;
import me.chanjar.weixin.cp.bean.message.WxCpMessageSendResult;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -69,6 +75,10 @@
    @Resource
    private ISysDeptService sysDeptService;
    @Resource
    @Qualifier("wxService")
    private WxCpService wxCpService;
    /**
@@ -436,4 +446,37 @@
    public List<SysStaff> listSysStaffByIds(List<Long> userIdList){
        return sysStaffMapper.listSysStaffByIds(userIdList);
    }
    /**
     * @description  企业微信消息推送
     * @author  jqs
     * @date    2023/8/29 11:05
     * @return  void
     */
    @Override
    public void sendTaskMessage(){
        //获取员工任务列表
        List<MgtUserTaskMsgVo> userTaskMsgVoList = remoteShopService.getTaskMsgList().getData();
        WxCpMessage message;
        SysStaff sysStaff;
        if(userTaskMsgVoList!=null&&!userTaskMsgVoList.isEmpty()){
            //循环发送消息
            for(MgtUserTaskMsgVo mgtUserTaskMsgVo : userTaskMsgVoList){
                sysStaff = this.getByUserId(mgtUserTaskMsgVo.getUserId());
                if(sysStaff!=null&& StringUtils.isNotBlank(sysStaff.getWxUserId())){
                    message = new WxCpMessage();
                    message.setAgentId(1000024);
                    message.setToUser(sysStaff.getWxUserId());
                    message.setMsgType("text");
                    message.setContent(mgtUserTaskMsgVo.getTaskTitle()+"今日需要任务跟进,请注意!");
                    try {
                        WxCpMessageSendResult result = wxCpService.getMessageService().send(message);
                        System.out.println(result);
                    } catch (WxErrorException e) {
                        throw new RuntimeException(e);
                    }
                }
            }
        }
    }
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java
@@ -1,28 +1,17 @@
package com.ruoyi.system.service.impl.staff;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.system.api.domain.poji.sys.SysDept;
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.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;
import lombok.extern.log4j.Log4j2;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.api.WxCpDepartmentService;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.bean.WxCpDepart;
import me.chanjar.weixin.cp.bean.WxCpUser;
import me.chanjar.weixin.cp.bean.message.WxCpMessage;
import me.chanjar.weixin.cp.bean.message.WxCpMessageSendResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
 * @ClassName WxCpServiceImpl
@@ -35,22 +24,14 @@
@Log4j2
public class SysWxCpServiceImpl implements SysWxCpService {
    @Autowired
    @Resource
    @Qualifier("wxService")
    private WxCpService wxCpService;
    @Autowired
    @Resource
    @Qualifier("adWxService")
    private WxCpService adWxCpService;
    @Resource
    private RemoteShopService remoteShopService;
    @Resource
    private ISysDeptService  sysDeptService;
    @Resource
    private SysStaffService sysStaffService;
    /**
     * @description
@@ -70,87 +51,9 @@
        return accessToken;
    }
    /**
     * @description  同步部门
     * @author  jqs
     * @date    2023/8/17 15:42
     * @param
     * @return  void
     */
    @Override
    public void syncDepartment(){
        WxCpDepartmentService wxCpDepartmentService = wxCpService.getDepartmentService();
        try {
            //从企业微信拉去部门名单
            List<WxCpDepart> wxCpDepartList = wxCpDepartmentService.list(null);
            if(wxCpDepartList!=null&&wxCpDepartList.size()>0){
                for(WxCpDepart wxCpDepart : wxCpDepartList){
                    if(wxCpDepart.getParentId().compareTo(24L)<0){
                        //获取系统内对应部门
                        SysDept sysDept = sysDeptService.getByWxDeptId(wxCpDepart.getId());
                        //判断是否有该部门,没有则新建
                        if(sysDept!=null){
                            //判断是否有变化
                            if(!sysDept.getDeptName().equals(wxCpDepart.getName())||sysDept.getOrderNum()!=wxCpDepart.getOrder().intValue()){
                                sysDept.setDeptName(wxCpDepart.getName());
                                sysDept.setOrderNum(wxCpDepart.getOrder().intValue());
                                sysDept.setUpdateBy("企业微信同步");
                                sysDeptService.updateDept(sysDept);
                                log.info("企业微信同步更新部门:"+wxCpDepart.getName());
                            }
                        }else{
                            sysDept = new SysDept();
                            sysDept.setDelFlag("0");
                            sysDept.setStatus("0");
                            sysDept.setParentId(100L);
                            sysDept.setOrderNum(wxCpDepart.getOrder().intValue());
                            sysDept.setCreateBy("企业微信同步");
                            sysDept.setDeptName(wxCpDepart.getName());
                            sysDept.setWxDeptId(wxCpDepart.getId());
                            sysDeptService.insertDept(sysDept);
                            log.info("企业微信同步新增部门:"+wxCpDepart.getName());
                        }
                    }
                }
            }
        } catch (WxErrorException e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * @description  企业微信消息推送
     * @author  jqs
     * @date    2023/8/29 11:05
     * @return  void
     */
    @Override
    public void sendTaskMessage(){
        //获取员工任务列表
        List<MgtUserTaskMsgVo> userTaskMsgVoList = remoteShopService.getTaskMsgList().getData();
        log.info("定时发送通知任务任务列表---"+userTaskMsgVoList.size());
        WxCpMessage message;
        SysStaff sysStaff;
        if(userTaskMsgVoList!=null&&!userTaskMsgVoList.isEmpty()){
            //循环发送消息
            for(MgtUserTaskMsgVo mgtUserTaskMsgVo : userTaskMsgVoList){
                sysStaff = sysStaffService.getByUserId(mgtUserTaskMsgVo.getUserId());
                if(sysStaff!=null&& StringUtils.isNotBlank(sysStaff.getWxUserId())){
                    message = new WxCpMessage();
                    message.setAgentId(1000024);
                    message.setToUser(sysStaff.getWxUserId());
                    message.setMsgType("text");
                    message.setContent(mgtUserTaskMsgVo.getTaskTitle()+"今日需要任务跟进,请注意!");
                    try {
                        WxCpMessageSendResult result = wxCpService.getMessageService().send(message);
                        System.out.println(result);
                    } catch (WxErrorException e) {
                        throw new RuntimeException(e);
                    }
                }
            }
        }
    }
    /**
     * @description  更新企业微信部门
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysDeptServiceImpl.java
@@ -17,9 +17,14 @@
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 me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.api.WxCpDepartmentService;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.bean.WxCpDepart;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -33,17 +38,22 @@
@Service
public class SysDeptServiceImpl implements ISysDeptService
{
    @Autowired
    @Resource
    private SysDeptMapper deptMapper;
    @Autowired
    @Resource
    private SysRoleMapper roleMapper;
    @Autowired
    @Resource
    private SysDeptMenuMapper deptMenuMapper;
    @Autowired
    @Resource
    private SysWxCpService sysWxCpService;
    @Resource
    @Qualifier("wxService")
    private WxCpService wxCpService;
    /**
     * 查询部门管理数据
@@ -406,5 +416,49 @@
        return deptMapper.getByWxDeptId(wxDeptId);
    }
    /**
     * @description  同步部门
     * @author  jqs
     * @date    2023/8/17 15:42
     * @param
     * @return  void
     */
    @Override
    public void syncDepartment(){
        WxCpDepartmentService wxCpDepartmentService = wxCpService.getDepartmentService();
        try {
            //从企业微信拉去部门名单
            List<WxCpDepart> wxCpDepartList = wxCpDepartmentService.list(null);
            if(wxCpDepartList!=null&&wxCpDepartList.size()>0){
                for(WxCpDepart wxCpDepart : wxCpDepartList){
                    if(wxCpDepart.getParentId().compareTo(24L)<0){
                        //获取系统内对应部门
                        SysDept sysDept = this.getByWxDeptId(wxCpDepart.getId());
                        //判断是否有该部门,没有则新建
                        if(sysDept!=null){
                            //判断是否有变化
                            if(!sysDept.getDeptName().equals(wxCpDepart.getName())||sysDept.getOrderNum()!=wxCpDepart.getOrder().intValue()){
                                sysDept.setDeptName(wxCpDepart.getName());
                                sysDept.setOrderNum(wxCpDepart.getOrder().intValue());
                                sysDept.setUpdateBy("企业微信同步");
                                this.updateDept(sysDept);
                            }
                        }else{
                            sysDept = new SysDept();
                            sysDept.setDelFlag("0");
                            sysDept.setStatus("0");
                            sysDept.setParentId(100L);
                            sysDept.setOrderNum(wxCpDepart.getOrder().intValue());
                            sysDept.setCreateBy("企业微信同步");
                            sysDept.setDeptName(wxCpDepart.getName());
                            sysDept.setWxDeptId(wxCpDepart.getId());
                            this.insertDept(sysDept);
                        }
                    }
                }
            }
        } catch (WxErrorException e) {
            throw new RuntimeException(e);
        }
    }
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysStaffService.java
@@ -115,4 +115,14 @@
     * @return  List<SysStaff>
     */
    List<SysStaff> listSysStaffByIds(List<Long> userIdList);
    /**
     * @description  企业微信消息推送
     * @author  jqs
     * @date    2023/8/29 11:05
     * @return  void
     */
    void sendTaskMessage();
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysWxCpService.java
@@ -20,22 +20,8 @@
     */
    String getToken();
    /**
     * @description  同步部门
     * @author  jqs
     * @date    2023/8/17 15:42
     * @param
     * @return  void
     */
    void syncDepartment();
    /**
     * @description  企业微信消息推送
     * @author  jqs
     * @date    2023/8/29 11:05
     * @return  void
     */
    void sendTaskMessage();
    /**
     * @description  更新企业微信部门
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/sys/ISysDeptService.java
@@ -132,4 +132,13 @@
     */
    SysDept getByWxDeptId(Long wxDeptId);
    /**
     * @description  同步部门
     * @author  jqs
     * @date    2023/8/17 15:42
     * @param
     * @return  void
     */
    void syncDepartment();
}