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 = "该核销码已核销,请更换"; 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(); 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); } 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 = "销售占比数量") 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 = "销售占比数量") 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 = "销售占比数量") 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); 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 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() 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} 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()); }*/ 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> 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); } } 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; } 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; } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeptSimpleVo.java
New file @@ -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; } 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(); } 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; // 验证是否存在这个用户 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>