From 58d3e3d9d6a129c687044eef0418def8ad6e7cad Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期日, 27 八月 2023 19:10:27 +0800 Subject: [PATCH] bug --- ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java | 2 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml | 32 ++- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java | 1 ruoyi-modules/ruoyi-order/src/test/java/com/ruoyi/order/orderTest.java | 9 - ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeptSimpleVo.java | 23 +++ ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java | 12 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java | 77 ++++++++++ ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtSysStaffImportDto.java | 6 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java | 26 --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java | 1 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java | 9 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 141 ++++++++++++++----- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/MsgUtils.java | 1 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java | 1 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/staff/StaffSysController.java | 9 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtStaffEditDto.java | 3 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml | 1 ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml | 8 + 19 files changed, 266 insertions(+), 98 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java index 6be6e36..24fb50d 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java @@ -74,6 +74,8 @@ String SHOP_USER_DOUBLE = "账号已经关联其他商户登录"; + String SHOP_CLOSED = "商户在审核中暂时无法购买商品"; + String COUPON_AUDIT_EDIT = "只能编辑审核拒绝的优惠券"; String VERIFY_USED = "该核销码已核销,请更换"; diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java index e364ec0..802ae68 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java @@ -83,7 +83,7 @@ return R.ok(totalDataTotalVoList); } - @RequestMapping(value = "/getPlTotalDataTotal", method = RequestMethod.POST) + @RequestMapping(value = "/exportPlTotalDataTotal", method = RequestMethod.POST) @ApiOperation(value = "导出平台商户数据统计(统计-店铺数据统计)") public void exportPlTotalDataTotal(MgtBasePlatformDto mgtBasePlatformDto, HttpServletResponse response) { Long userId = SecurityUtils.getUserId(); diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java index b6a88f8..9554c09 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java @@ -1,18 +1,13 @@ package com.ruoyi.order.controller.miniapp; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.github.binarywang.wxpay.bean.ecommerce.PartnerTransactionsResult; import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.domain.dto.*; -import com.ruoyi.order.domain.pojo.order.Order; import com.ruoyi.order.domain.vo.*; import com.ruoyi.order.service.order.OrderService; -import com.ruoyi.system.api.constant.DelayTaskEnum; -import com.ruoyi.system.api.constant.SecurityConstant; import com.ruoyi.system.api.domain.dto.AppBaseGetDto; import com.ruoyi.system.api.domain.dto.AppMemberBindingDto; import com.ruoyi.system.api.domain.poji.member.Member; @@ -186,26 +181,11 @@ } @RequestMapping(value = "/payOrder", method = RequestMethod.POST) - @ApiOperation(value = "支付订单(临时)") - public R<AppPlaceOrderVo> placeOrder(@RequestBody AppBaseGetDto appBaseGetDto) { + @ApiOperation(value = "支付订单") + public R<AppPlaceOrderVo> payOrder(@RequestBody AppBaseGetDto appBaseGetDto) { Long userId = SecurityUtils.getUserId(); AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo(); - Order order = orderService.getById(appBaseGetDto.getId()); - PartnerTransactionsResult transaction = new PartnerTransactionsResult(); - transaction.setOutTradeNo(appBaseGetDto.getId()); - orderService.payBack(transaction); - appPlaceOrderVo.setOrderId(order.getOrderId()); - appPlaceOrderVo.setOrderNo(order.getOrderNo()); - appPlaceOrderVo.setPayType(order.getPayType()); - appPlaceOrderVo.setPayMoney(order.getPayMoney()); - appPlaceOrderVo.setUnpaidMoney(order.getPayMoney()); - Integer delayTime = 30; - if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { - delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); - } - redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId()); - remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId()); - appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); + return R.ok(appPlaceOrderVo); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java index ddf8b54..b442666 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java @@ -70,7 +70,6 @@ private Integer[] orderTotalValue; @ApiModelProperty(value = "订单分布金额") - @JsonSerialize(using = ToStringSerializer.class) private BigDecimal[] orderMoneyValue; @ApiModelProperty(value = "销售占比数量") diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java index 3f7ce2e..d646a39 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java @@ -70,7 +70,6 @@ private Integer[] orderTotalValue; @ApiModelProperty(value = "订单分布金额") - @JsonSerialize(using = ToStringSerializer.class) private BigDecimal[] orderMoneyValue; @ApiModelProperty(value = "销售占比数量") diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java index 1a7cd0c..7ea30ae 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java @@ -76,7 +76,6 @@ private Integer[] orderTotalValue; @ApiModelProperty(value = "订单分布金额") - @JsonSerialize(using = ToStringSerializer.class) private BigDecimal[] orderMoneyValue; @ApiModelProperty(value = "销售占比数量") diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java index 7d059dd..27c19ec 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java @@ -67,6 +67,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; +import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.*; @@ -156,6 +157,10 @@ @Override public AppSureOrderVo buyGoods(AppSureOrderDto appSureOrderDto) { Long userId = appSureOrderDto.getUserId(); + Shop shop = remoteShopService.getShop(appSureOrderDto.getShopId()).getData(); + if(shop!=null&&shop.getShopStatus()!=1){ + throw new ServiceException(AppErrorConstant.SHOP_CLOSED); + } // 初始化订单对象 AppSureOrderVo appSureOrderVo = new AppSureOrderVo(); // 初始化订单商品列表 @@ -414,6 +419,10 @@ @Override public AppPanicBuyVo panicBuyGoods(AppPanicBuyDto appPanicBuyDto) { Long userId = appPanicBuyDto.getUserId(); + Shop shop = remoteShopService.getShop(appPanicBuyDto.getShopId()).getData(); + if(shop!=null&&shop.getShopStatus()!=1){ + throw new ServiceException(AppErrorConstant.SHOP_CLOSED); + } AppPanicBuyVo appPanicBuyVo = new AppPanicBuyVo(); String activityId = appPanicBuyDto.getActivityId(); String goodsId = appPanicBuyDto.getGoodsId(); @@ -762,28 +771,27 @@ } if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.ZERO)>0){ String outTradeNo = IdUtils.simpleUUID(); - // 保存订单 交易流水 order.setOutTradeNo(outTradeNo); this.saveOrUpdate(order); - + Integer delayTime = 30; + if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { + delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); + } + appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); // 小程序微信下单支付 createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, outTradeNo, orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(), appPlaceOrderDto.getSpbillCreateIp(), goodsNameList,1); //生成自动取消订单延时任务 - Integer delayTime = 30; - if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { - delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); - } - redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES); + String payStr = appPlaceOrderVo.getAppId()+"-"+appPlaceOrderVo.getTimeStamp()+"-"+appPlaceOrderVo.getNonceStr()+"-"+appPlaceOrderVo.getPackageStr()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getPaySign(); + redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, payStr , delayTime.longValue(), TimeUnit.MINUTES); DelayTask delayTask = new DelayTask(); delayTask.setDelFlag(0); delayTask.setCreateTime(new Date()); delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime)); delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); remoteConfigService.addDelayTask(delayTask); - appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); }else{ order.setOrderStatus(2); this.saveOrUpdate(order); @@ -846,7 +854,10 @@ amount.setTotal(totalFee); amount.setCurrency("CNY"); request.setAmount(amount); - + Date endTime = appPlaceOrderVo.getEndTime(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); + String rfc3339Format = formatter.format(endTime); + request.setTimeExpire(rfc3339Format); // 支付者 PartnerTransactionsRequest.Payer payer = new PartnerTransactionsRequest.Payer(); payer.setSpOpenid(openid); @@ -1163,23 +1174,25 @@ // 保存订单 交易流水 order.setOutTradeNo(outTradeNo); this.saveOrUpdate(order); + Integer delayTime = 30; + if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { + delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); + } + appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); // 小程序微信下单支付 createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), orderNo, orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(), appPlaceActivityDto.getSpbillCreateIp(), goodsNameList,2); //生成自动取消订单延时任务 - Integer delayTime = 30; - if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { - delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); - } - redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES); + String payStr = appPlaceOrderVo.getAppId()+"-"+appPlaceOrderVo.getTimeStamp()+"-"+appPlaceOrderVo.getNonceStr()+"-"+appPlaceOrderVo.getPackageStr()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getPaySign(); + redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, payStr , delayTime.longValue(), TimeUnit.MINUTES); DelayTask delayTask = new DelayTask(); delayTask.setDelFlag(0); delayTask.setCreateTime(new Date()); delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime)); delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); remoteConfigService.addDelayTask(delayTask); - appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); + }else{ order.setOrderStatus(2); this.saveOrUpdate(order); @@ -1305,6 +1318,47 @@ } else { throw new ServiceException(AppErrorConstant.CANCEL_ERROR_ORDER); } + } + + /** + * @description 支付订单 + * @author jqs + * @date 2023/8/27 15:26 + * @param orderId + * @return AppPlaceOrderVo + */ + @Override + public AppPlaceOrderVo payOrder(String orderId){ + Order order = this.getById(orderId); + if(order.getOrderStatus()!=1){ + throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER); + } + String payStr = redisService.getCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+orderId); + if(StringUtils.isBlank(payStr)){ + throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER); + } + Integer delayTime = 30; + if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { + delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); + } + AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo(); + OrderPayment orderPayment = orderPaymentService.getByOrderId(orderId); + String[] payArr = payStr.split("-"); + appPlaceOrderVo.setOrderId(order.getOrderId()); + appPlaceOrderVo.setOrderNo(order.getOrderNo()); + appPlaceOrderVo.setPayType(order.getPayType()); + appPlaceOrderVo.setPayMoney(order.getPayMoney()); + appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); + appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); + appPlaceOrderVo.setAppId(payArr[0]); + appPlaceOrderVo.setMchId(orderPayment.getSubMchId()); + appPlaceOrderVo.setTimeStamp(payArr[1]); + appPlaceOrderVo.setNonceStr(payArr[2]); + appPlaceOrderVo.setPackageStr(payArr[3]); + appPlaceOrderVo.setSignType(payArr[4]); + appPlaceOrderVo.setPaySign(payArr[5]); + appPlaceOrderVo.setPrepayId(orderPayment.getPrepayId()); + return appPlaceOrderVo; } /** @@ -1602,39 +1656,42 @@ List<ProfitSharingRequest.Receiver> receiverList = new ArrayList<>(); String description = "订单:" + orderNo + " 平台抽取佣金"; + //获取商户分成 BigDecimal proportionPercent = shopProportion.getProportionPercent(); if (null == proportionPercent) { proportionPercent = BigDecimal.ZERO; } + //平台分成 + proportionPercent = new BigDecimal("100.00").subtract(proportionPercent); + if(proportionPercent.compareTo(BigDecimal.ZERO)>0){ + ProfitSharingResult result = new ProfitSharingResult(); + result.setOutOrderNo(orderNo); + result.setStatus("FINISHED"); + // 计算分成金额 + int amount = orderMoney.multiply(proportionPercent).setScale(0, RoundingMode.UP).intValue(); + log.info("订单分账:{} 分账金额: {}", orderNo, amount); + if (amount > 0) { + // 分账创建 + ProfitSharingRequest.Receiver receiver = new ProfitSharingRequest.Receiver(); + receiver.setType("MERCHANT_ID"); + receiver.setReceiverAccount(platformTyMacId); + receiver.setAmount(amount); + receiver.setDescription(description); - ProfitSharingResult result = new ProfitSharingResult(); - result.setOutOrderNo(orderNo); - result.setStatus("FINISHED"); + receiverList.add(receiver); + request.setReceivers(receiverList); + // 分账完成 + request.setFinish(true); + result = wxService.getEcommerceService().profitSharing(request); + } - // 计算分成金额 - int amount = orderMoney.multiply(proportionPercent).setScale(0, RoundingMode.UP).intValue(); - log.info("订单分账:{} 分账金额: {}", orderNo, amount); - if (amount > 0) { - // 分账创建 - ProfitSharingRequest.Receiver receiver = new ProfitSharingRequest.Receiver(); - receiver.setType("MERCHANT_ID"); - receiver.setReceiverAccount(platformTyMacId); - receiver.setAmount(amount); - receiver.setDescription(description); + // 创建分账记录 + profitSharingService.saveProfitSharing(shopId, orderId, orderMoney, result); - receiverList.add(receiver); - request.setReceivers(receiverList); - // 分账完成 - request.setFinish(true); - result = wxService.getEcommerceService().profitSharing(request); + // 保存请求信息 + sendMessage = JSONObject.toJSONString(request); + resultMessage = JSONObject.toJSONString(result); } - - // 创建分账记录 - profitSharingService.saveProfitSharing(shopId, orderId, orderMoney, result); - - // 保存请求信息 - sendMessage = JSONObject.toJSONString(request); - resultMessage = JSONObject.toJSONString(result); } else { resultMessage = String.format("订单分账:%s 获取商户分成失败", orderNo); log.info(resultMessage); @@ -3116,6 +3173,10 @@ } } List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); + if(mgtBasePlatformDto.getShopId()!=null){ + shopIdList = new ArrayList<>(); + shopIdList.add(mgtBasePlatformDto.getShopId()); + } mgtBasePlatformDto.setShopIdList(shopIdList); //获取基础统计 MgtTotalOrderTotalVo mgtTotalOrderTotalVo = orderMapper.getPlTotalOrderTotalOrderFrom(mgtBasePlatformDto); diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java index 95fb5a5..fec45aa 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java @@ -82,6 +82,15 @@ void cancelOrder(String orderId); /** + * @description 支付订单 + * @author jqs + * @date 2023/8/27 15:26 + * @param orderId + * @return AppPlaceOrderVo + */ + AppPlaceOrderVo payOrder(String orderId); + + /** * 获取用户订单统计 * @param userId * @return diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/MsgUtils.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/MsgUtils.java index ad0d481..d8243a8 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/MsgUtils.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/MsgUtils.java @@ -23,7 +23,6 @@ public class MsgUtils { - public static void sendMsg(String phoneNumber,Integer sendType,String sendContent) throws Exception { StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder() diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml index ed04016..86bd659 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml +++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml @@ -939,19 +939,22 @@ SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey, COUNT(DISTINCT order_id) AS mapValueFirst, - SUM(order_money) AS mapValueSecond, - FROM - t_order - WHERE - del_flag = 0 AND order_from = 2 - AND Date(create_time) >= DATE_SUB(CURDATE(), INTERVAL 6 DAY) + SUM(order_money) AS mapValueSecond + FROM t_order + WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3) <if test="param.shopId != null and param.shopId != ''"> AND shop_id = #{param.shopId} </if> + <if test="param.startDate!=null and param.startDate!=''"> + AND Date(create_time) >= #{param.startDate} + </if> + <if test="param.endDate!=null and param.endDate!=''"> + AND Date(create_time) <= #{param.endDate} + </if> GROUP BY - DATE_FORMAT(create_time, '%Y-%m-%d') + mapKey ORDER BY - DATE_FORMAT(create_time, '%Y-%m-%d') ASC + mapKey ASC </select> <select id="getUserIdAgeRank" resultType="java.lang.Long"> @@ -1224,6 +1227,12 @@ #{item} </foreach> </if> + <if test="param.startDate!=null and param.startDate!=''"> + AND Date(toc.create_time) >= #{param.startDate} + </if> + <if test="param.endDate!=null and param.endDate!=''"> + AND Date(toc.create_time) <= #{param.endDate} + </if> GROUP BY tog.goods_type </select> @@ -1331,11 +1340,8 @@ FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 AND toc.order_from = 2 AND toc.order_status = 3 AND toc.new_member_flag = 1 - <if test="param.shopIdList != null and param.shopIdList.size() > 0"> - AND toc.shop_id IN - <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> - #{item} - </foreach> + <if test="param.shopId != null and param.shopId != ''"> + AND toc.shop_id = #{param.shopId} </if> <if test="param.startDate!=null and param.startDate!=''"> AND Date(toc.create_time) >= #{param.startDate} diff --git a/ruoyi-modules/ruoyi-order/src/test/java/com/ruoyi/order/orderTest.java b/ruoyi-modules/ruoyi-order/src/test/java/com/ruoyi/order/orderTest.java index a73a88d..7a97d3b 100644 --- a/ruoyi-modules/ruoyi-order/src/test/java/com/ruoyi/order/orderTest.java +++ b/ruoyi-modules/ruoyi-order/src/test/java/com/ruoyi/order/orderTest.java @@ -24,14 +24,9 @@ /*@Test public void main() { + MgtBasePlatformDto mgtBasePlatformDto = new MgtBasePlatformDto(); + orderService.getPlTotalOrderTotal(mgtBasePlatformDto); - AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo(); - - orderService.createWxPayInfo( appPlaceOrderVo, 280L, 50L, - "测试支付商品", "SC202308160046", - "0fa36ad3edcc40bebc2795cc505b5272", new BigDecimal("0.1"), - "oL-gp5GG6-KRVSIAE_qYLMULPFjw", "127.0.0.1", Arrays.asList("测试支付商品")); - System.out.println(appPlaceOrderVo.toString()); }*/ diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml index 6534a3d..82a2e80 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml +++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml @@ -439,6 +439,7 @@ SIN((105.43587830688473 * PI() / 180 - ts.shop_longitude * PI() / 180) / 2), 2 ))) AS distance FROM t_shop ts + WHERE del_flag = 0 AND shop_status = 1 ORDER BY distance ASC LIMIT 1 </select> diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/staff/StaffSysController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/staff/StaffSysController.java index 150f3ce..9c75106 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/staff/StaffSysController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/staff/StaffSysController.java @@ -83,5 +83,14 @@ return R.ok(page.setRecords(staffSuggestPageVoList)); } + @ApiOperation(value = "导入员工") + @PostMapping("/importSysStaffData") + public AjaxResult importGoodsTagData(@RequestPart("file")MultipartFile file) throws Exception + { + ExcelUtil<MgtSysStaffImportDto> util = new ExcelUtil<MgtSysStaffImportDto>(MgtSysStaffImportDto.class); + List<MgtSysStaffImportDto> tagList = util.importExcel(file.getInputStream()); + String message = sysStaffService.importSysStaff(tagList); + return success(message); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtStaffEditDto.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtStaffEditDto.java index d325404..8d842b0 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtStaffEditDto.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtStaffEditDto.java @@ -59,4 +59,7 @@ @NotNull(message = "负责人标记不能为空") private String headFlag; + @ApiModelProperty(value = "微信userId") + private String wxUserId; + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtSysStaffImportDto.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtSysStaffImportDto.java index f6ff933..52bfa3e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtSysStaffImportDto.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtSysStaffImportDto.java @@ -16,10 +16,10 @@ @Excel(name = "姓名") private String staffName; - @Excel(name = "账号") + @Excel(name = "帐号") private String userName; - @Excel(name = "昵称") + @Excel(name = "别名") private String nickName; @Excel(name = "职务") @@ -37,6 +37,6 @@ @Excel(name = "座机") private String phone; - @Excel(name = "邮箱") + @Excel(name = "个人邮箱") private String email; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeptSimpleVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeptSimpleVo.java new file mode 100644 index 0000000..55d16b4 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeptSimpleVo.java @@ -0,0 +1,23 @@ +package com.ruoyi.system.domain.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @ClassName DeptSimpleVo + * @Description TODO + * @Author jqs + * @Date 2023/8/27 17:45 + * @Version 1.0 + */ +@Data +public class DeptSimpleVo { + + + + @ApiModelProperty(value = "部门id") + private Long deptId; + + @ApiModelProperty(value = "部门名字") + private String deptName; +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java index 7bc4909..74bb0f6 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java @@ -1,9 +1,10 @@ package com.ruoyi.system.mapper.staff; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.system.domain.dto.MgtStaffPageDto; import com.ruoyi.system.domain.pojo.staff.SysStaff; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.system.domain.vo.DeptSimpleVo; import com.ruoyi.system.domain.vo.MgtDeptStaffListVo; import com.ruoyi.system.domain.vo.MgtStaffPageVo; import org.apache.ibatis.annotations.Param; @@ -47,4 +48,13 @@ * @return List<MgtStaffPageVo> */ List<MgtStaffPageVo> pageMgtStaff(Page page, @Param("param")MgtStaffPageDto mgtStaffPageDto); + + /** + * @description + * @author jqs + * @date 2023/8/27 17:46 + * @param + * @return List<DeptSimpleVo> + */ + List<DeptSimpleVo> listSimpleDept(); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java index e6c6f4f..16ea7c2 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java @@ -20,6 +20,7 @@ import com.ruoyi.system.domain.dto.MgtStaffPageDto; import com.ruoyi.system.domain.dto.MgtSysStaffImportDto; import com.ruoyi.system.domain.pojo.staff.SysStaff; +import com.ruoyi.system.domain.vo.DeptSimpleVo; import com.ruoyi.system.domain.vo.MgtDeptStaffListVo; import com.ruoyi.system.domain.vo.MgtStaffPageVo; import com.ruoyi.system.mapper.staff.SysStaffMapper; @@ -31,7 +32,10 @@ import javax.annotation.Resource; import java.util.Date; import java.util.List; +import java.util.Map; import java.util.concurrent.TimeUnit; +import java.util.function.Function; +import java.util.stream.Collectors; /** * <p> @@ -165,6 +169,7 @@ sysStaff.setStaffPost(mgtStaffEditDto.getStaffPost()); sysStaff.setStaffAvatar(mgtStaffEditDto.getStaffAvatar()); sysStaff.setHeadFlag(mgtStaffEditDto.getHeadFlag()); + sysStaff.setWxUserId(mgtStaffEditDto.getWxUserId()); this.saveOrUpdate(sysStaff); MgtShopStaffEditDto mgtShopStaffEditDto = new MgtShopStaffEditDto(); mgtShopStaffEditDto.setUserId(sysStaff.getUserId()); @@ -303,16 +308,76 @@ String mobile; String userName; String department; + String departmentFirst; + String departmentSecond; + String departmentThird; int lastIndex; - + int firstIndex; + int secondIndex; + int thirdIndex; + DeptSimpleVo deptSimpleVo; + SysUser sysUser; + List<DeptSimpleVo> deptSimpleVoList = sysStaffMapper.listSimpleDept(); + Map<String, DeptSimpleVo> deptMap = deptSimpleVoList.stream() + .collect(Collectors.toMap(DeptSimpleVo::getDeptName, Function.identity())); for (MgtSysStaffImportDto entity : staffImportDtoList) { try { - mobile = entity.getMobile(); - userName = entity.getUserName(); department = entity.getDepartment(); - lastIndex = department.lastIndexOf("/"); - department = department.substring(lastIndex + 1); - + lastIndex = department.indexOf(";"); + department = (lastIndex != -1) ? department.substring(0, lastIndex) : department; + firstIndex = department.lastIndexOf("/"); + secondIndex = department.lastIndexOf('/', firstIndex - 1); + thirdIndex = department.lastIndexOf('/', secondIndex - 1); + departmentFirst = department.substring(firstIndex + 1); + deptSimpleVo = deptMap.get(departmentFirst); + if(deptSimpleVo==null){ + departmentSecond = department.substring(secondIndex + 1, firstIndex); + deptSimpleVo = deptMap.get(departmentSecond); + } + if(deptSimpleVo==null){ + departmentThird = department.substring(thirdIndex + 1, secondIndex); + deptSimpleVo = deptMap.get(departmentThird); + } + if(deptSimpleVo!=null&&StringUtils.isNotBlank(entity.getMobile())){ + LambdaQueryWrapper<SysStaff> queryWrapper = new LambdaQueryWrapper(); + queryWrapper.eq(SysStaff::getDelFlag,0); + queryWrapper.eq(SysStaff::getStaffMobile,entity.getMobile()); + SysStaff sysStaffSame = this.getOne(queryWrapper, false); + if(sysStaffSame!=null){ + sysStaffSame.setStaffName(entity.getStaffName()); + sysStaffSame.setStaffPost(entity.getPost()); + sysStaffSame.setWxUserId(entity.getUserName()); + if(StringUtils.isNotBlank(entity.getEmail())){ + sysStaffSame.setStaffEmail(entity.getEmail()); + } + this.saveOrUpdate(sysStaffSame); + sysUser = sysUserService.selectUserById(sysStaffSame.getUserId()); + sysUser.setDeptId(deptSimpleVo.getDeptId()); + sysUser.setNickName(entity.getStaffName()); + if(entity.getGender().equals("男")){ + sysUser.setSex("0"); + }else if(entity.getGender().equals("女")){ + sysUser.setSex("1"); + }else{ + sysUser.setSex("2"); + } + if(StringUtils.isNotBlank(entity.getEmail())){ + sysUser.setEmail(entity.getEmail()); + } + sysUserService.updateOnlyUser(sysUser); + }else{ + MgtStaffEditDto mgtStaffEditDto = new MgtStaffEditDto(); + mgtStaffEditDto.setDeptId(deptSimpleVo.getDeptId()); + mgtStaffEditDto.setStaffName(entity.getStaffName()); + mgtStaffEditDto.setStaffMobile(entity.getMobile()); + mgtStaffEditDto.setStaffEmail(entity.getEmail()); + mgtStaffEditDto.setStaffPost(entity.getPost()); + mgtStaffEditDto.setStaffAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/2023/8/26/362e964917304255aaa36a874063d198.jpg"); + mgtStaffEditDto.setHeadFlag("0"); + mgtStaffEditDto.setWxUserId(entity.getUserName()); + this.mgtStaffEdit(mgtStaffEditDto); + } + } /*tagName = entity.getTagName(); sysTagSame = null; // 验证是否存在这个用户 diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml index 52f110d..379559d 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml @@ -58,4 +58,12 @@ AND tss.staff_name LIKE CONCAT('%',#{param.staffName},'%') </if> </select> + + <select id="listSimpleDept" resultType="com.ruoyi.system.domain.vo.DeptSimpleVo"> + SELECT + dept_id deptId, + dept_name deptName + FROM sys_dept + WHERE del_flag = '0' + </select> </mapper> -- Gitblit v1.7.1