Pu Zhibing
2025-01-24 fd45fcbd496bbeaf9ee18edd8f2f858cf9cebaf3
Merge remote-tracking branch 'origin/master'

# Conflicts:
# ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
11个文件已修改
2个文件已添加
201 ■■■■■ 已修改文件
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ExpressCompanyMap.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderExport.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageListVo.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RechargeSetController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/dto/RechargeDto.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ExpressCompanyMap.java
New file
@@ -0,0 +1,35 @@
package com.ruoyi.common.core.constant;
import java.util.HashMap;
import java.util.Map;
public class ExpressCompanyMap {
    public static final Map<String, String> EXPRESS_COMPANY_MAP = new HashMap<>();
    static {
        // 初始化快递公司信息
        EXPRESS_COMPANY_MAP.put("shunfeng", "顺丰");
        EXPRESS_COMPANY_MAP.put("zhongtong", "中通");
        EXPRESS_COMPANY_MAP.put("yuantong", "圆通");
        EXPRESS_COMPANY_MAP.put("huitongkuaidi", "汇通快递");
        EXPRESS_COMPANY_MAP.put("shentong", "申通");
        EXPRESS_COMPANY_MAP.put("yunda", "韵达");
        EXPRESS_COMPANY_MAP.put("ems", "EMS");
        EXPRESS_COMPANY_MAP.put("jd", "京东快递");
        EXPRESS_COMPANY_MAP.put("zhaijisong", "宅急送");
        EXPRESS_COMPANY_MAP.put("debangkuaidi", "德邦快递");
        EXPRESS_COMPANY_MAP.put("shansong", "闪送");
        EXPRESS_COMPANY_MAP.put("kfw", "快分网");
    }
    /**
     * 根据编码获取快递公司名称
     *
     * @param code 快递公司编码
     * @return 快递公司名称,如果编码不存在则返回 null
     */
    public static String getCompanyNameByCode(String code) {
        return EXPRESS_COMPANY_MAP.get(code);
    }
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java
@@ -20,7 +20,9 @@
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.order.feignClient.RemoteOrderGoodsClient;
import com.ruoyi.order.model.Order;
import com.ruoyi.other.api.domain.BaseSetting;
import com.ruoyi.other.api.domain.VipSetting;
import com.ruoyi.other.api.feignClient.BaseSettingClient;
import com.ruoyi.system.api.model.LoginUser;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -58,6 +60,8 @@
    private BalancePaymentService balancePaymentService;
    @Resource
    private RedisTemplate redisTemplate;
    @Resource
    private BaseSettingClient baseSettingClient;
@@ -145,6 +149,14 @@
    @GetMapping("recharge")
    @ApiOperation(value = "充值", notes = "钱包充值")
    public R<String> recharge(@ApiParam(value = "充值金额", required = true) @RequestParam BigDecimal amount) {
        R<BaseSetting> baseSetting = baseSettingClient.getBaseSetting(7);
        BaseSetting data = baseSetting.getData();
        if (data != null){
            if (amount.compareTo(new BigDecimal(data.getContent())) < 0){
                return R.fail("充值金额不能小于" + data.getContent() + "元");
            }
        }
        LoginUser loginUserApplet = tokenService.getLoginUserApplet();
        AppUser appUser = appUserService.getById(loginUserApplet.getUserid());
        BalancePayment balancePayment = new BalancePayment();
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
@@ -9,6 +9,7 @@
import com.ruoyi.account.api.model.UserAddress;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.core.web.page.TableDataInfo;
@@ -31,6 +32,7 @@
import io.swagger.annotations.*;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
@@ -512,6 +514,27 @@
        orderService.updateById(order);
        return R.ok();
    }
    /**
     * 导入物流信息
     */
    @PostMapping("/importExpress")
    public R importExpress(@RequestParam("file") MultipartFile file){
        orderService.importExpress(file);
        return R.ok();
    }
    /**
     * 导出订单信息
     */
    @GetMapping("/exportExpress")
    public void exportExpress(HttpServletResponse response,OrderPageList orderPage){
        PageInfo<OrderPageListVo> orderPageList = orderService.getOrderPageList(orderPage);
        List<OrderPageListVo> list = orderPageList.getRecords();
        ExcelUtil<OrderPageListVo> util = new ExcelUtil<OrderPageListVo>(OrderPageListVo.class);
        util.exportExcel(response, list, "订单数据");
    }
    
    
    /**
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java
@@ -6,8 +6,7 @@
import com.ruoyi.order.model.Order;
import com.ruoyi.order.util.payment.model.RefundCallbackResult;
import com.ruoyi.order.vo.*;
import org.omg.CORBA.INTERNAL;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@@ -113,4 +112,9 @@
     * 定时查询快递信息
     */
    void taskExpress();
    /**
     * 导入物流信息
     */
    void importExpress(MultipartFile file);
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -8,6 +8,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.feignClient.*;
import com.ruoyi.account.api.model.*;
import com.ruoyi.common.core.constant.ExpressCompanyMap;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
@@ -35,12 +36,15 @@
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.feignClient.SysUserClient;
import com.ruoyi.system.api.model.LoginUser;
import org.apache.poi.ss.usermodel.*;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
@@ -342,6 +346,14 @@
            List<ShopBalanceStatement> data = shopBalanceStatementClient.getShopBalanceStatementList(Arrays.asList(1, 2, 3), Long.valueOf(orderPageListVo.getId())).getData();
            BigDecimal reduce = data.stream().map(ShopBalanceStatement::getVariableAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
            orderPageListVo.setGetCommission(reduce);
            String expressJson = orderPageListVo.getExpressJson();
            // {"com":"zhongtong","num":"78853319672621"}
            JSONObject jsonObject = JSONObject.parseObject(expressJson);
            String companyName = ExpressCompanyMap.getCompanyNameByCode(jsonObject.getString("com"));
            orderPageListVo.setExpressCompany(companyName);
            orderPageListVo.setExpressNum(jsonObject.getString("num"));
        }
        return pageInfo.setRecords(list);
    }
@@ -901,4 +913,44 @@
            }
        }
    }
    @Override
    public void importExpress(MultipartFile file) {
        try (InputStream inputStream = file.getInputStream()) {
            Workbook workbook = WorkbookFactory.create(inputStream);
            Sheet sheet = workbook.getSheetAt(0); // 获取第一个Sheet
            int lastRowNum = sheet.getLastRowNum();
            for (int i = 1; i <= lastRowNum; i++) {
                Row row = sheet.getRow(i);
                String orderNum = row.getCell(1).getStringCellValue();
                // 快递单号
                String expressNum = row.getCell(7).getStringCellValue();
                // 快递公司名称
                String expressName = row.getCell(8).getStringCellValue();
                // 省区划代码
                String provinceCode = row.getCell(10).getStringCellValue();
                // 市区划代码
                String cityCode = row.getCell(12).getStringCellValue();
                Order order = this.getOne(new LambdaQueryWrapper<Order>()
                        .eq(Order::getOrderNumber, orderNum)
                        .eq(Order::getOrderType, 1)
                        .eq(Order::getDistributionMode,2)
                        .eq(Order::getOrderStatus, 1)
                );
                if (order != null){
                    JSONObject jsonObject = new JSONObject();
                    jsonObject.put("com", expressName);
                    jsonObject.put("num", expressNum);
                    order.setExpressJson(jsonObject.toJSONString());
                    order.setDeliverProvinceCode(provinceCode);
                    order.setDeliverCityCode(cityCode);
                    order.setOrderStatus(2);
                    this.updateById(order);
                }
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderExport.java
New file
@@ -0,0 +1,5 @@
package com.ruoyi.order.vo;
public class OrderExport {
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageListVo.java
@@ -1,5 +1,6 @@
package com.ruoyi.order.vo;
import com.ruoyi.common.core.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -16,20 +17,26 @@
    @ApiModelProperty("订单id")
    private String id;
    @ApiModelProperty("订单编号")
    @Excel(name = "订单编号")
    private String code;
    @ApiModelProperty("下单时间")
    @Excel(name = "下单时间")
    private String createTime;
    @ApiModelProperty("售后截止时间")
    private String afterSaleTime;
    @ApiModelProperty("下单用户")
    @Excel(name = "下单用户")
    private String userName;
    @ApiModelProperty("联系电话")
    @Excel(name = "联系方式")
    private String phone;
    @ApiModelProperty("商品类型(1=服务,2=单品)")
    @Excel(name = "订单类型", readConverterExp = "1=服务,2=单品")
    private Integer goodsType;
    @ApiModelProperty("支付方式(1=微信,2=余额,3=积分)")
    private Integer paymentType;
    @ApiModelProperty("订单金额")
    @Excel(name = "支付金额")
    private BigDecimal orderMoney;
    @ApiModelProperty("订单积分")
    private BigDecimal point;
@@ -39,6 +46,25 @@
    private Integer distributionMode;
    @ApiModelProperty("获得分佣")
    private BigDecimal getCommission;
    // 快递单号
    @Excel(name = "快递单号")
    private String expressNum;
    // 快递公司
    @Excel(name = "快递公司")
    private String expressCompany;
    // 省
    @Excel(name = "省")
    private String deliverProvince;
    // 市
    @Excel(name = "市")
    private String deliverProvinceCode;
    // 省区划代码
    @Excel(name = "省区划代码")
    private String deliverCity;
    // 市区划代码
    @Excel(name = "市区划代码")
    private String deliverCityCode;
    /**
     * 用户id
     */
@@ -48,6 +74,8 @@
    private Integer shopId;
    private String expressJson;
    public BigDecimal getGetPoint(){
        return point;
    }
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -62,7 +62,12 @@
            point,
            order_status as status,
            shop_id,
            distribution_mode as distributionMode
            distribution_mode as distributionMode,
            express_json,
            deliver_province,
            deliver_province_code,
            deliver_city,
            deliver_city_code
        from t_order where del_flag = 0 and pay_status = 2
        <if test="null != item.code and '' != item.code">
            and order_number like CONCAT('%', #{item.code}, '%')
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java
@@ -56,6 +56,19 @@
    }
    /**
     * 商品克隆
     */
    @GetMapping("/cloneGoods")
    @ApiOperation(value = "商品克隆", tags = {"管理后台-商品管理"})
    public R<Void> cloneGoods(@RequestParam Long goodsId,@RequestParam String goodsName) {
        Goods goods = goodsService.getManageGoodsDetail(goodsId);
        goods.setId(null);
        goods.setName(goodsName);
        goodsService.addGoods(goods);
        return R.ok();
    }
    /**
     * 管理后台商品列表
     */
    @GetMapping("/manageGoodsList")
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RechargeSetController.java
@@ -1,12 +1,15 @@
package com.ruoyi.other.controller;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.account.api.model.UserClickLog;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.domain.BaseSetting;
import com.ruoyi.other.api.domain.RechargeSet;
import com.ruoyi.other.dto.RechargeDto;
import com.ruoyi.other.service.BaseSettingService;
import com.ruoyi.other.service.RechargeSetService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
@@ -27,6 +30,8 @@
public class RechargeSetController {
    @Resource
    private RechargeSetService rechargeSetService;
    @Resource
    private BaseSettingService baseSettingService;
    @GetMapping("/list")
    @ApiOperation(value = "充值设置查询", tags = {"后台"})
@@ -42,6 +47,11 @@
        List<RechargeSet> list = rechargeSetService.list();
        rechargeSetService.removeBatchByIds(list);
        rechargeSetService.saveBatch(rechargeDto.getRechargeDto());
        if (rechargeDto.getResetQuota() != null){
            baseSettingService.update(new LambdaUpdateWrapper<BaseSetting>()
                    .eq(BaseSetting::getId, 7)
                    .set(BaseSetting::getContent, rechargeDto.getResetQuota().toString()));
        }
        return R.ok();
    }
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/dto/RechargeDto.java
@@ -1,9 +1,12 @@
package com.ruoyi.other.dto;
import com.ruoyi.other.api.domain.RechargeSet;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.List;
/**
@@ -11,6 +14,9 @@
 * @date 2024/12/18 18:03
 */
@Data
@ApiModel(value = "RechargeDto对象", description = "充值设置")
public class RechargeDto {
    @ApiModelProperty(value = "重置限额")
    private BigDecimal resetQuota;
    private List<RechargeSet> rechargeDto;
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsService.java
@@ -32,4 +32,5 @@
    IPage<Goods> getManageGoodsList(Page<Goods> page, Goods goods);
    Goods getManageGoodsDetail(Long goodsId);
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java
@@ -673,4 +673,5 @@
        }
        return price;
    }
}