diff --git a/admin-pc/dist.zip b/admin-pc/dist.zip index 7555961..719dcca 100644 Binary files a/admin-pc/dist.zip and b/admin-pc/dist.zip differ diff --git a/admin-pc/src/views/commontOrder/CommonOrderList.vue b/admin-pc/src/views/commontOrder/CommonOrderList.vue new file mode 100644 index 0000000..326e486 --- /dev/null +++ b/admin-pc/src/views/commontOrder/CommonOrderList.vue @@ -0,0 +1,671 @@ + + + + \ No newline at end of file diff --git a/admin-pc/src/views/commontOrder/modules/CommonOrderModal.vue b/admin-pc/src/views/commontOrder/modules/CommonOrderModal.vue new file mode 100644 index 0000000..7ceebf7 --- /dev/null +++ b/admin-pc/src/views/commontOrder/modules/CommonOrderModal.vue @@ -0,0 +1,255 @@ + + + \ No newline at end of file diff --git a/delete_orders_before_july10.sql b/delete_orders_before_july10.sql new file mode 100644 index 0000000..1312168 --- /dev/null +++ b/delete_orders_before_july10.sql @@ -0,0 +1,21 @@ +-- 删除7月10号之前的订单数据 +-- 注意:执行前请先备份数据,此操作不可逆 + +-- 删除主订单(pid = '0')中7月10号之前的数据 +DELETE FROM common_order +WHERE create_time < '2024-07-10 00:00:00' +AND pid = '0'; + +-- 删除所有子订单中7月10号之前的数据 +DELETE FROM common_order +WHERE create_time < '2024-07-10 00:00:00' +AND pid != '0'; + +-- 或者使用一条SQL删除所有7月10号之前的数据(包括主订单和子订单) +-- DELETE FROM common_order WHERE create_time < '2024-07-10 00:00:00'; + +-- 查询删除前的数据量(用于确认) +-- SELECT COUNT(*) as total_count FROM common_order WHERE create_time < '2024-07-10 00:00:00'; + +-- 查询删除后的数据量(用于验证) +-- SELECT COUNT(*) as remaining_count FROM common_order; \ No newline at end of file diff --git a/module-common/src/main/java/org/jeecg/api/controller/AppletOrderController.java b/module-common/src/main/java/org/jeecg/api/controller/AppletOrderController.java index 53b5478..9e2d9c0 100644 --- a/module-common/src/main/java/org/jeecg/api/controller/AppletOrderController.java +++ b/module-common/src/main/java/org/jeecg/api/controller/AppletOrderController.java @@ -1,14 +1,18 @@ package org.jeecg.api.controller; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.jeecg.api.bean.PageBean; import org.jeecg.api.service.AppletOrderService; +import org.jeecg.api.service.impl.LogisticsUtil; import org.jeecg.common.api.vo.Result; import org.jeecg.common.dblogistics.dto.LogisticsTrackPushRequest; +import org.jeecg.common.dblogistics.service.DBLogisticsService; import org.jeecg.modules.commonOrder.entity.CommonOrder; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -22,6 +26,10 @@ public class AppletOrderController { @Resource private AppletOrderService appletOrderService; + @Autowired + private DBLogisticsService logisticsService; + + // 联系客服问题相关列表数据带分页 @ApiOperation(value="联系客服问题相关列表数据带分页", notes="联系客服问题相关列表数据带分页") @GetMapping(value = "/getQuestionList") @@ -64,7 +72,6 @@ public class AppletOrderController { } - //获取预约时间断 @ApiOperation(value="获取预约时间断", notes="获取预约时间断") @GetMapping(value = "/getOrderTime") @@ -100,5 +107,12 @@ public class AppletOrderController { return appletOrderService.wuliuStatus(params); } + @ApiOperation(value="通过运单号获取物流轨迹", notes="通过运单号获取物流轨迹") + @GetMapping(value = "/queryTrace") + public Object queryTrace(String wuliuNo){ + return Result.ok(JSONObject.parseObject(logisticsService.queryTrace(wuliuNo))); + } + + } diff --git a/module-common/src/main/java/org/jeecg/api/service/AppletOrderTeamService.java b/module-common/src/main/java/org/jeecg/api/service/AppletOrderTeamService.java index 7448d07..1cf8839 100644 --- a/module-common/src/main/java/org/jeecg/api/service/AppletOrderTeamService.java +++ b/module-common/src/main/java/org/jeecg/api/service/AppletOrderTeamService.java @@ -35,5 +35,7 @@ public interface AppletOrderTeamService { Result adminOrderBrowseRecord(String token, String orderIds); - Result getOrderIdBywliuNo(String token, String wliuNo); + Result getOrderIdBywliuNo(String token, String wliuNo);//根据订单id查询运单号 + + Result refund(String id);//退货退款 } diff --git a/module-common/src/main/java/org/jeecg/api/service/impl/AppletIndexServiceImpl.java b/module-common/src/main/java/org/jeecg/api/service/impl/AppletIndexServiceImpl.java index 73ffd61..e919b26 100644 --- a/module-common/src/main/java/org/jeecg/api/service/impl/AppletIndexServiceImpl.java +++ b/module-common/src/main/java/org/jeecg/api/service/impl/AppletIndexServiceImpl.java @@ -80,6 +80,9 @@ public class AppletIndexServiceImpl implements AppletIndexService { .lambdaQuery() .orderByDesc(CommonGet::getCreateTime) .page(new Page(1, 6)); + + + return Result.OK("最近回收商品", page.getRecords()); } diff --git a/module-common/src/main/java/org/jeecg/api/service/impl/AppletLoginServiceImpl.java b/module-common/src/main/java/org/jeecg/api/service/impl/AppletLoginServiceImpl.java index c00267f..1067109 100644 --- a/module-common/src/main/java/org/jeecg/api/service/impl/AppletLoginServiceImpl.java +++ b/module-common/src/main/java/org/jeecg/api/service/impl/AppletLoginServiceImpl.java @@ -34,6 +34,7 @@ import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.*; +import java.util.stream.Collectors; @Slf4j @Service @@ -90,8 +91,7 @@ public class AppletLoginServiceImpl implements AppletLoginService { if (StringUtils.isBlank(wxOpenid)) { throw new JeecgBootException("未获取到openid"); } - Random random = new Random(); - int randomNumber = 100000 + random.nextInt(900000); + HanHaiMember member = memberService.lambdaQuery().eq(HanHaiMember::getAppletOpenid,wxOpenid).one(); if (member == null) { @@ -149,7 +149,7 @@ public class AppletLoginServiceImpl implements AppletLoginService { // 生成token返回给小程序端 String token = JwtUtil.sign(member.getAppletOpenid(), wxOpenid); - member.setIntentioCode(String.valueOf(randomNumber)); + member.setIntentioCode(randomInt()); memberService.save(member); redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token); // 设置超时时间 @@ -175,6 +175,25 @@ public class AppletLoginServiceImpl implements AppletLoginService { return result; } + + //生成一个唯一的邀请码 + private String randomInt(){ + Random random = new Random(); + + List collect = memberService.lambdaQuery() + .select(HanHaiMember::getIntentioCode) + .list().stream().map(n -> n.getIntentioCode()) + .collect(Collectors.toList()); + + String randomNumber = String.valueOf(10000000 + random.nextInt(90000000)); + + while (collect.contains(randomNumber)){ + randomNumber = String.valueOf(10000000 + random.nextInt(90000000)); + } + + return randomNumber; + } + private static final String TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s"; public String getAccessToken() throws Exception { @@ -255,8 +274,10 @@ public class AppletLoginServiceImpl implements AppletLoginService { if ("Y".equals(hanHaiMember.getIsUser()) && StringUtils.isNotBlank(hanHaiMember.getIsTuiType())){ CommonDistributionRatio ratio = commonDistributionRatioService.getById(hanHaiMember.getIsTuiType()); - hanHaiMember.setIsTuiTypeTitle(ratio.getTitle()); - hanHaiMember.setIsTuiType(ratio.getSort().toString()); + if (ratio != null){ + hanHaiMember.setIsTuiTypeTitle(ratio.getTitle()); + hanHaiMember.setIsTuiType(ratio.getSort().toString()); + } } //查询我的所有的提现记录 diff --git a/module-common/src/main/java/org/jeecg/api/service/impl/AppletMoneyLogServiceImpl.java b/module-common/src/main/java/org/jeecg/api/service/impl/AppletMoneyLogServiceImpl.java index 173fee5..ea78af7 100644 --- a/module-common/src/main/java/org/jeecg/api/service/impl/AppletMoneyLogServiceImpl.java +++ b/module-common/src/main/java/org/jeecg/api/service/impl/AppletMoneyLogServiceImpl.java @@ -9,6 +9,7 @@ import org.apache.commons.lang3.StringUtils; import org.jeecg.api.bean.PageBean; import org.jeecg.api.service.AppletMoneyLogService; import org.jeecg.api.transfer.TransferToUser; +import org.jeecg.api.transfer.WXPayUtility; import org.jeecg.common.api.vo.Result; import org.jeecg.config.shiro.ShiroRealm; import org.jeecg.modules.commonBook.entity.CommonBook; @@ -88,23 +89,18 @@ public class AppletMoneyLogServiceImpl implements AppletMoneyLogService { BigDecimal balance = member.getMoney();//用户余额 //金额不能为空 if(null == commonMoneyLog.getMoney()){ - log.info("金额为空,请填写大于0的整数金额"); - return Result.error("金额小于0,请填写大于0的整数金额"); + log.info("金额为空,请填写大于0.3的整数金额"); + return Result.error("最低提现0.3元"); } if(commonMoneyLog.getMoney().compareTo(balance)>0){ //提现金额大于推广佣金 log.info("用户余额不足,当前用户余额:{}", balance); return Result.error("用户余额不足"); } - //提现金额要为整数 - if(commonMoneyLog.getMoney().scale()>0){ - log.info("请填写大于0的整数金额,当前输入金额:{}", commonMoneyLog.getMoney()); - return Result.error("请填写大于0的整数金额"); - } //提现金额大于0的整数 - if(commonMoneyLog.getMoney().compareTo(new BigDecimal(0))<=0){ - log.info("请填写大于0的整数金额,当前输入金额:{}", commonMoneyLog.getMoney()); - return Result.error("请填写大于0的整数金额"); + if(commonMoneyLog.getMoney().compareTo(new BigDecimal(0.3))<=0){ + log.info("请填写大于0.3的整数金额,当前输入金额:{}", commonMoneyLog.getMoney()); + return Result.error("最低提现0.3元"); } if(org.apache.commons.lang.StringUtils.isEmpty(commonMoneyLog.getUserName())){ log.info("用户姓名未填写"); @@ -149,7 +145,16 @@ public class AppletMoneyLogServiceImpl implements AppletMoneyLogService { } //3、执行提现 - TransferToUser.TransferToUserResponse response = client.run(request, map); + TransferToUser.TransferToUserResponse response = null; + try { + response = client.run(request, map); + }catch (WXPayUtility.ApiException e){ + if (e.statusCode == 400){ + return Result.error("请输入您的真实姓名"); + } + return Result.error("提现失败"); + } + log.info("提现发起成功,outBillNo:"+response.outBillNo + ",transferBillNo:" +response.transferBillNo + ",state:" +response.state+ ",packageInfo:" + response.packageInfo); switch (response.state){ case ACCEPTED: diff --git a/module-common/src/main/java/org/jeecg/api/service/impl/AppletOrderServiceImpl.java b/module-common/src/main/java/org/jeecg/api/service/impl/AppletOrderServiceImpl.java index b6ffb11..962c2a3 100644 --- a/module-common/src/main/java/org/jeecg/api/service/impl/AppletOrderServiceImpl.java +++ b/module-common/src/main/java/org/jeecg/api/service/impl/AppletOrderServiceImpl.java @@ -164,6 +164,11 @@ public class AppletOrderServiceImpl implements AppletOrderService { .one(); + if (commonOrder == null){ + return Result.error("订单不存在"); + } + + commonOrder.setCommonOrderList(getCommonOrderList(orderId, 0)); commonOrder.setOrderCheckList(getCommonOrderList(orderId, 1)); @@ -343,6 +348,7 @@ public class AppletOrderServiceImpl implements AppletOrderService { //创建主订单 CommonOrder cityOrder = new CommonOrder(); cityOrder.setId(orderId); + cityOrder.setOrdeNo(orderId); cityOrder.setUserId(hanHaiMember.getId()); cityOrder.setShopId(null); cityOrder.setNum(totalNum); @@ -416,15 +422,15 @@ public class AppletOrderServiceImpl implements AppletOrderService { @Override public Result getCeckoutReasons(String token, String classId, String type) { - if (StringUtils.isBlank(classId)){ - return Result.error("classId分类ID不能为空"); - } +// if (StringUtils.isBlank(classId)){ +// return Result.error("classId分类ID不能为空"); +// } if (StringUtils.isBlank(type)){ return Result.error("type类型不能为空"); } return Result.ok(commonReasonsService.lambdaQuery() - .in(CommonReasons::getClassId, classId) + .like(StringUtils.isNotBlank(classId), CommonReasons::getClassId, classId) .eq(CommonReasons::getType, type) .list() ); @@ -465,11 +471,14 @@ public class AppletOrderServiceImpl implements AppletOrderService { // 根据物流状态更新订单状态 if (LogisticsTrackStatusConstants.GOT.equals(traceInfo.getStatus())) { + // 签收状态,更新订单为 已取件+快递上门 updateOrderStatusByTrackingNumber(trackInfo.getTracking_number(), 1, 1); + } else if (LogisticsTrackStatusConstants.SIGNED.equals(traceInfo.getStatus()) || LogisticsTrackStatusConstants.BACK_SIGNED.equals(traceInfo.getStatus()) || LogisticsTrackStatusConstants.STA_SIGN.equals(traceInfo.getStatus())) { + // 签收状态,更新订单为已 已取件+透明质检 updateOrderStatusByTrackingNumber(trackInfo.getTracking_number(), 1, 2); @@ -643,7 +652,7 @@ public class AppletOrderServiceImpl implements AppletOrderService { for (CommonOrder order : orders) { - if (state != 1 && status != 1){ + if (state == 1 && status == 2){ // 删除其他用户的浏览记录 commonAdminOrderBrowseRecordService .remove(Wrappers.lambdaQuery() diff --git a/module-common/src/main/java/org/jeecg/api/service/impl/AppletOrderTeamServiceImpl.java b/module-common/src/main/java/org/jeecg/api/service/impl/AppletOrderTeamServiceImpl.java index f999bfb..321cc08 100644 --- a/module-common/src/main/java/org/jeecg/api/service/impl/AppletOrderTeamServiceImpl.java +++ b/module-common/src/main/java/org/jeecg/api/service/impl/AppletOrderTeamServiceImpl.java @@ -135,15 +135,35 @@ public class AppletOrderTeamServiceImpl implements AppletOrderTeamService { .eq(CommonOrder::getPid,"0") .page(page); + if (pageList.getRecords().size() == 0){ + return Result.OK("订单列表",pageList); + } + + List ids = pageList.getRecords().stream().map(n -> n.getId()) + .collect(Collectors.toList()); + + //查询阅读记录 + List orderIds = commonAdminOrderBrowseRecordService + .lambdaQuery() + .eq(CommonAdminOrderBrowseRecord::getUserId, hanHaiMember.getId()) + .in(ids.size() > 0, CommonAdminOrderBrowseRecord::getOrderId, ids) + .select(CommonAdminOrderBrowseRecord::getOrderId) + .list() + .stream().map(n -> n.getOrderId()) + .collect(Collectors.toList()); //得到集合数据 for (CommonOrder commonOrder : pageList.getRecords()) { - //查询下级 - List children = commonOrderService - .lambdaQuery() - .eq(CommonOrder::getPid, commonOrder.getId()) - .list(); - commonOrder.setCommonOrderList(children); +// //查询下级 +// List children = commonOrderService +// .lambdaQuery() +// .eq(CommonOrder::getPid, commonOrder.getId()) +// .list(); + + //是否已读 + commonOrder.setReadFlag(orderIds.contains(commonOrder.getId())); + +// commonOrder.setCommonOrderList(children); } @@ -155,6 +175,10 @@ public class AppletOrderTeamServiceImpl implements AppletOrderTeamService { HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); CommonOrder commonOrder = commonOrderService.getById(orderId); + if (commonOrder == null){ + return Result.error("订单不存在"); + } + commonOrder.setCommonOrderList(getCommonOrderList(orderId, 0)); commonOrder.setOrderCheckList(getCommonOrderList(orderId, 1)); @@ -501,11 +525,6 @@ public class AppletOrderTeamServiceImpl implements AppletOrderTeamService { orderReq.setHasChild("1"); orderReq.setType(1); - int testingStatus = 0; - if (orderReq.getCommonOrderList().size() > 0){ - testingStatus = orderReq.getCommonOrderList().get(0).getTestingStatus(); - } - //设置商品 if (StringUtils.isNotBlank(orderReq.getShopId())){ CommonShop shop = commonShopService.getById(orderReq.getShopId()); @@ -515,7 +534,7 @@ public class AppletOrderTeamServiceImpl implements AppletOrderTeamService { orderReq.setDetails(shop.getService()); orderReq.setShopClass(shop.getShopClass()); orderReq.setCreateTime(new Date()); - }if (testingStatus == 1){ + }else if (orderReq.getTestingStatus() == 1){ //质量问题 orderReq.setTitle("质量问题"); }else { @@ -685,6 +704,7 @@ public class AppletOrderTeamServiceImpl implements AppletOrderTeamService { userLog.setState(1); // 立即到账状态 userLog.setUserId(member.getId()); userLog.setOldMoney(member.getMoney()); // 记录原始余额 + userLog.setOrderId(order.getId()); commonMoneyLogService.save(userLog); //累计回收金额 @@ -712,6 +732,7 @@ public class AppletOrderTeamServiceImpl implements AppletOrderTeamService { log.setType(0); log.setIsBrokerage("Y"); log.setState(0); // 待打款状态,48小时后由定时任务自动打款 + log.setOrderId(order.getId()); commonMoneyLogService.save(log); } } @@ -722,7 +743,7 @@ public class AppletOrderTeamServiceImpl implements AppletOrderTeamService { HanHaiMember member2 = hanHaiMemberService.getById(member.getVid()); if (member2 != null && "Y".equals(member2.getIsUser()) && StringUtils.isNotBlank(member2.getIsTuiType())){ CommonDistributionRatio byId = commonDistributionRatioService.getById(member2.getIsTuiType()); - if (byId != null && byId.getIndirect() != null){ + if (byId != null && byId.getIndirect() != null && !byId.getIndirect().equals(BigDecimal.ZERO)){ CommonMoneyLog log = new CommonMoneyLog(); log.setMoney(order.getPrice().multiply(byId.getIndirect()).divide(new BigDecimal(100))); @@ -732,9 +753,48 @@ public class AppletOrderTeamServiceImpl implements AppletOrderTeamService { log.setIsBrokerage("Y"); log.setFormUserId(member.getId());//来源 log.setState(0); // 待打款状态,48小时后由定时任务自动打款 + log.setOrderId(order.getId()); commonMoneyLogService.save(log); } } } } + + @Override + public Result refund(String id) {//退货退款 + + CommonOrder order = commonOrderService.getById(id); + + if(order == null){ + return Result.error("订单不存在"); + } + + if(order.getStatus() != 3 || order.getState() != 2){ + return Result.error("订单还未结算或已退回"); + } + + HanHaiMember member = hanHaiMemberService.getById(order.getUserId()); + if (member != null){ + BigDecimal money = member.getMoney() == null ? BigDecimal.ZERO : member.getMoney(); + member.setMoney(money.subtract(order.getPrice())); + hanHaiMemberService.updateById(member); + } + + List list = commonMoneyLogService.lambdaQuery() + .eq(CommonMoneyLog::getOrderId, id) + .list(); + + for (CommonMoneyLog log : list) { + log.setState(2);//取消状态 + } + + commonMoneyLogService.updateBatchById(list); + + order.setState(5); + + commonOrderService.updateById(order); + + return Result.ok(member); + } + } diff --git a/module-common/src/main/java/org/jeecg/api/service/impl/AppletPromotionServiceImpl.java b/module-common/src/main/java/org/jeecg/api/service/impl/AppletPromotionServiceImpl.java index 0b5408c..7612f3d 100644 --- a/module-common/src/main/java/org/jeecg/api/service/impl/AppletPromotionServiceImpl.java +++ b/module-common/src/main/java/org/jeecg/api/service/impl/AppletPromotionServiceImpl.java @@ -12,6 +12,7 @@ import org.jeecg.api.service.AppletPromotionService; import org.jeecg.api.wxUtils.HttpClientUtil; import org.jeecg.api.wxUtils.WxHttpUtils; import org.jeecg.common.api.vo.Result; +import org.jeecg.common.exception.JeecgBootException; import org.jeecg.config.shiro.ShiroRealm; import org.jeecg.modules.commonConfig.entity.CommonConfig; import org.jeecg.modules.commonConfig.service.ICommonConfigService; @@ -37,6 +38,8 @@ import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; import javax.imageio.ImageIO; import java.awt.*; +import java.awt.font.FontRenderContext; +import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.File; @@ -109,58 +112,51 @@ public class AppletPromotionServiceImpl implements AppletPromotionService { //获取推广二维码 2 @Override public byte[] getInviteCode2(String token){ - HanHaiMember member = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); - - // 获取环境配置 - CommonConfig vsion = commonConfigService.lambdaQuery() - .eq(CommonConfig::getKeyName, "v_sion") - .one(); - Integer vsionStr = Integer.parseInt(vsion.getKeyContent()); - String trial = "release"; - if(vsionStr == 0){ - trial= "release"; - }else if(vsionStr == 1){ - trial= "trial"; - }else{ - trial= "develop"; - } - - // 获取必要的配置信息 - CommonConfig xcxSharePage = commonConfigService.lambdaQuery() - .eq(CommonConfig::getKeyName, "xcxSharePage") - .one(); - - CommonConfig oneImage = commonConfigService.lambdaQuery() - .eq(CommonConfig::getKeyName, "codeImg") - .one(); - - CommonConfig qr_code = commonConfigService.lambdaQuery() - .eq(CommonConfig::getKeyName, "qr_code") - .one(); - - CommonConfig image_go_url = commonConfigService.lambdaQuery() - .eq(CommonConfig::getKeyName, "image_go_url") - .one(); - - String backgroundImageUrl = qr_code.getKeyContent(); + try { + // 1. 验证token和用户 + if (StringUtils.isBlank(token)) { + throw new JeecgBootException("token不能为空"); + } + + HanHaiMember member = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); + if (member == null) { + throw new JeecgBootException("用户不存在或token无效"); + } - // 尝试从缓存获取二维码 - String cacheKey = "CodeImage::" + trial + member.getId(); - WxQrCodeVo wxCodeVo = new WxQrCodeVo(); + // 2. 获取环境配置,增加容错处理 + String trial = "release"; + try { + CommonConfig vsion = commonConfigService.lambdaQuery() + .eq(CommonConfig::getKeyName, "v_sion") + .one(); + if (vsion != null && StringUtils.isNotBlank(vsion.getKeyContent())) { + Integer vsionStr = Integer.parseInt(vsion.getKeyContent()); + if (vsionStr == 1) { + trial = "trial"; + } else if (vsionStr == 2) { + trial = "develop"; + } + } + } catch (Exception e) { + // 配置获取失败,使用默认值 + trial = "release"; + } - wxCodeVo.setName("爱回收欢迎您"); + // 3. 获取必要的配置信息,增加容错处理 + CommonConfig xcxSharePage = commonConfigService.lambdaQuery() + .eq(CommonConfig::getKeyName, "xcxSharePage") + .one(); + if (xcxSharePage == null || StringUtils.isBlank(xcxSharePage.getKeyContent())) { + throw new JeecgBootException("小程序分享页面配置不存在"); + } - // 如果启用了Redis缓存,可以取消下面注释 -// String cachedQrCode = (String) redisUtil.get(cacheKey); -// if(cachedQrCode != null){ -// String combinedImageUrl = this.generateAndCombineImagesFromUrl(cachedQrCode, backgroundImageUrl, "combined_image_code"); -// wxCodeVo.setUrl(combinedImageUrl); -// return Result.OK(wxCodeVo); -// } + CommonConfig qr_code = commonConfigService.lambdaQuery() + .eq(CommonConfig::getKeyName, "qr_code") + .one(); - try { + String backgroundImageUrl = qr_code.getKeyContent(); - // 准备微信API请求参数 + // 4. 准备微信API请求参数 String key = "shareId=" + member.getId(); Map param = new HashMap<>(); param.put("path", xcxSharePage.getKeyContent() + "?" + key); @@ -169,62 +165,121 @@ public class AppletPromotionServiceImpl implements AppletPromotionService { param.put("auto_color", false); param.put("env_version", trial); -// Map line_color = new HashMap<>(); -// line_color.put("r", 0); -// line_color.put("g", 0); -// line_color.put("b", 0); -// param.put("line_color", line_color); - - -// param.put("is_hyaline", true);//透明 - - // 获取微信小程序码 - String accessToken = wxHttpUtils.getAccessToken(); - String url = "https://api.weixin.qq.com/wxa/getwxacode?access_token=" + accessToken; - - // 请求微信API获取二维码图片数据 - RestTemplate rest = new RestTemplate(); - MultiValueMap headers = new LinkedMultiValueMap<>(); - org.springframework.http.HttpEntity requestEntity = new org.springframework.http.HttpEntity(JSON.toJSONString(param), headers); - ResponseEntity entity = rest.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]); - byte[] qrCodeBytes = entity.getBody(); - - // 直接将二维码图片转为MultipartFile,避免写入临时文件 -// MultipartFile qrCodeFile = createMultipartFile(qrCodeBytes, "qrcode.jpg"); - - // 上传二维码到阿里云并获取URL -// String qrCodeImageUrl = image_go_url.getKeyContent() + this.uploadAliYunOss(qrCodeFile); - - // 合并图片并上传 -// String combinedImageUrl = this.generateAndCombineImagesFromUrl2(qrCodeBytes, backgroundImageUrl); - - // 设置返回数据 - - // 如果启用了Redis缓存,可以取消下面注释 - //redisUtil.set(cacheKey, qrCodeImageUrl, 3600); // 缓存一小时 + // 5. 获取微信小程序码,增加重试机制 + byte[] qrCodeBytes = null; + int retryCount = 0; + int maxRetries = 3; + + while (retryCount < maxRetries && qrCodeBytes == null) { + try { + String accessToken = wxHttpUtils.getAccessToken(); + if (StringUtils.isBlank(accessToken)) { + throw new JeecgBootException("获取微信access_token失败"); + } + + String url = "https://api.weixin.qq.com/wxa/getwxacode?access_token=" + accessToken; + + // 请求微信API获取二维码图片数据 + RestTemplate rest = new RestTemplate(); + MultiValueMap headers = new LinkedMultiValueMap<>(); + headers.add("Content-Type", "application/json"); + + org.springframework.http.HttpEntity requestEntity = + new org.springframework.http.HttpEntity<>(JSON.toJSONString(param), headers); + + ResponseEntity entity = rest.exchange(url, HttpMethod.POST, requestEntity, byte[].class); + + if (entity.getStatusCode().is2xxSuccessful() && entity.getBody() != null) { + qrCodeBytes = entity.getBody(); + // 验证返回的数据是否为图片 + if (qrCodeBytes.length < 100) { + // 可能是错误信息,重新尝试 + qrCodeBytes = null; + throw new JeecgBootException("微信API返回数据异常"); + } + } else { + throw new JeecgBootException("微信API请求失败"); + } + } catch (Exception e) { + retryCount++; + if (retryCount >= maxRetries) { + throw new JeecgBootException("获取微信小程序码失败,已重试" + maxRetries + "次: " + e.getMessage()); + } + // 等待一段时间后重试 + try { + Thread.sleep(1000 * retryCount); + } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); + throw new JeecgBootException("线程被中断"); + } + } + } -// return qrCodeBytes; + if (qrCodeBytes == null) { + throw new JeecgBootException("无法获取微信小程序码"); + } + // 6. 合并图片并返回 return this.generateAndCombineImagesFromUrl2(qrCodeBytes, backgroundImageUrl); + } catch (Exception e) { e.printStackTrace(); - - return null; + throw new JeecgBootException(e.getMessage()); } } public byte[] generateAndCombineImagesFromUrl2(byte[] qrCodeImageByte, String backgroundUrl) { File file = null; try { + // 验证输入参数 + if (qrCodeImageByte == null || qrCodeImageByte.length == 0) { + throw new JeecgBootException("二维码图片数据为空"); + } + + if (StringUtils.isBlank(backgroundUrl)) { + return qrCodeImageByte; + } + // 从字节数组加载小程序码图像 BufferedImage qrCodeImage = ImageIO.read(new ByteArrayInputStream(qrCodeImageByte)); + if (qrCodeImage == null) { + throw new RuntimeException("无法解析二维码图片数据"); + } - // 从URL加载背景图像 - URL backgroundImageUrl = new URL(backgroundUrl); - BufferedImage backgroundImage = ImageIO.read(backgroundImageUrl); + // 从URL加载背景图像,增加重试机制 + BufferedImage backgroundImage = null; + int retryCount = 0; + int maxRetries = 3; + + while (retryCount < maxRetries && backgroundImage == null) { + try { + URL backgroundImageUrl = new URL(backgroundUrl); + backgroundImage = ImageIO.read(backgroundImageUrl); + if (backgroundImage == null) { + throw new RuntimeException("无法加载背景图片"); + } + } catch (Exception e) { + retryCount++; + if (retryCount >= maxRetries) { + // 如果背景图片加载失败,创建一个默认背景 + backgroundImage = createDefaultBackground(); + } else { + try { + Thread.sleep(1000); + } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); + break; + } + } + } + } // 创建一个新的BufferedImage来保存合并后的图像 Graphics2D g2d = backgroundImage.createGraphics(); + + // 设置抗锯齿 + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); int wh = backgroundImage.getWidth() / 3; @@ -244,8 +299,9 @@ public class AppletPromotionServiceImpl implements AppletPromotionService { return Files.readAllBytes(file.toPath()); } catch (Exception e) { - - throw new RuntimeException("生成合并图片失败", e); + e.printStackTrace(); + // 如果合并失败,返回原始二维码图片 + return qrCodeImageByte; } finally { // 删除临时文件 if (file != null && file.exists()) { @@ -254,6 +310,32 @@ public class AppletPromotionServiceImpl implements AppletPromotionService { } } + /** + * 创建默认背景图片 + */ + private BufferedImage createDefaultBackground() { + int width = 600; + int height = 800; + BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + Graphics2D g2d = image.createGraphics(); + + // 设置渐变背景 + GradientPaint gradient = new GradientPaint(0, 0, new Color(255, 255, 255), + 0, height, new Color(240, 240, 240)); + g2d.setPaint(gradient); + g2d.fillRect(0, 0, width, height); + + // 添加一些装饰元素 + g2d.setColor(new Color(200, 200, 200)); + g2d.setStroke(new BasicStroke(1)); + for (int i = 0; i < 5; i++) { + g2d.drawOval(50 + i * 100, 50, 80, 80); + } + + g2d.dispose(); + return image; + } + @Override public Result getHanHaiMemberUser(String token,Integer state,PageBean pageBean){ diff --git a/module-common/src/main/java/org/jeecg/modules/commonMoneyLog/entity/CommonMoneyLog.java b/module-common/src/main/java/org/jeecg/modules/commonMoneyLog/entity/CommonMoneyLog.java index c6336c8..b41fcb7 100644 --- a/module-common/src/main/java/org/jeecg/modules/commonMoneyLog/entity/CommonMoneyLog.java +++ b/module-common/src/main/java/org/jeecg/modules/commonMoneyLog/entity/CommonMoneyLog.java @@ -102,6 +102,9 @@ public class CommonMoneyLog implements Serializable { @Excel(name = "参数", width = 15, dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id") @ApiModelProperty(value = "参数") private java.lang.String packageInfo; + /**参数*/ + @ApiModelProperty(value = "订单ID") + private java.lang.String orderId; /**佣金来源用户*/ @TableField(exist = false) diff --git a/module-common/src/main/java/org/jeecg/modules/commonOrder/controller/CommonOrderController.java b/module-common/src/main/java/org/jeecg/modules/commonOrder/controller/CommonOrderController.java index 23b8efb..5619223 100644 --- a/module-common/src/main/java/org/jeecg/modules/commonOrder/controller/CommonOrderController.java +++ b/module-common/src/main/java/org/jeecg/modules/commonOrder/controller/CommonOrderController.java @@ -9,6 +9,8 @@ import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import org.jeecg.api.service.AppletOrderTeamService; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.util.oConvertUtils; @@ -39,7 +41,7 @@ import org.jeecg.common.aspect.annotation.AutoLog; /** * @Description: 订单信息表 * @Author: jeecg-boot - * @Date: 2025-05-21 + * @Date: 2025-07-16 * @Version: V1.0 */ @Api(tags="订单信息表") @@ -49,6 +51,8 @@ import org.jeecg.common.aspect.annotation.AutoLog; public class CommonOrderController extends JeecgController{ @Autowired private ICommonOrderService commonOrderService; + @Autowired + private AppletOrderTeamService appletOrderTeamService; /** * 分页列表查询 @@ -226,4 +230,14 @@ public class CommonOrderController extends JeecgController refund(@RequestParam(name="id") String id) { + return appletOrderTeamService.refund(id); + } + } diff --git a/module-common/src/main/java/org/jeecg/modules/commonOrder/entity/CommonOrder.java b/module-common/src/main/java/org/jeecg/modules/commonOrder/entity/CommonOrder.java index 818cf9d..dc85954 100644 --- a/module-common/src/main/java/org/jeecg/modules/commonOrder/entity/CommonOrder.java +++ b/module-common/src/main/java/org/jeecg/modules/commonOrder/entity/CommonOrder.java @@ -21,7 +21,7 @@ import java.util.List; /** * @Description: 订单信息表 * @Author: jeecg-boot - * @Date: 2025-05-21 + * @Date: 2025-07-16 * @Version: V1.0 */ @Data @@ -46,6 +46,10 @@ public class CommonOrder implements Serializable { /**更新日期*/ @ApiModelProperty(value = "更新日期") private java.util.Date updateTime; + /**订单编号*/ + @Excel(name = "订单编号", width = 15) + @ApiModelProperty(value = "订单编号") + private java.lang.String ordeNo; /**订单状态*/ @Excel(name = "订单状态", width = 15, dicCode = "order_type") @Dict(dicCode = "order_type") @@ -56,6 +60,7 @@ public class CommonOrder implements Serializable { 已完成 2 已取消 3 驳回 4 + 退货退款 5 */ private java.lang.Integer state; /**流程状态*/ @@ -79,16 +84,12 @@ public class CommonOrder implements Serializable { private java.lang.String userId; /**订单图片*/ @Excel(name = "订单图片", width = 15) - @ApiModelProperty(value = "商品订单图片") + @ApiModelProperty(value = "订单图片") private java.lang.String image; - /**商品分类*/ - @Excel(name = "商品分类", width = 15) - @ApiModelProperty(value = "商品分类") - private java.lang.String shopClass; /**订单标题*/ @Excel(name = "订单标题", width = 15) @ApiModelProperty(value = "订单标题") - private java.lang.String title;//商品名称 + private java.lang.String title; /**客户姓名*/ @Excel(name = "客户姓名", width = 15) @ApiModelProperty(value = "客户姓名") @@ -150,10 +151,10 @@ public class CommonOrder implements Serializable { @Excel(name = "简介", width = 15) @ApiModelProperty(value = "简介") private java.lang.String details; - /**订单编号*/ - @Excel(name = "订单编号", width = 15) - @ApiModelProperty(value = "订单编号") - private java.lang.String ordeNo; + /**最近回收*/ + @Excel(name = "最近回收", width = 15) + @ApiModelProperty(value = "最近回收") + private java.lang.String izShow; /**物流编码*/ @Excel(name = "物流编码", width = 15) @ApiModelProperty(value = "物流编码") @@ -181,7 +182,7 @@ public class CommonOrder implements Serializable { private java.util.Date testingTime; /**检测报告*/ @Excel(name = "检测报告", width = 15) - @ApiModelProperty(value = "检测图片") + @ApiModelProperty(value = "检测报告") private java.lang.String testingImages; /**是否包邮*/ @Excel(name = "是否包邮", width = 15) @@ -192,39 +193,42 @@ public class CommonOrder implements Serializable { @Dict(dictTable = "han_hai_member", dicText = "name", dicCode = "id") @ApiModelProperty(value = "质检员") private java.lang.String isUserId; - /**品牌标识*/ - @Excel(name = "品牌标识", width = 15) - @ApiModelProperty(value = "品牌标识") - @Dict(dictTable = "common_vip", dicCode = "id", dicText = "name") - private java.lang.String pinId; - - @Excel(name = "快递员电话", width = 15) - @ApiModelProperty(value = "快递员电话") - private String deliveryPhone; - + /**品牌*/ + @Excel(name = "品牌", width = 15) + @ApiModelProperty(value = "品牌") + private java.lang.String pinId; + /**合格数量*/ @Excel(name = "合格数量", width = 15) - @ApiModelProperty(value = "合格数量") - private Integer qualifiedNum; - + @ApiModelProperty(value = "合格数量") + private java.lang.Integer qualifiedNum; + /**不合格数量*/ @Excel(name = "不合格数量", width = 15) - @ApiModelProperty(value = "不合格数量") - private Integer noQualifiedNum; - + @ApiModelProperty(value = "不合格数量") + private java.lang.Integer noQualifiedNum; + /**不可回收数量*/ @Excel(name = "不可回收数量", width = 15) - @ApiModelProperty(value = "不可回收数量") - private Integer unrecyclable; - + @ApiModelProperty(value = "不可回收数量") + private java.lang.Integer unrecyclable; + /**分类*/ + @Excel(name = "分类", width = 15) + @ApiModelProperty(value = "分类") + private java.lang.String shopClass; + /**预估价格*/ @Excel(name = "预估价格", width = 15) - @ApiModelProperty(value = "预估价格") - private String estimatedPrice;//预估价格 - - @Excel(name = "子订单类型(0用户订单,1质检订单)", width = 15) - @ApiModelProperty(value = "子订单类型(0用户订单,1质检订单)") - private Integer type;//子订单类型 - + @ApiModelProperty(value = "预估价格") + private java.lang.String estimatedPrice; + /**子订单类型(0用户创建的订单,1质检结算的订单)*/ + @Excel(name = "子订单类型(0用户创建的订单,1质检结算的订单)", width = 15) + @ApiModelProperty(value = "子订单类型(0用户创建的订单,1质检结算的订单)") + private java.lang.Integer type; + /**渠道单号*/ @Excel(name = "渠道单号", width = 15) - @ApiModelProperty(value = "渠道单号") - private String logisticId;//渠道单号 + @ApiModelProperty(value = "渠道单号") + private java.lang.String logisticId; + /**快递员电话*/ + @Excel(name = "快递员电话", width = 15) + @ApiModelProperty(value = "快递员电话") + private java.lang.String deliveryPhone; @TableField (exist=false) @@ -245,4 +249,7 @@ public class CommonOrder implements Serializable { @TableField(exist = false) private String logisticsTrajectoryText;//物流状态描述 + + @TableField(exist = false) + private boolean readFlag;//是否已读 } diff --git a/module-common/src/main/java/org/jeecg/modules/commonOrder/mapper/CommonOrderMapper.java b/module-common/src/main/java/org/jeecg/modules/commonOrder/mapper/CommonOrderMapper.java index 57e4791..17b437a 100644 --- a/module-common/src/main/java/org/jeecg/modules/commonOrder/mapper/CommonOrderMapper.java +++ b/module-common/src/main/java/org/jeecg/modules/commonOrder/mapper/CommonOrderMapper.java @@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * @Description: 订单信息表 * @Author: jeecg-boot - * @Date: 2025-05-21 + * @Date: 2025-07-16 * @Version: V1.0 */ public interface CommonOrderMapper extends BaseMapper { diff --git a/module-common/src/main/java/org/jeecg/modules/commonOrder/service/ICommonOrderService.java b/module-common/src/main/java/org/jeecg/modules/commonOrder/service/ICommonOrderService.java index 8596369..e8d4c39 100644 --- a/module-common/src/main/java/org/jeecg/modules/commonOrder/service/ICommonOrderService.java +++ b/module-common/src/main/java/org/jeecg/modules/commonOrder/service/ICommonOrderService.java @@ -1,5 +1,6 @@ package org.jeecg.modules.commonOrder.service; +import org.jeecg.common.api.vo.Result; import org.jeecg.modules.commonOrder.entity.CommonOrder; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.common.exception.JeecgBootException; @@ -9,7 +10,7 @@ import java.util.List; /** * @Description: 订单信息表 * @Author: jeecg-boot - * @Date: 2025-05-21 + * @Date: 2025-07-16 * @Version: V1.0 */ public interface ICommonOrderService extends IService { diff --git a/module-common/src/main/java/org/jeecg/modules/commonOrder/service/impl/CommonOrderServiceImpl.java b/module-common/src/main/java/org/jeecg/modules/commonOrder/service/impl/CommonOrderServiceImpl.java index 3233847..e8e1cf8 100644 --- a/module-common/src/main/java/org/jeecg/modules/commonOrder/service/impl/CommonOrderServiceImpl.java +++ b/module-common/src/main/java/org/jeecg/modules/commonOrder/service/impl/CommonOrderServiceImpl.java @@ -1,13 +1,19 @@ package org.jeecg.modules.commonOrder.service.impl; +import org.jeecg.common.api.vo.Result; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.commonOrder.entity.CommonOrder; import org.jeecg.modules.commonOrder.mapper.CommonOrderMapper; import org.jeecg.modules.commonOrder.service.ICommonOrderService; +import org.jeecg.modules.hanHaiMember.entity.HanHaiMember; +import org.jeecg.modules.hanHaiMember.service.IHanHaiMemberService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -17,12 +23,16 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** * @Description: 订单信息表 * @Author: jeecg-boot - * @Date: 2025-05-21 + * @Date: 2025-07-16 * @Version: V1.0 */ @Service public class CommonOrderServiceImpl extends ServiceImpl implements ICommonOrderService { + + @Autowired + private IHanHaiMemberService memberService; + @Override public void addCommonOrder(CommonOrder commonOrder) { //新增时设置hasChild为0 @@ -118,18 +128,20 @@ public class CommonOrderServiceImpl extends ServiceImpl().eq("pid", pid)); -// if(count==null || count<=1) { -// baseMapper.updateTreeNodeStatus(pid, ICommonOrderService.NOCHILD); -// } -// } + if(!ICommonOrderService.ROOT_PID_VALUE.equals(pid)) { + Long count = baseMapper.selectCount(new QueryWrapper().eq("pid", pid)); + if(count==null || count<=1) { + baseMapper.updateTreeNodeStatus(pid, ICommonOrderService.NOCHILD); + } + } } /** diff --git a/module-common/src/main/java/org/jeecg/modules/commonOrder/vue/CommonOrderList.vue b/module-common/src/main/java/org/jeecg/modules/commonOrder/vue/CommonOrderList.vue index bdadf52..c32ccb3 100644 --- a/module-common/src/main/java/org/jeecg/modules/commonOrder/vue/CommonOrderList.vue +++ b/module-common/src/main/java/org/jeecg/modules/commonOrder/vue/CommonOrderList.vue @@ -19,6 +19,16 @@ + + + + + + + + + + @@ -142,6 +152,11 @@ align:"left", dataIndex: 'createTime' }, + { + title:'订单编号', + align:"left", + dataIndex: 'ordeNo' + }, { title:'订单状态', align:"left", @@ -234,9 +249,10 @@ dataIndex: 'details' }, { - title:'订单编号', + title:'最近回收', align:"left", - dataIndex: 'ordeNo' + dataIndex: 'izShow', + customRender: (text) => (!text ? "" : (text == "Y" ? "是" : "否")) }, { title:'物流编码', @@ -285,6 +301,41 @@ align:"left", dataIndex: 'isUserId_dictText' }, + { + title:'品牌', + align:"left", + dataIndex: 'pinId' + }, + { + title:'合格数量', + align:"left", + dataIndex: 'qualifiedNum' + }, + { + title:'不合格数量', + align:"left", + dataIndex: 'noQualifiedNum' + }, + { + title:'不可回收数量', + align:"left", + dataIndex: 'unrecyclable' + }, + { + title:'分类', + align:"left", + dataIndex: 'shopClass' + }, + { + title:'预估价格', + align:"left", + dataIndex: 'estimatedPrice' + }, + { + title:'快递员电话', + align:"left", + dataIndex: 'deliveryPhone' + }, { title: '操作', dataIndex: 'action', @@ -506,6 +557,7 @@ getSuperFieldList(){ let fieldList=[]; fieldList.push({type:'datetime',value:'createTime',text:'创建日期'}) + fieldList.push({type:'string',value:'ordeNo',text:'订单编号',dictCode:''}) fieldList.push({type:'int',value:'state',text:'订单状态',dictCode:'order_type'}) fieldList.push({type:'int',value:'status',text:'流程状态',dictCode:'order_state'}) fieldList.push({type:'sel_search',value:'userId',text:'下单用户',dictTable:"han_hai_member", dictText:'nick_name', dictCode:'id'}) @@ -525,7 +577,7 @@ fieldList.push({type:'string',value:'unit',text:'单位',dictCode:''}) fieldList.push({type:'int',value:'num',text:'数量',dictCode:''}) fieldList.push({type:'string',value:'details',text:'简介',dictCode:''}) - fieldList.push({type:'string',value:'ordeNo',text:'订单编号',dictCode:''}) + fieldList.push({type:'switch',value:'izShow',text:'最近回收'}) fieldList.push({type:'string',value:'wliuNo',text:'物流编码',dictCode:''}) fieldList.push({type:'string',value:'shopId',text:'商品标识',dictCode:''}) fieldList.push({type:'string',value:'addressId',text:'地址标识',dictCode:''}) @@ -535,6 +587,13 @@ fieldList.push({type:'Text',value:'testingImages',text:'检测报告',dictCode:''}) fieldList.push({type:'switch',value:'isBy',text:'是否包邮'}) fieldList.push({type:'sel_search',value:'isUserId',text:'质检员',dictTable:"han_hai_member", dictText:'name', dictCode:'id'}) + fieldList.push({type:'string',value:'pinId',text:'品牌',dictCode:''}) + fieldList.push({type:'int',value:'qualifiedNum',text:'合格数量',dictCode:''}) + fieldList.push({type:'int',value:'noQualifiedNum',text:'不合格数量',dictCode:''}) + fieldList.push({type:'int',value:'unrecyclable',text:'不可回收数量',dictCode:''}) + fieldList.push({type:'string',value:'shopClass',text:'分类',dictCode:''}) + fieldList.push({type:'string',value:'estimatedPrice',text:'预估价格',dictCode:''}) + fieldList.push({type:'string',value:'deliveryPhone',text:'快递员电话',dictCode:''}) this.superFieldList = fieldList } } diff --git a/module-common/src/main/java/org/jeecg/modules/commonOrder/vue/modules/CommonOrderModal.vue b/module-common/src/main/java/org/jeecg/modules/commonOrder/vue/modules/CommonOrderModal.vue index ef980ac..7ceebf7 100644 --- a/module-common/src/main/java/org/jeecg/modules/commonOrder/vue/modules/CommonOrderModal.vue +++ b/module-common/src/main/java/org/jeecg/modules/commonOrder/vue/modules/CommonOrderModal.vue @@ -76,8 +76,8 @@ - - + + @@ -106,6 +106,27 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/module-common/src/main/java/org/jeecg/modules/commonOrder/vue3/CommonOrder.data.ts b/module-common/src/main/java/org/jeecg/modules/commonOrder/vue3/CommonOrder.data.ts index c380ab4..92a6b92 100644 --- a/module-common/src/main/java/org/jeecg/modules/commonOrder/vue3/CommonOrder.data.ts +++ b/module-common/src/main/java/org/jeecg/modules/commonOrder/vue3/CommonOrder.data.ts @@ -9,6 +9,11 @@ export const columns: BasicColumn[] = [ align:"center", dataIndex: 'createTime' }, + { + title: '订单编号', + align:"center", + dataIndex: 'ordeNo' + }, { title: '订单状态', align:"center", @@ -101,9 +106,12 @@ export const columns: BasicColumn[] = [ dataIndex: 'details' }, { - title: '订单编号', + title: '最近回收', align:"center", - dataIndex: 'ordeNo' + dataIndex: 'izShow', + customRender:({text}) => { + return render.renderSwitch(text, [{text:'是',value:'Y'},{text:'否',value:'N'}]) + }, }, { title: '物流编码', @@ -154,6 +162,41 @@ export const columns: BasicColumn[] = [ align:"center", dataIndex: 'isUserId_dictText' }, + { + title: '品牌', + align:"center", + dataIndex: 'pinId' + }, + { + title: '合格数量', + align:"center", + dataIndex: 'qualifiedNum' + }, + { + title: '不合格数量', + align:"center", + dataIndex: 'noQualifiedNum' + }, + { + title: '不可回收数量', + align:"center", + dataIndex: 'unrecyclable' + }, + { + title: '分类', + align:"center", + dataIndex: 'shopClass' + }, + { + title: '预估价格', + align:"center", + dataIndex: 'estimatedPrice' + }, + { + title: '快递员电话', + align:"center", + dataIndex: 'deliveryPhone' + }, ]; //查询数据 export const searchFormSchema: FormSchema[] = [ @@ -184,6 +227,18 @@ export const searchFormSchema: FormSchema[] = [ }, colProps: {span: 6}, }, + { + label: "联系电话", + field: "phone", + component: 'Input', + colProps: {span: 6}, + }, + { + label: "物流编码", + field: "wliuNo", + component: 'Input', + colProps: {span: 6}, + }, ]; //表单数据 export const formSchema: FormSchema[] = [ @@ -294,9 +349,11 @@ export const formSchema: FormSchema[] = [ component: 'Input', }, { - label: '订单编号', - field: 'ordeNo', - component: 'Input', + label: '最近回收', + field: 'izShow', + component: 'JSwitch', + componentProps:{ + }, }, { label: '物流编码', @@ -353,4 +410,39 @@ export const formSchema: FormSchema[] = [ dict:"han_hai_member,name,id" }, }, + { + label: '品牌', + field: 'pinId', + component: 'Input', + }, + { + label: '合格数量', + field: 'qualifiedNum', + component: 'InputNumber', + }, + { + label: '不合格数量', + field: 'noQualifiedNum', + component: 'InputNumber', + }, + { + label: '不可回收数量', + field: 'unrecyclable', + component: 'InputNumber', + }, + { + label: '分类', + field: 'shopClass', + component: 'Input', + }, + { + label: '预估价格', + field: 'estimatedPrice', + component: 'Input', + }, + { + label: '快递员电话', + field: 'deliveryPhone', + component: 'Input', + }, ]; diff --git a/module-system/src/main/resources/application-dev.yml b/module-system/src/main/resources/application-dev.yml index c3916ff..87b8844 100644 --- a/module-system/src/main/resources/application-dev.yml +++ b/module-system/src/main/resources/application-dev.yml @@ -345,8 +345,28 @@ wechat: refundNotifyUrl: # 退款通知地址(正式环境) +#正式环境 +#dblogistics: +# companyCode: EWBXZDDMXX +# appKey: eb4cd9c454e93a2b76a9d9c5c1f8542a +# sign: ZRNR +# customerCode: 1102311359 +# api: +# # 创建订单接口 +# createOrder: http://gwapi.deppon.com/dop-interface-async/standard-order/createOrderNotify.action +# # 轨迹查询接口0 +# queryTrace: http://dpapi.deppon.com/dop-interface-sync/standard-query/newTraceQuery.action +# # 修改订单接口 +# updateOrder: http://gwapi.deppon.com/dop-interface-async/standard-order/updateOrder.action +# # 撤销订单接口 +# cancelOrder: http://gwapi.deppon.com/dop-interface-async/standard-order/cancelOrder.action +# # 查询订单接口 +# queryOrder: http://dpapi.deppon.com/dop-interface-sync/standard-query/queryOrder.action +# # 轨迹订阅接口 +# subscribeTrace: http://dpapi.deppon.com/dop-interface-sync/dop-nonstandard-extension/standTraceSubscribe.action +#测试环境 dblogistics: companyCode: EWBXZDDMXX appKey: eb4cd9c454e93a2b76a9d9c5c1f8542a