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