无关风月
2025-01-14 741b598525b8d9be7869a62192919c95d51f3504
Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/qijisheng
30个文件已修改
467 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/RefundPass.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AgentApplicationController.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java 199 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserCouponServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/resources/mapper/account/BalanceChangeRecordMapper.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/RefundPassController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/RefundPassServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsEvaluateController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianSubscribeController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TechnicianSubscribeService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsBargainPriceServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TechnicianSubscribeServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/RefundPass.java
@@ -90,6 +90,8 @@
    @ApiModelProperty("快递单号")
    @TableField("code")
    private String code;
    @ApiModelProperty("收货地址JSON")
    @TableField(exist = false)
    private String addressJson;
}
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java
@@ -63,7 +63,7 @@
    private BigDecimal paymentAmount;
    @ApiModelProperty(value = "配送方式(1=自提,2=快递)")
    private String distributionMode;
    private Integer distributionMode;
    @ApiModelProperty(value = "门店名称")
    private String shopName;
@@ -83,6 +83,9 @@
    @ApiModelProperty(value = "技师名称")
    private String technicianName;
    @ApiModelProperty(value = "技师id")
    private Integer technicianId;
    @ApiModelProperty(value = "预约单id")
    private String technicianSubscribeId;
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java
@@ -48,7 +48,7 @@
    @TableField("purchase_limit")
    private Integer purchaseLimit;
    @ApiModelProperty(value = "配送方式(1=自提,2=快递,1,2 = 自提+快递)")
    @ApiModelProperty(value = "配送方式(1=自提,2=快递)")
    @TableField("distribution_mode")
    private String distributionMode;
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java
@@ -7,7 +7,9 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Slf4j
@@ -54,6 +56,11 @@
            public R<List<Shop>> getAllShop() {
                return R.fail("获取所有门店失败:" + cause.getMessage());
            }
            @Override
            public R<Map<String, BigDecimal>> getShopStatistics() {
                return R.fail();
            }
        };
    }
}
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java
@@ -12,7 +12,9 @@
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
@@ -65,4 +67,8 @@
     */
    @PostMapping("/shop/getAllShop")
    R<List<Shop>> getAllShop();
    @GetMapping("/shop/getShopStatistics")
    public R<Map<String, BigDecimal>> getShopStatistics();
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java
@@ -65,6 +65,11 @@
            }
    
            @Override
            public R<SysUser> queryUserByUserNameAndRoleType(String userName, Integer roleType) {
                return R.fail("通过账号和账号权限查询用户失败:" + cause.getMessage());
            }
            @Override
            public R addSysUser(SysUser user) {
                return R.fail("添加用户失败:" + cause.getMessage());
            }
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java
@@ -74,6 +74,14 @@
    R<SysUser>  queryUserByUserName(@RequestBody String userName);
    
    /**
     * 通过账号和账号权限查询用户
     * @param userName
     * @return
     */
    @PostMapping("/user/queryUserByUserNameAndRoleType")
    R<SysUser>  queryUserByUserNameAndRoleType(@RequestParam("roleType") String userName, @RequestParam("roleType") Integer roleType);
    /**
     * 新增加用户信息
     * @param user
     */
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
@@ -571,6 +571,8 @@
    public R<SysUser> queryUserByUserName(@RequestBody String userName){
        SysUser user = userService.getOne(Wrappers.lambdaQuery(SysUser.class)
                .eq(SysUser::getUserName, userName)
                .eq(SysUser::getDelFlag, "0")
                .eq(SysUser::getStatus, 0)
                .last("LIMIT 1"));
        return R.ok(user);
    }
@@ -696,4 +698,22 @@
        Set<String> rolePerms = menuService.selectMenuPermsByRoleId(roleId);
        return R.ok(rolePerms);
    }
    /**
     * 通过账号和账号权限查询用户
     * @param userName
     * @return
     */
    @PostMapping("/queryUserByUserNameAndRoleType")
    public R<SysUser>  queryUserByUserNameAndRoleType(@RequestParam("roleType") String userName, @RequestParam("roleType") Integer roleType){
        SysUser user = userService.getOne(Wrappers.lambdaQuery(SysUser.class)
                .eq(SysUser::getUserName, userName)
                .eq(SysUser::getDelFlag, "0")
                .eq(SysUser::getStatus, 0)
                .eq(SysUser::getRoleType, roleType)
                .last("LIMIT 1"));
        return R.ok(user);
    }
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AgentApplicationController.java
@@ -14,7 +14,9 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.other.api.domain.BaseSetting;
import com.ruoyi.other.api.domain.VipSetting;
import com.ruoyi.other.api.feignClient.BaseSettingClient;
import com.ruoyi.other.api.feignClient.VipSettingClient;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@@ -37,6 +39,8 @@
    private AgentApplicationService agentApplicationService;
    @Resource
    private AppUserService appUserService;
    @Resource
    private BaseSettingClient baseSettingClient;
    @PostMapping("/apply")
    @ApiOperation(value = "会员申请", tags = {"会员中心-小程序"})
@@ -95,9 +99,40 @@
        //变更会员等级
        byId1.setVipId(byId.getApplicationVipId());
        appUserService.updateById(byId1);
        // 当用户为合伙人时,计算合伙人积分和培育积分
        Integer vipId = byId1.getVipId();
        if (vipId == 7){
            // 当前用户计算合伙人积分
            R<VipSetting> vipSetting = vipSettingClient.getVipSetting(vipId);
            setPoint(vipSetting, byId1, byId1.getShopPoint(), byId1.getSharePoint());
            // 上级计算培育积分
            Long inviteUserId = byId1.getInviteUserId();
            AppUser byId2 = appUserService.getById(inviteUserId);
            if (byId2 != null){
                setPoint(vipSetting, byId2, byId1.getShopPoint(), byId1.getSharePoint());
            }
        }
        return R.ok(byId);
    }
    private void setPoint(R<VipSetting> vipSetting, AppUser appUser, Integer shopPoint, Integer sharePoint) {
        VipSetting vipSettingData = vipSetting.getData();
        Integer vipLevelUpShopRole = vipSettingData.getVipLevelUpShopRole();
        if (vipLevelUpShopRole == 1){
            Integer vipLevelUpShop = vipSettingData.getVipLevelUpShop();
            Integer vipLevelUpShare = vipSettingData.getVipLevelUpShare();
            if (shopPoint >=vipLevelUpShop && sharePoint >= vipLevelUpShare) {
                R<BaseSetting> baseSetting = baseSettingClient.getBaseSetting(1);
                BaseSetting data = baseSetting.getData();
                if (data != null){
                    appUser.setPartPoint(Integer.parseInt(data.getContent()));
                    appUserService.updateById(appUser);
                }
            }
        }
    }
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
@@ -524,6 +524,7 @@
        AppUser byId = appUserService.lambdaQuery()
                .eq(AppUser::getPhone, phone)
                .eq(AppUser::getDelFlag,0)
                .eq(AppUser::getStatus,1)
                .one();
        if (byId == null) {
            return R.fail("搜索失败,手机号错误。");
@@ -743,108 +744,6 @@
    @GetMapping("/commissionDetail")
    @ApiOperation(value = "分佣统计", tags = "管理后台-首页统计")
    public R<CommissionDetail> commissionDetail(CommissionDetail cd) {
        Long userid = tokenService.getLoginUser().getUserid();
        SysUser sysUser = sysUserClient.getSysUser(userid).getData();
        LambdaQueryWrapper<AppUser> queryWrapper = new LambdaQueryWrapper<AppUser>().eq(AppUser::getDelFlag, 0);
        if(sysUser.getRoleType() == 2){
            queryWrapper.eq(AppUser::getShopId, sysUser.getObjectId());
        }
        LocalDateTime startTime = cd.getStartTime();
        LocalDateTime endTime = cd.getEndTime();
        queryWrapper.ge(null != startTime, AppUser::getCreateTime, startTime);
        queryWrapper.le(null != endTime, AppUser::getCreateTime, endTime);
        queryWrapper.orderByAsc(AppUser::getCreateTime);
        List<AppUser> appUserList = appUserService.list(queryWrapper);
        if (appUserList.isEmpty()) {
            return R.ok(new CommissionDetail());
        }
        BigDecimal totalCommission = BigDecimal.ZERO;
        BigDecimal totalServiceFee = BigDecimal.ZERO;
        BigDecimal totalUserCommission = BigDecimal.ZERO;
        Map<Integer, BigDecimal> vipCommissions = new HashMap<>();
        Map<String, Map<Integer, BigDecimal>> dailyVipCommissions = new TreeMap<>();
        for (AppUser appUser : appUserList) {
            BigDecimal distributionAmount = Optional.ofNullable(appUser.getTotalDistributionAmount()).orElse(BigDecimal.ZERO);
            totalCommission = totalCommission.add(distributionAmount);
            Integer vipId = appUser.getVipId();
            if (vipId != null && vipId >= 1 && vipId <= 7) {
                vipCommissions.merge(vipId, distributionAmount, BigDecimal::add);
                String dateKey = appUser.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
                dailyVipCommissions.computeIfAbsent(dateKey, k -> new HashMap<>())
                        .merge(vipId, distributionAmount, BigDecimal::add);
            }
        }
        List<Shop> data = shopClient.getAllShop().getData();
        if(sysUser.getRoleType() == 2){
            data = Arrays.asList(shopClient.getShopById(sysUser.getObjectId()).getData());
        }
        for (Shop shop : data) {
            totalServiceFee = totalServiceFee.add(shop.getServerGiveawayMoney());
            totalUserCommission = totalUserCommission.add(shop.getGiveawayMoney());
        }
        R<List<ShopBalanceStatement>> r = shopBalanceStatementClient.getShopBalanceStatementList(Arrays.asList(1, 2, 3), null);
        List<ShopBalanceStatement> data1 = r.getData();
        if (!CollectionUtils.isEmpty(data1)){
            for (ShopBalanceStatement shopBalanceStatement : data1) {
                String dateKey = shopBalanceStatement.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
                Integer type = shopBalanceStatement.getType();
                if (type == 1){
                    type = 8;
                }else if (type == 2){
                    type = 9;
                }else {
                    type = 10;
                }
                dailyVipCommissions.computeIfAbsent(dateKey, k -> new HashMap<>())
                        .merge(type, shopBalanceStatement.getVariableAmount(), BigDecimal::add);
            }
        }
        CommissionDetail commissionDetail = new CommissionDetail();
        commissionDetail.setTotalCommission(totalCommission);
        commissionDetail.setTotalServiceFee(totalServiceFee);
        commissionDetail.setTotalUserCommission(totalUserCommission);
        commissionDetail.setTotalNormalCommission(vipCommissions.getOrDefault(1, BigDecimal.ZERO));
        commissionDetail.setTotalGoldCommission(vipCommissions.getOrDefault(2, BigDecimal.ZERO));
        commissionDetail.setTotalDiamondCommission(vipCommissions.getOrDefault(3, BigDecimal.ZERO));
        commissionDetail.setTotalAgentCommission(vipCommissions.getOrDefault(4, BigDecimal.ZERO));
        commissionDetail.setTotalSuperAgentCommission(vipCommissions.getOrDefault(5, BigDecimal.ZERO));
        commissionDetail.setTotalTopAgentCommission(vipCommissions.getOrDefault(6, BigDecimal.ZERO));
        commissionDetail.setTotalPartnerCommission(vipCommissions.getOrDefault(7, BigDecimal.ZERO));
        List<CommissionDate> commissionDateList = dailyVipCommissions.entrySet().stream()
                .map(entry -> {
                    CommissionDate commissionDate = new CommissionDate();
                    commissionDate.setDate(entry.getKey());
                    Map<Integer, BigDecimal> dailyCommissions = entry.getValue();
                    commissionDate.setNormalCommission(dailyCommissions.getOrDefault(1, BigDecimal.ZERO));
                    commissionDate.setGoldCommission(dailyCommissions.getOrDefault(2, BigDecimal.ZERO));
                    commissionDate.setDiamondCommission(dailyCommissions.getOrDefault(3, BigDecimal.ZERO));
                    commissionDate.setAgentCommission(dailyCommissions.getOrDefault(4, BigDecimal.ZERO));
                    commissionDate.setSuperAgentCommission(dailyCommissions.getOrDefault(5, BigDecimal.ZERO));
                    commissionDate.setTopAgentCommission(dailyCommissions.getOrDefault(6, BigDecimal.ZERO));
                    commissionDate.setPartnerCommission(dailyCommissions.getOrDefault(7, BigDecimal.ZERO));
                    BigDecimal add = commissionDate.getNormalCommission().add(commissionDate.getGoldCommission()).add(commissionDate.getDiamondCommission()).add(commissionDate.getAgentCommission())
                            .add(commissionDate.getSuperAgentCommission()).add(commissionDate.getTopAgentCommission()).add(commissionDate.getPartnerCommission());
                    commissionDate.setTotalCommission(add);
                    commissionDate.setServiceChargeCommission(dailyCommissions.getOrDefault(10, BigDecimal.ZERO));
                    commissionDate.setAssociatedUserCommission(dailyCommissions.getOrDefault(8, BigDecimal.ZERO));
                    commissionDate.setBindLowerLevelStoresCommission(dailyCommissions.getOrDefault(9, BigDecimal.ZERO));
                    return commissionDate;
                })
                .collect(Collectors.toList());
        commissionDetail.setCommissionDateList(commissionDateList);
        return R.ok(commissionDetail);
    }
    public R<CommissionDetail> commissionDetail2(CommissionDetail cd) {
        if (cd.getStartTime() == null || cd.getEndTime() == null) {
            return R.fail("请选择时间");
        }
@@ -857,7 +756,7 @@
        getDatesBetween(cd.getStartTime(), cd.getEndTime()).forEach(date -> {
            for (int i = 1; i < 8; i++){
                List<BalanceChangeRecord> list = balanceChangeRecordService.list(new LambdaQueryWrapper<BalanceChangeRecord>()
                        .eq(BalanceChangeRecord::getCreateTime, date)
                        .between(BalanceChangeRecord::getCreateTime, date, date.plusDays(1))
                        .eq(BalanceChangeRecord::getChangeType,4)
                        .eq(BalanceChangeRecord::getVipId, i));
                BigDecimal reduce = list.stream().map(BalanceChangeRecord::getChangeAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -885,7 +784,99 @@
                }
            }
        });
        return null;
        BigDecimal totalCommission = BigDecimal.ZERO;
        BigDecimal totalNormalCommission = BigDecimal.ZERO;
        BigDecimal totalGoldCommission = BigDecimal.ZERO;
        BigDecimal totalDiamondCommission = BigDecimal.ZERO;
        BigDecimal totalAgentCommission = BigDecimal.ZERO;
        BigDecimal totalSuperAgentCommission = BigDecimal.ZERO;
        BigDecimal totalTopAgentCommission = BigDecimal.ZERO;
        BigDecimal totalPartnerCommission = BigDecimal.ZERO;
        List<AppUser> allAppUserList = appUserService.list();
        for (AppUser appUser : allAppUserList) {
            BigDecimal totalDistributionAmount = appUser.getTotalDistributionAmount();
            totalCommission = totalCommission.add(totalDistributionAmount);
            if (appUser.getVipId() == 1){
                totalNormalCommission = totalNormalCommission.add(totalDistributionAmount);
            }
            if (appUser.getVipId() == 2){
                totalGoldCommission = totalGoldCommission.add(totalDistributionAmount);
            }
            if (appUser.getVipId() == 3){
                totalDiamondCommission = totalDiamondCommission.add(totalDistributionAmount);
            }
            if (appUser.getVipId() == 4){
                totalAgentCommission = totalAgentCommission.add(totalDistributionAmount);
            }
            if (appUser.getVipId() == 5){
                totalSuperAgentCommission = totalSuperAgentCommission.add(totalDistributionAmount);
            }
            if (appUser.getVipId() == 6){
                totalTopAgentCommission = totalTopAgentCommission.add(totalDistributionAmount);
            }
            if (appUser.getVipId() == 7){
                totalPartnerCommission = totalPartnerCommission.add(totalDistributionAmount);
            }
        }
        R<Map<String, BigDecimal>> shopStatistics = shopClient.getShopStatistics();
        Map<String, BigDecimal> data = shopStatistics.getData();
        BigDecimal totalServiceFee = BigDecimal.ZERO;
        BigDecimal totalUserCommission = BigDecimal.ZERO;
        if (data != null){
            totalServiceFee = data.get("serverGiveawayMoney");
            totalUserCommission = data.get("lowerLevelGiveawayMoney");
        }
        CommissionDetail commissionDetail = new CommissionDetail();
        commissionDetail.setTotalCommission(totalCommission);
        commissionDetail.setTotalServiceFee(totalServiceFee);
        commissionDetail.setTotalUserCommission(totalUserCommission);
        commissionDetail.setTotalNormalCommission(totalNormalCommission);
        commissionDetail.setTotalGoldCommission(totalGoldCommission);
        commissionDetail.setTotalDiamondCommission(totalDiamondCommission);
        commissionDetail.setTotalAgentCommission(totalAgentCommission);
        commissionDetail.setTotalSuperAgentCommission(totalSuperAgentCommission);
        commissionDetail.setTotalTopAgentCommission(totalTopAgentCommission);
        commissionDetail.setTotalPartnerCommission(totalPartnerCommission);
        List<CommissionDate> commissionDateList = dailyVipCommissions.entrySet().stream()
                .map(entry -> {
                    CommissionDate commissionDate = new CommissionDate();
                    commissionDate.setDate(entry.getKey());
                    Map<Integer, BigDecimal> dailyCommissions = entry.getValue();
                    commissionDate.setNormalCommission(dailyCommissions.getOrDefault(1, BigDecimal.ZERO));
                    commissionDate.setGoldCommission(dailyCommissions.getOrDefault(2, BigDecimal.ZERO));
                    commissionDate.setDiamondCommission(dailyCommissions.getOrDefault(3, BigDecimal.ZERO));
                    commissionDate.setAgentCommission(dailyCommissions.getOrDefault(4, BigDecimal.ZERO));
                    commissionDate.setSuperAgentCommission(dailyCommissions.getOrDefault(5, BigDecimal.ZERO));
                    commissionDate.setTopAgentCommission(dailyCommissions.getOrDefault(6, BigDecimal.ZERO));
                    commissionDate.setPartnerCommission(dailyCommissions.getOrDefault(7, BigDecimal.ZERO));
                    BigDecimal add = commissionDate.getNormalCommission().add(commissionDate.getGoldCommission()).add(commissionDate.getDiamondCommission()).add(commissionDate.getAgentCommission())
                            .add(commissionDate.getSuperAgentCommission()).add(commissionDate.getTopAgentCommission()).add(commissionDate.getPartnerCommission());
                    commissionDate.setTotalCommission(add);
                    commissionDate.setServiceChargeCommission(dailyCommissions.getOrDefault(10, BigDecimal.ZERO));
                    commissionDate.setAssociatedUserCommission(dailyCommissions.getOrDefault(8, BigDecimal.ZERO));
                    commissionDate.setBindLowerLevelStoresCommission(dailyCommissions.getOrDefault(9, BigDecimal.ZERO));
                    return commissionDate;
                })
                .collect(Collectors.toList());
        commissionDetail.setCommissionDateList(commissionDateList);
        return R.ok(commissionDetail);
    }
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java
@@ -132,26 +132,34 @@
    @ApiOperation(value = "已领取列表", tags = {"管理后台-优惠劵"})
    public R<Page<UserCoupon>> list1(@RequestParam Integer pageNum,
                                     @RequestParam Integer pageSize,
                                     String userName,
                                     @ApiParam("1未使用2已使用3已过期") Integer status,
                                     String phone,
                                     Integer id) {
        List<Long> appUserIds = null;
        if (!StringUtils.isEmpty(phone)){
            List<AppUser> appUserList = appUserService.list(new LambdaQueryWrapper<AppUser>()
                    .like(AppUser::getPhone, phone));
            if (!CollectionUtils.isEmpty(appUserList)){
                appUserIds = appUserList.stream().map(AppUser::getId).collect(Collectors.toList());
            }else {
                return R.ok(Page.of(pageNum, pageSize));
            }
        LambdaQueryWrapper<AppUser> queryWrapper = new LambdaQueryWrapper<>();
        if (!StringUtils.isEmpty(phone)) {
            queryWrapper.like(AppUser::getPhone, phone);
        }
        if (!StringUtils.isEmpty(userName)) {
            queryWrapper.like(AppUser::getName, userName);
        }
        List<AppUser> appUserList = appUserService.list(queryWrapper);
        if (CollectionUtils.isEmpty(appUserList)) {
            return R.ok(Page.of(pageNum, pageSize));
        }
        List<Long> appUserIds = appUserList.stream().map(AppUser::getId).distinct().collect(Collectors.toList());
        Page<UserCoupon> page = userCouponService.lambdaQuery()
                .isNull(status!=null&&(status==1||status==3),UserCoupon::getUseTime)
                .isNotNull(status!=null&&status==2,UserCoupon::getUseTime)
                .eq(UserCoupon::getCouponId, id)
                .in(appUserIds != null,UserCoupon::getAppUserId, appUserIds)
                .in(!CollectionUtils.isEmpty(appUserIds),UserCoupon::getAppUserId, appUserIds)
                .lt(status!=null&&status==3,UserCoupon::getEndTime, LocalDateTime.now()).page(Page.of(pageNum-1, pageSize));
        for (UserCoupon record : page.getRecords()) {
            record.setIdStr(record.getId().toString());
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java
@@ -54,14 +54,16 @@
        // 过滤商城购物
        List<BalanceChangeRecord> collect = balanceChangeRecordIPage.getRecords().stream().filter(e -> e.getChangeType() != 5).collect(Collectors.toList());
        for (BalanceChangeRecord changeRecord : collect) {
            BigDecimal subtract = changeRecord.getBeforeAmount().subtract(changeRecord.getAfterAmount());
            if (subtract.compareTo(BigDecimal.ZERO)>0){
                // 减少
                changeRecord.setChangeAmountString("-¥"+changeRecord.getChangeAmount());
            }else if (subtract.compareTo(BigDecimal.ZERO)<0){
                changeRecord.setChangeAmountString("+¥"+changeRecord.getChangeAmount());
            }else{
                changeRecord.setChangeAmountString("¥"+changeRecord.getChangeAmount());
            if (changeRecord.getBeforeAmount()!=null && changeRecord.getAfterAmount()!=null){
                BigDecimal subtract = changeRecord.getBeforeAmount().subtract(changeRecord.getAfterAmount());
                if (subtract.compareTo(BigDecimal.ZERO)>0){
                    // 减少
                    changeRecord.setChangeAmountString("-¥"+changeRecord.getChangeAmount());
                }else if (subtract.compareTo(BigDecimal.ZERO)<0){
                    changeRecord.setChangeAmountString("+¥"+changeRecord.getChangeAmount());
                }else{
                    changeRecord.setChangeAmountString("¥"+changeRecord.getChangeAmount());
                }
            }
        }
        balanceChangeRecordIPage.setRecords(collect);
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserCouponServiceImpl.java
@@ -52,7 +52,7 @@
        }
        List<CouponInfo> couponInfoList = couponInfoClient.getCouponInfoList(couponIds).getData();
        //构建返回数据
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm");
        List<PaymentUserCouponVo> infoVoList = new ArrayList<>();
        for (UserCoupon userCoupon : list) {
            CouponInfo couponInfo = couponInfoList.stream().filter(s -> s.getId().equals(userCoupon.getCouponId())).findFirst().get();
@@ -68,9 +68,9 @@
            couponInfoVo.setDiscountAmount(couponInfo.getDiscountAmount());
            couponInfoVo.setMoneyAmount(couponInfo.getMoneyAmount());
            couponInfoVo.setDiscount(couponInfo.getDiscount());
            if(null != couponInfo.getPeriodStartTime()){
                couponInfoVo.setPeriodStartTime(couponInfo.getPeriodStartTime().atTime(0, 0, 0).format(formatter));
                couponInfoVo.setPeriodEndTime(couponInfo.getPeriodEndTime().atTime(23, 59, 59).format(formatter));
            if(null != userCoupon.getStartTime()){
                couponInfoVo.setPeriodStartTime(userCoupon.getStartTime().format(formatter));
                couponInfoVo.setPeriodEndTime(userCoupon.getEndTime().format(formatter));
            }
            String forGoodIds = couponInfo.getForGoodIds();
            String[] split = forGoodIds.split(",");
ruoyi-service/ruoyi-account/src/main/resources/mapper/account/BalanceChangeRecordMapper.xml
@@ -29,7 +29,9 @@
            tau.phone userPhone,
            tbcr.change_type,
            tbcr.create_time,
            tbcr.change_amount
            tbcr.change_amount,
        tbcr.before_amount,
        tbcr.after_amount
        FROM
            t_balance_change_record tbcr
                LEFT JOIN t_app_user tau ON tbcr.app_user_id = tau.id
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/RefundPassController.java
@@ -67,6 +67,7 @@
        RefundPass one = refundPassService.getOne(new LambdaQueryWrapper<RefundPass>().eq(RefundPass::getOrderId, orderId)
                .eq(RefundPass::getDelFlag, 0).last(" order by create_time desc limit 0,1"));
        one.setIdStr(one.getId().toString());
        one.setAddressJson(order.getAddressJson());
        return R.ok(one);
    }
    
@@ -90,9 +91,9 @@
        if(Arrays.asList(2, 3).contains(refundPass.getStatus())){
            return R.fail("售后取消失败");
        }
//        refundPass.setDelFlag(1);
        refundPassService.removeById(id);
        order.setOrderStatus(4);
        refundPass.setDelFlag(1);
        refundPassService.updateById(refundPass);
        order.setOrderStatus(order.getOldOrderStatus());
        orderService.updateById(order);
        return R.ok();
    }
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java
@@ -313,7 +313,7 @@
                //添加积分明细
                if(!shopAppUser.getLavePoint().equals(lavePoint)){
                    UserPoint userPoint = new UserPoint();
                    userPoint.setType(9);
                    userPoint.setType(8);
                    userPoint.setHistoricalPoint(lavePoint);
                    userPoint.setVariablePoint(hxmd_point);
                    userPoint.setBalance(shopAppUser.getLavePoint());
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -174,13 +174,7 @@
            orderActivityInfo = JSONObject.parseObject(activityJson, OrderActivityInfo.class);
        }
        OrderDetailVO orderDetailVO = new OrderDetailVO();
        if (CollectionUtil.isNotEmpty(orderGoods)){
            String goodJson = orderGoods.get(0).getGoodJson();
            Goods goods = JSONObject.parseObject(goodJson, Goods.class);
            orderDetailVO.setDistributionMode(goods.getDistributionMode());
        }
        orderDetailVO.setDistributionMode(order.getDistributionMode());
        Technician technician = new Technician();
        if (order.getTechnicianId() != null){
            R<Technician> shopdetail = technicianClient.shopdetail(order.getTechnicianId());
@@ -214,6 +208,14 @@
        orderDetailVO.setLatitude(shop.getLatitude());
        orderDetailVO.setShopId(shop.getId());
        orderDetailVO.setTechnicianName(technician.getName());
        orderDetailVO.setTechnicianId(technician.getId());
        if(order.getOrderType() == 1){
            List<TechnicianSubscribe> data = technicianSubscribeClient.getTechnicianSubscribeList(order.getId()).getData();
            if(data.size() > 0){
                Long id = data.get(0).getId();
                orderDetailVO.setTechnicianSubscribeId(id.toString());
            }
        }
        return orderDetailVO;
    }
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/RefundPassServiceImpl.java
@@ -80,7 +80,6 @@
        if(null != afterSaleTime && LocalDateTime.now().isAfter(afterSaleTime)){
            return R.fail("已超过售后期间");
        }
        //构建售后申请数据
        RefundPass refundPass = new RefundPass();
        refundPass.setOrderId(applyRefundPass.getId());
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
@@ -962,7 +962,7 @@
        order.setGoodName(goodName.substring(0, goodName.length() - 1));
        Goods goods = goodsClient.getGoodsById(goodsList.get(0).getGoodsId()).getData();
        order.setOrderType(goods.getType());
        order.setOrderStatus(goods.getType() == 1 ? 3 : 1);
        order.setOrderStatus(goods.getType() == 1 ? 3 : (shoppingCartPayment.getDistributionMode() == 2 ? 1 : 2));
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        order.setOrderNumber("QJS" + getNumber(3) + sdf.format(new Date()));
        order.setTotalAmount(orderMoney.setScale(2, RoundingMode.HALF_EVEN));
@@ -984,7 +984,7 @@
        if(null != orderActivityInfo1){
            order.setActivityJson(JSON.toJSONString(orderActivityInfo1));
        }
        if(null != shoppingCartPayment.getUserAddressId()){
        if(2 == shoppingCartPayment.getDistributionMode()){
            UserAddress address = userAddressClient.getUserAddressById(shoppingCartPayment.getUserAddressId()).getData();
            order.setExpressAmount(expressFee);
            order.setAddressJson(JSON.toJSONString(address));
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsEvaluateController.java
@@ -131,7 +131,7 @@
        List<Long> usersNameList = new ArrayList<>();
        List<Long> usersPhoneList = new ArrayList<>();
        if (StringUtils.isNotEmpty(goodsEvaluate.getUserName())) {
        if (StringUtils.isNotEmpty(goodsEvaluate.getGoodsName())) {
            goodsIds = goodsService.lambdaQuery()
                    .like(Goods::getName, goodsEvaluate.getGoodsName())
                    .list().stream().map(Goods::getId).collect(Collectors.toList());
@@ -152,7 +152,13 @@
                return R.ok(new Page<>());
            }
        }
        usersNameList.retainAll(usersPhoneList);
        if (StringUtils.isNotEmpty(goodsEvaluate.getPhone())&&StringUtils.isNotEmpty(goodsEvaluate.getUserName())){
            // 取交集
            usersNameList.retainAll(usersPhoneList);
            if (usersNameList.isEmpty())usersNameList.add(-1L);
        }else{
            usersNameList.addAll(usersPhoneList);
        }
        Page<GoodsEvaluate> page = goodsEvaluateService.page(Page.of(pageNum, pageSize), new LambdaQueryWrapper<GoodsEvaluate>()
                .in(!goodsIds.isEmpty(), GoodsEvaluate::getGoodsId, goodsIds)
                .in(!usersNameList.isEmpty(), GoodsEvaluate::getAppUserId, usersNameList)
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java
@@ -200,6 +200,7 @@
                .gt(orderActivityInfo.getStatus() != null && orderActivityInfo.getStatus() == 0, OrderActivityInfo::getStartTime, LocalDateTime.now())
                .ge(orderActivityInfo.getStatus() != null && orderActivityInfo.getStatus() == 1, OrderActivityInfo::getEndTime, LocalDateTime.now())
                .lt(orderActivityInfo.getStatus() != null && orderActivityInfo.getStatus() == 1, OrderActivityInfo::getStartTime, LocalDateTime.now())
                .lt(orderActivityInfo.getStatus() != null && orderActivityInfo.getStatus() == 2, OrderActivityInfo::getEndTime, LocalDateTime.now())
                .eq(orderActivityInfo.getIsShelf() != null, OrderActivityInfo::getIsShelf, orderActivityInfo.getIsShelf()).orderByDesc(OrderActivityInfo::getCreateTime)
                .orderByDesc(OrderActivityInfo::getCreateTime))
                ;
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java
@@ -26,6 +26,7 @@
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Collection;
import java.util.List;
import java.util.List;
@@ -178,7 +179,7 @@
                                                                      @RequestParam(value = "date") LocalDateTime date){
        List<ShopBalanceStatement> list = shopBalanceStatementService.list(new LambdaQueryWrapper<ShopBalanceStatement>()
                .eq(ShopBalanceStatement::getType, type)
                .in(ShopBalanceStatement::getCreateTime, date));
                .between(ShopBalanceStatement::getCreateTime, date.with(LocalTime.MIN), date.with(LocalTime.MAX)));
        return R.ok(list);
    }
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
@@ -134,13 +134,15 @@
            throw new RuntimeException("添加失败");
        }
        //添加门店后台账号和门店关系数据
        SysUser sysUser = sysUserClient.queryUserByUserName(phone).getData();
        SysUser sysUser = sysUserClient.queryUserByUserNameAndRoleType(phone, 2).getData();
        if(null != sysUser){
            sysUser.setAppUserId(appUser.getId());
            sysUserClient.updateUser(sysUser);
            UserShop userShop = new UserShop();
            userShop.setUserId(sysUser.getUserId());
            userShop.setShopId(shopId);
            userShop.setRoleType(1);
            userShop.setNickName(sysUser.getNickName());
            List<UserShop> data = userShopClient.getUserShop(userShop).getData();
            if(null == data || data.size() == 0){
                userShop = new UserShop();
@@ -148,6 +150,7 @@
                userShop.setShopId(shopId);
                userShop.setRoleType(1);
                userShop.setRoleId(2L);
                userShop.setNickName(sysUser.getNickName());
                userShop.setCreateTime(LocalDateTime.now());
                userShopClient.saveUserShop(userShop);
            }
@@ -173,6 +176,8 @@
            userShop.setShopId(shopId);
            userShop.setRoleType(1);
            userShop.setRoleId(2L);
            userShop.setNickName(sysUser.getNickName());
            userShop.setCreateTime(LocalDateTime.now());
            userShopClient.saveUserShop(userShop);
        }
@@ -701,5 +706,21 @@
        return R.ok(list);
    }
    @GetMapping("/getShopStatistics")
    public R<Map<String, BigDecimal> > getShopStatistics(){
        List<Shop> shopList = shopService.list();
        BigDecimal serverGiveawayMoney = BigDecimal.ZERO;
        BigDecimal lowerLevelGiveawayMoney = BigDecimal.ZERO;
        for (Shop shop : shopList) {
            serverGiveawayMoney = serverGiveawayMoney.add(shop.getServerGiveawayMoney());
            lowerLevelGiveawayMoney = lowerLevelGiveawayMoney.add(shop.getLowerLevelGiveawayMoney());
        }
        Map<String, BigDecimal> map = new HashMap<>();
        map.put("serverGiveawayMoney", serverGiveawayMoney);
        map.put("lowerLevelGiveawayMoney", lowerLevelGiveawayMoney);
        return R.ok(map);
    }
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java
@@ -110,7 +110,9 @@
        }else {
            Technician byId = technicianService.getById(technician.getId());
            if (byId.getPhone()!=technician.getPhone()){
                List<Technician> list = technicianService.lambdaQuery().eq(Technician::getPhone, technician.getPhone()).eq(Technician::getShopId, sysUser.getObjectId()).list();
                List<Technician> list = technicianService.lambdaQuery()
                        .eq(Technician::getPhone, technician.getPhone())
                        .ne(Technician::getId, byId.getId()).list();
                if (!list.isEmpty()) {
                    return R.fail("当前号码已经添加");
                }
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianSubscribeController.java
@@ -81,6 +81,18 @@
        return R.ok();
    }
    /**
     * 预约技师
     */
    @PostMapping("/switchingTechnician")
    @ApiOperation(value = "切换技师", notes = "切换技师", tags = {"小程序-个人中心-门店管理-预约列表"})
    public R<Void> switchingTechnician(@RequestBody TechnicianSubscribe technicianSubscribe) {
        technicianSubscribeService.switchingTechnician(technicianSubscribe);
        return R.ok();
    }
    /**
     * 取消服务
     */
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TechnicianSubscribeService.java
@@ -34,6 +34,13 @@
    /**
     * 切換技師
     * @param technicianSubscribe
     */
    void switchingTechnician(TechnicianSubscribe technicianSubscribe);
    /**
     * 定时修改到期状态
     */
    void taskEditStstus();
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsBargainPriceServiceImpl.java
@@ -80,7 +80,7 @@
        SysUser sysUser = sysUserClient.getSysUser(userid).getData();
        GoodsBargainPrice bargainPrice = this.getOne(new LambdaQueryWrapper<GoodsBargainPrice>().eq(GoodsBargainPrice::getShopId, sysUser.getObjectId())
                .eq(GoodsBargainPrice::getGoodsId, vo.getGoodsId()).eq(GoodsBargainPrice::getDelFlag, 0).last(" order by create_time desc limit 0, 1"));
        if(null != bargainPrice && 1 == bargainPrice.getAuditStatus()){
        if(null != bargainPrice && 0 == bargainPrice.getAuditStatus()){
            return R.fail("特价申请正在审核中");
        }
        bargainPrice = new GoodsBargainPrice();
@@ -94,6 +94,7 @@
        //添加明细
        List<GoodsBargainPriceDetail> list = vo.getList();
        for (GoodsBargainPriceDetail goodsBargainPriceDetail : list) {
            goodsBargainPriceDetail.setId(null);
            goodsBargainPriceDetail.setGoodsBargainPriceId(bargainPrice.getId());
        }
        goodsBargainPriceDetailService.saveBatch(list);
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopServiceImpl.java
@@ -93,7 +93,7 @@
            }
            Shop shop = shopMapper.selectById(appUser.getShopId());
            if(null != shop){
            if(null != shop && shop.getDelFlag() == 0 && shop.getStatus() == 1){
                NearbyShopVO vo = new NearbyShopVO();
                vo.setId(appUser.getShopId().longValue());
                vo.setName(shop.getName());
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TechnicianSubscribeServiceImpl.java
@@ -41,8 +41,7 @@
    @Resource
    private RemoteOrderGoodsClient orderGoodsClient;
    @Resource
    private RedisTemplate<String, String> redisTemplate;
    private RedisTemplate redisTemplate;
    @Resource
    private AppUserClient appUserClient;
    
@@ -97,6 +96,20 @@
    }
    @Override
    public void switchingTechnician(TechnicianSubscribe technicianSubscribe) {
        List<TechnicianSubscribe> list = this.list(new LambdaQueryWrapper<TechnicianSubscribe>().eq(TechnicianSubscribe::getOrderId, technicianSubscribe.getOrderId())
                .eq(TechnicianSubscribe::getDelFlag, 0).eq(TechnicianSubscribe::getStatus, 0));
        for (TechnicianSubscribe subscribe : list) {
            if(subscribe.getTechnicianId().equals(technicianSubscribe.getTechnicianId())){
                throw new RuntimeException("不能切换相同的技师");
            }
            subscribe.setTechnicianId(technicianSubscribe.getTechnicianId());
            this.updateById(subscribe);
        }
    }
    /**
     * 定时修改到期状态
     */
ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopMapper.xml
@@ -28,7 +28,7 @@
            (select ROUND(AVG(score), 1) from t_shop_score where shop_id = ts.id) as score
        FROM
            t_shop ts
        WHERE ts.del_flag = 0 AND ts.`status` = 1 AND ts.id = #{shopId}
        WHERE ts.del_flag = 0 AND ts.id = #{shopId}
    </select>
    <select id="selectShopList" resultType="com.ruoyi.other.api.domain.Shop">
        SELECT