ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java
@@ -74,7 +74,7 @@ String SHOP_USER_DOUBLE = "账号已经关联其他商户登录"; String SHOP_CLOSED = "商户在审核中暂时无法购买商品"; String SHOP_CLOSED = "商户在资质审核中暂时无法购买商品"; String COUPON_AUDIT_EDIT = "只能编辑审核拒绝的优惠券"; ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/ConfigEnum.java
@@ -38,7 +38,7 @@ HOME_STYLE("HOME_STYLE", 2,"首页风格"), HOME_SLOGAN("HOME_SLOGAN", 1,"首页广告语"), HOME_LOGO("HOME_LOGO", 1,"首页logo"), SHOP_COMMON_PROPORTION("SHOP_COMMON_PROPORTION", 1,"商户统一分成"); SHOP_COMMON_PROPORTION("SHOP_COMMON_PROPORTION", 3,"商户统一分成"); ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MerActivityShopDto.java
New file @@ -0,0 +1,21 @@ package com.ruoyi.system.api.domain.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @ClassName MerActivityShopDto * @Description TODO * @Author jqs * @Date 2023/9/7 14:10 * @Version 1.0 */ @Data public class MerActivityShopDto { @ApiModelProperty(value = "商户id") private Long shopId; @ApiModelProperty(value = "活动id") private String activityId; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteActivityFallbackFactory.java
@@ -4,6 +4,7 @@ import com.ruoyi.system.api.domain.dto.AGStockChangeDto; import com.ruoyi.system.api.domain.dto.ActivityGoodsGetDto; import com.ruoyi.system.api.domain.dto.ActivityTotalChangeDto; import com.ruoyi.system.api.domain.dto.MerActivityShopDto; import com.ruoyi.system.api.domain.poji.activity.ActivityRecord; import com.ruoyi.system.api.domain.vo.ActivityGoodsGetVo; import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo; @@ -82,6 +83,11 @@ public R delActivityRecord(ActivityRecord activityRecord) { return R.fail("删除活动记录失败:" + throwable.getMessage()); } @Override public R<Boolean> judgeActivityShop(MerActivityShopDto merActivityShopDto) { return R.fail("判断是否商户活动失败:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteActivityService.java
@@ -5,6 +5,7 @@ import com.ruoyi.system.api.domain.dto.AGStockChangeDto; import com.ruoyi.system.api.domain.dto.ActivityGoodsGetDto; import com.ruoyi.system.api.domain.dto.ActivityTotalChangeDto; import com.ruoyi.system.api.domain.dto.MerActivityShopDto; import com.ruoyi.system.api.domain.poji.activity.ActivityGoods; import com.ruoyi.system.api.domain.poji.activity.ActivityRecord; import com.ruoyi.system.api.domain.vo.ActivityGoodsGetVo; @@ -121,4 +122,13 @@ public R delActivityRecord(@RequestBody ActivityRecord activityRecord); /** * @description 判断商户是否在活动范围 * @author jqs * @date 2023/9/7 14:12 * @param merActivityShopDto * @return R<Boolean> */ @PostMapping("/activity/judgeActivityShop") public R<Boolean> judgeActivityShop(@RequestBody MerActivityShopDto merActivityShopDto); } ruoyi-modules/ruoyi-file/pom.xml
@@ -94,13 +94,13 @@ <version>5.8.20</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.5.1</version> </dependency> </dependencies> <build> ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java
@@ -11,8 +11,11 @@ import com.ruoyi.common.core.utils.uuid.IdUtils; import org.springframework.web.multipart.MultipartFile; import java.io.*; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.Calendar; import java.util.Date; /** * @author jqs34 @@ -64,9 +67,8 @@ OSS ossClient = createOss(); PutObjectResult result = null; try { String fileName = FileUploadUtils.extractFilename(file); System.out.println(fileName + "开始上传"); System.out.println(fileName + "开始上传" + new Date()); String prefix = fileName.substring(fileName.lastIndexOf(".")); String objectName = filePath + uuid + prefix; InputStream inputStream = file.getInputStream(); @@ -77,7 +79,7 @@ // 创建PutObject请求。 result = ossClient.putObject(putObjectRequest); // 如果上传成功,则返回200。 System.out.println(fileName + "上传返回" + result.getResponse().getStatusCode()); System.out.println(fileName + "上传返回"+ new Date() + result.getResponse().getStatusCode()); inputStream.close(); return result.getResponse().getUri(); } catch (OSSException oe) { @@ -118,7 +120,7 @@ PutObjectResult result = null; try { System.out.println(fileName + "开始上传"); System.out.println(fileName + "开始上传"+ new Date()); String objectName = filePath + fileName + ".jpg"; // 创建PutObjectRequest对象。 PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream); @@ -127,7 +129,7 @@ // 创建PutObject请求。 result = ossClient.putObject(putObjectRequest); // 如果上传成功,则返回200。 System.out.println(fileName + "上传返回" + result.getResponse().getStatusCode()); System.out.println(fileName + "上传返回"+ new Date() + result.getResponse().getStatusCode()); return result.getResponse().getUri(); } catch (OSSException oe) { System.out.println("Caught an OSSException, which means your request made it to OSS, " ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/concole/ActivityController.java
@@ -7,6 +7,7 @@ import com.ruoyi.system.api.domain.dto.AGStockChangeDto; import com.ruoyi.system.api.domain.dto.ActivityGoodsGetDto; import com.ruoyi.system.api.domain.dto.ActivityTotalChangeDto; import com.ruoyi.system.api.domain.dto.MerActivityShopDto; import com.ruoyi.system.api.domain.poji.activity.ActivityGoods; import com.ruoyi.system.api.domain.poji.activity.ActivityRecord; import com.ruoyi.system.api.domain.vo.ActivityGoodsGetVo; @@ -172,4 +173,18 @@ activityRecordService.delActivityRecord(activityRecord); return R.ok(); } /** * @description 判断商户是否在活动范围 * @author jqs * @date 2023/9/7 14:12 * @param merActivityShopDto * @return R<Boolean> */ @PostMapping("/judgeActivityShop") public R<Boolean> judgeActivityShop(@RequestBody MerActivityShopDto merActivityShopDto){ Boolean judge = activityService.judgeActivityShop(merActivityShopDto); return R.ok(judge); } } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java
@@ -7,6 +7,7 @@ import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.goods.domain.dto.MgtActivityEditDto; import com.ruoyi.goods.domain.dto.MgtActivityListDto; import com.ruoyi.goods.domain.dto.MgtActivityPageDto; import com.ruoyi.goods.domain.dto.MgtActivityRecordPageDto; import com.ruoyi.goods.domain.vo.MgtActivityGetVo; @@ -109,9 +110,9 @@ @RequestMapping(value = "/listMgtActivity", method = RequestMethod.POST) @ApiOperation(value = "获取活动列表") public R<List<MgtActivityListVo>> listMgtActivity() { public R<List<MgtActivityListVo>> listMgtActivity(@RequestBody MgtActivityListDto mgtActivityListDto) { List<MgtActivityListVo> activityListVoList = activityService.listMgtActivity(); List<MgtActivityListVo> activityListVoList = activityService.listMgtActivity(mgtActivityListDto); return R.ok(activityListVoList); } } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppActivityController.java
@@ -49,8 +49,9 @@ public R<Page<AppActivityPageVo>> pageAppActivity(@RequestBody AppPageDto appPageDto) { Long userId = SecurityUtils.getUserId(); Long shopId = null; Member member = null; if(userId!=null){ Member member = memberService.getMember(userId).getData(); member = memberService.getMember(userId).getData(); if(member!=null&&member.getRelationShopId()!=null){ shopId = member.getRelationShopId(); } @@ -58,6 +59,9 @@ if(shopId==null){ throw new ServiceException(AppErrorConstant.NO_POSITION); } if(member!=null&&member.getBindingFlag()==0){ shopId = null; } Page<AppActivityPageVo> page = new Page<>(); page.setSize(appPageDto.getPageSize()); page.setCurrent(appPageDto.getPageNum()); ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppHomeController.java
@@ -50,8 +50,9 @@ public R<AppHomeActivityVo> pageActivityGoods(@RequestBody AppRecommendGoodsPageDto appRecommendGoodsPageDto) { Long userId = SecurityUtils.getUserId(); Long shopId = null; Member member = null; if(userId!=null){ Member member = memberService.getMember(userId).getData(); member = memberService.getMember(userId).getData(); if(member!=null&&member.getRelationShopId()!=null){ shopId = member.getRelationShopId(); } @@ -61,6 +62,9 @@ } if(shopId==null){ throw new ServiceException(AppErrorConstant.NO_POSITION); } if(member!=null&&member.getBindingFlag()==0){ shopId = null; } AppHomeActivityVo homeActivityVo = goodsService.pageActivityGoods(shopId); return R.ok(homeActivityVo); @@ -138,8 +142,9 @@ @ApiOperation(value = "搜索活动商品") public R<Page<AppSimpleActivityGoodsVo>> pageSearchActivityGoods(@RequestBody AppSearchGoodsPageDto appSearchGoodsPageDto) { Long userId = SecurityUtils.getUserId(); Member member = null; if(userId!=null){ Member member = memberService.getMember(userId).getData(); member = memberService.getMember(userId).getData(); if(member!=null&&member.getRelationShopId()!=null){ appSearchGoodsPageDto.setShopId(member.getRelationShopId()); }else{ @@ -149,6 +154,9 @@ if(appSearchGoodsPageDto.getShopId()==null){ throw new ServiceException(AppErrorConstant.NO_POSITION); } if(member!=null&&member.getBindingFlag()==0){ appSearchGoodsPageDto.setShopId(null); } Page<AppSimpleActivityGoodsVo> page = new Page<>(); page.setSize(appSearchGoodsPageDto.getPageSize()); page.setCurrent(appSearchGoodsPageDto.getPageNum()); ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtActivityListDto.java
@@ -13,10 +13,10 @@ @Data public class MgtActivityListDto { @ApiModelProperty(value="活动来源1平台2商户") @ApiModelProperty(value="活动来源0全部1平台2商户") private Integer activityFrom; @ApiModelProperty(value="活动类型1秒杀") @ApiModelProperty(value="活动类型0全部1秒杀") private Integer activityType; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityService.java
@@ -2,16 +2,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.goods.domain.dto.MgtActivityEditDto; import com.ruoyi.goods.domain.dto.MgtActivityPageDto; import com.ruoyi.goods.domain.dto.MgtActivityRecordPageDto; import com.ruoyi.goods.domain.dto.StaffActivityListDto; import com.ruoyi.goods.domain.dto.*; import com.ruoyi.goods.domain.pojo.activity.Activity; import com.ruoyi.goods.domain.vo.*; import com.ruoyi.system.api.domain.dto.AGStockChangeDto; import com.ruoyi.system.api.domain.dto.ActivityGoodsGetDto; import com.ruoyi.system.api.domain.dto.ActivityTotalChangeDto; import com.ruoyi.system.api.domain.dto.MerPageDto; import com.ruoyi.system.api.domain.dto.*; import com.ruoyi.system.api.domain.vo.ActivityGoodsGetVo; import java.util.List; @@ -88,7 +82,7 @@ * @param * @return List<MgtActivityListVo> */ List<MgtActivityListVo> listMgtActivity(); List<MgtActivityListVo> listMgtActivity(MgtActivityListDto mgtActivityListDto); /** * @description 获取商户推荐活动 @@ -181,4 +175,14 @@ * @return List<MgtActivityListVo> */ List<MgtActivityListVo> listStaffActivity(StaffActivityListDto staffActivityListDto); /** * @description 判断商户是否在活动范围 * @author jqs * @date 2023/9/7 14:13 * @param merActivityShopDto * @return Boolean */ Boolean judgeActivityShop(MerActivityShopDto merActivityShopDto); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
@@ -409,8 +409,12 @@ * @return List<MgtActivityListVo> */ @Override public List<MgtActivityListVo> listMgtActivity(){ return activityMapper.listMgtActivity(); public List<MgtActivityListVo> listMgtActivity(MgtActivityListDto mgtActivityListDto){ List<MgtActivityListVo> activityListVoList = new ArrayList<>(); if(mgtActivityListDto.getActivityFrom()!=null&&mgtActivityListDto.getActivityFrom()!=2){ activityListVoList = activityMapper.listMgtActivity(); } return activityListVoList; } /** @@ -662,4 +666,28 @@ return activityListVoList; } /** * @description 判断商户是否在活动范围 * @author jqs * @date 2023/9/7 14:13 * @param merActivityShopDto * @return Boolean */ @Override public Boolean judgeActivityShop(MerActivityShopDto merActivityShopDto){ Boolean judge = false; Long shopId = merActivityShopDto.getShopId(); Activity activity = this.getById(merActivityShopDto.getActivityId()); //判断是否全部商户 if(activity.getAreaFlag()==1&&activity.getShopFlag()==1){ judge = true; }else{ //判断是否在商户范围内 String applicableShop = activity.getApplicableShop(); applicableShop = ","+applicableShop+","; judge = applicableShop.contains(","+shopId.toString()+","); } return judge; } } ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml
@@ -111,7 +111,10 @@ <select id="getRecommendActivity" resultType="com.ruoyi.goods.domain.pojo.activity.Activity"> SELECT * FROM t_activity WHERE del_flag = 0 AND recommend_flag = 1 AND NOW() BETWEEN activity_start_time AND activity_end_time AND activity_status = 1 AND ((shop_flag = 1 AND area_flag = 1) OR (FIND_IN_SET(#{shopId}, applicable_shop) > 0)) AND activity_status = 1 <if test="shopId != null and shopId != ''"> AND ((shop_flag = 1 AND area_flag = 1) OR (FIND_IN_SET(#{shopId}, applicable_shop) > 0)) </if> ORDER BY activity_end_time - NOW() LIMIT 1; </select> @@ -120,7 +123,9 @@ <select id="listActivityIdByShopId" resultType="java.lang.String"> SELECT activity_id FROM t_activity WHERE del_flag = 0 AND activity_status = 1 AND NOW() BETWEEN activity_start_time AND activity_end_time AND ((shop_flag = 1 AND area_flag = 1) OR (FIND_IN_SET(#{shopId}, applicable_shop) > 0)) <if test="shopId != null and shopId != ''"> AND ((shop_flag = 1 AND area_flag = 1) OR (FIND_IN_SET(#{shopId}, applicable_shop) > 0)) </if> </select> <select id="pageAppActivity" resultType="com.ruoyi.goods.domain.vo.AppActivityPageVo"> @@ -137,7 +142,10 @@ ta.propaganda_poster propagandaPoster, ta.activity_introduce activityIntroduce FROM t_activity ta WHERE ta.del_flag = 0 AND ta.activity_status <=1 AND CURRENT_TIME < ta.activity_end_time AND ((ta.shop_flag = 1 AND ta.area_flag = 1) OR (FIND_IN_SET(#{shopId}, ta.applicable_shop) > 0)) WHERE ta.del_flag = 0 AND ta.activity_status <=1 AND CURRENT_TIME < ta.activity_end_time <if test="shopId != null and shopId != ''"> AND ((ta.shop_flag = 1 AND ta.area_flag = 1) OR (FIND_IN_SET(#{shopId}, ta.applicable_shop) > 0)) </if> group by ta.activity_id ORDER BY ta.activity_status ASC,ta.create_time DESC </select> ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java
@@ -87,4 +87,10 @@ @ApiModelProperty(value = "宣传海报") private String propagandaPoster; @ApiModelProperty(value = "发放限制数量") private String sendLimitNumber; @ApiModelProperty(value = "发放限制0否1是") private String sendLimitFlag; } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/coupon/Coupon.java
@@ -191,6 +191,18 @@ @TableField("propaganda_poster") private String propagandaPoster; /** * 发放限制数量 */ @TableField("send_limit_number") private String sendLimitNumber; /** * 发放限制0否1是 */ @TableField("send_limit_flag") private String sendLimitFlag; @Override protected Serializable pkVal() { return this.couponId; ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtCouponGetVo.java
@@ -81,4 +81,10 @@ @ApiModelProperty(value = "宣传海报") private String propagandaPoster; @ApiModelProperty(value = "发放限制数量") private String sendLimitNumber; @ApiModelProperty(value = "发放限制0否1是") private String sendLimitFlag; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java
@@ -1,5 +1,7 @@ package com.ruoyi.order.controller.concole; import com.github.binarywang.wxpay.bean.ecommerce.ProfitSharingResult; import com.github.binarywang.wxpay.exception.WxPayException; import com.ruoyi.common.core.domain.R; import com.ruoyi.order.service.order.ConsumerGoodsService; import com.ruoyi.order.service.order.OrderService; @@ -7,10 +9,7 @@ import com.ruoyi.system.api.domain.dto.MerBaseDto; import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; import com.ruoyi.system.api.domain.vo.*; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; @@ -170,4 +169,10 @@ return R.ok(memberSimpleTotalVo); } @GetMapping("/queryBill") public R<ProfitSharingResult> queryBill(String transactionId,String outOrderNo) throws WxPayException { ProfitSharingResult result = orderService.queryBill(transactionId,outOrderNo); return R.ok(result); } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java
@@ -42,7 +42,6 @@ public R<MgtTotalOrderTotalVo> getTotalOrderTotal(@RequestBody MgtBaseShopDto mgtBaseShopDto) { Long userId = SecurityUtils.getUserId(); MgtTotalOrderTotalVo totalOrderTotalVo = orderService.getTotalOrderTotal(mgtBaseShopDto); return R.ok(totalOrderTotalVo); } @@ -60,7 +59,6 @@ @ApiOperation(value = "获取商户活动统计(商户管理-统计经营-活动统计-参与人数)") public R<MgtTotalActivityTotalVo> getTotalActivityJoinMemberTotal(@RequestBody MgtBaseShopDto mgtBaseShopDto) { Long userId = SecurityUtils.getUserId(); MgtTotalActivityTotalVo totalActivityTotal = orderService.getTotalActivityJoinMemberTotal(mgtBaseShopDto); return R.ok(totalActivityTotal); } @@ -94,7 +92,6 @@ @ApiOperation(value = "导出平台商户数据统计(统计-店铺数据统计)") public void exportPlTotalDataTotal(MgtBasePlatformDto mgtBasePlatformDto, HttpServletResponse response) { Long userId = SecurityUtils.getUserId(); List<MgtTotalDataTotalVo> totalDataTotalVoList = orderService.getPlTotalDataTotal(mgtBasePlatformDto); ExcelUtil<MgtTotalDataTotalVo> util = new ExcelUtil<MgtTotalDataTotalVo>(MgtTotalDataTotalVo.class); util.exportExcel(response, totalDataTotalVoList, "店铺数据统计列表"); @@ -104,7 +101,6 @@ @ApiOperation(value = "获取平台商户订单统计(统计-经营统计)") public R<MgtTotalOrderTotalVo> getPlTotalOrderTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto) { Long userId = SecurityUtils.getUserId(); MgtTotalOrderTotalVo totalOrderTotalVo = orderService.getPlTotalOrderTotal(mgtBasePlatformDto); return R.ok(totalOrderTotalVo); } @@ -113,7 +109,6 @@ @ApiOperation(value = "获取平台商户活动统计(统计-活动统计)") public R<MgtPlTotalActivityTotalVo> getPlTotalActivityTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto) { Long userId = SecurityUtils.getUserId(); MgtPlTotalActivityTotalVo totalActivityTotal = orderService.getPlTotalActivityTotal(mgtBasePlatformDto); return R.ok(totalActivityTotal); } @@ -122,7 +117,6 @@ @ApiOperation(value = "获取平台商户活动统计(统计-活动统计-参与人数)") public R<MgtPlTotalActivityTotalVo> getPlTotalActivityJoinMemberTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto) { Long userId = SecurityUtils.getUserId(); MgtPlTotalActivityTotalVo totalActivityTotal = orderService.getPlTotalActivityJoinMemberTotal(mgtBasePlatformDto); return R.ok(totalActivityTotal); } @@ -131,7 +125,6 @@ @ApiOperation(value = "获取平台商户活动统计(统计-活动统计-获客人数)") public R<MgtPlTotalActivityTotalVo> getPlTotalActivityGetMemberTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto) { Long userId = SecurityUtils.getUserId(); MgtPlTotalActivityTotalVo totalActivityTotal = orderService.getPlTotalActivityGetMemberTotal(mgtBasePlatformDto); return R.ok(totalActivityTotal); } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java
@@ -115,14 +115,7 @@ @ApiOperation(value = "分页获取用户订单") public R<Page<AppUserOrderPageVo>> pageUserOrder(@RequestBody AppUserOrderPageDto appUserOrderPageDto) { Long userId = SecurityUtils.getUserId(); if (userId != null) { Member member = memberService.getMember(userId).getData(); appUserOrderPageDto.setUserId(userId); if (member != null && member.getRelationShopId() != null) { appUserOrderPageDto.setShopId(member.getRelationShopId()); } } logger.info("appUserOrderPageDto:" + appUserOrderPageDto.toString()); appUserOrderPageDto.setUserId(userId); Page<AppUserOrderPageVo> page = new Page<>(); page.setSize(appUserOrderPageDto.getPageSize()); page.setCurrent(appUserOrderPageDto.getPageNum()); ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerMemberNoClearOrderDto.java
@@ -18,4 +18,6 @@ @ApiModelProperty(value = "会员用户id") private Long memberUserId; @ApiModelProperty(value = "结清标记0未结清1已结清") private Integer closeFlag; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java
@@ -59,4 +59,7 @@ @ApiModelProperty(value = "支付方式1微信2现金3支付宝") private String thisReceiveType; @ApiModelProperty(value = "结清标记0未结清1已结清") private Integer closeFlag; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -146,7 +146,8 @@ @Resource private OrderRefundService orderRefundService; @Resource private RemoteMemberService memberService; /** * @description: buyGoods @@ -1185,6 +1186,8 @@ */ @Override public List<AppUserOrderPageVo> pageUserOrder(Page page, AppUserOrderPageDto appUserOrderPageDto) { Long userId = appUserOrderPageDto.getUserId(); Member member = memberService.getMember(userId).getData(); List<AppUserOrderPageVo> appUserOrderPageVoList = orderMapper.pageUserOrder(page, appUserOrderPageDto); if (appUserOrderPageVoList != null && !appUserOrderPageVoList.isEmpty()) { Long shopId; @@ -1210,13 +1213,17 @@ delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); } for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) { shop = shopMap.get(appUserOrderPageVo.getShopId()); appUserOrderPageVo.setShopName(shop.getShopName()); appUserOrderPageVo.setShopServicePhone(shop.getShopServicePhone()); if (appUserOrderPageVo.getShopId().equals(appUserOrderPageDto.getShopId())) { appUserOrderPageVo.setSameShop(1); } else { appUserOrderPageVo.setSameShop(0); if(member.getBindingFlag()==0&&appUserOrderPageVo.getOrderFrom()==2){ appUserOrderPageVo.setShopName("全部店铺"); }else{ shop = shopMap.get(appUserOrderPageVo.getShopId()); appUserOrderPageVo.setShopName(shop.getShopName()); appUserOrderPageVo.setShopServicePhone(shop.getShopServicePhone()); if (appUserOrderPageVo.getShopId().equals(appUserOrderPageDto.getShopId())) { appUserOrderPageVo.setSameShop(1); } else { appUserOrderPageVo.setSameShop(0); } } appUserOrderPageVo.setVerifyCode("1-" + appUserOrderPageVo.getOrderId()); appUserOrderPageVo.setEndTime(DateUtils.addMinutes(appUserOrderPageVo.getCreateTime(), delayTime)); @@ -1405,6 +1412,17 @@ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } } //未绑定用户需判断活动订单是否支持该店铺 if(order.getOrderFrom()==2){ String activityId = order.getActivityId(); MerActivityShopDto merActivityShopDto = new MerActivityShopDto(); merActivityShopDto.setShopId(shopId); merActivityShopDto.setActivityId(activityId); Boolean judge = remoteActivityService.judgeActivityShop(merActivityShopDto).getData(); if(!judge){ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } } //未绑定用户需判断核销商城订单判断商品单价和优惠券 /*StringJoiner goodsIdSJ = new StringJoiner(","); for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { @@ -1527,6 +1545,17 @@ //商城订单需判断商户 if(order.getOrderFrom()==1){ if (!order.getShopId().equals(shopId)) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } } //未绑定用户需判断活动订单是否支持该店铺 if(order.getOrderFrom()==2){ String activityId = order.getActivityId(); MerActivityShopDto merActivityShopDto = new MerActivityShopDto(); merActivityShopDto.setShopId(shopId); merActivityShopDto.setActivityId(activityId); Boolean judge = remoteActivityService.judgeActivityShop(merActivityShopDto).getData(); if(!judge){ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } } @@ -1744,13 +1773,13 @@ } // 平台特约商户号,用户平台收取服务费 2023-09-05改变分账方式 String platformTyMacId = WxPayConfiguration.getPlatformTyMacId(); if (!StringUtils.isEmpty(subMchId)) { if (!StringUtils.isEmpty(platformTyMacId)) { WxPayConfig config = wxService.getConfig(); ShopProportionVo shopProportion = null; BigDecimal proportionPercent = null; //商户订单获取统一分成 活动订单获取活动分成 if(orderFrom==1){ proportionPercent = redisService.getCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION); proportionPercent = new BigDecimal(redisService.getCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION).toString()); }else{ R<ShopProportionVo> resultShopProportion = remoteShopService.getShopProportion(shopId); shopProportion = resultShopProportion.getData(); @@ -1764,8 +1793,7 @@ request.setOutOrderNo(IdUtils.simpleUUID()); List<ProfitSharingRequest.Receiver> receiverList = new ArrayList<>(); String description = "订单:" + orderNo + " 平台分账"; //平台分成 proportionPercent = new BigDecimal("100.00").subtract(proportionPercent); //商户分成 if(proportionPercent.compareTo(BigDecimal.ZERO)>0){ ProfitSharingResult result = new ProfitSharingResult(); result.setOutOrderNo(orderNo); @@ -3658,9 +3686,6 @@ */ @Override public MgtPlTotalActivityTotalVo getPlTotalActivityTotal(MgtBasePlatformDto mgtBasePlatformDto) { if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){ return new MgtPlTotalActivityTotalVo(); } MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo(); totalActivityTotalVo.setOrderTotal(0); totalActivityTotalVo.setCycleTotal(0); @@ -3688,6 +3713,10 @@ totalActivityTotalVo.setJoinMemberTotalValue(new Integer[0]); totalActivityTotalVo.setGetMemberTotalKey(new String[0]); totalActivityTotalVo.setGetMemberTotalValue(new Integer[0]); //店铺活动返回空 if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom()==2){ return totalActivityTotalVo; } List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); if(mgtBasePlatformDto.getShopId()!=null){ shopIdList = new ArrayList<>(); @@ -3921,9 +3950,13 @@ @Override public MgtPlTotalActivityTotalVo getPlTotalActivityJoinMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) { if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){ //店铺活动返回空 if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom()==2){ return new MgtPlTotalActivityTotalVo(); } /*if(mgtBasePlatformDto.getActivityType()!=null&&mgtBasePlatformDto.getActivityType()!=1){ return new MgtPlTotalActivityTotalVo(); }*/ //获取需要关联的用户id集合 /*if (mgtBasePlatformDto.getDeptId() != null) { List<Long> userIdList = new ArrayList<>(); @@ -3985,9 +4018,13 @@ @Override public MgtPlTotalActivityTotalVo getPlTotalActivityGetMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) { if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){ //店铺活动返回空 if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom()==2){ return new MgtPlTotalActivityTotalVo(); } /*if(mgtBasePlatformDto.getActivityType()!=null&&mgtBasePlatformDto.getActivityType()!=1){ return new MgtPlTotalActivityTotalVo(); }*/ //获取需要关联的用户id集合 /*if (mgtBasePlatformDto.getDeptId() != null) { List<Long> userIdList = new ArrayList<>(); @@ -5735,4 +5772,14 @@ public MerMemberSimpleTotalVo getMerMemberSimpleTotalVo(MerBaseDto merBaseDto){ return orderMapper.getMerMemberSimpleTotalVo(merBaseDto); } @Override public ProfitSharingResult queryBill(String transactionId,String outOrderNo) throws WxPayException { ProfitSharingQueryRequest request = new ProfitSharingQueryRequest(); request.setSubMchid("1650744551"); request.setTransactionId(transactionId); request.setOutOrderNo(outOrderNo); ProfitSharingResult profitSharingResult = wxService.getEcommerceService().queryProfitSharing(request); return profitSharingResult; } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
@@ -3,8 +3,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.github.binarywang.wxpay.bean.ecommerce.PartnerTransactionsResult; import com.github.binarywang.wxpay.bean.ecommerce.ProfitSharingResult; import com.github.binarywang.wxpay.bean.ecommerce.RefundNotifyResult; import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult; import com.github.binarywang.wxpay.exception.WxPayException; import com.ruoyi.order.domain.dto.MerVerifyPrizeDto; import com.ruoyi.order.domain.dto.*; import com.ruoyi.order.domain.pojo.order.Order; @@ -584,4 +586,7 @@ * @return MerMemberSimpleTotalVo */ MerMemberSimpleTotalVo getMerMemberSimpleTotalVo(MerBaseDto merBaseDto); ProfitSharingResult queryBill(String transactionId,String outOrderNo) throws WxPayException; } ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -345,9 +345,13 @@ toc.change_receivable_money relReceiveMoney, CASE toc.pay_type WHEN 1 THEN toc.pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END receiveMoney, toc.change_receivable_money - (CASE toc.pay_type WHEN 1 THEN toc.pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END) unPaidMoney, toc.create_time createTime toc.create_time createTime, toc.close_flag closeFlag FROM t_order toc WHERE toc.del_flag = 0 AND toc.user_id = #{userId} AND toc.order_status = 3 AND toc.close_flag = 0 WHERE toc.del_flag = 0 AND toc.user_id = #{userId} AND toc.order_status = 3 <if test="param.closeFlag != null and param.closeFlag != ''"> AND toc.close_flag = #{param.closeFlag} </if> ORDER BY toc.create_time DESC </select> ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffAgencyTaskRecordPageVo.java
@@ -41,7 +41,7 @@ private Date createTime; @ApiModelProperty(value="跟踪类型1电话2手动") private Integer followType; private String followType; @ApiModelProperty(value="自定义跟进类型") private String customeFollowType; ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java
@@ -136,6 +136,7 @@ agencyTaskRecord.setCustomeFollowType(merFollowAgencyTaskDto.getCustomeFollowType()); agencyTaskRecord.setFollowContent(merFollowAgencyTaskDto.getFollowContent()); agencyTaskRecord.setCreateTime(new Date()); agencyTaskRecordService.saveOrUpdate(agencyTaskRecord); //创建任务详情文件 List<FileDto> picture = merFollowAgencyTaskDto.getPicture(); List<FileDto> video = merFollowAgencyTaskDto.getVideo(); @@ -184,7 +185,7 @@ if(taskFileList!=null&&!taskFileList.isEmpty()){ taskFileService.saveBatch(taskFileList); } agencyTaskRecordService.saveOrUpdate(agencyTaskRecord); } //创建新任务 if(StringUtils.isNotBlank(merFollowAgencyTaskDto.getNextTaskDate())){ ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskRecordMapper.xml
@@ -55,7 +55,7 @@ tmtr.id followId, tmtr.task_id taskId, tmt.create_time createTime, tmtr.follow_type followType, CASE tmtr.follow_type WHEN 1 THEN "电话跟进" WHEN 2 THEN "手动跟进" END followType, tmtr.custome_follow_type customeFollowType, tmtr.call_time callTime, tmtr.follow_content followContent, @@ -64,7 +64,7 @@ INNER JOIN t_agency_task_record tmtr ON tmtr.task_id = tmt.task_id INNER JOIN t_shop ts ON ts.shop_id = tmt.shop_id INNER JOIN t_shop_file tsf ON tsf.shop_id = ts.shop_id AND tsf.del_flag = 0 AND tsf.file_type = 1 WHERE tmt.del_flag = 0 AND tmt.agency_id = #{param.agencyId} WHERE tmt.del_flag = 0 AND tmt.shop_id = #{param.agencyId} ORDER BY tmtr.create_time DESC </select> ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtShopConfigEditDto.java
@@ -14,6 +14,9 @@ @Data public class MgtShopConfigEditDto extends MgtBaseDto { @ApiModelProperty(value = "商户统一分成比例") private String shopCommonProportion; @ApiModelProperty(value = "合作商任务紧急程度") private String shopEmergencyDegree; ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtAllCustomConfigVo.java
@@ -45,6 +45,9 @@ @ApiModelProperty(value = "合作商状态") private String shopCustomStatus; @ApiModelProperty(value = "商户统一分成比例") private String shopCommonProportion; @ApiModelProperty(value = "来源渠道") private String shopSourceChannel; ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/scheduler/SystemScheduler.java
@@ -1,7 +1,8 @@ package com.ruoyi.system.scheduler; import com.ruoyi.system.service.staff.SysWxCpService; import com.ruoyi.system.service.staff.SysStaffService; import com.ruoyi.system.service.sys.ISysDeptService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; @@ -17,9 +18,10 @@ private SchedulerUtils schedulerUtils; @Autowired private SysWxCpService sysWxCpService; private SysStaffService sysStaffService; @Autowired private ISysDeptService sysDeptService; /** * 每天凌晨2点定时同步企业微信部门 @@ -28,7 +30,7 @@ private void timingCheckMemberCoupon(){ if(schedulerUtils.getSchedulerRun()) { log.info("定时同步企业微信部门任务开始执行"); sysWxCpService.syncDepartment(); sysDeptService.syncDepartment(); } } @@ -39,7 +41,7 @@ private void timingSendTaskMessage(){ if(schedulerUtils.getSchedulerRun()) { log.info("定时发送通知任务任务开始执行"); sysWxCpService.sendTaskMessage(); sysStaffService.sendTaskMessage(); } } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java
@@ -205,6 +205,9 @@ case "SHOP_EMERGENCY_DEGREE": mgtAllCustomConfigVo.setShopEmergencyDegree(value.getConfigValue()); break; case "SHOP_COMMON_PROPORTION": mgtAllCustomConfigVo.setShopCommonProportion(value.getConfigValue()); break; case "SHOP_FOLLOW_TYPE": mgtAllCustomConfigVo.setShopFollowType(value.getConfigValue()); break; @@ -425,6 +428,13 @@ } updatedCustomConfigs.add(customConfig); break; case "SHOP_COMMON_PROPORTION": newValue = mgtShopConfigEditDto.getShopCommonProportion(); customConfig.setConfigValue(newValue); customConfig.setUpdateTime(updateTime); updatedCustomConfigs.add(customConfig); redisService.setCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION,mgtShopConfigEditDto.getShopCommonProportion()); break; default: break; } @@ -437,6 +447,7 @@ createNewConfig(ConfigEnum.SHOP_FOLLOW_TYPE, mgtShopConfigEditDto.getShopFollowType(), updateTime); createNewConfig(ConfigEnum.SHOP_CUSTOM_STATUS, mgtShopConfigEditDto.getShopCustomStatus(), updateTime); createNewConfig(ConfigEnum.SHOP_SOURCE_CHANNEL, mgtShopConfigEditDto.getShopSourceChannel(), updateTime); createNewConfig(ConfigEnum.SHOP_COMMON_PROPORTION, mgtShopConfigEditDto.getShopCommonProportion(), updateTime); } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java
@@ -16,6 +16,7 @@ import com.ruoyi.system.api.domain.dto.MgtShopStaffEditDto; import com.ruoyi.system.api.domain.poji.sys.SysDept; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.MgtUserTaskMsgVo; import com.ruoyi.system.api.service.RemoteShopService; import com.ruoyi.system.domain.dto.MgtStaffEditDto; import com.ruoyi.system.domain.dto.MgtStaffPageDto; @@ -31,6 +32,11 @@ import com.ruoyi.system.service.sys.ISysDeptService; import com.ruoyi.system.service.sys.ISysUserService; import com.ruoyi.system.util.QiYeUtils; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.cp.api.WxCpService; import me.chanjar.weixin.cp.bean.message.WxCpMessage; import me.chanjar.weixin.cp.bean.message.WxCpMessageSendResult; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -69,6 +75,10 @@ @Resource private ISysDeptService sysDeptService; @Resource @Qualifier("wxService") private WxCpService wxCpService; /** @@ -436,4 +446,37 @@ public List<SysStaff> listSysStaffByIds(List<Long> userIdList){ return sysStaffMapper.listSysStaffByIds(userIdList); } /** * @description 企业微信消息推送 * @author jqs * @date 2023/8/29 11:05 * @return void */ @Override public void sendTaskMessage(){ //获取员工任务列表 List<MgtUserTaskMsgVo> userTaskMsgVoList = remoteShopService.getTaskMsgList().getData(); WxCpMessage message; SysStaff sysStaff; if(userTaskMsgVoList!=null&&!userTaskMsgVoList.isEmpty()){ //循环发送消息 for(MgtUserTaskMsgVo mgtUserTaskMsgVo : userTaskMsgVoList){ sysStaff = this.getByUserId(mgtUserTaskMsgVo.getUserId()); if(sysStaff!=null&& StringUtils.isNotBlank(sysStaff.getWxUserId())){ message = new WxCpMessage(); message.setAgentId(1000024); message.setToUser(sysStaff.getWxUserId()); message.setMsgType("text"); message.setContent(mgtUserTaskMsgVo.getTaskTitle()+"今日需要任务跟进,请注意!"); try { WxCpMessageSendResult result = wxCpService.getMessageService().send(message); System.out.println(result); } catch (WxErrorException e) { throw new RuntimeException(e); } } } } } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java
@@ -1,28 +1,17 @@ package com.ruoyi.system.service.impl.staff; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.system.api.domain.poji.sys.SysDept; import com.ruoyi.system.api.domain.vo.MgtUserTaskMsgVo; import com.ruoyi.system.api.service.RemoteShopService; import com.ruoyi.system.domain.dto.MgtWxCPStaffDto; import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.service.staff.SysStaffService; import com.ruoyi.system.service.staff.SysWxCpService; import com.ruoyi.system.service.sys.ISysDeptService; import lombok.extern.log4j.Log4j2; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.cp.api.WxCpDepartmentService; import me.chanjar.weixin.cp.api.WxCpService; import me.chanjar.weixin.cp.bean.WxCpDepart; import me.chanjar.weixin.cp.bean.WxCpUser; import me.chanjar.weixin.cp.bean.message.WxCpMessage; import me.chanjar.weixin.cp.bean.message.WxCpMessageSendResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; /** * @ClassName WxCpServiceImpl @@ -35,22 +24,14 @@ @Log4j2 public class SysWxCpServiceImpl implements SysWxCpService { @Autowired @Resource @Qualifier("wxService") private WxCpService wxCpService; @Autowired @Resource @Qualifier("adWxService") private WxCpService adWxCpService; @Resource private RemoteShopService remoteShopService; @Resource private ISysDeptService sysDeptService; @Resource private SysStaffService sysStaffService; /** * @description @@ -70,87 +51,9 @@ return accessToken; } /** * @description 同步部门 * @author jqs * @date 2023/8/17 15:42 * @param * @return void */ @Override public void syncDepartment(){ WxCpDepartmentService wxCpDepartmentService = wxCpService.getDepartmentService(); try { //从企业微信拉去部门名单 List<WxCpDepart> wxCpDepartList = wxCpDepartmentService.list(null); if(wxCpDepartList!=null&&wxCpDepartList.size()>0){ for(WxCpDepart wxCpDepart : wxCpDepartList){ if(wxCpDepart.getParentId().compareTo(24L)<0){ //获取系统内对应部门 SysDept sysDept = sysDeptService.getByWxDeptId(wxCpDepart.getId()); //判断是否有该部门,没有则新建 if(sysDept!=null){ //判断是否有变化 if(!sysDept.getDeptName().equals(wxCpDepart.getName())||sysDept.getOrderNum()!=wxCpDepart.getOrder().intValue()){ sysDept.setDeptName(wxCpDepart.getName()); sysDept.setOrderNum(wxCpDepart.getOrder().intValue()); sysDept.setUpdateBy("企业微信同步"); sysDeptService.updateDept(sysDept); log.info("企业微信同步更新部门:"+wxCpDepart.getName()); } }else{ sysDept = new SysDept(); sysDept.setDelFlag("0"); sysDept.setStatus("0"); sysDept.setParentId(100L); sysDept.setOrderNum(wxCpDepart.getOrder().intValue()); sysDept.setCreateBy("企业微信同步"); sysDept.setDeptName(wxCpDepart.getName()); sysDept.setWxDeptId(wxCpDepart.getId()); sysDeptService.insertDept(sysDept); log.info("企业微信同步新增部门:"+wxCpDepart.getName()); } } } } } catch (WxErrorException e) { throw new RuntimeException(e); } } /** * @description 企业微信消息推送 * @author jqs * @date 2023/8/29 11:05 * @return void */ @Override public void sendTaskMessage(){ //获取员工任务列表 List<MgtUserTaskMsgVo> userTaskMsgVoList = remoteShopService.getTaskMsgList().getData(); log.info("定时发送通知任务任务列表---"+userTaskMsgVoList.size()); WxCpMessage message; SysStaff sysStaff; if(userTaskMsgVoList!=null&&!userTaskMsgVoList.isEmpty()){ //循环发送消息 for(MgtUserTaskMsgVo mgtUserTaskMsgVo : userTaskMsgVoList){ sysStaff = sysStaffService.getByUserId(mgtUserTaskMsgVo.getUserId()); if(sysStaff!=null&& StringUtils.isNotBlank(sysStaff.getWxUserId())){ message = new WxCpMessage(); message.setAgentId(1000024); message.setToUser(sysStaff.getWxUserId()); message.setMsgType("text"); message.setContent(mgtUserTaskMsgVo.getTaskTitle()+"今日需要任务跟进,请注意!"); try { WxCpMessageSendResult result = wxCpService.getMessageService().send(message); System.out.println(result); } catch (WxErrorException e) { throw new RuntimeException(e); } } } } } /** * @description 更新企业微信部门 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysDeptServiceImpl.java
@@ -17,9 +17,14 @@ import com.ruoyi.system.mapper.sys.SysRoleMapper; import com.ruoyi.system.service.staff.SysWxCpService; import com.ruoyi.system.service.sys.ISysDeptService; import org.springframework.beans.factory.annotation.Autowired; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.cp.api.WxCpDepartmentService; import me.chanjar.weixin.cp.api.WxCpService; import me.chanjar.weixin.cp.bean.WxCpDepart; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -33,17 +38,22 @@ @Service public class SysDeptServiceImpl implements ISysDeptService { @Autowired @Resource private SysDeptMapper deptMapper; @Autowired @Resource private SysRoleMapper roleMapper; @Autowired @Resource private SysDeptMenuMapper deptMenuMapper; @Autowired @Resource private SysWxCpService sysWxCpService; @Resource @Qualifier("wxService") private WxCpService wxCpService; /** * 查询部门管理数据 @@ -406,5 +416,49 @@ return deptMapper.getByWxDeptId(wxDeptId); } /** * @description 同步部门 * @author jqs * @date 2023/8/17 15:42 * @param * @return void */ @Override public void syncDepartment(){ WxCpDepartmentService wxCpDepartmentService = wxCpService.getDepartmentService(); try { //从企业微信拉去部门名单 List<WxCpDepart> wxCpDepartList = wxCpDepartmentService.list(null); if(wxCpDepartList!=null&&wxCpDepartList.size()>0){ for(WxCpDepart wxCpDepart : wxCpDepartList){ if(wxCpDepart.getParentId().compareTo(24L)<0){ //获取系统内对应部门 SysDept sysDept = this.getByWxDeptId(wxCpDepart.getId()); //判断是否有该部门,没有则新建 if(sysDept!=null){ //判断是否有变化 if(!sysDept.getDeptName().equals(wxCpDepart.getName())||sysDept.getOrderNum()!=wxCpDepart.getOrder().intValue()){ sysDept.setDeptName(wxCpDepart.getName()); sysDept.setOrderNum(wxCpDepart.getOrder().intValue()); sysDept.setUpdateBy("企业微信同步"); this.updateDept(sysDept); } }else{ sysDept = new SysDept(); sysDept.setDelFlag("0"); sysDept.setStatus("0"); sysDept.setParentId(100L); sysDept.setOrderNum(wxCpDepart.getOrder().intValue()); sysDept.setCreateBy("企业微信同步"); sysDept.setDeptName(wxCpDepart.getName()); sysDept.setWxDeptId(wxCpDepart.getId()); this.insertDept(sysDept); } } } } } catch (WxErrorException e) { throw new RuntimeException(e); } } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysStaffService.java
@@ -115,4 +115,14 @@ * @return List<SysStaff> */ List<SysStaff> listSysStaffByIds(List<Long> userIdList); /** * @description 企业微信消息推送 * @author jqs * @date 2023/8/29 11:05 * @return void */ void sendTaskMessage(); } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysWxCpService.java
@@ -20,22 +20,8 @@ */ String getToken(); /** * @description 同步部门 * @author jqs * @date 2023/8/17 15:42 * @param * @return void */ void syncDepartment(); /** * @description 企业微信消息推送 * @author jqs * @date 2023/8/29 11:05 * @return void */ void sendTaskMessage(); /** * @description 更新企业微信部门 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/sys/ISysDeptService.java
@@ -132,4 +132,13 @@ */ SysDept getByWxDeptId(Long wxDeptId); /** * @description 同步部门 * @author jqs * @date 2023/8/17 15:42 * @param * @return void */ void syncDepartment(); }