From fd45fcbd496bbeaf9ee18edd8f2f858cf9cebaf3 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 24 一月 2025 16:47:38 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ExpressCompanyMap.java |   35 ++++++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderExport.java                        |    5 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/dto/RechargeDto.java                       |    6 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageListVo.java                    |   28 +++++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java            |   23 +++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java                  |    8 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java         |   52 +++++++++++++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java       |   12 +++
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsService.java                  |    1 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RechargeSetController.java      |   10 ++
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java            |   13 +++
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml                          |    7 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java         |    1 
 13 files changed, 198 insertions(+), 3 deletions(-)

diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ExpressCompanyMap.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ExpressCompanyMap.java
new file mode 100644
index 0000000..cd89941
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ExpressCompanyMap.java
@@ -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);
+    }
+}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java
index 1e6bccb..99f177d 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java
+++ b/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();
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
index c342857..ef78283 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
+++ b/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, "订单数据");
+    }
     
     
     /**
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java
index 5777cc5..ce69e8f 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java
+++ b/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);
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
index e4f6246..3eac7b1 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
+++ b/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);
+        }
+    }
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderExport.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderExport.java
new file mode 100644
index 0000000..e5aac0d
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderExport.java
@@ -0,0 +1,5 @@
+package com.ruoyi.order.vo;
+
+public class OrderExport {
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageListVo.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageListVo.java
index 7e4070c..fdacd73 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageListVo.java
+++ b/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;
 	}
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
index e0413d7..d02e015 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
+++ b/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}, '%')
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java
index e97d3a5..89451c0 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java
+++ b/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")
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RechargeSetController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RechargeSetController.java
index 711ae18..b48222f 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RechargeSetController.java
+++ b/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();
     }
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/dto/RechargeDto.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/dto/RechargeDto.java
index fd03b95..8000229 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/dto/RechargeDto.java
+++ b/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;
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsService.java
index 59f4ee2..14fb1cf 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsService.java
+++ b/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);
+
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java
index 57eb8ab..0efbcaf 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java
@@ -673,4 +673,5 @@
         }
         return price;
     }
+
 }

--
Gitblit v1.7.1