jiangqs
2023-07-15 b0b52cbabf7a4bc8e00fc328d14ac05336d0221e
员工端
1 文件已重命名
74个文件已修改
2个文件已删除
20个文件已添加
2822 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/StaffBaseBatchDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/StaffBaseDto.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/StaffBaseGetDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/StaffPageDto.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/Shop.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerHomeShopTotalVo.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtPlTotalMemberTotalVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteStaffFallbackFactory.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteSysStaffService.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteUserService.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-auth/src/main/java/com/ruoyi/auth/controller/QwH5Controller.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-auth/src/main/resources/bootstrap.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-gateway/src/main/resources/bootstrap.yml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/resources/bootstrap.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberFixedTotalVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtTotalMemberTotalVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/BrowseRecordMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/scheduler/MemberScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/resources/bootstrap.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/UserServiceRecordMapper.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/UserServiceRecordMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTaskController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/staff/StaffController.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/staff/StaffShopController.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/staff/StaffTaskController.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtFrozenShopDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopPageDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffAddTaskDto.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffAgencyPageDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffShopCCEditDto.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffShopECEditDto.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffShopEstimateEditDto.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffShopPageDto.java 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffShopTaskPageDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/ShopTaskRecord.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/ExtendContactsVo.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopPageVo.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffAgencyTaskRecordPageVo.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffHomeShopTotalVo.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffMyShopTaskRecordPageVo.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffShopInfoGetVo.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffShopInfoVo.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffShopPageVo.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffShopSimpleTotalVo.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffShopTaskPageVo.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/AgencyTaskRecordMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/MemberTaskMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/ShopTaskMapper.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/ShopTaskRecordMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java 284 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskRecordServiceImpl.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskRecordServiceImpl.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/AgencyTaskRecordService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/MemberTaskService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/ShopTaskRecordService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/ShopTaskService.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/bootstrap.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml 141 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopTotalMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskRecordMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskMapper.xml 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskRecordMapper.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | 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/sys/SysUserController.java 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/ArticleServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CooperationServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysStaffService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/StaffBaseBatchDto.java
New file
@@ -0,0 +1,19 @@
package com.ruoyi.system.api.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName StaffBaseBatchDto
 * @Description TODO
 * @Author jqs
 * @Date 2023/7/14 11:31
 * @Version 1.0
 */
@Data
public class StaffBaseBatchDto extends StaffBaseDto{
    @ApiModelProperty(value = "请求对象id集合 多个用,隔开")
    private String ids;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/StaffBaseDto.java
@@ -3,12 +3,17 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @author cheny
 */
@Data
public class StaffBaseDto {
    @ApiModelProperty(value = "请求对象id集合 多个用,隔开")
    private String ids;
    @ApiModelProperty(value = "userId",hidden = true)
    private Long userId;
    @ApiModelProperty(value = "部门员工list",hidden = true)
    private List<Long> userIdList;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/StaffBaseGetDto.java
New file
@@ -0,0 +1,22 @@
package com.ruoyi.system.api.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
 * @ClassName StaffBaseGetDto
 * @Description TODO
 * @Author jqs
 * @Date 2023/7/14 18:29
 * @Version 1.0
 */
@Data
public class StaffBaseGetDto extends StaffBaseDto{
    @ApiModelProperty(value = "请求对象id")
    @NotNull(message = "对象id为必传参数")
    private String id;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/StaffPageDto.java
@@ -7,7 +7,9 @@
 * @author cheny
 */
@Data
public class StaffPageDto {
public class StaffPageDto extends StaffBaseDto{
    @ApiModelProperty(name = "pagenum", value = "页码")
    private Integer pageNum = 1;
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/Shop.java
@@ -1,16 +1,16 @@
package com.ruoyi.system.api.domain.poji.shop;
import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
 * <p>
@@ -269,7 +269,17 @@
    @TableField("cooperative_flag")
    private Integer cooperativeFlag;
    /**
     * 扩展联系人
     */
    @TableField("extend_contacts")
    private String extendContacts;
    /**
     * 进件标记
     */
    @TableField("auth_flag")
    private Integer authFlag;
    @Override
    protected Serializable pkVal() {
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerHomeShopTotalVo.java
@@ -1,11 +1,9 @@
package com.ruoyi.system.api.domain.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
 * @author jqs34
@@ -29,7 +27,7 @@
    @ApiModelProperty(value = "待处理订单")
    private Integer unHandleOrder;
    @ApiModelProperty(value = "跟进任务")
    @ApiModelProperty(value = "会员跟进任务")
    private Integer task;
    @ApiModelProperty(value = "店铺营业额")
@@ -40,8 +38,5 @@
    @ApiModelProperty(value = "剩余体验人数")
    private Integer explorationSurp;
    @ApiModelProperty(value = "多个商户id")
    private List<Long> shopIds;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtPlTotalMemberTotalVo.java
@@ -39,6 +39,9 @@
    @ApiModelProperty(value = "会员调理")
    private List<MgtMapIntTotalVo> nurseTotalVos;
    @ApiModelProperty(value = "会员等级")
    private List<MgtMapIntTotalVo> memberLevelTotalVos;
    @ApiModelProperty(value = "商品类型")
    private List<MgtMapIntTotalVo> goodsTypeTotalVos;
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java
@@ -133,6 +133,11 @@
                return R.fail("积分变动失败:" + throwable.getMessage());
            }
            @Override
            public R<Integer> getAreaNewMember(List<Long> shopIdList) {
                return null;
            }
        };
    }
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java
@@ -102,6 +102,11 @@
            public R<Integer> getShopMarketingStatus(Long shopId) {
                return null;
            }
            @Override
            public R<ShopRelUserVo> getShopByBelongUserId(Long userId) {
                return R.fail("获取商户失败:" + throwable.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteStaffFallbackFactory.java
New file
@@ -0,0 +1,33 @@
package com.ruoyi.system.api.factory;
import com.ruoyi.system.api.service.RemoteSysStaffService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
/**
 * @ClassName RemoteStaffFallbackFactory
 * @Description TODO
 * @Author jqs
 * @Date 2023/7/14 10:30
 * @Version 1.0
 */
public class RemoteStaffFallbackFactory implements FallbackFactory<RemoteSysStaffService> {
    private static final Logger log = LoggerFactory.getLogger(RemoteStaffFallbackFactory.class);
    @Override
    public RemoteSysStaffService create(Throwable throwable)
    {
        log.error("员工服务调用失败:{}", throwable.getMessage());
        return new RemoteSysStaffService()
        {
            @Override
            public Boolean isLeader() {
                return null;
            }
        };
    }
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java
@@ -4,11 +4,15 @@
import com.ruoyi.system.api.domain.dto.AppEditUserDto;
import com.ruoyi.system.api.domain.poji.sys.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import com.ruoyi.system.api.model.QwH5LoginVo;
import com.ruoyi.system.api.model.QwUserDetailDto;
import com.ruoyi.system.api.service.RemoteUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.List;
/**
 * 用户服务
@@ -70,6 +74,17 @@
            public R frozenUser(Long userId) {
                return R.fail("冻结用户失败:" + throwable.getMessage());
            }
            @Override
            public R<QwH5LoginVo> qwH5StaffLogin(QwUserDetailDto qwUserDetail) {
                return R.fail("员工端登录信息获取失败:" + throwable.getMessage());
            }
            @Override
            public R<List<Long>> getUserIdsByDept(Long userId) {
                return null;
            }
        };
    }
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java
@@ -204,4 +204,15 @@
     */
    @PostMapping("/member/changeIntegral")
    public R signShare(@RequestBody IntegralChangeDto integralChangeDto);
    /**
     * @description  统计商户今日新增会员
     * @author  jqs
     * @date    2023/7/14 20:00
     * @param shopIdList
     * @return  R<Integer>
     */
    @PostMapping("/member/getAreaNewMember")
    public R<Integer> getAreaNewMember(@RequestBody List<Long> shopIdList);
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java
@@ -138,4 +138,7 @@
     */
    @PostMapping("/shop/getShopMarketingStatus")
    public R<Integer> getShopMarketingStatus(@RequestBody Long shopId);
    @PostMapping("/shop/getShopByBelongUserId")
    public R<ShopRelUserVo> getShopByBelongUserId(@RequestBody Long userId);
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteSysStaffService.java
@@ -1,36 +1,21 @@
package com.ruoyi.system.api.service;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.model.LoginUser;
import com.ruoyi.system.api.factory.RemoteUserFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
 * 用户服务
 *
 * @author jqs
 */
@FeignClient(contextId = "remoteSysStaffService", value = ServiceNameConstants.SYSTEM_SERVICE/*, fallbackFactory = RemoteUserFallbackFactory.class*/)
@FeignClient(contextId = "remoteSysStaffService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class)
public interface RemoteSysStaffService
{
    /**
     * 通过用户名查询用户信息
     *
     * @param username 用户名
     * @param source 请求来源
     * @return 结果
     */
    @GetMapping("/user/info/{username}")
    public R<LoginUser> getUserInfo(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    @RequestMapping(value = "/staff/isLeader", method = RequestMethod.POST)
    public Boolean isLeader() ;
    @GetMapping("/user/dept/{deptId}")
    public R<List<Long>> getUserIds(@PathVariable("deptId") Long deptId);
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteUserService.java
@@ -7,8 +7,12 @@
import com.ruoyi.system.api.domain.poji.sys.SysUser;
import com.ruoyi.system.api.factory.RemoteUserFallbackFactory;
import com.ruoyi.system.api.model.LoginUser;
import com.ruoyi.system.api.model.QwH5LoginVo;
import com.ruoyi.system.api.model.QwUserDetailDto;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * 用户服务
@@ -39,9 +43,6 @@
    public R<Boolean> registerUserInfo(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    /**
    * @description: TODO
    * @author jqs34
@@ -60,6 +61,7 @@
    @PostMapping("/user/getSysUserByMobile")
    public R<SysUser> getSysUserByMobile(@RequestBody String mobile);
    /**
     * @description: 更新用户手机
     * @author jqs34
@@ -68,7 +70,6 @@
     */
    @PostMapping("/user/registerUser")
    public R<SysUser> registerUser(@RequestBody SysUser sysUser);
    /**
@@ -95,6 +96,24 @@
     * @param userId
     * @return  R<Activeness>
     */
    @PostMapping("/config/frozenUser")
    @PostMapping("/user/frozenUser")
    public R frozenUser(@RequestBody Long userId);
    /**
     * @description  员工端登录
     * @author  jqs
     * @date    2023/7/14 10:04
     * @param qwUserDetail
     * @return  R<QwH5LoginVo>
     */
    @PostMapping("/user/qwH5StaffLogin")
    public R<QwH5LoginVo> qwH5StaffLogin(@RequestBody QwUserDetailDto qwUserDetail);
    /**
     * 根据部门获取所有员工id
     * @param userId
     * @return
     */
    @GetMapping("/user/getUserIdsByDept/{userId}")
    public R<List<Long>> getUserIdsByDept(@PathVariable("userId") Long userId);
}
ruoyi-auth/src/main/java/com/ruoyi/auth/controller/QwH5Controller.java
@@ -1,6 +1,5 @@
package com.ruoyi.auth.controller;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.auth.service.QywxInnerService;
import com.ruoyi.auth.service.SysLoginService;
import com.ruoyi.common.core.domain.R;
@@ -56,21 +55,34 @@
    }
    @GetMapping("/h5/oauthUser")
    @ApiOperation("通过code获取访问用户登录")
    public R<OauthUserVo> oauthUser(@ApiParam(value = "成员授权获取到的code", required = true) @RequestParam("code") String code) throws IOException {
    @GetMapping("/h5/oauthStaff")
    @ApiOperation("通过code获取员工端用户登录")
    public R<OauthUserVo> oauthStaff(@ApiParam(value = "成员授权获取到的code", required = true) @RequestParam("code") String code) throws IOException {
        // 通过code获取访问用户敏感信息
        JSONObject result = qywxInnerService.getOauthUser(code);
        //JSONObject result = qywxInnerService.getOauthUser(code);
        //QwUserDetailDto qwUserDetail = JSONObject.parseObject(result.toJSONString(), QwUserDetailDto.class);
        QwUserDetailDto qwUserDetail = new QwUserDetailDto();
        qwUserDetail.setMobile("13882237106");
        qwUserDetail.setUserid("146");
        // 1、查数据库获取人员
        QwH5LoginVo qwH5LoginVo = sysLoginService.qwH5Login(qwUserDetail);
        // 2、生成Token
       return R.ok(tokenService.createQwH5Token(qwH5LoginVo));
    }
    @GetMapping("/h5/oauthUser")
    @ApiOperation("通过code获取商户端用户登录")
    public R<OauthUserVo> oauthUser(@ApiParam(value = "成员授权获取到的code", required = true) @RequestParam("code") String code) throws IOException {
        // 通过code获取访问用户敏感信息
        //JSONObject result = qywxInnerService.getOauthUser(code);
        //QwUserDetailDto qwUserDetail = JSONObject.parseObject(result.toJSONString(), QwUserDetailDto.class);
        QwUserDetailDto qwUserDetail = new QwUserDetailDto();
        qwUserDetail.setMobile("13882237106");
        // 1、查数据库获取人员
        QwH5LoginVo qwH5LoginVo = sysLoginService.qwH5StaffLogin(qwUserDetail);
        // 2、生成Token
        return R.ok(tokenService.createQwH5Token(qwH5LoginVo));
    }
    @GetMapping("/h5/getAgentConfig")
    @ApiOperation("通过code获取访问用户登录")
    public R<AgentConfigVo> getAgentConfig(@ApiParam(value = "url", required = true) String url, @ApiParam(value = "type", required = false) String type) throws IOException {
ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
@@ -1,14 +1,5 @@
package com.ruoyi.auth.service;
import com.ruoyi.system.api.domain.dto.AppMiniRegisterDto;
import com.ruoyi.system.api.domain.vo.AppMiniRegisterVo;
import com.ruoyi.system.api.service.RemoteMemberService;
import com.ruoyi.system.api.service.RemoteShopService;
import com.ruoyi.system.api.domain.vo.ShopRelUserVo;
import com.ruoyi.system.api.model.*;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.ruoyi.common.core.constant.CacheConstants;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.constant.SecurityConstants;
@@ -21,8 +12,16 @@
import com.ruoyi.common.core.utils.ip.IpUtils;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.service.RemoteUserService;
import com.ruoyi.system.api.domain.dto.AppMiniRegisterDto;
import com.ruoyi.system.api.domain.poji.sys.SysUser;
import com.ruoyi.system.api.domain.vo.AppMiniRegisterVo;
import com.ruoyi.system.api.domain.vo.ShopRelUserVo;
import com.ruoyi.system.api.model.*;
import com.ruoyi.system.api.service.RemoteMemberService;
import com.ruoyi.system.api.service.RemoteShopService;
import com.ruoyi.system.api.service.RemoteUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
 * 登录校验方法
@@ -230,9 +229,52 @@
            throw new ServiceException("未查询到商户信息");
        }
        userInfo.setShopId(shopInfo.getShopId());
        recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功",Constants.FROM_SHOP);
        return userInfo;
    }
    /**
     * 企业微信H5登录
     */
    public QwH5LoginVo qwH5StaffLogin(QwUserDetailDto qwUserDetail)
    {
        // 查询用户信息
        R<QwH5LoginVo> userResult = remoteShopService.qwH5Login(qwUserDetail);
        if (R.FAIL == userResult.getCode())
        {
            throw new ServiceException(userResult.getMsg());
        }
        QwH5LoginVo userInfo = userResult.getData();
        SysUser user = userInfo.getSysUser();
        String username = user.getUserName();
        // IP黑名单校验
        String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST));
        if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr()))
        {
            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单",Constants.FROM_SHOP);
            throw new ServiceException("很遗憾,访问IP已被列入系统黑名单");
        }
        if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
        {
            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除",Constants.FROM_SHOP);
            throw new ServiceException("对不起,您的账号:" + username + " 已被删除");
        }
        if (UserStatus.DISABLE.getCode().equals(user.getStatus()))
        {
            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员",Constants.FROM_SHOP);
            throw new ServiceException("对不起,您的账号:" + username + " 已停用");
        }
        // 查询用户商户
        R<ShopRelUserVo> shopResult = remoteShopService.getShopByBelongUserId(user.getUserId());
        if (R.FAIL == userResult.getCode()) {
            throw new ServiceException(userResult.getMsg());
        }
        ShopRelUserVo shopInfo = shopResult.getData();
        if(null == shopInfo){
            throw new ServiceException("未查询到商户信息");
        }
        userInfo.setShopId(shopInfo.getShopId());
        recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功",Constants.FROM_SHOP);
        return userInfo;
    }
ruoyi-auth/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@
    nacos:
      discovery:
        # 服务注册地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
      config:
        # 配置中心地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
        # 配置文件格式
        file-extension: yml
        # 共享配置
ruoyi-gateway/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@
    nacos:
      discovery:
        # 服务注册地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
      config:
        # 配置中心地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
        # 配置文件格式
        file-extension: yml
        # 共享配置
@@ -35,8 +35,8 @@
      datasource:
        ds1:
          nacos:
            #server-addr: 47.109.78.184:5000
            server-addr: 127.0.0.1:8848
            server-addr: 47.109.78.184:5000
            #server-addr: 127.0.0.1:8848
            dataId: sentinel-ruoyi-gateway
            groupId: DEFAULT_GROUP
            data-type: json
ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml
@@ -18,12 +18,12 @@
    nacos:
      discovery:
        # 服务注册地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
      config:
        # 配置中心地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
        # 配置文件格式
        file-extension: yml
        # 共享配置
ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@
    nacos:
      discovery:
        # 服务注册地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
      config:
        # 配置中心地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
        # 配置文件格式
        file-extension: yml
        # 共享配置
ruoyi-modules/ruoyi-goods/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@
    nacos:
      discovery:
        # 服务注册地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
      config:
        # 配置中心地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
        # 配置文件格式
        file-extension: yml
        # 共享配置
ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml
@@ -106,7 +106,7 @@
    <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 OR (shop_flag = 2 AND FIND_IN_SET(#{shopId}, applicable_shop) &gt; 0)
        AND activity_status = 1 AND (shop_flag = 1 OR (shop_flag = 2 AND FIND_IN_SET(#{shopId}, applicable_shop) &gt; 0))
        ORDER BY activity_end_time - NOW()
        LIMIT 1;
    </select>
ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml
@@ -223,26 +223,25 @@
        <if test="param.keyword!=null and param.keyword != ''">
            AND tg.goods_name LIKE CONCAT('%',#{param.keyword},'%')
        </if>
        ORDER BY
        <if test="param.sort != null and param.sort != ''">
            <choose>
                <when test="param.sort==1">
                    salesPrice DESC,tg.create_time DESC
                    ORDER BY salesPrice DESC,tg.create_time DESC
                </when>
                <when test="param.sort==2">
                    salesPrice ASC,tg.create_time DESC
                    ORDER BY salesPrice ASC,tg.create_time DESC
                </when>
                <when test="param.sort==3">
                    tgt.buy_num_count ASC,tg.create_time DESC
                    ORDER BY tgt.buy_num_count ASC,tg.create_time DESC
                </when>
                <when test="param.sort==4">
                    tgt.buy_num_count DESC,tg.create_time DESC
                    ORDER BY tgt.buy_num_count DESC,tg.create_time DESC
                </when>
                <when test="param.sort==5">
                    tg.create_time DESC
                    ORDER BY tg.create_time DESC
                </when>
                <otherwise>
                    tg.create_time DESC
                    ORDER BY tg.create_time DESC
                </otherwise>
            </choose>
        </if>
ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@
    nacos:
      discovery:
        # 服务注册地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
      config:
        # 配置中心地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
        # 配置文件格式
        file-extension: yml
        # 共享配置
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java
@@ -303,4 +303,18 @@
        memberService.changeIntegral(integralChangeDto);
        return R.ok();
    }
    /**
     * @description  统计商户今日新增会员
     * @author  jqs
     * @date    2023/7/14 20:00
     * @param shopIdList
     * @return  R<Integer>
     */
    @PostMapping("/getAreaNewMember")
    public R<Integer> getAreaNewMember(@RequestBody List<Long> shopIdList)
    {
        Integer count = memberService.getAreaNewMember(shopIdList);
        return R.ok(count);
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberFixedTotalVo.java
@@ -38,6 +38,9 @@
    @ApiModelProperty(value = "会员调理")
    private List<MgtMapIntTotalVo> nurseTotalVos;
    @ApiModelProperty(value = "会员等级")
    private List<MgtMapIntTotalVo> memberLevelTotalVos;
    @ApiModelProperty(value = "商品类型")
    private List<MgtMapIntTotalVo> goodsTypeTotalVos;
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtTotalMemberTotalVo.java
@@ -59,6 +59,9 @@
    @ApiModelProperty(value = "会员调理")
    private List<MgtMapIntTotalVo> nurseTotalVos;
    @ApiModelProperty(value = "会员等级")
    private List<MgtMapIntTotalVo> memberLevelTotalVos;
    @ApiModelProperty(value = "商品类型")
    private List<MgtMapIntTotalVo> goodsTypeTotalVos;
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/BrowseRecordMapper.java
@@ -39,5 +39,5 @@
     * @param merMemberBrowsePageDto
     * @return  List<MerMemberBrowsePageVo>
     */
    List<MerMemberBrowsePageVo> pageMerMemberBrowse(Page page, MerMemberBrowsePageDto merMemberBrowsePageDto);
    List<MerMemberBrowsePageVo> pageMerMemberBrowse(Page page, @Param("param")MerMemberBrowsePageDto merMemberBrowsePageDto);
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java
@@ -159,6 +159,15 @@
     */
    List<MgtMapIntTotalVo> getTotalMemberTotalNurse(@Param("param") MgtBaseShopDto mgtBaseShopDto);
    /**
     * @description  会员人数统计
     * @author  jqs
     * @date    2023/6/19 15:26
     * @param
     * @return  MgtTotalMemberTotalVo
     */
    List<MgtMapIntTotalVo> getTotalMemberTotalLevel(@Param("param") MgtBaseShopDto mgtBaseShopDto);
    /**
     * @description  会员人数统计
@@ -236,6 +245,15 @@
     * @return  MgtTotalMemberTotalVo
     */
    List<MgtMapIntTotalVo> getPlTotalMemberTotalNurse(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description  会员人数统计
     * @author  jqs
     * @date    2023/6/19 15:26
     * @param
     * @return  MgtTotalMemberTotalVo
     */
    List<MgtMapIntTotalVo> getPlTotalMemberTotalLevel(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description  会员人数统计
@@ -322,6 +340,15 @@
    List<MgtMapIntTotalVo> getMerMemberTotalNurse(@Param("param") MerTotalDto merTotalDto);
    /**
     * @description  会员调理问题人数统计
     * @author  jqs
     * @date    2023/6/19 15:26
     * @param
     * @return  MgtTotalMemberTotalVo
     */
    List<MgtMapIntTotalVo> getMerMemberTotalLevel(@Param("param") MerTotalDto merTotalDto);
    /**
     * @description  会员商品类型人数统计
     * @author  jqs
     * @date    2023/6/19 15:26
@@ -370,10 +397,19 @@
     * @description  获取各年龄层用户
     * @author  jqs
     * @date    2023/7/4 9:55
     * @param ageType
     * @param merTotalDto
     * @return  List<Long>
     */
    List<Long> listOrderAgeUser(@Param("param") MerTotalDto merTotalDto);
    /**
     * @description  统计商户今日新增会员
     * @author  jqs
     * @date    2023/7/14 19:54
     * @param shopIdList
     * @return  Integer
     */
    Integer getAreaNewMember(@Param("shopIdList")List<Long> shopIdList);
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/scheduler/MemberScheduler.java
@@ -39,7 +39,7 @@
    /**
     * 定时检查优惠券过期
     */
    @Scheduled(cron="5 0 * * * ?")
    @Scheduled(cron="2 0 * * * ?")
    private void timingCheckMemberCoupon(){
        if(schedulerUtils.getSchedulerRun()) {
            log.info("定时检查优惠券过期任务开始执行");
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -84,8 +84,6 @@
    @Resource
    private RemoteOrderService orderService;
    @Resource
    private MemberNurseService memberNurseService;
    @Resource
    private RemoteConfigService remoteConfigService;
@@ -325,27 +323,22 @@
        switch (editType) {
            case 1:
                member.setNickName(editValue);
                member.setUpdateTime(new Date());
                member.setUpdateUserId(appEditUserDto.getUserId());
                this.saveOrUpdate(member);
                break;
            case 2:
                member.setAvatar(editValue);
                break;
            case 3:
                member.setGender(Integer.valueOf(editValue));
                member.setUpdateTime(new Date());
                member.setUpdateUserId(appEditUserDto.getUserId());
                this.saveOrUpdate(member);
                break;
            case 4:
                member.setBirthday(editValue);
                member.setUpdateTime(new Date());
                member.setUpdateUserId(appEditUserDto.getUserId());
                this.saveOrUpdate(member);
                break;
            default:
                break;
        }
        member.setUpdateTime(new Date());
        member.setUpdateUserId(appEditUserDto.getUserId());
        this.saveOrUpdate(member);
        sysUserService.editUserInfo(appEditUserDto);
    }
@@ -1152,6 +1145,12 @@
            nurseTotalVos = listRemoveNull(nurseTotalVos);
            mgtTotalMemberTotalVo.setNurseTotalVos(nurseTotalVos);
        }
        //获取不同等级的会员数
        List<MgtMapIntTotalVo> memberLevelTotalVos = memberMapper.getTotalMemberTotalLevel(mgtBaseShopDto);
        if (memberLevelTotalVos != null && memberLevelTotalVos.size() > 0) {
            memberLevelTotalVos = listRemoveNull(memberLevelTotalVos);
            mgtTotalMemberTotalVo.setMemberLevelTotalVos(memberLevelTotalVos);
        }
        // 获取不同商品类型的会员数
        List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getTotalMemberTotalGoodsType(mgtBaseShopDto);
        if (goodsTypeTotalVos != null && goodsTypeTotalVos.size() > 0) {
@@ -1257,6 +1256,12 @@
        if (nurseTotalVos != null && nurseTotalVos.size() > 0) {
            nurseTotalVos = listRemoveNull(nurseTotalVos);
            plTotalMemberTotalVo.setNurseTotalVos(nurseTotalVos);
        }
        //获取不同等级的会员数
        List<MgtMapIntTotalVo> memberLevelTotalVos = memberMapper.getPlTotalMemberTotalLevel(mgtBasePlatformDto);
        if (memberLevelTotalVos != null && memberLevelTotalVos.size() > 0) {
            memberLevelTotalVos = listRemoveNull(memberLevelTotalVos);
            plTotalMemberTotalVo.setMemberLevelTotalVos(memberLevelTotalVos);
        }
        // 获取不同商品类型的会员数
        List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getPlTotalMemberTotalGoodsType(mgtBasePlatformDto);
@@ -1513,6 +1518,12 @@
        if (nurseTotalVos != null && nurseTotalVos.size() > 0) {
            nurseTotalVos = listRemoveNull(nurseTotalVos);
            memberFixedTotalVo.setNurseTotalVos(nurseTotalVos);
        }
        //获取不同等级的会员数
        List<MgtMapIntTotalVo> memberLevelTotalVos = memberMapper.getMerMemberTotalLevel(merTotalDto);
        if (memberLevelTotalVos != null && memberLevelTotalVos.size() > 0) {
            memberLevelTotalVos = listRemoveNull(memberLevelTotalVos);
            memberFixedTotalVo.setMemberLevelTotalVos(memberLevelTotalVos);
        }
        // 获取不同商品类型的会员数
        List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getMerMemberTotalGoodsType(merTotalDto);
@@ -1815,4 +1826,16 @@
        integralRecordService.saveOrUpdate(integralRecord);
        return completeFlag;
    }
    /**
     * @description  统计商户今日新增会员
     * @author  jqs
     * @date    2023/7/14 19:54
     * @param shopIdList
     * @return  Integer
     */
    @Override
    public Integer getAreaNewMember(List<Long> shopIdList){
        return memberMapper.getAreaNewMember(shopIdList);
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java
@@ -348,4 +348,13 @@
     * @return  void
     */
    Boolean changeIntegral(IntegralChangeDto integralChangeDto);
    /**
     * @description  统计商户今日新增会员
     * @author  jqs
     * @date    2023/7/14 19:54
     * @param shopIdList
     * @return  Integer
     */
    Integer getAreaNewMember(List<Long> shopIdList);
}
ruoyi-modules/ruoyi-member/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@
    nacos:
      discovery:
        # 服务注册地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
      config:
        # 配置中心地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
        # 配置文件格式
        file-extension: yml
        # 共享配置
ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
@@ -430,6 +430,22 @@
        GROUP BY member_nurse
    </select>
    <select id="getTotalMemberTotalLevel" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
        SELECT level mapKey, COUNT(*) mapValue
        FROM t_member
        WHERE (level IS NOT NULL OR level != '')
        <if test="param.shopId != null and param.shopId != ''">
            AND relation_shop_id = #{param.shopId}
        </if>
        <if test="param.startDate!=null and param.startDate!=''">
            AND create_time &gt;= #{param.startDate}
        </if>
        <if test="param.endDate!=null and param.endDate!=''">
            AND create_time &lt;= #{param.endDate}
        </if>
        GROUP BY level
    </select>
    <select id="getTotalMemberTotalGoodsType" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
        SELECT goods_type mapKey, COUNT(*) mapValue
        FROM (
@@ -584,6 +600,25 @@
        ) x
        WHERE member_nurse IS NOT NULL OR member_nurse != ''
        GROUP BY member_nurse
    </select>
    <select id="getPlTotalMemberTotalLevel" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
        SELECT level mapKey, COUNT(*) mapValue
        FROM t_member
        WHERE (level IS NOT NULL OR level != '')
        <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>
        <if test="param.startDate!=null and param.startDate!=''">
            AND create_time &gt;= #{param.startDate}
        </if>
        <if test="param.endDate!=null and param.endDate!=''">
            AND create_time &lt;= #{param.endDate}
        </if>
        GROUP BY level
    </select>
    <select id="getPlTotalMemberTotalGoodsType" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
@@ -786,6 +821,28 @@
        GROUP BY member_nurse
    </select>
    <select id="getMerMemberTotalLevel" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
        SELECT level mapKey, COUNT(*) mapValue
        FROM t_member
        WHERE (level IS NOT NULL OR level != '')
        <if test="param.shopId != null and param.shopId != ''">
            AND relation_shop_id = #{param.shopId}
        </if>
        <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>
        <if test="param.startDate!=null and param.startDate!=''">
            AND create_time &gt;= #{param.startDate}
        </if>
        <if test="param.endDate!=null and param.endDate!=''">
            AND create_time &lt;= #{param.endDate}
        </if>
        GROUP BY level
    </select>
    <select id="getMerMemberTotalGoodsType" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
        SELECT goods_type mapKey, COUNT(*) mapValue
        FROM (
@@ -945,4 +1002,14 @@
            AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) &gt;= 51
        </if>
    </select>
    <select id="getAreaNewMember" resultType="java.lang.Integer">
        SELECT COUNT(member_id)
        FROM t_member
        WHERE del_flag = 0 AND binding_flag = 1 AND DATE(binding_time) = CURDATE()
        AND relation_shop_id IN
        <foreach collection="shopIdList" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </select>
</mapper>
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java
@@ -56,6 +56,7 @@
        return R.ok(appSureOrderVo);
    }
    @RequestMapping(value = "/panicBuyGoods", method = RequestMethod.POST)
    @ApiOperation(value = "抢购商品")
    public R<AppPanicBuyVo> panicBuyGoods(@RequestBody AppPanicBuyDto appPanicBuyDto) {
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/UserServiceRecordMapper.java
@@ -63,11 +63,5 @@
     * @return  Integer
     */
    Integer countShopServicePerson(@Param("shopId")Long shopId);
    /**
     * @description  商户端统计商户到店人数
     * @author  cheny
     * @param shopIds
     * @return  Integer
     */
    Integer countShopServicePersons(List<Long> shopIds);
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -152,14 +152,19 @@
        BigDecimal orderPayDeposit = new BigDecimal("0.00");
        BigDecimal orderPayMoney = new BigDecimal("0.00");
        // 遍历购买商品列表
        HashSet<String> userCouponIdSet = new HashSet<>();
        for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) {
            appSureOrderGoodsVo = new AppSureOrderGoodsVo();
            discountMoney = BigDecimal.ZERO;
            useCoupon = 0;
            goodsId = appBuyGoodsDto.getGoodsId();
            buyNum = appBuyGoodsDto.getBuyNum();
            memberCouponId = appBuyGoodsDto.getMemberCouponId();
            // 获取商品信息
            goods = remoteGoodsService.getGoods(goodsId).getData();
            if(goods.getGoodsStatus()!=1){
                throw new ServiceException(AppErrorConstant.GOODS_DOWN);
            }
            // 设置订单商品信息
            appSureOrderGoodsVo.setGoodsId(goodsId);
            appSureOrderGoodsVo.setGoodsName(goods.getGoodsName());
@@ -183,7 +188,7 @@
            goodsTotalPrice = goodsPrice.multiply(buyNumBig);
            goodsRealPrice = goodsTotalPrice;
            // 处理优惠券
            if (memberCouponId != null) {
            if (StringUtils.isNotBlank(memberCouponId)) {
                appMemberCouponVo = appMemberCouponVoMap.get(memberCouponId);
                if (StringUtils.isBlank(appMemberCouponVo.getRelGoodsIds()) || appMemberCouponVo.getRelGoodsIds().contains(goodsId)) {
                    couponType = appMemberCouponVo.getCouponType();
@@ -193,16 +198,25 @@
                            discountMoney = appMemberCouponVo.getDiscountMoney();
                            goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
                            useCoupon = 1;
                            userCouponIdSet.add(memberCouponId);
                            appSureOrderGoodsVo.setMemberCouponId(memberCouponId);
                        }
                    } else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) {
                        discountPercent = appMemberCouponVo.getDiscountPercent();
                        goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN).setScale(2, BigDecimal.ROUND_HALF_UP);
                        discountMoney = goodsRealPrice.subtract(goodsTotalPrice);
                        useCoupon = 1;
                        userCouponIdSet.add(memberCouponId);
                        appSureOrderGoodsVo.setMemberCouponId(memberCouponId);
                    } else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) {
                        discountMoney = appMemberCouponVo.getDiscountMoney();
                        goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
                        if(goodsRealPrice.compareTo(BigDecimal.ZERO)<0){
                            goodsRealPrice = BigDecimal.ZERO;
                        }
                        useCoupon = 1;
                        userCouponIdSet.add(memberCouponId);
                        appSureOrderGoodsVo.setMemberCouponId(memberCouponId);
                    }
                }
            }
@@ -220,33 +234,60 @@
            couponDiscount = couponDiscount.add(discountMoney);
            orderPayDeposit = orderPayDeposit.add(goodsDeposit);
            orderPayMoney = orderPayMoney.add(goodsRealPrice);
            appSureOrderGoodsVoList.add(appSureOrderGoodsVo);
        }
        //处理优惠券列表
        if (appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()) {
            // 获取商品关联优惠券
            appGoodsMemberCouponVoList = new ArrayList<>();
            if (appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()) {
            for(AppSureOrderGoodsVo sureOrderGoodsVo : appSureOrderGoodsVoList){
                for (AppMemberCouponVo entity : appMemberCouponVoList) {
                    if (StringUtils.isBlank(entity.getRelGoodsIds())) {
                        if (entity.getCouponType() == 1 && entity.getMoneyThreshold() != null && entity.getDiscountMoney() != null) {
                            moneyThreshold = entity.getMoneyThreshold();
                            if (goodsTotalPrice.compareTo(moneyThreshold) >= 0) {
                                appGoodsMemberCouponVoList.add(entity);
                            if (sureOrderGoodsVo.getGoodsTotalPrice().compareTo(moneyThreshold) >= 0) {
                                if(userCouponIdSet==null||!userCouponIdSet.contains(entity.getMemberCouponId())){
                                    appGoodsMemberCouponVoList.add(entity);
                                }else{
                                    if(sureOrderGoodsVo.getMemberCouponId()!=null&&sureOrderGoodsVo.getMemberCouponId().equals(entity.getMemberCouponId())){
                                        appGoodsMemberCouponVoList.add(entity);
                                    }
                                }
                            }
                        }else{
                            appGoodsMemberCouponVoList.add(entity);
                            if(userCouponIdSet==null||!userCouponIdSet.contains(entity.getMemberCouponId())){
                                appGoodsMemberCouponVoList.add(entity);
                            }else{
                                if(sureOrderGoodsVo.getMemberCouponId()!=null&&sureOrderGoodsVo.getMemberCouponId().equals(entity.getMemberCouponId())){
                                    appGoodsMemberCouponVoList.add(entity);
                                }
                            }
                        }
                    } else if (entity.getRelGoodsIds().contains(goodsId)) {
                    } else if (entity.getRelGoodsIds().contains(sureOrderGoodsVo.getGoodsId())) {
                        if (entity.getCouponType() == 1 && entity.getMoneyThreshold() != null && entity.getDiscountMoney() != null) {
                            moneyThreshold = entity.getMoneyThreshold();
                            if (goodsTotalPrice.compareTo(moneyThreshold) >= 0) {
                                appGoodsMemberCouponVoList.add(entity);
                            if (sureOrderGoodsVo.getGoodsTotalPrice().compareTo(moneyThreshold) >= 0) {
                                if(userCouponIdSet==null||!userCouponIdSet.contains(entity.getMemberCouponId())){
                                    appGoodsMemberCouponVoList.add(entity);
                                }else{
                                    if(sureOrderGoodsVo.getMemberCouponId()!=null&&sureOrderGoodsVo.getMemberCouponId().equals(entity.getMemberCouponId())){
                                        appGoodsMemberCouponVoList.add(entity);
                                    }
                                }
                            }
                        }else{
                            appGoodsMemberCouponVoList.add(entity);
                            if(userCouponIdSet==null||!userCouponIdSet.contains(entity.getMemberCouponId())){
                                appGoodsMemberCouponVoList.add(entity);
                            }else{
                                if(sureOrderGoodsVo.getMemberCouponId()!=null&&sureOrderGoodsVo.getMemberCouponId().equals(entity.getMemberCouponId())){
                                    appGoodsMemberCouponVoList.add(entity);
                                }
                            }
                        }
                    }
                }
                appSureOrderGoodsVo.setAppMemberCouponVoList(appGoodsMemberCouponVoList);
                sureOrderGoodsVo.setAppMemberCouponVoList(appGoodsMemberCouponVoList);
            }
            appSureOrderGoodsVoList.add(appSureOrderGoodsVo);
        }
        // 设置订单相关金额
        appSureOrderVo.setOrderGoodsMoney(orderGoodsMoney);
@@ -297,6 +338,9 @@
            throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL);
        }
        Goods goods = remoteGoodsService.getGoods(goodsId).getData();
        if(goods.getGoodsStatus()!=1){
            throw new ServiceException(AppErrorConstant.GOODS_DOWN);
        }
        appPanicBuyVo.setGoodsId(goodsId);
        appPanicBuyVo.setGoodsName(goods.getGoodsName());
        appPanicBuyVo.setGoodsIntroduction(goods.getGoodsIntroduction());
@@ -913,18 +957,10 @@
     */
    @Override
    public MerHomeShopTotalVo getMerHomeTotal(MerHomeShopTotalVo merHomeShopTotalVo) {
        List<Long> shopIds = merHomeShopTotalVo.getShopIds();
        if (null != shopIds && shopIds.size() != 0) {
            Integer todayShop = userServiceRecordMapper.countShopServicePersons(shopIds);
            merHomeShopTotalVo = orderMapper.getMerHomeShopsTotalVo(shopIds);
            merHomeShopTotalVo.setTodayShop(todayShop);
        }else{
            Long shopId = merHomeShopTotalVo.getShopId();
            Integer todayShop = userServiceRecordService.countShopServicePerson(shopId);
            merHomeShopTotalVo.setTodayShop(todayShop);
            merHomeShopTotalVo = orderMapper.getMerHomeShopTotalVo(shopId);
        }
        Long shopId = merHomeShopTotalVo.getShopId();
        Integer todayShop = userServiceRecordService.countShopServicePerson(shopId);
        merHomeShopTotalVo = orderMapper.getMerHomeShopTotalVo(shopId);
        merHomeShopTotalVo.setTodayShop(todayShop);
        return merHomeShopTotalVo;
    }
ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@
    nacos:
      discovery:
        # 服务注册地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
      config:
        # 配置中心地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
        # 配置文件格式
        file-extension: yml
        # 共享配置
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -1264,7 +1264,7 @@
            IFNULL(SUM(CASE WHEN order_status = 2 THEN 1 ELSE 0 END),0) unHandleOrder,
            IFNULL(SUM(pay_money),0) shopTurnover
        FROM t_order
        WHERE del_flag = 0 AND shopId = #{shopId}
        WHERE del_flag = 0 AND shop_id = #{shopId}
    </select>
    <select id="getMerHomeShopsTotalVo" resultType="com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo">
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/UserServiceRecordMapper.xml
@@ -142,13 +142,4 @@
        WHERE shop_id = #{shopId} AND DATE(create_time) = CURDATE()
    </select>
    <select id="countShopServicePersons" resultType="java.lang.Integer">
        SELECT COUNT(DISTINCT user_id)
        FROM t_user_service_record
        WHERE shop_id in
        <foreach item="id" collection="list" open="(" separator="," close=")">
            #{id}
        </foreach>
         AND DATE(create_time) = CURDATE()
    </select>
</mapper>
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java
@@ -101,6 +101,16 @@
        return R.ok(shopRelUserVo);
    }
    @PostMapping("/getShopByBelongUserId")
    public R<ShopRelUserVo> getShopByBelongUserId(@RequestBody Long userId)
    {
        Shop shop = shopService.getShopByBelongUserId(userId);
        Optional.ofNullable(shop).orElseThrow(() -> new ServiceException("未查询到商户信息"));
        ShopRelUserVo shopRelUserVo = new ShopRelUserVo();
        shopRelUserVo.setShopId(shop.getShopId());
        return R.ok(shopRelUserVo);
    }
    /**
     * @description  删除商户标签
     * @author  jqs
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java
@@ -128,6 +128,16 @@
        return R.ok();
    }
    @RequestMapping(value = "/frozenMgtShop", method = RequestMethod.POST)
    @Log(title = "商户管理", businessType = BusinessType.UPDATE,operContent = "终止合作")
    @ApiOperation(value = "冻结商户")
    public R frozenMgtShop(@RequestBody MgtFrozenShopDto mgtFrozenShopDto) {
        Long userId = SecurityUtils.getUserId();
        mgtFrozenShopDto.setUserId(userId);
        shopService.frozenMgtShop(mgtFrozenShopDto);
        return R.ok();
    }
    @RequestMapping(value = "/changeMgtCooperationTime", method = RequestMethod.POST)
    @Log(title = "商户管理", businessType = BusinessType.UPDATE,operContent = "修改合作时间")
    @ApiOperation(value = "修改合作时间")
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTaskController.java
@@ -84,4 +84,6 @@
        List<MgtMemberFollowPageVo> mgtMemberFollowPageVoList = memberTaskRecordService.pageMgtMemberFollow(mgtMemberTaskPageDto);
        return R.ok(mgtMemberFollowPageVoList);
    }
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/staff/StaffController.java
File was deleted
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/staff/StaffShopController.java
New file
@@ -0,0 +1,115 @@
package com.ruoyi.shop.controller.staff;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.shop.domain.dto.StaffShopCCEditDto;
import com.ruoyi.shop.domain.dto.StaffShopECEditDto;
import com.ruoyi.shop.domain.dto.StaffShopEstimateEditDto;
import com.ruoyi.shop.domain.dto.StaffShopPageDto;
import com.ruoyi.shop.domain.vo.StaffHomeShopTotalVo;
import com.ruoyi.shop.domain.vo.StaffShopInfoGetVo;
import com.ruoyi.shop.domain.vo.StaffShopPageVo;
import com.ruoyi.shop.domain.vo.StaffShopSimpleTotalVo;
import com.ruoyi.shop.service.shop.ShopService;
import com.ruoyi.system.api.domain.dto.StaffBaseGetDto;
import com.ruoyi.system.api.service.RemoteSysStaffService;
import com.ruoyi.system.api.service.RemoteUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@Api(value = "员工端商户接口", tags = "员工端商户接口", description = "员工端商户接口")
@RestController
@RequestMapping("/staff/shop")
public class StaffShopController {
    @Resource
    private ShopService shopService;
    @Resource
    private RemoteUserService sysUserService;
    @Resource
    private RemoteSysStaffService remoteSysStaffService;
    /**
     * 未完成实际统计
     * @return
     */
    @RequestMapping(value = "/getStaffHomeTotal", method = RequestMethod.POST)
    @ApiOperation(value = "获取员工端商铺统计(首页)")
    public R<StaffHomeShopTotalVo> getStaffHomeTotal() {
        Long userId = SecurityUtils.getUserId();
        StaffHomeShopTotalVo staffHomeShopTotalVo = shopService.getStaffHomeTotal(userId);
        return R.ok(staffHomeShopTotalVo);
    }
    @RequestMapping(value = "/listStaffShop", method = RequestMethod.POST)
    @ApiOperation(value = "分页获取员工端商户列表")
    public R<Page<StaffShopPageVo>> listStaffShop(@RequestBody StaffShopPageDto staffShopPageDto) {
        Long userId = SecurityUtils.getUserId();
        if (remoteSysStaffService.isLeader()) {
            List<Long> userIds = sysUserService.getUserIdsByDept(userId).getData();
            userIds.add(userId);
            staffShopPageDto.setUserIdList(userIds);
        } else {
            staffShopPageDto.setBelongUserId(userId);
        }
        Page<StaffShopPageVo> page = new Page<>();
        page.setSize(staffShopPageDto.getPageSize());
        page.setCurrent(staffShopPageDto.getPageNum());
        List<StaffShopPageVo> staffShopPageVoList = shopService.pageStaffShop(page,staffShopPageDto);
        return R.ok(page.setRecords(staffShopPageVoList));
    }
    @RequestMapping(value = "/getStaffSimpleTotal", method = RequestMethod.POST)
    @ApiOperation(value = "获取员工端商铺数量统计")
    public R<StaffShopSimpleTotalVo> getStaffSimpleTotal() {
        Long userId = SecurityUtils.getUserId();
        StaffShopSimpleTotalVo staffShopSimpleTotalVo = shopService.getStaffSimpleTotal(userId);
        return R.ok(staffShopSimpleTotalVo);
    }
    @RequestMapping(value = "/getStaffShopInfo", method = RequestMethod.POST)
    @ApiOperation(value = "获取员工端商户信息")
    public R<StaffShopInfoGetVo> getStaffShopInfo(@RequestBody StaffBaseGetDto staffBaseGetDto) {
        Long userId = SecurityUtils.getUserId();
        StaffShopInfoGetVo staffShopInfoGetVo = shopService.getStaffShopInfo(Long.valueOf(staffBaseGetDto.getId()));
        return R.ok(staffShopInfoGetVo);
    }
    @RequestMapping(value = "/editShopEstimate", method = RequestMethod.POST)
    @ApiOperation(value = "修改店铺评估")
    public R editShopEstimate(@RequestBody StaffShopEstimateEditDto staffShopEstimateEditDto) {
        Long userId = SecurityUtils.getUserId();
        staffShopEstimateEditDto.setUserId(userId);
        shopService.editShopEstimate(staffShopEstimateEditDto);
        return R.ok();
    }
    @RequestMapping(value = "/editExtendContacts", method = RequestMethod.POST)
    @ApiOperation(value = "修改店铺扩展联系人")
    public R editExtendContacts(@RequestBody StaffShopECEditDto staffShopECEditDto) {
        Long userId = SecurityUtils.getUserId();
        staffShopECEditDto.setUserId(userId);
        shopService.editExtendContacts(staffShopECEditDto);
        return R.ok();
    }
    @RequestMapping(value = "/editShopCustomStatus", method = RequestMethod.POST)
    @ApiOperation(value = "修改店铺状态")
    public R editShopCustomStatus(@RequestBody StaffShopCCEditDto staffShopCCEditDto) {
        Long userId = SecurityUtils.getUserId();
        staffShopCCEditDto.setUserId(userId);
        shopService.editShopCustomStatus(staffShopCCEditDto);
        return R.ok();
    }
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/staff/StaffTaskController.java
New file
@@ -0,0 +1,106 @@
package com.ruoyi.shop.controller.staff;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.shop.domain.dto.StaffAddTaskDto;
import com.ruoyi.shop.domain.dto.StaffAgencyPageDto;
import com.ruoyi.shop.domain.dto.StaffShopTaskPageDto;
import com.ruoyi.shop.domain.vo.StaffAgencyTaskRecordPageVo;
import com.ruoyi.shop.domain.vo.StaffMyShopTaskRecordPageVo;
import com.ruoyi.shop.domain.vo.StaffShopTaskPageVo;
import com.ruoyi.shop.service.task.AgencyTaskRecordService;
import com.ruoyi.shop.service.task.ShopTaskRecordService;
import com.ruoyi.shop.service.task.ShopTaskService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
 * @ClassName StaffTaskController
 * @Description TODO
 * @Author jqs
 * @Date 2023/7/14 18:57
 * @Version 1.0
 */
@Api(value = "员工端任务接口", tags = "员工端任务接口", description = "员工端任务接口")
@RestController
@RequestMapping("/staff/task")
public class StaffTaskController {
    @Resource
    private AgencyTaskRecordService agencyTaskRecordService;
    @Resource
    private ShopTaskRecordService shopTaskRecordService;
    @Resource
    private ShopTaskService shopTaskService;
    @RequestMapping(value = "/pageStaffAgencyTaskRecord", method = RequestMethod.POST)
    @ApiOperation(value = "员工端分页获取经销商跟进任务记录列表")
    public R<Page<StaffAgencyTaskRecordPageVo>> pageStaffAgencyTaskRecord(@RequestBody StaffAgencyPageDto staffAgencyPageDto) {
        Long userId = SecurityUtils.getUserId();
        staffAgencyPageDto.setUserId(userId);
        Page<StaffAgencyTaskRecordPageVo> page = new Page<>();
        page.setSize(staffAgencyPageDto.getPageSize());
        page.setCurrent(staffAgencyPageDto.getPageNum());
        List<StaffAgencyTaskRecordPageVo> agencyTaskRecordPageVoList = agencyTaskRecordService.pageStaffAgencyTaskRecord(page,staffAgencyPageDto);
        return R.ok(page.setRecords(agencyTaskRecordPageVoList));
    }
    @RequestMapping(value = "/pageStaffMyShopTaskRecord", method = RequestMethod.POST)
    @ApiOperation(value = "员工端分页获取我的跟进任务记录列表")
    public R<Page<StaffMyShopTaskRecordPageVo>> pageStaffMyShopTaskRecord(@RequestBody StaffShopTaskPageDto staffShopTaskPageDto){
        Long userId = SecurityUtils.getUserId();
        staffShopTaskPageDto.setUserId(userId);
        Page<StaffMyShopTaskRecordPageVo> page = new Page<>();
        page.setSize(staffShopTaskPageDto.getPageSize());
        page.setCurrent(staffShopTaskPageDto.getPageNum());
        List<StaffMyShopTaskRecordPageVo> myShopTaskRecordPageVoList= shopTaskRecordService.pageStaffMyShopTaskRecord(page,staffShopTaskPageDto);
        return R.ok(page.setRecords(myShopTaskRecordPageVoList));
    }
    @RequestMapping(value = "/pageStaffShopTaskRecord", method = RequestMethod.POST)
    @ApiOperation(value = "员工端分页获取商户跟进任务记录列表")
    public R<Page<StaffMyShopTaskRecordPageVo>> pageStaffShopTaskRecord(@RequestBody StaffShopTaskPageDto staffShopTaskPageDto){
        Long userId = SecurityUtils.getUserId();
        staffShopTaskPageDto.setUserId(userId);
        Page<StaffMyShopTaskRecordPageVo> page = new Page<>();
        page.setSize(staffShopTaskPageDto.getPageSize());
        page.setCurrent(staffShopTaskPageDto.getPageNum());
        List<StaffMyShopTaskRecordPageVo> myShopTaskRecordPageVoList= shopTaskRecordService.pageStaffShopTaskRecord(page,staffShopTaskPageDto);
        return R.ok(page.setRecords(myShopTaskRecordPageVoList));
    }
    @RequestMapping(value = "/pageStaffShopTask", method = RequestMethod.POST)
    @ApiOperation(value = "员工端分页获取跟进任务列表")
    public R<Page<StaffShopTaskPageVo>> pageStaffShopTask(@RequestBody StaffShopTaskPageDto staffShopTaskPageDto){
        Long userId = SecurityUtils.getUserId();
        staffShopTaskPageDto.setUserId(userId);
        Page<StaffShopTaskPageVo> page = new Page<>();
        page.setSize(staffShopTaskPageDto.getPageSize());
        page.setCurrent(staffShopTaskPageDto.getPageNum());
        List<StaffShopTaskPageVo> shopTaskPageVoList= shopTaskService.pageStaffShopTask(page,staffShopTaskPageDto);
        return R.ok(page.setRecords(shopTaskPageVoList));
    }
    @RequestMapping(value = "/staffAddTask", method = RequestMethod.POST)
    @ApiOperation(value = "新建任务")
    public R staffAddTask(@RequestBody StaffAddTaskDto staffAddTaskDto) {
        Long userId = SecurityUtils.getUserId();
        staffAddTaskDto.setUserId(userId);
        shopTaskService.staffAddTask(staffAddTaskDto);
        return R.ok();
    }
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtFrozenShopDto.java
New file
@@ -0,0 +1,22 @@
package com.ruoyi.shop.domain.dto;
import com.ruoyi.system.api.domain.dto.MgtBaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName MgtFrozenShopDto
 * @Description TODO
 * @Author jqs
 * @Date 2023/7/15 13:51
 * @Version 1.0
 */
@Data
public class MgtFrozenShopDto extends MgtBaseDto {
    @ApiModelProperty(value = "商户id")
    private Long shopId;
    @ApiModelProperty(value="冻结状态0解冻1冻结")
    private Integer frozenFlag;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopPageDto.java
@@ -4,8 +4,6 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @author jqs34
 * @ClassName MgtShopPageDto
@@ -94,6 +92,4 @@
    @ApiModelProperty(value = "商铺id")
    private Integer shopId;
    @ApiModelProperty(value = "多个用户的id")
    private List<Long> ids;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffAddTaskDto.java
New file
@@ -0,0 +1,29 @@
package com.ruoyi.shop.domain.dto;
import com.ruoyi.system.api.domain.dto.StaffBaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName StaffAddTaskDto
 * @Description TODO
 * @Author jqs
 * @Date 2023/7/15 18:06
 * @Version 1.0
 */
@Data
public class StaffAddTaskDto extends StaffBaseDto {
    @ApiModelProperty(value="任务时间")
    private Long shopId;
    @ApiModelProperty(value="任务时间")
    private String taskDate;
    @ApiModelProperty(value="任务标题")
    private String taskTitle;
    @ApiModelProperty(value="紧急程度")
    private String emergencyState;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffAgencyPageDto.java
New file
@@ -0,0 +1,19 @@
package com.ruoyi.shop.domain.dto;
import com.ruoyi.system.api.domain.dto.StaffPageDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName StaffAgencyPageDto
 * @Description TODO
 * @Author jqs
 * @Date 2023/7/14 19:17
 * @Version 1.0
 */
@Data
public class StaffAgencyPageDto extends StaffPageDto {
    @ApiModelProperty(value = "代理商id")
    private Long agencyId;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffShopCCEditDto.java
New file
@@ -0,0 +1,23 @@
package com.ruoyi.shop.domain.dto;
import com.ruoyi.system.api.domain.dto.StaffBaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName StaffShopCCEditDto
 * @Description TODO
 * @Author jqs
 * @Date 2023/7/15 11:38
 * @Version 1.0
 */
@Data
public class StaffShopCCEditDto extends StaffBaseDto {
    @ApiModelProperty(value = "商户id")
    private Long shopId;
    @ApiModelProperty(value = "店铺设置状态")
    private String shopCustomStatus;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffShopECEditDto.java
New file
@@ -0,0 +1,26 @@
package com.ruoyi.shop.domain.dto;
import com.ruoyi.shop.domain.vo.ExtendContactsVo;
import com.ruoyi.system.api.domain.dto.StaffBaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @ClassName ShopExtendContactsEditDto
 * @Description TODO
 * @Author jqs
 * @Date 2023/7/15 11:03
 * @Version 1.0
 */
@Data
public class StaffShopECEditDto extends StaffBaseDto {
    @ApiModelProperty(value = "商户id")
    private Long shopId;
    @ApiModelProperty(value="额外联系人")
    private List<ExtendContactsVo> extendContactsVoList;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffShopEstimateEditDto.java
New file
@@ -0,0 +1,47 @@
package com.ruoyi.shop.domain.dto;
import com.ruoyi.system.api.domain.dto.StaffBaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName StaffShopEstimateEditDto
 * @Description TODO
 * @Author jqs
 * @Date 2023/7/15 10:17
 * @Version 1.0
 */
@Data
public class StaffShopEstimateEditDto extends StaffBaseDto {
    @ApiModelProperty(value = "商户id")
    private Long shopId;
    @ApiModelProperty(value="扶持能力1.有2.没有")
    private Integer supportingCapacityFlag;
    @ApiModelProperty(value="店面操作人数1.1人2.1人以上")
    private Integer operationPersonFlag;
    @ApiModelProperty(value="执行力1.强2.弱")
    private Integer executiveForceFlag;
    @ApiModelProperty(value="格局1.大2.小")
    private Integer patternFlag;
    @ApiModelProperty(value="人脉1.宽2.窄")
    private Integer connectionFlag;
    @ApiModelProperty(value="经济能力1.强2.差")
    private Integer economicAbilityFlag;
    @ApiModelProperty(value="与合作商关系1.好2.差")
    private Integer relationPartner;
    @ApiModelProperty(value="曾从事事业")
    private String businessHistory;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffShopPageDto.java
@@ -17,9 +17,11 @@
    @ApiModelProperty(value = "商户类型1经销商2代理商")
    private Integer shopType;
    //合作商状态
    @ApiModelProperty(value = "店铺设置状态")
    private String shopCustomStatus;
    //合作商等级
    @ApiModelProperty(value = "店铺等级")
    private String shopLevel;
    @ApiModelProperty(value = "归属员工")
    private Long belongUserId;
@@ -30,20 +32,8 @@
    @ApiModelProperty(value = "签约结束时间")
    private String signEndTime;
    @ApiModelProperty(value = "签约区域code")
    private String signAreaCode;
    @ApiModelProperty(value = "推荐人")
    private String recommendPerson;
    @ApiModelProperty(value = "店铺地址省code")
    private String shopProvinceCode;
    @ApiModelProperty(value = "店铺地址市code")
    private String shopCityCode;
    @ApiModelProperty(value = "店铺地址区code")
    private String shopAreaCode;
    @ApiModelProperty(value = "签约省code")
    private String signProvinceCode;
@@ -51,19 +41,25 @@
    @ApiModelProperty(value = "签约市code")
    private String signCityCode;
    @ApiModelProperty(value = "商户状态0冻结1正常2终止合作")
    private Integer shopStatus;
    @ApiModelProperty(value = "扶持能力1.有2.没有")
    private Integer supportingCapacityFlag;
//    @ApiModelProperty(value = "来源渠道")
//    private String shopSource;
//
//    @ApiModelProperty(value = "店铺设置状态")
//    private String shopCustomStatus;
//
//    @ApiModelProperty(value = "到期标记")
//    private Integer expireFlag;
//
//    @ApiModelProperty(value = "商户标签 多个,隔开")
//    private String shopTags;
    @ApiModelProperty(value = "店面操作人数1.1人2.1人以上")
    private Integer operationPersonFlag;
    @ApiModelProperty(value = "执行力1.强2.弱")
    private Integer executiveForceFlag;
    @ApiModelProperty(value = "格局1.大2.小")
    private Integer patternFlag;
    @ApiModelProperty(value = "人脉1.宽2.窄")
    private Integer connectionFlag;
    @ApiModelProperty(value = "经济能力1.强2.差")
    private Integer economicAbilityFlag;
    @ApiModelProperty(value = "与合作商关系1.好2.差")
    private Integer relationPartner;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffShopTaskPageDto.java
New file
@@ -0,0 +1,22 @@
package com.ruoyi.shop.domain.dto;
import com.ruoyi.system.api.domain.dto.StaffPageDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName StaffShopTaskPageDto
 * @Description TODO
 * @Author jqs
 * @Date 2023/7/14 19:37
 * @Version 1.0
 */
@Data
public class StaffShopTaskPageDto extends StaffPageDto {
    @ApiModelProperty(value = "代理商id")
    private Long shopId;
    @ApiModelProperty(value = "任务状态0未开始1待处理2已处理3已过期")
    private Integer taskStatus;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/ShopTaskRecord.java
@@ -1,16 +1,16 @@
package com.ruoyi.shop.domain.pojo.task;
import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
 * <p>
@@ -72,6 +72,8 @@
    @TableField("create_time")
    private Date createTime;
    @TableField("custom_follow_type")
    private String customFollowType;
    @Override
    protected Serializable pkVal() {
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/ExtendContactsVo.java
New file
@@ -0,0 +1,22 @@
package com.ruoyi.shop.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName ExtendContactsVo
 * @Description TODO
 * @Author jqs
 * @Date 2023/7/15 10:48
 * @Version 1.0
 */
@Data
public class ExtendContactsVo {
    @ApiModelProperty(value="联系人姓名")
    private String name;
    @ApiModelProperty(value="联系人电话")
    private String phone;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopPageVo.java
@@ -92,4 +92,10 @@
    @Excel(name = "店铺设置状态", width = 30)
    @ApiModelProperty(value="店铺设置状态")
    private String shopCustomStatus;
    @ApiModelProperty(value="冻结状态0解冻1冻结")
    private Integer frozenFlag;
    @ApiModelProperty(value="合作状态0终止1开启")
    private Integer cooperativeFlag;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffAgencyTaskRecordPageVo.java
New file
@@ -0,0 +1,60 @@
package com.ruoyi.shop.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
 * @ClassName StaffAgencyTaskRecordPageVo
 * @Description TODO
 * @Author jqs
 * @Date 2023/7/14 19:15
 * @Version 1.0
 */
@Data
public class StaffAgencyTaskRecordPageVo {
    @ApiModelProperty(value = "用户id")
    private Long userId;
    @ApiModelProperty(value = "用户名称")
    private String userName;
    @ApiModelProperty(value = "用户头像")
    private String userPicture;
    @ApiModelProperty(value = "跟进id")
    private Long followId;
    @ApiModelProperty(value = "任务id")
    private String taskId;
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @ApiModelProperty(value="跟踪类型1电话2手动")
    private Integer followType;
    @ApiModelProperty(value="电话时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date callTime;
    @ApiModelProperty(value="跟踪内容")
    private String followContent;
    @ApiModelProperty(value="拨打电话")
    private String callPhone;
    @ApiModelProperty(value="跟进图片地址")
    private List<String> picture;
    @ApiModelProperty(value="跟进视频地址")
    private List<String> video;
    @ApiModelProperty(value="跟进音频地址")
    private List<String> audio;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffHomeShopTotalVo.java
New file
@@ -0,0 +1,33 @@
package com.ruoyi.shop.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName StaffHomeShopTotalVo
 * @Description TODO
 * @Author jqs
 * @Date 2023/7/14 17:06
 * @Version 1.0
 */
@Data
public class StaffHomeShopTotalVo {
    @ApiModelProperty(value = "待跟进客户")
    private Integer followMember;
    @ApiModelProperty(value = "新增客户")
    private Integer newMember;
    @ApiModelProperty(value = "合作商跟进任务")
    private Integer shopTask;
    @ApiModelProperty(value = "合作商总数")
    private Integer shopTotal;
    @ApiModelProperty(value = "代理商数")
    private Integer agencyTotal;
    @ApiModelProperty(value = "经销商数")
    private Integer dealerTotal;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffMyShopTaskRecordPageVo.java
New file
@@ -0,0 +1,65 @@
package com.ruoyi.shop.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
 * @ClassName StaffMyShopTaskRecordPageVo
 * @Description TODO
 * @Author jqs
 * @Date 2023/7/14 19:34
 * @Version 1.0
 */
@Data
public class StaffMyShopTaskRecordPageVo {
    @ApiModelProperty(value = "用户id")
    private Long userId;
    @ApiModelProperty(value = "用户名称")
    private String userName;
    @ApiModelProperty(value = "用户头像")
    private String userPicture;
    @ApiModelProperty(value = "跟进id")
    private Long followId;
    @ApiModelProperty(value = "任务id")
    private String taskId;
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @ApiModelProperty(value="跟踪类型1电话2手动")
    private String followType;
    @ApiModelProperty(value="跟进类型")
    private String customFollowType;
    @ApiModelProperty(value="电话时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date callTime;
    @ApiModelProperty(value="跟踪内容")
    private String followContent;
    @ApiModelProperty(value="拨打电话")
    private String callPhone;
    @ApiModelProperty(value="跟进图片地址")
    private List<String> picture;
    @ApiModelProperty(value="跟进视频地址")
    private List<String> video;
    @ApiModelProperty(value="跟进音频地址")
    private List<String> audio;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffShopInfoGetVo.java
New file
@@ -0,0 +1,103 @@
package com.ruoyi.shop.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
 * @ClassName StaffShopInfoGetVo
 * @Description TODO
 * @Author jqs
 * @Date 2023/7/14 16:47
 * @Version 1.0
 */
@Data
public class StaffShopInfoGetVo {
    @ApiModelProperty(value = "今日预约")
    private Integer todayReservation;
    @ApiModelProperty(value = "待处理订单")
    private Integer unHandleOrder;
    @ApiModelProperty(value = "合作商跟进任务")
    private Integer shopTask;
    @ApiModelProperty(value = "店铺营业额")
    private BigDecimal shopTurnover;
    @ApiModelProperty(value = "剩余周期人数")
    private Integer cycleSurp;
    @ApiModelProperty(value = "剩余体验人数")
    private Integer explorationSurp;
    @ApiModelProperty(value = "区域会员新增")
    private Integer newAreaMember;
    @ApiModelProperty(value = "区域营业额")
    private BigDecimal areaTurnover;
    @ApiModelProperty(value = "商户id")
    private Long shopId;
    @ApiModelProperty(value="商户名称")
    private String shopName;
    @ApiModelProperty(value="商户封面")
    private String shopPicture;
    @ApiModelProperty(value="营业开始时间")
    private String businessStartTime;
    @ApiModelProperty(value="营业结束时间")
    private String businessEndTime;
    @ApiModelProperty(value="店主姓名")
    private String shopownerName;
    @ApiModelProperty(value="店主联系方式")
    private String shopownerPhone;
    @ApiModelProperty(value="额外联系人")
    private List<ExtendContactsVo> extendContactsVoList;
    @ApiModelProperty(value="店铺地址")
    private String shopAddress;
    @ApiModelProperty(value = "店铺设置状态")
    private String shopCustomStatus;
    @ApiModelProperty(value="商户标签")
    private String shopTags;
    @ApiModelProperty(value="扶持能力1.有2.没有")
    private Integer supportingCapacityFlag;
    @ApiModelProperty(value="店面操作人数1.1人2.1人以上")
    private Integer operationPersonFlag;
    @ApiModelProperty(value="执行力1.强2.弱")
    private Integer executiveForceFlag;
    @ApiModelProperty(value="格局1.大2.小")
    private Integer patternFlag;
    @ApiModelProperty(value="人脉1.宽2.窄")
    private Integer connectionFlag;
    @ApiModelProperty(value="经济能力1.强2.差")
    private Integer economicAbilityFlag;
    @ApiModelProperty(value="与合作商关系1.好2.差")
    private Integer relationPartner;
    @ApiModelProperty(value="曾从事事业")
    private String businessHistory;
    @ApiModelProperty(value="冻结状态0解冻1冻结")
    private Integer frozenFlag;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffShopInfoVo.java
File was deleted
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffShopPageVo.java
New file
@@ -0,0 +1,42 @@
package com.ruoyi.shop.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName StaffShopPageVo
 * @Description TODO
 * @Author jqs
 * @Date 2023/7/14 15:12
 * @Version 1.0
 */
@Data
public class StaffShopPageVo {
    @ApiModelProperty(value = "商户id")
    private Long shopId;
    @ApiModelProperty(value="商户名称")
    private String shopName;
    @ApiModelProperty(value="店铺地址")
    private String shopAddress;
    @ApiModelProperty(value="店主姓名")
    private String shopownerName;
    @ApiModelProperty(value="店主联系方式")
    private String shopownerPhone;
    @ApiModelProperty(value="合作期限")
    private String cooperationTime;
    @ApiModelProperty(value="商户封面")
    private String shopPicture;
    @ApiModelProperty(value="所属经销商")
    private String belongShopName;
    @ApiModelProperty(value="商户状态")
    private Integer shopStatus;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffShopSimpleTotalVo.java
New file
@@ -0,0 +1,24 @@
package com.ruoyi.shop.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName StaffShopSimpleTotalVo
 * @Description TODO
 * @Author jqs
 * @Date 2023/7/14 15:49
 * @Version 1.0
 */
@Data
public class StaffShopSimpleTotalVo {
    @ApiModelProperty(value = "总数")
    private Integer shopTotal;
    @ApiModelProperty(value = "准店铺")
    private Integer closeTotal;
    @ApiModelProperty(value = "开业中")
    private Integer openTotal;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffShopTaskPageVo.java
New file
@@ -0,0 +1,46 @@
package com.ruoyi.shop.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * @ClassName StaffShopTaskPageVo
 * @Description TODO
 * @Author jqs
 * @Date 2023/7/15 14:44
 * @Version 1.0
 */
@Data
public class StaffShopTaskPageVo {
    @ApiModelProperty(value = "任务id")
    private String taskId;
    @ApiModelProperty(value = "任务时间")
    private String taskDate;
    @ApiModelProperty(value="任务内容")
    private String taskContent;
    @ApiModelProperty(value="紧急情况")
    private String emergencyState;
    @ApiModelProperty(value="今日标记")
    private Integer todayFlag;
    @ApiModelProperty(value = "用户id")
    private Long userId;
    @ApiModelProperty(value = "用户名称")
    private String userName;
    @ApiModelProperty(value = "用户头像")
    private String userPicture;
    @ApiModelProperty(value="跟进时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date followTime;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java
@@ -23,6 +23,15 @@
 * @since 2023-04-25
 */
public interface ShopMapper extends BaseMapper<Shop> {
    /**
     * @description
     * @author  jqs
     * @date    2023/7/15 10:39
     * @param shop
     * @return  int
     */
    int updateShop(Shop shop);
    /**
     * 分页获取商户
     * @param page
@@ -192,4 +201,41 @@
     * @return  List<MgtMapIntTotalVo>
     */
    List<MgtMapIntTotalVo> listShopRecommendRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description  员工端获取商户列表
     * @author  jqs
     * @date    2023/7/14 15:26
     * @param page
     * @param staffShopPageDto
     * @return  List<StaffShopPageVo>
     */
    List<StaffShopPageVo> pageStaffShop(Page page, @Param("param")StaffShopPageDto staffShopPageDto);
    /**
     * @description  获取员工端商户数量统计
     * @author  jqs
     * @date    2023/7/14 15:51
     * @param userIdList
     * @return  StaffShopSimpleTotalVo
     */
    StaffShopSimpleTotalVo getStaffSimpleTotal(@Param("userIdList")List<Long> userIdList);
    /**
     * @description  获取员工端商户数量统计
     * @author  jqs
     * @date    2023/7/14 18:18
     * @param userIdList
     * @return  StaffHomeShopTotalVo
     */
    StaffHomeShopTotalVo getStaffHomeTotal(@Param("userIdList")List<Long> userIdList);
    /**
     * @description  更新扩展联系人
     * @author  jqs
     * @date    2023/7/15 11:12
     * @param shop
     * @return  void
     */
    void updateExtendContacts(Shop shop);
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/AgencyTaskRecordMapper.java
@@ -5,9 +5,11 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.shop.domain.dto.MerAgencyTaskPageDto;
import com.ruoyi.shop.domain.dto.MgtShopTaskPageDto;
import com.ruoyi.shop.domain.dto.StaffAgencyPageDto;
import com.ruoyi.shop.domain.pojo.task.AgencyTaskRecord;
import com.ruoyi.shop.domain.vo.MerAgencyTaskRecordPageVo;
import com.ruoyi.shop.domain.vo.MgtAgencyTaskRecordPageVo;
import com.ruoyi.shop.domain.vo.StaffAgencyTaskRecordPageVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -34,4 +36,16 @@
     * @return
     */
    List<MgtAgencyTaskRecordPageVo> pageMgtAgencyFollow(@Param("param")MgtShopTaskPageDto mgtShopTaskPageDto);
    /**
     * @description  员工端分页获取经销商跟进任务记录列表
     * @author  jqs
     * @date    2023/7/14 19:24
     * @param page
     * @param staffAgencyPageDto
     * @return  List<StaffAgencyTaskRecordPageVo>
     */
    List<StaffAgencyTaskRecordPageVo> pageStaffAgencyTaskRecord(Page page, @Param("param")StaffAgencyPageDto staffAgencyPageDto);
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/MemberTaskMapper.java
@@ -30,7 +30,7 @@
    /**
     * @description  获取进行中任务数
     * @description  商户端获取进行中任务数
     * @author  jqs
     * @date    2023/6/26 13:45
     * @param shopId
@@ -48,5 +48,5 @@
     */
    MemberTaskSimpleVo getLastMemberTask(@Param("userId")Long userId);
    Integer getMembersIngTotal(List<Long> shopIds);
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/ShopTaskMapper.java
@@ -1,10 +1,10 @@
package com.ruoyi.shop.mapper.task;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.shop.domain.dto.MgtShopTaskPageDto;
import com.ruoyi.shop.domain.pojo.task.ShopTask;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.shop.domain.vo.MgtShopTaskRecordPageVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.shop.domain.dto.StaffShopTaskPageDto;
import com.ruoyi.shop.domain.pojo.task.ShopTask;
import com.ruoyi.shop.domain.vo.StaffShopTaskPageVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -19,5 +19,22 @@
 */
public interface ShopTaskMapper extends BaseMapper<ShopTask> {
    /**
     * @description  员工端获取进行中商户任务数
     * @author  jqs
     * @param shopIds
     * @return  Integer
     */
    Integer getShopIngTotal(@Param("shopIds") List<Long> shopIds);
    /**
     * @description  分页获取员工跟进任务
     * @author  jqs
     * @date    2023/7/15 15:09
     * @param page
     * @param staffShopTaskPageDto
     * @return  List<StaffShopTaskPageVo>
     */
    List<StaffShopTaskPageVo> pageStaffShopTask(Page page, @Param("param")StaffShopTaskPageDto staffShopTaskPageDto);
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/ShopTaskRecordMapper.java
@@ -1,9 +1,12 @@
package com.ruoyi.shop.mapper.task;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.shop.domain.dto.MgtShopTaskPageDto;
import com.ruoyi.shop.domain.dto.StaffShopTaskPageDto;
import com.ruoyi.shop.domain.pojo.task.ShopTaskRecord;
import com.ruoyi.shop.domain.vo.MgtShopTaskRecordPageVo;
import com.ruoyi.shop.domain.vo.StaffMyShopTaskRecordPageVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -24,4 +27,24 @@
     * @return
     */
    List<MgtShopTaskRecordPageVo> pageMgtShopFollow(@Param("param") MgtShopTaskPageDto mgtShopTaskPageDto);
    /**
     * @description  员工端分页获取我的跟进任务记录列表
     * @author  jqs
     * @date    2023/7/14 19:40
     * @param page
     * @param staffShopTaskPageDto
     * @return  List<StaffMyShopTaskRecordPageVo>
     */
    List<StaffMyShopTaskRecordPageVo> pageStaffMyShopTaskRecord(Page page, @Param("param")StaffShopTaskPageDto staffShopTaskPageDto);
    /**
     * @description  员工端分页获取商户跟进任务记录列表
     * @author  jqs
     * @date    2023/7/15 17:05
     * @param page
     * @param staffShopTaskPageDto
     * @return  List<StaffMyShopTaskRecordPageVo>
     */
    List<StaffMyShopTaskRecordPageVo> pageStaffShopTaskRecord(Page page,  @Param("param")StaffShopTaskPageDto staffShopTaskPageDto);
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.shop.service.impl.shop;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -18,6 +19,7 @@
import com.ruoyi.shop.service.shop.*;
import com.ruoyi.shop.service.task.MemberTaskService;
import com.ruoyi.shop.service.task.ShopFileService;
import com.ruoyi.shop.service.task.ShopTaskService;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.domain.dto.*;
import com.ruoyi.system.api.domain.poji.config.SysTag;
@@ -99,10 +101,10 @@
    private ShopTransferRecordService shopTransferRecordService;
    @Resource
    private RemoteUserService remoteUserService;
    private RemoteSysStaffService remoteSysStaffService;
    @Resource
    private RemoteSysStaffService remoteSysStaffService;
    private ShopTaskService shopTaskService;
    /**
     * 获取商户详情
@@ -200,6 +202,7 @@
            shop.setCreateUserId(mgtEditShopDto.getUserId());
            shop.setFrozenFlag(0);
            shop.setCooperativeFlag(0);
            shop.setAuthFlag(0);
            newShop = true;
        }
        BeanUtils.copyProperties(mgtEditShopDto,shop);
@@ -380,18 +383,55 @@
                 throw new ServiceException(AppErrorConstant.COOPERATION_TIME_ERROR);
            }*/
            shop.setCooperativeFlag(1);
            if(shop.getShopStatus()==2&&shop.getFrozenFlag()==0){
                shop.setShopStatus(1);
            }else if(shop.getShopStatus()==2&&shop.getFrozenFlag()==1){
                shop.setShopStatus(0);
            }
        }else{
            shop.setCooperativeFlag(0);
            shop.setShopStatus(2);
        }
        shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag()));
        shop.setUpdateTime(new Date());
        shop.setUpdateUserId(mgtTerminateCooperationDto.getUserId());
        this.saveOrUpdate(shop);
    }
    /**
     * @description  冻结商户
     * @author  jqs
     * @date    2023/7/15 13:56
     * @param mgtFrozenShopDto
     * @return  void
     */
    @Override
    public void frozenMgtShop(MgtFrozenShopDto mgtFrozenShopDto){
        Shop shop = this.getById(mgtFrozenShopDto.getShopId());
        if(mgtFrozenShopDto.getFrozenFlag()==1){
            shop.setFrozenFlag(1);
        }else{
            shop.setFrozenFlag(0);
        }
        shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag()));
    }
    /**
     * @description  处理商户状态
     * @author  jqs
     * @date    2023/7/15 14:09
     * @param
     * @return  Integer
     */
    private Integer handelShopStatus(Integer frozenFlag, Integer cooperativeFlag, Integer authFlag){
        Integer shopStatus = 1;
        if(frozenFlag == 1){
            shopStatus = 0;
            return shopStatus;
        }
        if(authFlag == 0){
            shopStatus = 3;
            return shopStatus;
        }
        if(cooperativeFlag == 0){
            shopStatus = 2;
            return shopStatus;
        }
        return shopStatus;
    }
@@ -670,37 +710,31 @@
     * @return
     */
    @Override
    public MerHomeShopTotalVo getStaffHomeTotal(Long userId){
    public StaffHomeShopTotalVo getStaffHomeTotal(Long userId){
        List<Long> userIds = null;
        List<Long> shopIds = null;
        //如果是leader 查询leader下面所有的员工下的所有shopId
        if(remoteSysStaffService.isLeader()){
            Long deptId = sysUserService.getSysUser(userId).getData().getDeptId();
            userIds = remoteSysStaffService.getUserIds(deptId).getData();
            userIds = sysUserService.getUserIdsByDept(userId).getData();
            //根据用户所有id查询关联的商户id
            MgtBasePlatformDto mgtBasePlatformDto = new MgtBasePlatformDto();
            mgtBasePlatformDto.setUserIdList(userIds);
            shopIds = shopMapper.listShopIdByTotal(mgtBasePlatformDto);
            Shop shop = this.getShopByBelongUserId(userId);
            shopIds.add(shop.getShopId());
        }else {
            //普通员工查询商户归属的shopId
            MgtShopIdByCodeDto mgtShopIdByCodeDto = new MgtShopIdByCodeDto();
            mgtShopIdByCodeDto.setBelongUserId(userId);
            shopIds = shopMapper.getShopIdByCode(mgtShopIdByCodeDto);
            Shop shop = this.getShopByBelongUserId(userId);
            shopIds.add(shop.getShopId());
        }
            //分别查询
            MerHomeShopTotalVo merHomeShopTotalVo = new MerHomeShopTotalVo();
            merHomeShopTotalVo.setShopIds(shopIds);
            MerHomeShopTotalVo orderVo = remoteOrderService.getMerHomeTotal(merHomeShopTotalVo).getData();
            merHomeShopTotalVo.setTodayShop(null!=orderVo?orderVo.getTodayShop():0);
            merHomeShopTotalVo.setUnHandleOrder(null!=orderVo?orderVo.getUnHandleOrder():0);
            merHomeShopTotalVo.setShopTurnover(null!=orderVo?orderVo.getShopTurnover():BigDecimal.ZERO);
            ShopTotal shopTotal = shopTotalService.shopsTotalByIds(shopIds);
            merHomeShopTotalVo.setCycleSurp(null!=shopTotal?shopTotal.getUseableCyclePerson():0);
            merHomeShopTotalVo.setExplorationSurp(null!=shopTotal?shopTotal.getUseableExperiencePerson():0);
            Integer taskCount = memberTaskService.getMembersIngTotal(shopIds);
            merHomeShopTotalVo.setTask(taskCount);
            return merHomeShopTotalVo;
        }
        //分别查询
        StaffHomeShopTotalVo staffHomeShopTotalVo = shopMapper.getStaffHomeTotal(shopIds);
        Integer shopTaskCount = shopTaskService.getShopIngTotal(shopIds);
        staffHomeShopTotalVo.setFollowMember(0);
        staffHomeShopTotalVo.setNewMember(0);
        staffHomeShopTotalVo.setShopTask(shopTaskCount);
        return staffHomeShopTotalVo;
    }
    /**
     * 获取商户端
     * @param userId
@@ -1058,4 +1092,198 @@
                }).collect(Collectors.toList());
        return simpleShopVoList;
    }
    /**
     * @description  获取用户管理商户
     * @author  jqs
     * @date    2023/7/14 10:00
     * @param userId
     * @return  Shop
     */
    @Override
    public Shop getShopByBelongUserId(Long userId){
        LambdaQueryWrapper<Shop> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Shop::getDelFlag,0);
        queryWrapper.eq(Shop::getBelongUserId,userId);
        return this.getOne(queryWrapper,false);
    }
    /**
     * @description  员工端获取商户列表
     * @author  jqs
     * @date    2023/7/14 15:26
     * @param page
     * @param staffShopPageDto
     * @return  List<StaffShopPageVo>
     */
    @Override
    public List<StaffShopPageVo> pageStaffShop(Page page, StaffShopPageDto staffShopPageDto){
        List<StaffShopPageVo> staffShopPageVoList = shopMapper.pageStaffShop(page, staffShopPageDto);
        return staffShopPageVoList;
    }
    /**
     * @description  获取员工端商户数量统计
     * @author  jqs
     * @date    2023/7/14 15:51
     * @param userId
     * @return  StaffShopSimpleTotalVo
     */
    @Override
    public StaffShopSimpleTotalVo getStaffSimpleTotal(Long userId){
        List<Long> userIdList = null;
        if(remoteSysStaffService.isLeader()){
            userIdList = sysUserService.getUserIdsByDept(userId).getData();
            userIdList.add(userId);
        }else {
            userIdList.add(userId);
        }
        return shopMapper.getStaffSimpleTotal(userIdList);
    }
    /**
     * @description  员工端获取商户详情
     * @author  jqs
     * @date    2023/7/14 18:32
     * @param shopId
     * @return  StaffShopInfoGetVo
     */
    @Override
    public StaffShopInfoGetVo getStaffShopInfo(Long shopId) {
        // 创建员工商店信息对象
        StaffShopInfoGetVo staffShopInfoGetVo = new StaffShopInfoGetVo();
        // 通过商店ID获取商店信息
        Shop shop = this.getByShopId(shopId);
        // 获取商店文件列表
        List<ShopFile> shopFileList = shopFileService.listShopFileByShopId(shopId);
        // 初始化商店图片
        String shopPicture = null;
        // 遍历商店文件列表,获取商店图片
        if (shopFileList != null && !shopFileList.isEmpty()) {
            for (ShopFile shopFile : shopFileList) {
                if (shopFile.getFileType() == 1) {
                    shopPicture = shopFile.getFileUrl();
                    break;
                }
            }
        }
        // 创建商店总览对象,并设置商店ID
        MerHomeShopTotalVo merHomeShopTotalVo = new MerHomeShopTotalVo();
        merHomeShopTotalVo.setShopId(shopId);
        // 通过远程订单服务获取商店总览信息
        MerHomeShopTotalVo orderVo = remoteOrderService.getMerHomeTotal(merHomeShopTotalVo).getData();
        // 获取商店总计信息
        ShopTotal shopTotal = shopTotalService.getById(shopId);
        // 获取商店任务计数
        Integer taskCount = memberTaskService.getMemberIngTotal(shopId);
        // 设置员工商店信息对象的属性
        staffShopInfoGetVo.setTodayReservation(0);
        staffShopInfoGetVo.setUnHandleOrder(orderVo.getUnHandleOrder());
        staffShopInfoGetVo.setShopTask(taskCount);
        staffShopInfoGetVo.setShopTurnover(orderVo.getShopTurnover());
        staffShopInfoGetVo.setCycleSurp(shopTotal.getUseableCyclePerson());
        staffShopInfoGetVo.setExplorationSurp(shopTotal.getUseableExperiencePerson());
        staffShopInfoGetVo.setShopId(shopId);
        staffShopInfoGetVo.setShopName(shop.getShopName());
        staffShopInfoGetVo.setShopPicture(shopPicture);
        staffShopInfoGetVo.setBusinessStartTime(shop.getBusinessStartTime());
        staffShopInfoGetVo.setBusinessEndTime(shop.getBusinessEndTime());
        staffShopInfoGetVo.setShopownerName(shop.getShopownerName());
        staffShopInfoGetVo.setShopownerPhone(shop.getShopownerPhone());
        staffShopInfoGetVo.setShopAddress(shop.getShopAreaName() + shop.getShopAddress());
        staffShopInfoGetVo.setShopCustomStatus(shop.getShopCustomStatus());
        staffShopInfoGetVo.setShopTags(shop.getShopTags());
        staffShopInfoGetVo.setSupportingCapacityFlag(shop.getSupportingCapacityFlag());
        staffShopInfoGetVo.setOperationPersonFlag(shop.getOperationPersonFlag());
        staffShopInfoGetVo.setExecutiveForceFlag(shop.getExecutiveForceFlag());
        staffShopInfoGetVo.setPatternFlag(shop.getPatternFlag());
        staffShopInfoGetVo.setConnectionFlag(shop.getConnectionFlag());
        staffShopInfoGetVo.setEconomicAbilityFlag(shop.getEconomicAbilityFlag());
        staffShopInfoGetVo.setRelationPartner(shop.getRelationPartner());
        staffShopInfoGetVo.setBusinessHistory(shop.getBusinessHistory());
        staffShopInfoGetVo.setNewAreaMember(0);
        staffShopInfoGetVo.setAreaTurnover(BigDecimal.ZERO);
        staffShopInfoGetVo.setFrozenFlag(shop.getFrozenFlag());
        // 如果商店类型为1,则获取该商店ID列表的新区域成员和总订单金额
        if (shop.getShopType() == 1) {
            List<Long> shopIdList = this.listShopIdByShopId(shop.getShopId());
            if (shopIdList != null && !shopIdList.isEmpty()) {
                Integer count = remoteMemberService.getAreaNewMember(shopIdList).getData();
                staffShopInfoGetVo.setNewAreaMember(count);
                ShopTotal shopTotalAll = shopTotalService.shopsTotalByIds(shopIdList);
                staffShopInfoGetVo.setAreaTurnover(shopTotalAll.getTotalOrderMoney());
            }
        }
        // 如果商店的扩展联系方式不为空,则设置员工商店信息对象的扩展联系方式列表
        String extendContacts = shop.getExtendContacts();
        if (StringUtils.isNotBlank(extendContacts)) {
            List<ExtendContactsVo> extendContactsVoList = JSON.parseArray(extendContacts, ExtendContactsVo.class);
            staffShopInfoGetVo.setExtendContactsVoList(extendContactsVoList);
        }
        // 返回员工商店信息对象
        return staffShopInfoGetVo;
    }
    /**
     * @description  修改商户评估
     * @author  jqs
     * @date    2023/7/15 10:18
     * @param staffShopEstimateEditDto
     * @return  void
     */
    @Override
    public void editShopEstimate(StaffShopEstimateEditDto staffShopEstimateEditDto){
        Shop shop = new Shop();
        shop.setShopId(staffShopEstimateEditDto.getShopId());
        shop.setSupportingCapacityFlag(staffShopEstimateEditDto.getSupportingCapacityFlag());
        shop.setOperationPersonFlag(staffShopEstimateEditDto.getOperationPersonFlag());
        shop.setExecutiveForceFlag(staffShopEstimateEditDto.getExecutiveForceFlag());
        shop.setPatternFlag(staffShopEstimateEditDto.getPatternFlag());
        shop.setConnectionFlag(staffShopEstimateEditDto.getConnectionFlag());
        shop.setEconomicAbilityFlag(staffShopEstimateEditDto.getEconomicAbilityFlag());
        shop.setRelationPartner(staffShopEstimateEditDto.getRelationPartner());
        shop.setBusinessHistory(staffShopEstimateEditDto.getBusinessHistory());
        shop.setUpdateUserId(staffShopEstimateEditDto.getUserId());
        shop.setUpdateTime(new Date());
        shopMapper.updateShop(shop);
    }
    /**
     * @description  修改店铺扩展联系人
     * @author  jqs
     * @date    2023/7/15 11:06
     * @param staffShopECEditDto
     * @return  void
     */
    @Override
    public void editExtendContacts(StaffShopECEditDto staffShopECEditDto){
        Shop shop = new Shop();
        String extendContacts = null;
        List<ExtendContactsVo> extendContactsVoList = staffShopECEditDto.getExtendContactsVoList();
        if(extendContactsVoList!=null&&!extendContactsVoList.isEmpty()){
            extendContacts = JSON.toJSONString(extendContactsVoList);
        }
        shop.setExtendContacts(extendContacts);
        shop.setShopId(staffShopECEditDto.getShopId());
        shop.setUpdateUserId(staffShopECEditDto.getUserId());
        shop.setUpdateTime(new Date());
        shopMapper.updateExtendContacts(shop);
    }
    /**
     * @description  修改店铺状态
     * @author  jqs
     * @date    2023/7/15 11:51
     * @param staffShopCCEditDto
     * @return  void
     */
    @Override
    public void editShopCustomStatus(StaffShopCCEditDto staffShopCCEditDto){
        Shop shop = new Shop();
        shop.setShopCustomStatus(staffShopCCEditDto.getShopCustomStatus());
        shop.setShopId(staffShopCCEditDto.getShopId());
        shop.setUpdateUserId(staffShopCCEditDto.getUserId());
        shop.setUpdateTime(new Date());
        shopMapper.updateShop(shop);
    }
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskRecordServiceImpl.java
@@ -5,10 +5,12 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.shop.domain.dto.MerAgencyTaskPageDto;
import com.ruoyi.shop.domain.dto.MgtShopTaskPageDto;
import com.ruoyi.shop.domain.dto.StaffAgencyPageDto;
import com.ruoyi.shop.domain.pojo.task.AgencyTaskRecord;
import com.ruoyi.shop.domain.pojo.task.TaskFile;
import com.ruoyi.shop.domain.vo.MerAgencyTaskRecordPageVo;
import com.ruoyi.shop.domain.vo.MgtAgencyTaskRecordPageVo;
import com.ruoyi.shop.domain.vo.StaffAgencyTaskRecordPageVo;
import com.ruoyi.shop.mapper.task.AgencyTaskRecordMapper;
import com.ruoyi.shop.service.task.AgencyTaskRecordService;
import com.ruoyi.shop.service.task.TaskFileService;
@@ -121,4 +123,54 @@
        }
        return mgtAgencyTaskRecordPageVoList;
    }
    /**
     * @description  员工端分页获取经销商跟进任务记录列表
     * @author  jqs
     * @date    2023/7/14 19:24
     * @param page
     * @param staffAgencyPageDto
     * @return  List<StaffAgencyTaskRecordPageVo>
     */
    @Override
    public List<StaffAgencyTaskRecordPageVo> pageStaffAgencyTaskRecord(Page page, StaffAgencyPageDto staffAgencyPageDto){
        List<StaffAgencyTaskRecordPageVo> agencyTaskRecordPageVoList = agencyTaskRecordMapper.pageStaffAgencyTaskRecord(page, staffAgencyPageDto);
        if(agencyTaskRecordPageVoList!=null&&!agencyTaskRecordPageVoList.isEmpty()){
            Long followId;
            List<TaskFile> taskFileList;
            List<String> picture = new ArrayList<>();
            List<String> video = new ArrayList<>();
            List<String> audio = new ArrayList<>();
            Long userId;
            SysUser sysUser;
            for(StaffAgencyTaskRecordPageVo staffAgencyTaskRecordPageVo : agencyTaskRecordPageVoList){
                //获取任务用户信息
                userId = staffAgencyTaskRecordPageVo.getUserId();
                sysUser = remoteUserService.getSysUser(userId).getData();
                staffAgencyTaskRecordPageVo.setUserName(sysUser.getNickName());
                staffAgencyTaskRecordPageVo.setUserPicture(sysUser.getAvatar());
                //获取任务详情文件
                followId = staffAgencyTaskRecordPageVo.getFollowId();
                taskFileList = taskFileService.listByFollowIdAndFollowType(followId,1);
                if(taskFileList!=null&&!taskFileList.isEmpty()){
                    picture = taskFileList.stream().map(k->k.getFileUrl()).collect(Collectors.toList());
                }
                taskFileList = taskFileService.listByFollowIdAndFollowType(followId,2);
                if(taskFileList!=null&&!taskFileList.isEmpty()){
                    video = taskFileList.stream().map(k->k.getFileUrl()).collect(Collectors.toList());
                }
                taskFileList = taskFileService.listByFollowIdAndFollowType(followId,3);
                if(taskFileList!=null&&!taskFileList.isEmpty()){
                    audio = taskFileList.stream().map(k->k.getFileUrl()).collect(Collectors.toList());
                }
                staffAgencyTaskRecordPageVo.setPicture(picture);
                staffAgencyTaskRecordPageVo.setVideo(video);
                staffAgencyTaskRecordPageVo.setAudio(audio);
            }
        }
        return agencyTaskRecordPageVoList;
    }
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java
@@ -213,10 +213,7 @@
        return memberTaskMapper.getMemberIngTotal(shopId);
    }
    @Override
    public Integer getMembersIngTotal(List<Long> shopIds) {
        return memberTaskMapper.getMembersIngTotal(shopIds);
    }
    /**
     * @description  获取最近任务
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskRecordServiceImpl.java
@@ -1,10 +1,13 @@
package com.ruoyi.shop.service.impl.task;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.shop.domain.dto.MgtShopTaskPageDto;
import com.ruoyi.shop.domain.dto.StaffShopTaskPageDto;
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.StaffMyShopTaskRecordPageVo;
import com.ruoyi.shop.mapper.task.ShopTaskRecordMapper;
import com.ruoyi.shop.service.task.ShopTaskRecordService;
import com.ruoyi.shop.service.task.TaskFileService;
@@ -80,6 +83,97 @@
        return mgtShopTaskRecordPageVoList;
    }
    /**
     * @description  员工端分页获取我的跟进任务记录列表
     * @author  jqs
     * @date    2023/7/14 19:40
     * @param page
     * @param staffShopTaskPageDto
     * @return  List<StaffMyShopTaskRecordPageVo>
     */
    @Override
    public List<StaffMyShopTaskRecordPageVo> pageStaffMyShopTaskRecord(Page page, StaffShopTaskPageDto staffShopTaskPageDto){
        List<StaffMyShopTaskRecordPageVo> myShopTaskRecordPageVoList = shopTaskRecordMapper.pageStaffMyShopTaskRecord(page, staffShopTaskPageDto);
        if(myShopTaskRecordPageVoList!=null&&!myShopTaskRecordPageVoList.isEmpty()){
            Long followId;
            List<TaskFile> taskFileList;
            List<String> picture = new ArrayList<>();
            List<String> video = new ArrayList<>();
            List<String> audio = new ArrayList<>();
            Long userId;
            SysUser sysUser;
            for(StaffMyShopTaskRecordPageVo staffMyShopTaskRecordPageVo : myShopTaskRecordPageVoList){
                //获取任务用户信息
                userId = staffMyShopTaskRecordPageVo.getUserId();
                sysUser = remoteUserService.getSysUser(userId).getData();
                staffMyShopTaskRecordPageVo.setUserName(sysUser.getNickName());
                staffMyShopTaskRecordPageVo.setUserPicture(sysUser.getAvatar());
                //获取任务详情文件
                followId = staffMyShopTaskRecordPageVo.getFollowId();
                taskFileList = taskFileService.listByFollowIdAndFollowType(followId,1);
                if(taskFileList!=null&&!taskFileList.isEmpty()){
                    picture = taskFileList.stream().map(k->k.getFileUrl()).collect(Collectors.toList());
                }
                taskFileList = taskFileService.listByFollowIdAndFollowType(followId,2);
                if(taskFileList!=null&&!taskFileList.isEmpty()){
                    video = taskFileList.stream().map(k->k.getFileUrl()).collect(Collectors.toList());
                }
                taskFileList = taskFileService.listByFollowIdAndFollowType(followId,3);
                if(taskFileList!=null&&!taskFileList.isEmpty()){
                    audio = taskFileList.stream().map(k->k.getFileUrl()).collect(Collectors.toList());
                }
                staffMyShopTaskRecordPageVo.setPicture(picture);
                staffMyShopTaskRecordPageVo.setVideo(video);
                staffMyShopTaskRecordPageVo.setAudio(audio);
            }
        }
        return myShopTaskRecordPageVoList;
    }
    /**
     * @description  员工端分页获取商户跟进任务记录列表
     * @author  jqs
     * @date    2023/7/15 17:05
     * @param page
     * @param staffShopTaskPageDto
     * @return  List<StaffMyShopTaskRecordPageVo>
     */
    @Override
    public List<StaffMyShopTaskRecordPageVo> pageStaffShopTaskRecord(Page page, StaffShopTaskPageDto staffShopTaskPageDto){
        List<StaffMyShopTaskRecordPageVo> myShopTaskRecordPageVoList = shopTaskRecordMapper.pageStaffShopTaskRecord(page, staffShopTaskPageDto);
        if(myShopTaskRecordPageVoList!=null&&!myShopTaskRecordPageVoList.isEmpty()){
            Long followId;
            List<TaskFile> taskFileList;
            List<String> picture = new ArrayList<>();
            List<String> video = new ArrayList<>();
            List<String> audio = new ArrayList<>();
            Long userId;
            SysUser sysUser;
            for(StaffMyShopTaskRecordPageVo staffMyShopTaskRecordPageVo : myShopTaskRecordPageVoList){
                //获取任务用户信息
                userId = staffMyShopTaskRecordPageVo.getUserId();
                sysUser = remoteUserService.getSysUser(userId).getData();
                staffMyShopTaskRecordPageVo.setUserName(sysUser.getNickName());
                staffMyShopTaskRecordPageVo.setUserPicture(sysUser.getAvatar());
                //获取任务详情文件
                followId = staffMyShopTaskRecordPageVo.getFollowId();
                taskFileList = taskFileService.listByFollowIdAndFollowType(followId,1);
                if(taskFileList!=null&&!taskFileList.isEmpty()){
                    picture = taskFileList.stream().map(k->k.getFileUrl()).collect(Collectors.toList());
                }
                taskFileList = taskFileService.listByFollowIdAndFollowType(followId,2);
                if(taskFileList!=null&&!taskFileList.isEmpty()){
                    video = taskFileList.stream().map(k->k.getFileUrl()).collect(Collectors.toList());
                }
                taskFileList = taskFileService.listByFollowIdAndFollowType(followId,3);
                if(taskFileList!=null&&!taskFileList.isEmpty()){
                    audio = taskFileList.stream().map(k->k.getFileUrl()).collect(Collectors.toList());
                }
                staffMyShopTaskRecordPageVo.setPicture(picture);
                staffMyShopTaskRecordPageVo.setVideo(video);
                staffMyShopTaskRecordPageVo.setAudio(audio);
            }
        }
        return myShopTaskRecordPageVoList;
    }
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java
@@ -1,25 +1,32 @@
package com.ruoyi.shop.service.impl.task;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.uuid.IdUtils;
import com.ruoyi.shop.domain.dto.MgtFollowShopTaskDto;
import com.ruoyi.shop.domain.dto.StaffAddTaskDto;
import com.ruoyi.shop.domain.dto.StaffShopTaskPageDto;
import com.ruoyi.shop.domain.pojo.task.ShopTask;
import com.ruoyi.shop.domain.pojo.task.ShopTaskRecord;
import com.ruoyi.shop.domain.pojo.task.TaskFile;
import com.ruoyi.shop.domain.vo.StaffShopTaskPageVo;
import com.ruoyi.shop.mapper.task.ShopTaskMapper;
import com.ruoyi.shop.service.task.ShopTaskRecordService;
import com.ruoyi.shop.service.task.ShopTaskService;
import com.ruoyi.shop.service.task.TaskFileService;
import com.ruoyi.system.api.domain.poji.sys.SysUser;
import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
import com.ruoyi.system.api.service.RemoteUserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.ParseException;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
/**
 * <p>
@@ -32,6 +39,8 @@
@Service
public class ShopTaskServiceImpl extends ServiceImpl<ShopTaskMapper, ShopTask> implements ShopTaskService {
    @Resource
    private ShopTaskMapper shopTaskMapper;
    @Resource
    private ShopTaskRecordService shopTaskRecordService;
@@ -39,7 +48,8 @@
    @Resource
    private TaskFileService taskFileService;
    @Resource
    private RemoteUserService remoteUserService;
    /**
     * 平台跟进商户
@@ -53,7 +63,6 @@
        shopTask.setTaskId(taskId);
        shopTask.setDelFlag(0);
        shopTask.setShopId(mgtFollowShopTaskDto.getShopId());
        shopTask.setFollowType(mgtFollowShopTaskDto.getFollowType());
        shopTask.setNextFollowDate(DateUtils.toDate(LocalDate.now()));
        shopTask.setTaskTitle(mgtFollowShopTaskDto.getTaskTitle());
        shopTask.setEmergencyState(mgtFollowShopTaskDto.getEmergencyState());
@@ -67,6 +76,7 @@
        shopTaskRecord.setTaskId(taskId);
        shopTaskRecord.setUserId(mgtFollowShopTaskDto.getUserId());
        shopTaskRecord.setFollowType(2);
        shopTaskRecord.setCustomFollowType(mgtFollowShopTaskDto.getFollowType());
        shopTaskRecord.setFollowContent(mgtFollowShopTaskDto.getFollowContent());
        shopTaskRecord.setCreateTime(new Date());
        shopTaskRecordService.saveOrUpdate(shopTaskRecord);
@@ -92,7 +102,6 @@
        shopNextTask.setTaskId(nextTaskId);
        shopNextTask.setDelFlag(0);
        shopNextTask.setShopId(mgtFollowShopTaskDto.getShopId());
        shopNextTask.setFollowType(mgtFollowShopTaskDto.getFollowType());
        shopNextTask.setTaskTitle(mgtFollowShopTaskDto.getNextTaskTitle());
        shopNextTask.setEmergencyState(mgtFollowShopTaskDto.getEmergencyState());
        shopNextTask.setCreateTime(new Date());
@@ -124,4 +133,52 @@
        mgtBulletinBoardVo.setFollowShopToday(followShopToday);
        return mgtBulletinBoardVo;
    }
    /**
     * @description  员工端获取进行中商户任务数
     * @author  jqs
     * @param shopIds
     * @return  Integer
     */
    @Override
    public Integer getShopIngTotal(List<Long> shopIds){
        return shopTaskMapper.getShopIngTotal(shopIds);
    }
    /**
     * @description  分页获取员工跟进任务
     * @author  jqs
     * @date    2023/7/15 15:09
     * @param page
     * @param staffShopTaskPageDto
     * @return  List<StaffShopTaskPageVo>
     */
    @Override
    public List<StaffShopTaskPageVo> pageStaffShopTask(Page page, StaffShopTaskPageDto staffShopTaskPageDto){
        List<StaffShopTaskPageVo> shopTaskPageVoList = shopTaskMapper.pageStaffShopTask(page, staffShopTaskPageDto);
        if(shopTaskPageVoList!=null&&shopTaskPageVoList.size()>0){
            Long userId;
            SysUser sysUser;
            for(StaffShopTaskPageVo staffShopTaskPageVo : shopTaskPageVoList){
                //获取任务用户信息
                userId = staffShopTaskPageVo.getUserId();
                sysUser = remoteUserService.getSysUser(userId).getData();
                staffShopTaskPageVo.setUserName(sysUser.getNickName());
                staffShopTaskPageVo.setUserPicture(sysUser.getAvatar());
            }
        }
        return shopTaskPageVoList;
    }
    /**
     * @description  员工端新增任务
     * @author  jqs
     * @date    2023/7/15 19:06
     * @param staffAddTaskDto
     * @return  void
     */
    @Override
    public void staffAddTask(StaffAddTaskDto staffAddTaskDto){
        ShopTask shopTask = new ShopTask();
    }
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java
@@ -54,6 +54,15 @@
    void terminateMgtCooperation(MgtTerminateCooperationDto mgtTerminateCooperationDto);
    /**
     * @description  冻结商户
     * @author  jqs
     * @date    2023/7/15 13:56
     * @param mgtFrozenShopDto
     * @return  void
     */
    void frozenMgtShop(MgtFrozenShopDto mgtFrozenShopDto);
    /**
     * 分页获取商户
     * @param page
     * @param mgtShopPageDto
@@ -98,7 +107,7 @@
    Shop getByShopId(Long shopId);
    MerHomeShopTotalVo getStaffHomeTotal(Long userId);
    StaffHomeShopTotalVo getStaffHomeTotal(Long userId);
    /**
     * 获取商户端首页统计
@@ -252,4 +261,68 @@
     * @return  List<MgtSimpleShopVo>
     */
    List<MgtSimpleShopVo> listShopByShop(Long shopId);
    /**
     * @description  获取用户管理商户
     * @author  jqs
     * @date    2023/7/14 10:00
     * @param userId
     * @return  Shop
     */
    Shop getShopByBelongUserId(Long userId);
    /**
     * @description  员工端获取商户列表
     * @author  jqs
     * @date    2023/7/14 15:26
     * @param page
     * @param staffShopPageDto
     * @return  List<StaffShopPageVo>
     */
    List<StaffShopPageVo> pageStaffShop(Page page, StaffShopPageDto staffShopPageDto);
    /**
     * @description  获取员工端商户数量统计
     * @author  jqs
     * @date    2023/7/14 15:51
     * @param userId
     * @return  StaffShopSimpleTotalVo
     */
    StaffShopSimpleTotalVo getStaffSimpleTotal(Long userId);
    /**
     * @description  员工端获取商户详情
     * @author  jqs
     * @date    2023/7/14 18:32
     * @param shopId
     * @return  StaffShopInfoGetVo
     */
    StaffShopInfoGetVo getStaffShopInfo(Long shopId);
    /**
     * @description  修改商户评估
     * @author  jqs
     * @date    2023/7/15 10:18
     * @param staffShopEstimateEditDto
     * @return  void
     */
    void editShopEstimate(StaffShopEstimateEditDto staffShopEstimateEditDto);
    /**
     * @description  修改店铺扩展联系人
     * @author  jqs
     * @date    2023/7/15 11:06
     * @param staffShopECEditDto
     * @return  void
     */
    void editExtendContacts(StaffShopECEditDto staffShopECEditDto);
    /**
     * @description  修改店铺状态
     * @author  jqs
     * @date    2023/7/15 11:51
     * @param staffShopCCEditDto
     * @return  void
     */
    void editShopCustomStatus(StaffShopCCEditDto staffShopCCEditDto);
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/AgencyTaskRecordService.java
@@ -5,9 +5,11 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.shop.domain.dto.MerAgencyTaskPageDto;
import com.ruoyi.shop.domain.dto.MgtShopTaskPageDto;
import com.ruoyi.shop.domain.dto.StaffAgencyPageDto;
import com.ruoyi.shop.domain.pojo.task.AgencyTaskRecord;
import com.ruoyi.shop.domain.vo.MerAgencyTaskRecordPageVo;
import com.ruoyi.shop.domain.vo.MgtAgencyTaskRecordPageVo;
import com.ruoyi.shop.domain.vo.StaffAgencyTaskRecordPageVo;
import java.util.List;
@@ -35,4 +37,16 @@
     * @return
     */
    List<MgtAgencyTaskRecordPageVo> pageMgtAgencyFollow(MgtShopTaskPageDto mgtShopTaskPageDto);
    /**
     * @description  员工端分页获取经销商跟进任务记录列表
     * @author  jqs
     * @date    2023/7/14 19:24
     * @param page
     * @param staffAgencyPageDto
     * @return  List<StaffAgencyTaskRecordPageVo>
     */
    List<StaffAgencyTaskRecordPageVo> pageStaffAgencyTaskRecord(Page page, StaffAgencyPageDto staffAgencyPageDto);
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/MemberTaskService.java
@@ -62,11 +62,4 @@
     */
    MemberTaskSimpleVo getLastMemberTask(Long userId);
    /**
     * @description  员工端获取进行中任务数
     * @author  jqs
     * @param shopIds
     * @return  Integer
     */
    Integer getMembersIngTotal(List<Long> shopIds);
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/ShopTaskRecordService.java
@@ -1,9 +1,12 @@
package com.ruoyi.shop.service.task;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.shop.domain.dto.MgtShopTaskPageDto;
import com.ruoyi.shop.domain.dto.StaffShopTaskPageDto;
import com.ruoyi.shop.domain.pojo.task.ShopTaskRecord;
import com.ruoyi.shop.domain.vo.MgtShopTaskRecordPageVo;
import com.ruoyi.shop.domain.vo.StaffMyShopTaskRecordPageVo;
import java.util.List;
@@ -23,4 +26,24 @@
     * @return
     */
    List<MgtShopTaskRecordPageVo> pageMgtShopFollow(MgtShopTaskPageDto mgtShopTaskPageDto);
    /**
     * @description  员工端分页获取我的跟进任务记录列表
     * @author  jqs
     * @date    2023/7/14 19:40
     * @param page
     * @param staffShopTaskPageDto
     * @return  List<StaffMyShopTaskRecordPageVo>
     */
    List<StaffMyShopTaskRecordPageVo> pageStaffMyShopTaskRecord(Page page, StaffShopTaskPageDto staffShopTaskPageDto);
    /**
     * @description  员工端分页获取商户跟进任务记录列表
     * @author  jqs
     * @date    2023/7/15 17:05
     * @param page
     * @param staffShopTaskPageDto
     * @return  List<StaffMyShopTaskRecordPageVo>
     */
    List<StaffMyShopTaskRecordPageVo> pageStaffShopTaskRecord(Page page, StaffShopTaskPageDto staffShopTaskPageDto);
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/ShopTaskService.java
@@ -1,9 +1,15 @@
package com.ruoyi.shop.service.task;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.shop.domain.dto.MgtFollowShopTaskDto;
import com.ruoyi.shop.domain.dto.StaffAddTaskDto;
import com.ruoyi.shop.domain.dto.StaffShopTaskPageDto;
import com.ruoyi.shop.domain.pojo.task.ShopTask;
import com.ruoyi.shop.domain.vo.StaffShopTaskPageVo;
import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
import java.util.List;
/**
 * <p>
@@ -29,4 +35,32 @@
    * @date 2023/6/18 17:09
    */
    MgtBulletinBoardVo boardTaskTotal();
    /**
     * @description  员工端获取进行中商户任务数
     * @author  jqs
     * @param shopIds
     * @return  Integer
     */
    Integer getShopIngTotal(List<Long> shopIds);
    /**
     * @description  分页获取员工跟进任务
     * @author  jqs
     * @date    2023/7/15 15:09
     * @param page
     * @param staffShopTaskPageDto
     * @return  List<StaffShopTaskPageVo>
     */
    List<StaffShopTaskPageVo> pageStaffShopTask(Page page, StaffShopTaskPageDto staffShopTaskPageDto);
    /**
     * @description  员工端新增任务
     * @author  jqs
     * @date    2023/7/15 19:06
     * @param staffAddTaskDto
     * @return  void
     */
    void staffAddTask(StaffAddTaskDto staffAddTaskDto);
}
ruoyi-modules/ruoyi-shop/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@
    nacos:
      discovery:
        # 服务注册地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
      config:
        # 配置中心地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
        # 配置文件格式
        file-extension: yml
        # 共享配置
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
@@ -305,18 +305,12 @@
        WHEN 2 THEN "终止合作"
        END shopStatus,
        tsm.shop_marketing_total shopActivityCount,
        ts.shop_custom_status shopCustomStatus
        ts.shop_custom_status shopCustomStatus,
        ts.frozen_flag frozenFlag,
        ts.cooperative_flag cooperativeFlag
        FROM t_shop ts
        LEFT JOIN t_shop_marketing tsm ON tsm.shop_id = ts.shop_id
        WHERE ts.del_flag = 0
        <if test="param.ids != null and !param.ids.isEmpty()">
            AND ts.belong_user_id in
            <foreach item="id" collection="param.ids" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
        <if test="param.shopType!=null and param.shopType!=''">
            AND ts.shop_type = #{param.shopType}
        </if>
@@ -580,7 +574,7 @@
        ts.shop_id
        FROM t_shop ts
        WHERE ts.del_flag = 0
        <if test="param.userIdList!=null and param.userIdList!=''">
        <if test="param.userIdList!=null and param.userIdList.size()>0">
            AND ts.belong_user_id IN
            <foreach collection="param.userIdList" item="item" open="(" separator="," close=")">
                #{item}
@@ -608,7 +602,7 @@
        ts.shop_id
        FROM t_shop ts
        WHERE ts.del_flag = 0
        <if test="param.userIdList!=null and param.userIdList!=''">
        <if test="param.userIdList!=null and param.userIdList.size()>0">
            AND ts.belong_user_id IN
            <foreach collection="param.userIdList" item="item" open="(" separator="," close=")">
                #{item}
@@ -632,7 +626,7 @@
        COUNT(ts.shop_id) mapValue
        FROM t_shop ts
        WHERE ts.del_flag = 0
        <if test="param.userIdList!=null and param.userIdList!=''">
        <if test="param.userIdList!=null and param.userIdList.size()>0">
            AND ts.belong_user_id IN
            <foreach collection="param.userIdList" item="item" open="(" separator="," close=")">
                #{item}
@@ -662,7 +656,7 @@
        COUNT(ts.shop_id) mapValue
        FROM t_shop ts
        WHERE ts.del_flag = 0
        <if test="param.userIdList!=null and param.userIdList!=''">
        <if test="param.userIdList!=null and param.userIdList.size()>0">
            AND ts.belong_user_id IN
            <foreach collection="param.userIdList" item="item" open="(" separator="," close=")">
                #{item}
@@ -692,7 +686,7 @@
        COUNT(ts.shop_id) mapValue
        FROM t_shop ts
        WHERE ts.del_flag = 0
        <if test="param.userIdList!=null and param.userIdList!=''">
        <if test="param.userIdList!=null and param.userIdList.size()>0">
            AND ts.belong_user_id IN
            <foreach collection="param.userIdList" item="item" open="(" separator="," close=")">
                #{item}
@@ -724,7 +718,7 @@
        FROM t_shop ts
        INNER JOIN t_shop_total tst ON ts.shop_id = tst.shop_id
        WHERE ts.del_flag = 0
        <if test="param.userIdList!=null and param.userIdList!=''">
        <if test="param.userIdList!=null and param.userIdList.size()>0">
            AND ts.belong_user_id IN
            <foreach collection="param.userIdList" item="item" open="(" separator="," close=")">
                #{item}
@@ -754,7 +748,7 @@
        COUNT(ts.shop_id) mapValue
        FROM t_shop ts
        WHERE ts.del_flag = 0
        <if test="param.userIdList!=null and param.userIdList!=''">
        <if test="param.userIdList!=null and param.userIdList.size()>0">
            AND ts.belong_user_id IN
            <foreach collection="param.userIdList" item="item" open="(" separator="," close=")">
                #{item}
@@ -778,4 +772,119 @@
        GROUP BY ts.recommend_person
        ORDER BY COUNT(ts.shop_id) DESC
    </select>
    <select id="pageStaffShop" resultType="com.ruoyi.shop.domain.vo.StaffShopPageVo">
        SELECT
        ts.shop_id shopId,
        ts.sign_time signTime,
        ts.shop_name shopName,
        ts.shop_tags shopTags,
        CONCAT(ts.cooperation_start_time,'-',ts.cooperation_end_time) cooperationTime,
        CONCAT(ts.shop_area_name,ts.shop_address) shopAddress,
        ts.shopowner_name shopownerName,
        ts.shopowner_phone shopownerPhone,
        ts.shop_status shopStatus,
        tsf.file_url shopPicture,
        tbs.shop_name belongShopName
        FROM t_shop ts
        LEFT JOIN t_shop_file tsf ON tsf.shop_id = ts.shop_id AND tsf.del_flag = 0 AND file_type = 1
        LEFT JOIN t_shop tbs ON tbs.shop_id = ts.belong_shop_id AND tbs.del_flag = 0
        WHERE ts.del_flag = 0
        <if test="param.shopType!=null and param.shopType!=''">
            AND ts.shop_type = #{param.shopType}
        </if>
        <if test="param.signStartTime!=null and param.signStartTime!=''">
            AND ts.sign_time &gt;= #{param.signStartTime}
        </if>
        <if test="param.signEndTime!=null and param.signEndTime!=''">
            AND ts.sign_time &lt;= #{param.signEndTime}
        </if>
        <if test="param.signProvinceCode!=null and param.signProvinceCode!=''">
            AND ts.sign_province_code = #{param.signProvinceCode}
        </if>
        <if test="param.signCityCode!=null and param.signCityCode!=''">
            AND ts.sign_city_code = #{param.signCityCode}
        </if>
        <if test="param.recommendPerson!=null and param.recommendPerson!=''">
            AND ts.recommend_person = #{param.recommendPerson}
        </if>
        <if test="param.belongUserId!=null and param.belongUserId!=''">
            AND ts.belong_user_id = #{param.belongUserId}
        </if>
        <if test="param.userIdList!=null and param.userIdList.size()>0">
            AND ts.belong_user_id IN
            <foreach item="id" collection="param.userIdList" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
        <if test="param.shopCustomStatus!=null and param.shopCustomStatus!=''">
            AND FIND_IN_SET(#{param.shopCustomStatus},ts.shop_custom_status) &gt; 0
        </if>
        <if test="param.supportingCapacityFlag!=null and param.supportingCapacityFlag!=''">
            AND ts.supporting_capacity_flag = #{param.supportingCapacityFlag}
        </if>
        <if test="param.operationPersonFlag!=null and param.operationPersonFlag!=''">
            AND ts.operation_person_flag = #{param.operationPersonFlag}
        </if>
        <if test="param.executiveForceFlag!=null and param.executiveForceFlag!=''">
            AND ts.executive_force_flag = #{param.executiveForceFlag}
        </if>
        <if test="param.patternFlag!=null and param.patternFlag!=''">
            AND ts.pattern_flag = #{param.patternFlag}
        </if>
        <if test="param.connectionFlag!=null and param.connectionFlag!=''">
            AND ts.connection_flag = #{param.connectionFlag}
        </if>
        <if test="param.economicAbilityFlag!=null and param.economicAbilityFlag!=''">
            AND ts.economic_ability_flag = #{param.economicAbilityFlag}
        </if>
        <if test="param.relationPartner!=null and param.relationPartner!=''">
            AND ts.relation_partner = #{param.relationPartner}
        </if>
        <if test="param.keyword!=null and param.keyword!=''">
            AND (ts.shop_name LIKE CONCAT('%',#{param.keyword},'%') OR ts.shopowner_name LIKE CONCAT('%',#{param.keyword},'%')
            OR ts.shopowner_phone LIKE CONCAT('%',#{param.keyword},'%') OR ts.shop_number LIKE CONCAT('%',#{param.keyword},'%')
            OR tbs.shop_name LIKE CONCAT('%',#{param.keyword},'%'))
        </if>
        ORDER BY ts.create_time DESC
    </select>
    <select id="getStaffSimpleTotal" resultType="com.ruoyi.shop.domain.vo.StaffShopSimpleTotalVo">
        SELECT
        COUNT(shop_id) shopTotal,
        SUM(CASE shop_status WHEN 0 THEN 1 WHEN 2 THEN 1 WHEN 3 THEN 1 ELSE 0 END) closeTotal,
        SUM(CASE shop_status WHEN 1 THEN 1 ELSE 0 END) openTotal
        FROM t_shop ts
        WHERE ts.del_flag = 0
        AND ts.belong_user_id IN
        <foreach item="id" collection="userIdList" open="(" separator="," close=")">
            #{id}
        </foreach>
    </select>
    <select id="getStaffHomeTotal" resultType="com.ruoyi.shop.domain.vo.StaffHomeShopTotalVo">
        SELECT
        COUNT(shop_id) shopTotal,
        SUM(CASE shop_type WHEN 1 THEN 1 ELSE 0 END) dealerTotal,
        SUM(CASE shop_type WHEN 2 THEN 1 ELSE 0 END) agencyTotal
        FROM t_shop ts
        WHERE ts.del_flag = 0
        AND ts.belong_user_id IN
        <foreach item="id" collection="userIdList" open="(" separator="," close=")">
            #{id}
        </foreach>
    </select>
    <update id="updateExtendContacts">
        update t_shop SET
        <if test="extendContacts!=null and extendContacts != ''">
            extend_contacts = #{extendContacts},
        </if>
        <if test="extendContacts ==null or extendContacts == ''">
            extend_contacts = null,
        </if>
        <if test="updateTime != null">update_time = #{updateTime},</if>
        <if test="updateUserId != null">update_user_id = #{updateUserId},</if>
        WHERE shop_id = #{shopId}
    </update>
</mapper>
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopTotalMapper.xml
@@ -35,7 +35,7 @@
        sum(total_goods_money) totalGoodsMoney
        FROM
        t_shop_total
        <if test="list!=null and list!=''">
        <if test="list!=null and list.size()>0">
            where shop_id IN
            <foreach collection="list" item="id" open="(" separator="," close=")">
                #{id}
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskRecordMapper.xml
@@ -26,7 +26,7 @@
        FROM t_agency_task tmt
        INNER JOIN t_agency_task_record tmtr ON tmtr.task_id = tmt.task_id
        WHERE tmt.del_flag = 0 AND tmt.shop_id = #{param.shopId} AND tmt.agency_id = #{param.agencyId}
        ORDER BY tmt.task_date DESC
        ORDER BY tmtr.create_time DESC
    </select>
    <select id="pageMgtAgencyFollow" resultType="com.ruoyi.shop.domain.vo.MgtAgencyTaskRecordPageVo">
@@ -44,6 +44,26 @@
        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.shopId} AND tmt.task_date = #{param.taskDate}
        ORDER BY tmt.task_date DESC
        ORDER BY tmtr.create_time DESC
    </select>
    <select id="pageStaffAgencyTaskRecord" resultType="com.ruoyi.shop.domain.vo.StaffAgencyTaskRecordPageVo">
        SELECT
            tmtr.user_id userId,
            tmtr.id followId,
            tmtr.task_id taskId,
            tmt.create_time createTime,
            tmtr.follow_type followType,
            tmtr.call_time callTime,
            tmtr.follow_content followContent,
            tmtr.call_phone callPhone
        FROM t_agency_task tmt
                 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}
        ORDER BY tmtr.create_time DESC
    </select>
</mapper>
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml
@@ -99,18 +99,7 @@
        WHERE del_flag = 0 AND task_status = 1 AND shop_id = #{shopId} AND task_date = DATE(NOW())
    </select>
    <select id="getMembersIngTotal" resultType="java.lang.Integer">
        SELECT COUNT(task_id)
        FROM t_member_task
        WHERE del_flag = 0 AND task_status = 1
        <if test="list!=null and list!=''">
            AND  shop_id IN
            <foreach collection="list" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
        AND task_date = DATE(NOW())
    </select>
    <select id="getLastMemberTask" resultType="com.ruoyi.system.api.domain.vo.MemberTaskSimpleVo">
        SELECT
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskMapper.xml
@@ -87,22 +87,36 @@
        </foreach>
    </delete>
    <select id="pageMgtAgencyFollow" resultType="com.ruoyi.shop.domain.vo.MgtAgencyTaskRecordPageVo">
        SELECT
        tmtr.user_id userId,
        tmtr.id followId,
        tmtr.task_id taskId,
        tmtr.create_time createTime,
        tmtr.follow_type followType,
        tmtr.call_time callTime,
        tmtr.follow_content followContent,
        tmtr.call_phone callPhone
        FROM t_agency_task tmt
        INNER JOIN t_agency_task_record tmtr ON tmtr.task_id = tmt.task_id
        WHERE tmt.del_flag = 0 AND tmt.agency_id = #{param.shopId}
        ORDER BY tmtr.create_time DESC
    <select id="getShopIngTotal" resultType="java.lang.Integer">
        SELECT COUNT(task_id)
        FROM t_shop_task
        WHERE del_flag = 0 AND task_status = 1
        <if test="shopIds!=null and shopIds!=''">
            AND  shop_id IN
            <foreach collection="shopIds" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
        AND task_date = DATE(NOW())
    </select>
    <select id="pageStaffShopTask" resultType="com.ruoyi.shop.domain.vo.StaffShopTaskPageVo">
        SELECT
        tst.task_id taskId,
        tst.task_date taskDate,
        tst.follow_content taskContent,
        tst.emergency_state emergencyState,
        CASE WHEN tst.task_date = DATE(now()) THEN 1 ELSE 0 END todayFlag,
        tstr.user_id userId,
        tstr.create_time followTime
        FROM t_shop_task tst
        LEFT JOIN t_shop_task_record tstr ON tstr.task_id = tst.task_id
        WHERE tst.del_flag = 0 AND tst.shop_id = #{param.shopId} AND tstr.id = (SELECT MAX(id) FROM t_shop_task_record WHERE task_id = tst.task_id)
        <if test="param.taskStatus!=null and param.taskStatus != ''">
            AND tst.task_status = #{param.taskStatus}
        </if>
        ORDER BY tst.task_status ASC
    </select>
</mapper>
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskRecordMapper.xml
@@ -9,6 +9,7 @@
        tmtr.task_id taskId,
        tmtr.create_time createTime,
        CASE tmtr.follow_type WHEN 1 THEN "电话跟进" WHEN 2 THEN "手动跟进" END followType,
        tmtr.custom_follow_type customFollowType,
        tmtr.follow_content followContent,
        tmtr.call_time callTime,
        tmtr.call_phone callPhone
@@ -18,4 +19,37 @@
        ORDER BY tmtr.create_time DESC
    </select>
    <select id="pageStaffMyShopTaskRecord" resultType="com.ruoyi.shop.domain.vo.StaffMyShopTaskRecordPageVo">
        SELECT
            tmtr.user_id userId,
            tmtr.id followId,
            tmtr.task_id taskId,
            tmtr.create_time createTime,
            CASE tmtr.follow_type WHEN 1 THEN "电话跟进" WHEN 2 THEN "手动跟进" END followType,
            tmtr.custom_follow_type customFollowType,
            tmtr.follow_content followContent,
            tmtr.call_time callTime,
            tmtr.call_phone callPhone
        FROM t_shop_task tmt
                 INNER JOIN t_shop_task_record tmtr ON tmtr.task_id = tmt.task_id
        WHERE tmt.del_flag = 0 AND tmt.shop_id = #{param.shopId} AND tmtr.user_id = #{param.userId}
        ORDER BY tmtr.create_time DESC
    </select>
    <select id="pageStaffShopTaskRecord" resultType="com.ruoyi.shop.domain.vo.StaffMyShopTaskRecordPageVo">
        SELECT
            tmtr.user_id userId,
            tmtr.id followId,
            tmtr.task_id taskId,
            tmtr.create_time createTime,
            CASE tmtr.follow_type WHEN 1 THEN "电话跟进" WHEN 2 THEN "手动跟进" END followType,
            tmtr.follow_content followContent,
            tmtr.call_time callTime,
            tmtr.call_phone callPhone
        FROM t_shop_task tmt
                 INNER JOIN t_shop_task_record tmtr ON tmtr.task_id = tmt.task_id
        WHERE tmt.del_flag = 0 AND tmt.shop_id = #{param.shopId}
        ORDER BY tmtr.create_time DESC
    </select>
</mapper>
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/StaffController.java
File was renamed from ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/staff/StaffController.java
@@ -1,4 +1,4 @@
package com.ruoyi.system.controller.staff;
package com.ruoyi.system.controller.conslole;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.domain.pojo.staff.SysStaff;
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysUserController.java
@@ -1,6 +1,7 @@
package com.ruoyi.system.controller.sys;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.controller.BaseController;
@@ -16,7 +17,11 @@
import com.ruoyi.system.api.domain.poji.sys.SysRole;
import com.ruoyi.system.api.domain.poji.sys.SysUser;
import com.ruoyi.system.api.model.LoginUser;
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.service.staff.SysStaffService;
import com.ruoyi.system.service.sys.*;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.ArrayUtils;
@@ -27,8 +32,8 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
@@ -59,22 +64,26 @@
    @Autowired
    private ISysConfigService configService;
    @Autowired
    private SysStaffService sysStaffService;
    /**
     * 根据部门获取所有员工id
     * @param deptId
     * @param userId
     * @return
     */
    @GetMapping("/dept/{deptId}")
    public R<List<Long>> getUserIds(@PathVariable("deptId") Long deptId)
    @GetMapping("/getUserIdsByDept/{userId}")
    public R<List<Long>> getUserIdsByDept(@PathVariable("userId") Long userId)
    {
        SysUser sysUser = new SysUser();
        sysUser.setDeptId(deptId);
        List<SysUser> userList = userService.selectUserList(sysUser);
        List<Long> userIds = new ArrayList<>();
        for (int i = 0; i < userList.size(); i++) {
            userIds.add(userList.get(i).getUserId());
        }
        SysUser loginSysUser = userService.selectUserById(userId);
        SysUser querySysUser = new SysUser();
        querySysUser.setDelFlag("0");
        querySysUser.setDeptId(loginSysUser.getDeptId());
        List<SysUser> userList = userService.selectUserList(querySysUser);
        List<Long> userIds = userList.stream().map(sysUser->{
            return sysUser.getUserId();
        }).collect(Collectors.toList());
        return R.ok(userIds);
    }
@@ -416,4 +425,27 @@
        userService.frozenUser(userId);
        return R.ok();
    }
    /**
     * @description  员工端登录
     * @author  jqs
     * @date    2023/7/14 10:04
     * @param qwUserDetail
     * @return  R<QwH5LoginVo>
     */
    @PostMapping("/qwH5StaffLogin")
    public R<QwH5LoginVo> qwH5StaffLogin(@RequestBody QwUserDetailDto qwUserDetail)
    {
        String mobile = qwUserDetail.getMobile();
        SysStaff sysStaff = sysStaffService.getByMobile(mobile);
        Long userId = sysStaff.getUserId();
        SysUser sysUser = userService.selectUserById(userId);
        Optional.ofNullable(sysUser).orElseThrow(() -> new ServiceException("登录失败,未查询到用户"));
        // 构造登录返回信息
        QwH5LoginVo qwH5LoginVo = new QwH5LoginVo();
        qwH5LoginVo.setUserid(qwUserDetail.getUserid());
        qwH5LoginVo.setMobile(qwUserDetail.getMobile());
        qwH5LoginVo.setSysUser(sysUser);
        return R.ok(qwH5LoginVo);
    }
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/ArticleServiceImpl.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.domain.dto.MgtBaseGetDto;
@@ -19,6 +20,8 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.Date;
import java.util.List;
@@ -90,7 +93,12 @@
        article.setArticleSort(mgtArticleEditDto.getArticleSort());
        article.setArticleTitle(mgtArticleEditDto.getArticleTitle());
        article.setArticleIntroduce(mgtArticleEditDto.getArticleIntroduce());
        article.setArticleDetail(mgtArticleEditDto.getArticleDetail());
        String articleDetail = mgtArticleEditDto.getArticleDetail();
        if(StringUtils.isNotBlank(articleDetail)){
            byte[] decodedBytes = Base64.getDecoder().decode(articleDetail);
            articleDetail = new String(decodedBytes, StandardCharsets.UTF_8);
            article.setArticleDetail(articleDetail);
        }
        article.setArticleCover(mgtArticleEditDto.getArticleCover());
        article.setArticleVideo(mgtArticleEditDto.getArticleVideo());
        article.setUpdateTime(new Date());
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CooperationServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.system.domain.dto.MgtCooperationEditDto;
import com.ruoyi.system.domain.pojo.config.Cooperation;
import com.ruoyi.system.mapper.config.CooperationMapper;
@@ -9,6 +10,8 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.Date;
/**
@@ -42,7 +45,12 @@
        Cooperation cooperation = new Cooperation();
        cooperation.setDelFlag(0);
        cooperation.setTopPicture(mgtCooperationEditDto.getCooperationPicture());
        cooperation.setCooperDetail(mgtCooperationEditDto.getCooperationDetail());
        String cooperationDetail = mgtCooperationEditDto.getCooperationDetail();
        if(StringUtils.isNotBlank(cooperationDetail)){
            byte[] decodedBytes = Base64.getDecoder().decode(cooperationDetail);
            cooperationDetail = new String(decodedBytes, StandardCharsets.UTF_8);
            cooperation.setCooperDetail(cooperationDetail);
        }
        cooperation.setCreateTime(new Date());
        cooperation.setCreateUserId(mgtCooperationEditDto.getUserId());
        this.saveOrUpdate(cooperation);
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java
@@ -179,4 +179,19 @@
    public List<MgtStaffPageVo> pageMgtStaff(Page page, MgtStaffPageDto mgtStaffPageDto){
        return sysStaffMapper.pageMgtStaff(page, mgtStaffPageDto);
    }
    /**
     * @description
     * @author  jqs
     * @date    2023/7/14 9:52
     * @param mobile
     * @return  SysStaff
     */
    @Override
    public SysStaff getByMobile(String mobile){
        LambdaQueryWrapper<SysStaff> queryWrapper = new LambdaQueryWrapper();
        queryWrapper.eq(SysStaff::getDelFlag,0);
        queryWrapper.eq(SysStaff::getStaffMobile,mobile);
        return this.getOne(queryWrapper,false);
    }
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysStaffService.java
@@ -75,4 +75,13 @@
     * @return  List<MgtStaffPageVo>
     */
    List<MgtStaffPageVo> pageMgtStaff(Page page, MgtStaffPageDto mgtStaffPageDto);
    /**
     * @description
     * @author  jqs
     * @date    2023/7/14 9:53
     * @param mobile
     * @return  SysStaff
     */
    SysStaff getByMobile(String mobile);
}
ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@
    nacos:
      discovery:
        # 服务注册地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
      config:
        # 配置中心地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
        # 配置文件格式
        file-extension: yml
        # 共享配置
ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@
    nacos:
      discovery:
        # 服务注册地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
      config:
        # 配置中心地址
        #server-addr: 47.109.78.184:5000
        server-addr: 127.0.0.1:8848
        server-addr: 47.109.78.184:5000
        #server-addr: 127.0.0.1:8848
        # 配置文件格式
        file-extension: yml
        # 共享配置