luodangjia
2025-01-08 d34b3987a7c89c29a74eb7d3525b2a486eeaca10
Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/JiaDianHuiShou
1个文件已添加
22个文件已修改
447 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/request/ChangeDispatchRequest.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/ChangeDispatchController.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java 215 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RoleController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/TFranchiseeBalanceChange.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/importExcel/FrozenBuckleImportDTO.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/MenuServiceImpl.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/TencentCosUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/MoneyRecentQuery.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/resources/template/加盟商余额记录.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/resources/template/加盟商扣款记录.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-admin/src/main/resources/template/导表录单导入模板 .xlsx 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChangeDispatchController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/Order.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/ChangeDispatchRequest.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vx/GetTransferBatchByOutNo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ChangeDispatchMapper.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/request/ChangeDispatchRequest.java
@@ -13,6 +13,7 @@
public class ChangeDispatchRequest {
    private String workerName;
    private String reservationName;
    private String orderNumber;
@@ -25,5 +26,6 @@
    private List<String> cityList;
    private String [] siteIds;
    private String reservationAddress;
    private String reservationPhone;
}
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java
@@ -193,6 +193,8 @@
        String queryResult = getResponse(queryUrl);
        GaoDeAddressInfoVO data = JSONObject.parseObject(queryResult, GaoDeAddressInfoVO.class);
        List<Geocodes> geocodes = data.getGeocodes();
        if (geocodes==null||geocodes.isEmpty())
            return Result.failed(null, "计算失败");
        Geocodes info = geocodes.get(0);
        String adcode = info.getAdcode();
        String city = info.getCity();
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/ChangeDispatchController.java
@@ -61,13 +61,16 @@
    @GetMapping(value = "/page")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "师傅名称", name = "workerName", dataType = "String"),
            @ApiImplicitParam(value = "预约人名称", name = "reservationName", dataType = "String"),
            @ApiImplicitParam(value = "订单编号", name = "orderNumber", dataType = "String"),
            @ApiImplicitParam(value = "下单用户名称", name = "userName", dataType = "String"),
            @ApiImplicitParam(value = "下单用户手机号", name = "reservationPhone", dataType = "String"),
            @ApiImplicitParam(value = "地址", name = "reservationAddress", dataType = "String"),
            @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
    })
    public R<Page<ChangeDispatch>> queryPageList(String workerName, String orderNumber, String userName,String reservationAddress,
                                                 String reservationName,String reservationPhone,
                                                 @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
                                                 @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
        LoginUser loginUser = tokenService.getLoginUser();
@@ -83,7 +86,8 @@
        changeDispatchRequest.setPageNum(pageNum);
        changeDispatchRequest.setPageSize(pageSize);
        changeDispatchRequest.setCityList(cityList);
        changeDispatchRequest.setReservationName(reservationName);
        changeDispatchRequest.setReservationPhone(reservationPhone);
        Integer franchiseeId = loginUser.getSysUser().getFranchiseeId();
        if (franchiseeId!=null) {
            Franchisee byId = franchiseeService.getById(franchiseeId);
@@ -163,10 +167,14 @@
    @ApiOperation(value = "订单改派师傅", tags = {"后台-系统设置-订单改派管理"})
    @GetMapping(value = "/changeWorker")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "改派订单id", name = "changeId", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "师傅id", name = "workerId", dataType = "Integer", required = true)
            @ApiImplicitParam(value = "改派订单id", name = "changeId", dataType = "String", required = true),
            @ApiImplicitParam(value = "订单id", name = "orderId", dataType = "String", required = true),
            @ApiImplicitParam(value = "师傅id", name = "workerId", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "时间", name = "arriveTime", dataType = "String", required = true),
    })
    public R<String> changeWorker(@RequestParam String changeId, @RequestParam Integer workerId,@RequestParam String orderId,@RequestParam String reason,
    public R<String> changeWorker(@RequestParam String changeId,
                                  @RequestParam String orderId,
                                  @RequestParam Integer workerId,
                                  @RequestParam  String arriveTime) {
        MasterWorker masterWorker = masterWorkerService.lambdaQuery()
                .eq(MasterWorker::getId, workerId).eq(MasterWorker::getIsDelete, 0).one();
@@ -184,7 +192,7 @@
                NettyWebSocketController.sendMsgToClient(context, "您有一条新的订单,请注意查收!");
            }
            dispatchClient.changeReason(orderId, reason);
//            dispatchClient.changeReason(orderId, reason);
            orderClient.updateArrivalTime(orderId,arriveTime);
            return R.ok();
//            try {
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java
@@ -9,6 +9,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -115,24 +116,50 @@
    @ApiOperation(value = "加盟商列表余额", tags = {"后台2.0-加盟商列表余额"})
    @PostMapping(value = "/recent/money")
    public R<RencentBalance> recentmoney() {
    @GetMapping(value = "/recent/money")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "加盟商名称", name = "name", dataType = "String"),
            @ApiImplicitParam(value = "管理员", name = "head", dataType = "String"),
            @ApiImplicitParam(value = "手机号码", name = "phone", dataType = "String"),
            @ApiImplicitParam(value = "管辖城市", name = "city", dataType = "String"),
            @ApiImplicitParam(value = "充值/扣款起始时间", name = "date1", dataType = "String"),
            @ApiImplicitParam(value = "充值/扣款结束时间", name = "date2", dataType = "String"),
            @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
    })
    public R<RencentBalance> recentmoney(String name, String head, String phone, String city,
                                         String date1,String date2,
                                         @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
                                         @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
        BigDecimal balance = new BigDecimal(0);
        List<Franchisee> list = franchiseeService.lambdaQuery().list();
        LambdaQueryWrapper<Franchisee> franchiseeLambdaQueryWrapper = new LambdaQueryWrapper<>();
        franchiseeLambdaQueryWrapper = StringUtils.isNotBlank(name) ? franchiseeLambdaQueryWrapper.like(Franchisee::getName, name) : franchiseeLambdaQueryWrapper;
        franchiseeLambdaQueryWrapper = StringUtils.isNotBlank(head) ? franchiseeLambdaQueryWrapper.like(Franchisee::getHead, head) : franchiseeLambdaQueryWrapper;
        franchiseeLambdaQueryWrapper = StringUtils.isNotBlank(phone) ? franchiseeLambdaQueryWrapper.like(Franchisee::getHeadPhone, phone) : franchiseeLambdaQueryWrapper;
        franchiseeLambdaQueryWrapper = StringUtils.isNotBlank(city) ? franchiseeLambdaQueryWrapper.like(Franchisee::getCity, city) : franchiseeLambdaQueryWrapper;
        List<Franchisee> list = franchiseeService.list(franchiseeLambdaQueryWrapper);
        List<Integer> collect = list.stream().map(Franchisee::getId).collect(Collectors.toList());
        if (collect.isEmpty())collect.add(-1);
        for (Franchisee franchisee : list) {
            balance = balance.add(franchisee.getBalance());
        }
        //充值的金额
        BigDecimal balance1 = new BigDecimal(0);
        List<TFranchiseeBalanceChange> list1 = balanceChangeService.lambdaQuery().eq(TFranchiseeBalanceChange::getType, 1).list();
        List<TFranchiseeBalanceChange> list1 = balanceChangeService.lambdaQuery()
                .in(TFranchiseeBalanceChange::getFranchiseeId,collect)
                .between(date1!=null,TFranchiseeBalanceChange::getCreateTime, date1, date2)
                .eq(TFranchiseeBalanceChange::getType, 1).list();
        for (TFranchiseeBalanceChange franchiseeBalanceChange : list1) {
            balance1 = balance1.add(franchiseeBalanceChange.getAmount());
        }
        //扣除的金额
        BigDecimal balance2 = new BigDecimal(0);
        List<TFranchiseeBalanceChange> list2 = balanceChangeService.lambdaQuery().eq(TFranchiseeBalanceChange::getType, 2).list();
        for (TFranchiseeBalanceChange franchiseeBalanceChange : list1) {
        List<TFranchiseeBalanceChange> list2 = balanceChangeService.lambdaQuery()
                .in(TFranchiseeBalanceChange::getFranchiseeId,collect)
                .eq(TFranchiseeBalanceChange::getType, 2)
                .between(date1!=null,TFranchiseeBalanceChange::getCreateTime, date1, date2)
                .eq(TFranchiseeBalanceChange::getIs_pay,1).list();
        for (TFranchiseeBalanceChange franchiseeBalanceChange : list2) {
            balance2 = balance2.add(franchiseeBalanceChange.getAmount());
        }
@@ -144,24 +171,28 @@
        return R.ok(balance3);
    }
    @ApiOperation(value = "详情",tags = {"师傅段2.0-统一充值扣款列表"})
    @PostMapping(value = "/change/detail")
    public R<TFranchiseeBalanceChange> detail1(@RequestParam Integer id) throws AlipayApiException {
        TFranchiseeBalanceChange byId = balanceChangeService.getById(id);
        return R.ok(byId);
        TFranchiseeBalanceChange balanceChange = balanceChangeService.getById(id);
        if (balanceChange.getType()==2){
            balanceChange.setPayStr("微信支付");
        }
        return R.ok(balanceChange);
    }
    @ApiOperation(value = "扣款记录及充值记录", tags = {"后台2.0-统一充值扣款列表","师傅段2.0-统一充值扣款列表"})
    @PostMapping(value = "/recent/money/list")
    public R<Page<TFranchiseeBalanceChange>> recentmoneylist(@RequestBody MoneyRecentQuery moneyRecentQuery) {
        Long userid = tokenService.getLoginUser().getUserid();
        SysUser sysUser = sysUserService.getById(userid);
        Page<TFranchiseeBalanceChange> page = balanceChangeService.lambdaQuery().eq(moneyRecentQuery.getType() != null, TFranchiseeBalanceChange::getType, moneyRecentQuery.getType())
                .eq(moneyRecentQuery.getFranchId() != null, TFranchiseeBalanceChange::getFranchiseeId, moneyRecentQuery.getFranchId())
                .eq(moneyRecentQuery.getFranchName() != null && !"".equals(moneyRecentQuery.getFranchName()), TFranchiseeBalanceChange::getFranchiseeName, moneyRecentQuery.getFranchName())
                .eq(sysUser.getFranchiseeId() != null, TFranchiseeBalanceChange::getFranchiseeId, sysUser.getFranchiseeId())
                .like(moneyRecentQuery.getName() != null && !"".equals(moneyRecentQuery.getName()), TFranchiseeBalanceChange::getFranchiseeName, moneyRecentQuery.getName())
                .ge(moneyRecentQuery.getDate1() != null, TFranchiseeBalanceChange::getCreateTime, moneyRecentQuery.getDate1())
                .le(moneyRecentQuery.getDate2() != null, TFranchiseeBalanceChange::getCreateTime, moneyRecentQuery.getDate2())
                .eq(moneyRecentQuery.getFranchId()!=null, TFranchiseeBalanceChange::getFranchiseeId, moneyRecentQuery.getFranchId())
                .eq(TFranchiseeBalanceChange::getIs_pay,1)
                .orderByDesc(TFranchiseeBalanceChange::getCreateTime)
                .page(Page.of(moneyRecentQuery.getPageNum(), moneyRecentQuery.getPageSize()));
@@ -173,12 +204,17 @@
                String siteIds = franchisee.getSiteIds();
                List<Site> list1 = siteService.lambdaQuery().in(Site::getId, siteIds.split(",")).list();
                record.setList1(list1);
            }
            String cityCode = franchisee.getCityCode();
            List<Region> list = regionService.lambdaQuery().in(Region::getCode, cityCode.split(",")).list();
            record.setList(list);
            record.setFranchiseeName(franchisee.getName());
            if (record.getType()==1){
                record.setPayStr("扣除旧机款");
            }
            if (record.getType()==2){
                record.setPayStr("充值");
            }
        }
        return R.ok(page);
    }
@@ -186,14 +222,24 @@
    @ApiOperation(value = "导出", tags = {"后台2.0-统一充值扣款列表"})
    @PostMapping(value = "/recent/money/list/export")
    public R<Page<TFranchiseeBalanceChange>> export(@RequestBody MoneyRecentQuery moneyRecentQuery, HttpServletResponse response) {
        Long userid = tokenService.getLoginUser().getUserid();
        SysUser sysUser = sysUserService.getById(userid);
        if (moneyRecentQuery.getType()==2) {
            List<TFranchiseeBalanceChange> page = balanceChangeService.lambdaQuery().eq(moneyRecentQuery.getType() != null, TFranchiseeBalanceChange::getType, moneyRecentQuery.getType())
                    .eq(moneyRecentQuery.getFranchId() != null, TFranchiseeBalanceChange::getFranchiseeId, moneyRecentQuery.getFranchId())
                    .eq(moneyRecentQuery.getFranchName() != null && !"".equals(moneyRecentQuery.getFranchName()), TFranchiseeBalanceChange::getFranchiseeName, moneyRecentQuery.getFranchName())
                    .eq(sysUser.getFranchiseeId() != null, TFranchiseeBalanceChange::getFranchiseeId, sysUser.getFranchiseeId())
                    .eq(moneyRecentQuery.getName() != null && !"".equals(moneyRecentQuery.getName()), TFranchiseeBalanceChange::getFranchiseeName, moneyRecentQuery.getName())
                    .ge(moneyRecentQuery.getDate1() != null, TFranchiseeBalanceChange::getCreateTime, moneyRecentQuery.getDate1())
                    .le(moneyRecentQuery.getDate2() != null, TFranchiseeBalanceChange::getCreateTime, moneyRecentQuery.getDate2())
                    .eq(moneyRecentQuery.getFranchId()!=null, TFranchiseeBalanceChange::getFranchiseeId, moneyRecentQuery.getFranchId())
                    .eq(TFranchiseeBalanceChange::getIs_pay,1)
                    .orderByDesc(TFranchiseeBalanceChange::getCreateTime)
                    .list();
            for (TFranchiseeBalanceChange tFranchiseeBalanceChange : page) {
                tFranchiseeBalanceChange.setPayStr("微信支付");
                LocalDateTime createTime = tFranchiseeBalanceChange.getCreateTime();
                // 转化为String类型的格式字符串yyyy-MM-dd HH:mm:ss
                tFranchiseeBalanceChange.setCreateTimeStr(createTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
            }
            try {
                response.setCharacterEncoding(Constants.UTF8);
                response.setContentType("application/vnd.ms-excel");
@@ -221,13 +267,17 @@
            return R.ok();
        }else {
            List<TFranchiseeBalanceChange> page = balanceChangeService.lambdaQuery().eq(moneyRecentQuery.getType() != null, TFranchiseeBalanceChange::getType, moneyRecentQuery.getType())
                    .eq(moneyRecentQuery.getFranchId() != null, TFranchiseeBalanceChange::getFranchiseeId, moneyRecentQuery.getFranchId())
                    .eq(moneyRecentQuery.getFranchName() != null && !"".equals(moneyRecentQuery.getFranchName()), TFranchiseeBalanceChange::getFranchiseeName, moneyRecentQuery.getFranchName())
                    .eq(sysUser.getFranchiseeId() != null, TFranchiseeBalanceChange::getFranchiseeId, sysUser.getFranchiseeId())
                    .eq(moneyRecentQuery.getName() != null && !"".equals(moneyRecentQuery.getName()), TFranchiseeBalanceChange::getFranchiseeName, moneyRecentQuery.getName())
                    .ge(moneyRecentQuery.getDate1() != null, TFranchiseeBalanceChange::getCreateTime, moneyRecentQuery.getDate1())
                    .le(moneyRecentQuery.getDate2() != null, TFranchiseeBalanceChange::getCreateTime, moneyRecentQuery.getDate2())
                    .orderByDesc(TFranchiseeBalanceChange::getCreateTime)
                    .list();
            for (TFranchiseeBalanceChange tFranchiseeBalanceChange : page) {
                LocalDateTime createTime = tFranchiseeBalanceChange.getCreateTime();
                // 转化为String类型的格式字符串yyyy-MM-dd HH:mm:ss
                tFranchiseeBalanceChange.setCreateTimeStr(createTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
            }
            try {
                response.setCharacterEncoding(Constants.UTF8);
                response.setContentType("application/vnd.ms-excel");
@@ -299,7 +349,7 @@
        map.put("p4_Cur", "1"); /**交易币种 */
        map.put("q5_OpenId", openId);
        map.put("p5_ProductName", "加盟商充值"); /** 商品名称 */
        map.put("p9_NotifyUrl", "http://www.zhipingwang.com.cn:9100/admin/franchisee/callBack"); /** 服务器异步通知地址 */
        map.put("p9_NotifyUrl", "https://v7ro848ar5jx.ngrok.xiaomiqiu123.top/admin/franchisee/callBack"); /** 服务器异步通知地址 */
        map.put("q1_FrpCode", "WEIXIN_APP3"); /** 交易类型*/
        map.put("q7_AppId", "wx1a4a7760be53a835"); /** 交易类型*/
        map.put("qa_TradeMerchantNo", "777165000859101"); /** 777开头的报备商户号   必填!*/
@@ -357,6 +407,7 @@
        tFranchiseeBalanceChange.setFranchiseeName(byId.getName());
        tFranchiseeBalanceChange.setFranchiseeId(String.valueOf(byId.getId()));
        tFranchiseeBalanceChange.setType(2);
        tFranchiseeBalanceChange.setRemark("微信支付");
        tFranchiseeBalanceChange.setCode(code);
        balanceChangeService.save(tFranchiseeBalanceChange);
@@ -392,52 +443,86 @@
    @ApiOperation(value = "扫码支付",tags = {"后台2.0-加盟商列表余额"})
    @PostMapping(value = "/code/buy")
    public R buy(@RequestParam BigDecimal money) throws AlipayApiException {
    public R buy(@RequestParam BigDecimal money) throws AlipayApiException, IOException {
        Long userid = tokenService.getLoginUser().getUserid();
        SysUser byId1 = sysUserService.getById(userid);
        Franchisee byId = franchiseeService.getById(byId1.getFranchiseeId());
        String code = generateTradeNumber();
        int i = money.multiply(BigDecimal.valueOf(100)).intValue();
        com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest prepayRequest = new com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest();
            prepayRequest.setAppid(weChatConfig.appId);
            prepayRequest.setMchid(weChatConfig.merchantId);
            prepayRequest.setOutTradeNo(code);
            prepayRequest.setDescription("购买资料");
            prepayRequest.setNotifyUrl("http://www.zhipingwang.com.cn:9090/admin/franchisee/callBack");
            com.wechat.pay.java.service.payments.nativepay.model.Amount amount = new com.wechat.pay.java.service.payments.nativepay.model.Amount();
            amount.setTotal(i);
            prepayRequest.setAmount(amount);
            // 调用下单方法,得到应答
            com.wechat.pay.java.service.partnerpayments.app.model.PrepayResponse response;
            try {
                com.wechat.pay.java.service.payments.nativepay.model.PrepayResponse prepay = nativePayService.prepay(prepayRequest);
                //预支付成功,创建预支付订单
                TFranchiseeBalanceChange tFranchiseeBalanceChange = new TFranchiseeBalanceChange();
                tFranchiseeBalanceChange.setAmount(money);
                tFranchiseeBalanceChange.setIs_pay(0);
                tFranchiseeBalanceChange.setFranchiseeName(byId.getName());
                tFranchiseeBalanceChange.setFranchiseeId(String.valueOf(byId.getId()));
                tFranchiseeBalanceChange.setType(2);
                tFranchiseeBalanceChange.setCode(code);
                balanceChangeService.save(tFranchiseeBalanceChange);
        String key = "ad273ceb5e1b49e68d5c565d28d1d305";/** md5密钥商户后台-商户中心-商户设置-密钥管理获取 必填!*/
        Map<String, String> map = new HashMap<String, String>();
        map.put("p0_Version", "2.5");/** 版本号 */
        map.put("p1_MerchantNo", "888122400007793");/** 商户编号 */
        map.put("p2_OrderNo", code); /**商户订单号*/
        map.put("p3_Amount", String.valueOf(money));/**订单金额*/
        map.put("p4_Cur", "1"); /**交易币种 */
        map.put("p5_ProductName", "充值"); /** 商品名称 */
        map.put("p6_ProductDesc", "加盟商充值"); /** 商品名称 */
//        map.put("p7_Mp", ""); /** 如果商户请求时传递了该参数,则返回给商户时会原值传 回。 */
        map.put("p9_NotifyUrl", "https://v7ro848ar5jx.ngrok.xiaomiqiu123.top/admin/franchisee/callBack"); /** 服务器异步通知地址 */
        map.put("q1_FrpCode", "WEIXIN_NATIVE"); /** 微信扫码(主扫)【注:此为用户主扫,商户被扫】*/
        map.put("q4_IsShowPic", "1"); /** 是否展示二 维码图片 1表示输出*/
        map.put("q7_AppId", "wx1a4a7760be53a835"); /** 交易类型*/
        map.put("qa_TradeMerchantNo", "777165000859101"); /** 777开头的报备商户号   必填!*/
        map.put("qi_FqSellerPercen", "0"); /** 卖家承担收 费比例 目前仅支持传入 0 ,即用户承 担手续费!*/
        String Strmap = CreateLinkStringByGet1.createLinkStringByGet(map);
        // 签名
        String sign = "";
        sign = Md5_Sign.SignByMD5(Strmap, key);
        map.put("hmac", sign);/** 签名数据 */
        System.out.println("发送:" + JSON.toJSONString(map).toString());
        // post请求参数内容
        HttpRequester hr = new HttpRequester();
        HttpRespons HP = hr.sendPost("https://trade.joinpay.com/tradeRt/uniPay", map);
        System.out.println("接收返回参数:" + HP.getContent());
        JSONObject jsonObject = JSONObject.parseObject(HP.getContent());
        String rcResult = jsonObject.getString("rd_Pic");
        Map<String, Object> map2 = new HashMap<>();
        map2.put("rcResult", rcResult);
//        com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest prepayRequest = new com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest();
//            prepayRequest.setAppid(weChatConfig.appId);
//            prepayRequest.setMchid(weChatConfig.merchantId);
//            prepayRequest.setOutTradeNo(code);
//            prepayRequest.setDescription("购买资料");
//            prepayRequest.setNotifyUrl("http://www.zhipingwang.com.cn:9090/admin/franchisee/callBack");
//            com.wechat.pay.java.service.payments.nativepay.model.Amount amount = new com.wechat.pay.java.service.payments.nativepay.model.Amount();
//            amount.setTotal(i);
//            prepayRequest.setAmount(amount);
//            // 调用下单方法,得到应答
//            com.wechat.pay.java.service.partnerpayments.app.model.PrepayResponse response;
        try {
//                com.wechat.pay.java.service.payments.nativepay.model.PrepayResponse prepay = nativePayService.prepay(prepayRequest);
            //预支付成功,创建预支付订单
            TFranchiseeBalanceChange tFranchiseeBalanceChange = new TFranchiseeBalanceChange();
            tFranchiseeBalanceChange.setAmount(money);
            tFranchiseeBalanceChange.setIs_pay(0);
            tFranchiseeBalanceChange.setFranchiseeName(byId.getName());
            tFranchiseeBalanceChange.setFranchiseeId(String.valueOf(byId.getId()));
            tFranchiseeBalanceChange.setType(2);
            tFranchiseeBalanceChange.setCode(code);
            tFranchiseeBalanceChange.setRemark("加盟商扫码充值");
            balanceChangeService.save(tFranchiseeBalanceChange);
                PayDto payDto = new PayDto();
                payDto.setOrderId(tFranchiseeBalanceChange.getId());
                payDto.setQrCode(prepay.getCodeUrl());
            PayDto payDto = new PayDto();
            payDto.setOrderId(tFranchiseeBalanceChange.getId());
            payDto.setQrCode(rcResult);
                return R.ok(payDto);
            } catch (HttpException e) { // 发送HTTP请求失败
            return R.ok(payDto);
        } catch (HttpException e) { // 发送HTTP请求失败
//                log.error("发送HTTP请求失败: {}", e.getHttpRequest());
            } catch (ServiceException e) { // 服务返回状态小于200或大于等于300,例如500
        } catch (ServiceException e) { // 服务返回状态小于200或大于等于300,例如500
//                log.error("服务返回状态异常: {}", e.getResponseBody());
            } catch (MalformedMessageException e) { // 服务返回成功,返回体类型不合法,或者解析返回体失败
        } catch (MalformedMessageException e) { // 服务返回成功,返回体类型不合法,或者解析返回体失败
//                log.error("返回体类型不合法: {}", e.getMessage());
            } catch (Exception e) {
        } catch (Exception e) {
//                log.error("预下单异常: {}", e.getMessage());
            }
            return null;
        }
        return null;
    }
@@ -461,6 +546,22 @@
    public R payNotify(HttpServletRequest request,String r2_OrderNo) throws Exception{
        System.err.println("======回调开始");
        System.err.println("======回调开始"+r2_OrderNo);
        System.err.println("请求"+request.getParameterMap());
        Map<String, String[]> parameterMap = request.getParameterMap();
        String r6Status = request.getParameter("r6_Status");
        if (org.springframework.util.StringUtils.hasLength(r6Status)){
            if (r6Status.equals("101")){
                return R.errorCode("支付失败");
            }
        }
        // 循环打印
        for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
            String key = entry.getKey();
            String[] values = entry.getValue();
            for (String value : values) {
                System.err.println("======回调开始"+key + ":" + value);
            }
        }
//        Transaction transaction;
//        transaction = notificationParser.parse(WeChatUtil.handleNodifyRequestParam(request), Transaction.class);
//        if (transaction.getTradeState() == Transaction.TradeStateEnum.SUCCESS) {
@@ -473,11 +574,11 @@
                franchiseeService.updateById(byId);
                one.setIs_pay(1);
                balanceChangeService.updateById(one);
                return R.ok(null,"success");
//            }
        }
        return R.ok(null,"SUCCESS");
        return R.ok(null,"error");
    }
    public static String generateTradeNumber() {
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java
@@ -21,6 +21,7 @@
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.GaoDeMapUtil;
import com.ruoyi.common.core.utils.SnowflakeIdWorker;
@@ -52,6 +53,7 @@
import java.net.URLEncoder;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@@ -187,13 +189,13 @@
        Page<Order> data = orderClient.queryPage(orderQueryRequest).getData();
        List<MasterWorker> list = masterWorkerService.lambdaQuery()
                .eq(MasterWorker::getIsDelete, 0).list();
        if (null != data) {
            for (Order record : data.getRecords()) {
                // 回收服务信息
                Integer serverId = record.getServerId();
                MasterWorker masterWorker = masterWorkerService.lambdaQuery()
                        .eq(MasterWorker::getId, serverId)
                        .eq(MasterWorker::getIsDelete, 0).one();
                MasterWorker masterWorker = list.stream().filter(e -> e.getId().equals(serverId)).findFirst().orElse(null);
                if (null != masterWorker) {
                    record.setServerName(masterWorker.getRealName());
                    record.setServerPhone(masterWorker.getPhone());
@@ -769,9 +771,7 @@
    public R<String> importTemplate(HttpServletResponse response) throws Exception {
        List<FrozenBuckleImportDTO> list = new ArrayList<>();
        FrozenBuckleImportDTO bean = new FrozenBuckleImportDTO();
        list.add(bean);
        // 这里URLEncoder.encode可以防止中文乱码
        String fileName = URLEncoder.encode("订单导入模板", "UTF-8");
        response.setContentType("application/vnd.ms-excel");
@@ -841,8 +841,25 @@
            String area = frozenBuckleImportDTO.getArea();
            String address = frozenBuckleImportDTO.getReservationAddress();
            String time = frozenBuckleImportDTO.getTime();
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            try{
                format.parse(time);
            }catch (Exception e){
                throw new ServiceException("上门时间格式错误");
            }
            if(!StringUtils.hasLength(address)){
                return R.fail("详细地址不能为空");
            }
            // 解析地址经纬度
            CityInfoVO cityInfoVO = GaoDeMapUtil.getAddressInfo(province + city + area + address).getDatas();
            CityInfoVO cityInfoVO = GaoDeMapUtil.getAddressInfo((province==null?"":province)
                    + (city==null?"":city)
                    + (area==null?"":area)
                    + address).getDatas();
            if(cityInfoVO==null||Objects.isNull(cityInfoVO.getLongitude()) || Objects.isNull(cityInfoVO.getLatitude())){
                return R.fail("地址输入不正确");
            }
            String areaCode = cityInfoVO.getCode();
            String provinceCode = areaCode.substring(0, 2) + "0000";
            String cityCode = areaCode.substring(0, 4) + "00";
@@ -851,7 +868,9 @@
            order.setAreaCode(areaCode);
            order.setLongitude(cityInfoVO.getLongitude());
            order.setLatitude(cityInfoVO.getLatitude());
            if (!StringUtils.hasLength(city)){
                order.setCity(cityInfoVO.getCity());
            }
            // 站点信息
            Site site = sites.stream().filter(e -> e.getSiteName().equals(frozenBuckleImportDTO.getSiteName())).findFirst().orElse(null);
            if(Objects.nonNull(site)){
@@ -885,7 +904,7 @@
                order.setServeId(recoveryServe.getId());
                order.setServePrice(recoveryServe.getDefaultPrice());
            }else {
                return R.fail("回收服务不存在");
                return R.fail("服务信息不存在");
            }
            RecoveryServePrice one = recoveryServePriceService.lambdaQuery().eq(RecoveryServePrice::getCity, order.getCityCode()).eq(RecoveryServePrice::getRecoveryServeId, order.getServeId()).eq(BaseEntity::getIsDelete, 0).one();
            if (one==null) {
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RoleController.java
@@ -65,6 +65,7 @@
    public R<IPage<Role>> queryPageList(@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
                                        @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
        return R.ok(roleService.lambdaQuery().eq(Role::getDelFlag, 0)
                        .ne(Role::getRoleName,"加盟商")
                .orderByDesc(Role::getCreateTime).page(Page.of(pageNum, pageSize)));
    }
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/TFranchiseeBalanceChange.java
@@ -71,7 +71,8 @@
    @TableField("createTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @TableField(exist = false)
    private String createTimeStr;
    @TableField("updateTime")
    private LocalDateTime updateTime;
@@ -85,7 +86,7 @@
    @TableLogic
    private Integer isDelete;
    @TableField(exist = false)
    private String payStr = "微信支付";
    private String payStr;
    @TableField(exist = false)
    private List<Region> list;
    @TableField(exist = false)
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/importExcel/FrozenBuckleImportDTO.java
@@ -1,7 +1,9 @@
package com.ruoyi.admin.importExcel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import lombok.Data;
import org.apache.poi.ss.usermodel.IndexedColors;
import java.io.Serializable;
@@ -10,29 +12,40 @@
 */
@Data
public class FrozenBuckleImportDTO implements Serializable {
    @ExcelProperty(value = "站点名称")
    @ExcelProperty(value = "*站点名称")
    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11,color = 10)
    private String siteName;
    @ExcelProperty(value = "服务信息")
    @ExcelProperty(value = "*服务信息")
    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11,color = 10)
    private String serveName;
    @ExcelProperty(value = "预约姓名")
    @ExcelProperty(value = "*预约姓名")
    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11,color = 10)
    private String reservationName;
    @ExcelProperty(value = "预约电话")
    @ExcelProperty(value = "*预约电话")
    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11,color = 10)
    private String reservationPhone;
    @ExcelProperty(value = "省份")
    @ExcelProperty(value = "省份(四川省)")
    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11)
    private String province;
    @ExcelProperty(value = "市")
    @ExcelProperty(value = "市(成都市)")
    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11)
    private String city;
    @ExcelProperty(value = "区")
    @ExcelProperty(value = "区(武侯区)")
    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11)
    private String area;
    @ExcelProperty(value = "详细地址")
    @ExcelProperty(value = "*详细地址")
    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11,color = 10)
    private String reservationAddress;
    @ExcelProperty(value = "上门时间")
    @ExcelProperty(value = "*上门时间(2024-02-28)")
    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11,color = 10)
    private String time;
    @ExcelProperty(value = "服务人员")
    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11)
    private String serverName;
    @ExcelProperty(value = "备注")
    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11)
    private String reservationRemark;
    private Integer siteId;
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/MenuServiceImpl.java
@@ -2,17 +2,17 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.admin.entity.Menu;
import com.ruoyi.admin.entity.SysUser;
import com.ruoyi.admin.mapper.MenuMapper;
import com.ruoyi.admin.mapper.SysUserMapper;
import com.ruoyi.admin.service.MenuService;
import com.ruoyi.common.core.constant.RedisConstants;
import com.ruoyi.common.security.service.TokenService;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -29,17 +29,29 @@
    @Resource
    private RedisTemplate<Object, Object> redisTemplate;
    @Resource
    private SysUserMapper sysUserMapper;
    @Resource
    private TokenService tokenService;
    @Override
    public List<Menu> menuTree() {
        // redis缓存
        Map<Object, Object> regionList = redisTemplate.opsForHash().entries(RedisConstants.MENU_TREE);
        // 获取所有地区信息 省市区三级
        List<Menu> regions = getReginList(regionList);
        // 所有地区
        Map<String, Menu> courseTypeMap = regions.stream().
                collect(Collectors.toMap(region -> region.getMenuId().toString()
                        , region -> region));
        Map<String, Menu> courseTypeMap = new HashMap<>();
        Long userid = tokenService.getLoginUser().getUserid();
        SysUser sysUser = sysUserMapper.selectById(userid);
        if (sysUser.getFranchiseeId()==null){
            // 加盟商才有加盟商余额管理
            courseTypeMap = regions.stream().filter(region -> region.getMenuId() != 88900&&
                            region.getMenuId() != 88901&&
                            region.getMenuId() != 88902&&
                            region.getMenuId() != 88903).
                    collect(Collectors.toMap(region -> region.getMenuId().toString()
                            , region -> region));
        }
        redisTemplate.opsForHash().putAll(RedisConstants.MENU_TREE, courseTypeMap);
        redisTemplate.expire(RedisConstants.MENU_TREE, 30, TimeUnit.MINUTES);
        // 生成map集合
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/TencentCosUtil.java
@@ -94,7 +94,7 @@
            //上传文件
            PutObjectResult putResult = getCosClient().putObject(bucketName, key, inputStream, objectMetadata);
            // 创建文件的网络访问路径
            String url = rootSrc + key;
            String url = "https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/" + key;
            //关闭 cosClient,并释放 HTTP 连接的后台管理线程
            getCosClient().shutdown();
            return url;
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/MoneyRecentQuery.java
@@ -11,7 +11,7 @@
    @ApiModelProperty("加盟商id")
    private Integer franchId;
    @ApiModelProperty("加盟商名字,查询用")
    private Integer franchName;
    private String name;
    @ApiModelProperty("1扣款2充值")
    private Integer type;
    @ApiModelProperty("扣款时间1")
ruoyi-service/ruoyi-admin/src/main/resources/template/加盟商余额记录.xlsx
Binary files differ
ruoyi-service/ruoyi-admin/src/main/resources/template/加盟商扣款记录.xlsx
Binary files differ
ruoyi-service/ruoyi-admin/src/main/resources/template/导表录单导入模板 .xlsx
Binary files differ
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChangeDispatchController.java
@@ -53,6 +53,7 @@
    @PostMapping(value = "/page")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "师傅名称", name = "workerName", dataType = "String"),
            @ApiImplicitParam(value = "预约人姓名", name = "reservationName", dataType = "String"),
            @ApiImplicitParam(value = "订单编号", name = "orderNumber", dataType = "String"),
            @ApiImplicitParam(value = "下单用户名称", name = "userName", dataType = "String"),
            @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
@@ -592,7 +592,8 @@
                                     @RequestParam("siteIds") List<String> siteIds
    ) {
        Page<Order> page = orderService.lambdaQuery().eq(Order::getUserId, userId)
                .eq(Order::getIsDelete, 0).in(!siteIds.isEmpty(),Order::getSiteId, siteIds).in(!cityList.isEmpty(),Order::getCityCode, cityList).page(Page.of(pageNum, pageSize));
                .eq(Order::getIsDelete, 0)
                .in(!cityList.isEmpty(),Order::getCityCode, cityList).page(Page.of(pageNum, pageSize));
        return R.ok(page);
    }
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/Order.java
@@ -177,6 +177,31 @@
    @TableField(exist = false)
    private String applyReason;
    @ApiModelProperty("代派单")
    @TableField(exist = false)
    private Integer toBeDispatched=0;
    @ApiModelProperty("待上门")
    @TableField(exist = false)
    private Integer stayDoorstep=0;
    @ApiModelProperty("带完工")
    @TableField(exist = false)
    private Integer toBeCompleted=0;
    @ApiModelProperty("已完结")
    @TableField(exist = false)
    private Integer completed=0;
    @ApiModelProperty("已取消")
    @TableField(exist = false)
    private Integer canceled =0;
    @ApiModelProperty("再投数量")
    @TableField(exist = false)
    private Integer reInvestment=0;
    @ApiModelProperty("是否为再投单")
    @TableField("is_reinvest")
    private Integer isReinvest;
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java
@@ -112,7 +112,7 @@
     * @param orderQueryRequest 筛选参数
     * @return 统计数量
     */
    List<Order> orderPageCount(@Param("data") OrderQueryRequest orderQueryRequest);
    Order orderPageCount(@Param("data") OrderQueryRequest orderQueryRequest);
    /**
     * 根据所选id查询
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/ChangeDispatchRequest.java
@@ -18,6 +18,8 @@
    private String reservationAddress;
    private String userName;
    private String reservationPhone;
    private String reservationName;
    private Integer pageNum;
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -1,4 +1,5 @@
package com.ruoyi.order.service.impl;
import java.util.Date;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -131,12 +132,12 @@
        Page<Order> page = Page.of(orderQueryRequest.getPageNum(), orderQueryRequest.getPageSize());
        // 基础查询
        Page<Order> pageList = baseMapper.queryPage(orderQueryRequest, page);
        List<ChangeDispatch> list = changeDispatchService.lambdaQuery()
                .eq(ChangeDispatch::getIsDelete, 0)
                .orderByDesc(ChangeDispatch::getCreateTime).list();
        for (Order order : pageList.getRecords()) {
            ChangeDispatch changeDispatch = changeDispatchService.lambdaQuery()
                    .eq(ChangeDispatch::getOrderId, order.getId())
                    .eq(ChangeDispatch::getIsDelete, 0)
                    .orderByDesc(ChangeDispatch::getCreateTime)
                    .last("limit 1").one();
            ChangeDispatch changeDispatch = list.stream().filter(e -> e.getOrderId().equals(order.getId()))
                    .findFirst().orElse(null);
            if (null != changeDispatch) {
                order.setApplyReason(changeDispatch.getApplyReason());
            }
@@ -160,34 +161,18 @@
    @Override
    public OrderPageCountVO orderPageCount(OrderQueryRequest orderQueryRequest) {
        List<Order> orderList = baseMapper.orderPageCount(orderQueryRequest);
        int total = 0;
        int toBeDispatched = 0;
        int stayDoorstep = 0;
        int toBeCompleted = 0;
        int completed = 0;
        int canceled = 0;
        int reInvestment = 0;
        for (Order order : orderList) {
            total++;
            Integer state = order.getState();
            if (Constants.ZERO.equals(state)) {
                toBeDispatched++;
            } else if (Constants.ONE.equals(state)) {
                stayDoorstep++;
            } else if (Constants.TWO.equals(state)) {
                toBeCompleted++;
            } else if (Constants.THREE.equals(state)) {
                completed++;
            } else if (Constants.FOUR.equals(state)) {
                canceled++;
            }
            if (order.getState().equals(Constants.SIX)) {
                reInvestment++;
            }
        }
        return new OrderPageCountVO(total, toBeDispatched, stayDoorstep,
                toBeCompleted, completed, canceled, reInvestment);
        Order order = baseMapper.orderPageCount(orderQueryRequest);
            Integer toBeDispatched = order.getToBeDispatched();
            Integer stayDoorstep = order.getStayDoorstep();
            Integer toBeCompleted = order.getToBeCompleted();
            Integer completed = order.getCompleted();
            Integer canceled = order.getCanceled();
            Integer reInvestment = order.getReInvestment();
            int total = toBeDispatched + stayDoorstep + toBeCompleted + completed + canceled + reInvestment;
            return new OrderPageCountVO(total, toBeDispatched, stayDoorstep,
                    toBeCompleted, completed, canceled, reInvestment);
    }
    @Override
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vx/GetTransferBatchByOutNo.java
@@ -9,7 +9,7 @@
public class GetTransferBatchByOutNo {            /** 商户号 */
  public static String merchantId = "1665330417"; /** 商户API私钥路径 */
  public static String privateKeyPath =
      "/usr/local/vx/apiclient_key.pem"; /** 商户证书序列号 */
      "E:/cert/ershou/apiclient_key.pem"; /** 商户证书序列号 */
  public static String merchantSerialNumber =
      "7EEA04429B006E12AAA421C002EC48BBEED5BE94"; /** 商户APIV3密钥 */
  public static String apiV3Key = "TA2npSNWmS0GcB0tFFRWA94rm1M0iSFs";
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ChangeDispatchMapper.xml
@@ -40,7 +40,13 @@
                and c.user_name like concat('%', #{data.userName}, '%')
            </if>
            <if test="data.reservationAddress != null and data.reservationAddress != ''">
                and o.reservationAddress like concat('%', #{data.reservationAddress}, '%')
                and o.reservation_address like concat('%', #{data.reservationAddress}, '%')
            </if>
            <if test="data.reservationPhone != null and data.reservationPhone != ''">
                and o.reservation_phone like concat('%', #{data.reservationPhone}, '%')
            </if>
            <if test="data.reservationName != null and data.reservationName != ''">
                and o.reservation_name like concat('%', #{data.reservationName}, '%')
            </if>
            <if test="data.cityList != null and data.cityList.size() != 0">
                and o.city_code in
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -377,8 +377,14 @@
        order by o.createTime desc
    </select>
    <select id="orderPageCount" resultMap="BaseResultMap">
        select o.*
    <select id="orderPageCount" resultType="com.ruoyi.order.entity.Order">
        select
        sum(case when o.state = 0 then 1 end) as toBeDispatched,
        sum(case when o.state = 1 then 1 end) as stayDoorstep,
        sum(case when o.state = 2 then 1 end) as toBeCompleted,
        sum(case when o.state = 3 then 1 end) as completed,
        sum(case when o.state = 4 then 1 end) as canceled,
        sum(case when o.state = 6 then 1 end) as reInvestment
        from t_order o
        <where>
            o.is_delete = 0