From 9409bbd6d2cbf284f0daa2884908ca21fdae9f8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=98=A5=E4=BA=91?= <1994398261@qq.com> Date: Fri, 15 Aug 2025 15:45:59 +0800 Subject: [PATCH] =?UTF-8?q?crm=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/api/PayApi.java | 32 ++--- .../src/main/java/com/ruoyi/api/WxMsgApi.java | 18 +++ .../impl/WeChatMessageServiceImpl.java | 48 ++++++-- .../com/ruoyi/api/util/TransferToUser.java | 13 +- .../busi/controller/BusiTcInfoController.java | 112 ++++++++++++++++++ .../com/ruoyi/busi/domain/BusiNoticeSign.java | 2 +- .../com/ruoyi/busi/domain/BusiTcInfo.java | 62 ++++++++++ .../ruoyi/busi/mapper/BusiTcInfoMapper.java | 21 ++++ .../com/ruoyi/busi/query/BusiNoticeQuery.java | 1 + .../busi/service/IBusiTcInfoService.java | 18 +++ .../service/impl/BusiNoticeServiceImpl.java | 100 +++++++++++++--- .../impl/BusiNoticeSignServiceImpl.java | 2 +- .../service/impl/BusiTcInfoServiceImpl.java | 51 ++++++++ .../java/com/ruoyi/busi/vo/BusiNoticeVo.java | 2 + .../controller/MemberPointsController.java | 20 +++- .../com/ruoyi/member/domain/MemberApply.java | 6 +- .../ruoyi/member/domain/MemberBusiCard.java | 2 +- .../com/ruoyi/member/domain/MemberOrder.java | 6 +- .../com/ruoyi/member/domain/MemberPoints.java | 8 +- .../com/ruoyi/member/domain/MemberUser.java | 3 + .../member/mapper/MemberPointsMapper.java | 2 + .../member/service/IMemberPointsService.java | 6 + .../impl/MemberBusiCardServiceImpl.java | 1 + .../service/impl/MemberCardServiceImpl.java | 3 +- .../service/impl/MemberOrderServiceImpl.java | 53 ++++++++- .../service/impl/MemberPointsServiceImpl.java | 40 ++++++- .../service/impl/MemberUserServiceImpl.java | 34 ++---- .../com/ruoyi/member/vo/MemberUserVO.java | 2 + .../com/ruoyi/payConfig/WechatPayConfig.java | 6 +- .../src/main/resources/apiclient_cert.p12 | Bin 2774 -> 2774 bytes .../src/main/resources/apiclient_cert.pem | 42 +++---- .../src/main/resources/apiclient_key.pem | 52 ++++---- .../src/main/resources/application-druid.yml | 10 +- .../src/main/resources/application.yml | 14 ++- .../mapper/busi/BusiNoticeMapper.xml | 48 +++++--- .../mapper/busi/BusiTcInfoMapper.xml | 41 +++++++ .../mapper/member/MemberApplyMapper.xml | 11 +- .../mapper/member/MemberBusiCardMapper.xml | 3 +- .../mapper/member/MemberOrderMapper.xml | 3 +- .../mapper/member/MemberPointsMapper.xml | 21 +++- .../mapper/member/MemberUserMapper.xml | 39 ++++-- ruoyi-admin/src/main/resources/pub_key.pem | 14 +-- .../interceptor/RepeatSubmitInterceptor.java | 1 + .../filter/JwtAuthenticationTokenFilter.java | 12 +- .../ruoyi/system/mapper/SysUserMapper.java | 1 + .../ruoyi/system/service/ISysUserService.java | 47 ++++---- .../service/impl/SysUserServiceImpl.java | 58 +++++---- .../resources/mapper/system/SysUserMapper.xml | 9 ++ 48 files changed, 863 insertions(+), 237 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiTcInfoController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiTcInfo.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiTcInfoMapper.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiTcInfoService.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiTcInfoServiceImpl.java create mode 100644 ruoyi-admin/src/main/resources/mapper/busi/BusiTcInfoMapper.xml diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/PayApi.java b/ruoyi-admin/src/main/java/com/ruoyi/api/PayApi.java index a0c41d7..27ffa34 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/PayApi.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/PayApi.java @@ -29,11 +29,9 @@ import com.wechat.pay.java.core.Config; import com.wechat.pay.java.core.RSAAutoCertificateConfig; import com.wechat.pay.java.core.RSAPublicKeyConfig; -import com.wechat.pay.java.core.http.*; -import com.wechat.pay.java.service.payments.jsapi.JsapiService; -import com.wechat.pay.java.service.payments.jsapi.JsapiServiceExtension; -import com.wechat.pay.java.service.payments.jsapi.model.*; -import com.wechat.pay.java.service.payments.nativepay.NativePayService; + +import com.wechat.pay.java.service.partnerpayments.jsapi.JsapiServiceExtension; +import com.wechat.pay.java.service.partnerpayments.jsapi.model.*; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -71,7 +69,7 @@ public class PayApi { */ @ApiOperation(value = "统一下单-统一接口", notes = "统一下单-统一接口") @GetMapping("/prepayment") - public PrepayWithRequestPaymentResponse transactions( String orderNo,String type) { + public PrepayWithRequestPaymentResponse transactions(String orderNo, String type) { LambdaQueryWrapper queryWrapper =new LambdaQueryWrapper<>(); queryWrapper.eq(MemberOrder::getOrderNo,orderNo).last("limit 1"); MemberOrder memberOrder = memberOrderService.getOne(queryWrapper); @@ -79,7 +77,7 @@ public class PayApi { // 使用微信支付公钥的RSA配置 Config config = new RSAPublicKeyConfig.Builder() - .merchantId(wechatPayConfig.getMchId()) + .merchantId(wechatPayConfig.getSpMchid()) .privateKeyFromPath(wechatPayConfig.getPrivateKeyPath()) .publicKeyFromPath(wechatPayConfig.getPublicKeyPath()) .publicKeyId(wechatPayConfig.getPublicKeyId()) @@ -97,17 +95,19 @@ public class PayApi { // 金额单位为分 int totalInFen = goodsPrice.multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_UP).intValue(); amount.setTotal(totalInFen); - payer.setOpenid(user.getWxOpenId()); + payer.setSubOpenid(user.getWxOpenId()); request.setAmount(amount); - request.setAppid(wechatPayConfig.getAppId()); - request.setMchid(wechatPayConfig.getMchId()); + request.setSpAppid(wechatPayConfig.getSpAppid()); + request.setSpMchid(wechatPayConfig.getSpMchid()); + request.setSubAppid(wechatPayConfig.getAppId()); + request.setSubMchid(wechatPayConfig.getMchId()); request.setDescription("开通会员"); request.setNotifyUrl(wechatPayConfig.getNotifyUrl()); request.setOutTradeNo(orderNo); request.setPayer(payer); // 调用下单方法,得到应答 // response包含了调起支付所需的所有参数,可直接用于前端调起支付 - return service.prepayWithRequestPayment(request); + return service.prepayWithRequestPayment(request, appConfig.getAppId()); }else { // 构建service JsapiServiceExtension service = new JsapiServiceExtension .Builder().config(config).build(); @@ -119,17 +119,19 @@ public class PayApi { // 金额单位为分 int totalInFen = goodsPrice.multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_UP).intValue(); amount.setTotal(totalInFen); - payer.setOpenid(user.getOpenId()); + payer.setSubOpenid(user.getOpenId()); request.setAmount(amount); - request.setAppid(appConfig.getAppId()); - request.setMchid(wechatPayConfig.getMchId()); + request.setSpAppid(wechatPayConfig.getSpAppid()); + request.setSpMchid(wechatPayConfig.getSpMchid()); + request.setSubAppid(appConfig.getAppId()); + request.setSubMchid(wechatPayConfig.getMchId()); request.setDescription("开通会员"); request.setNotifyUrl(wechatPayConfig.getNotifyUrl()); request.setOutTradeNo(orderNo); request.setPayer(payer); // 调用下单方法,得到应答 // response包含了调起支付所需的所有参数,可直接用于前端调起支付 - return service.prepayWithRequestPayment(request); + return service.prepayWithRequestPayment(request, appConfig.getAppId()); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/WxMsgApi.java b/ruoyi-admin/src/main/java/com/ruoyi/api/WxMsgApi.java index 658ef11..e4dc374 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/WxMsgApi.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/WxMsgApi.java @@ -1,9 +1,14 @@ package com.ruoyi.api; +import com.alibaba.fastjson2.JSONObject; import com.ruoyi.api.domain.WeChatMessage; import com.ruoyi.api.service.IWeChatMessageService; +import com.ruoyi.busi.domain.BusiNotice; +import com.ruoyi.busi.service.IBusiNoticeService; import com.ruoyi.busi.utils.WeChatUtils; import com.ruoyi.common.annotation.Anonymous; +import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.common.utils.SecurityUtils; import com.wechat.pay.java.core.http.HttpMethod; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -15,6 +20,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; +import java.util.concurrent.TimeUnit; @RestController @RequestMapping("/wxMsgApi") @@ -23,6 +29,10 @@ public class WxMsgApi { private WeChatUtils weChatUtils; @Resource private IWeChatMessageService weChatMessageService; + @Autowired + private RedisCache redisCache; + @Autowired + IBusiNoticeService busiNoticeService; /** * 校验签名 @@ -55,6 +65,14 @@ public class WxMsgApi { } + @GetMapping("/saveSignInfo") + public void saveSignInfo(String signId) throws IOException { + Long userId = SecurityUtils.getUserId(); + BusiNotice byId = busiNoticeService.getById(signId); + redisCache.setCacheObject("signInfo:" + userId, JSONObject.toJSONString(byId),10, TimeUnit.SECONDS); + } + + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/WeChatMessageServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/WeChatMessageServiceImpl.java index 65f9f5e..529679e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/WeChatMessageServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/WeChatMessageServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.api.service.impl; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.crypto.SecureUtil; import cn.hutool.json.JSONArray; import com.alibaba.fastjson2.JSON; @@ -10,7 +11,14 @@ import com.ruoyi.api.service.IWeChatMessageService; import com.ruoyi.api.util.HttpUtils; import com.ruoyi.api.util.MessageUtil; import com.ruoyi.base.domain.BaseConfig; +import com.ruoyi.base.service.IBaseCategoryService; import com.ruoyi.base.service.IBaseConfigService; +import com.ruoyi.busi.domain.BusiNotice; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.system.mapper.SysUserMapper; +import com.ruoyi.system.service.ISysUserService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -27,6 +35,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -47,10 +56,15 @@ public class WeChatMessageServiceImpl implements IWeChatMessageService { @Value("${wx-app.token}") private String token; + @Autowired + private SysUserMapper sysUserService; @Resource private IBaseConfigService configService; - + @Autowired + private RedisCache redisCache; + @Autowired + private IBaseCategoryService baseCategoryService; /**发送消息url*/ private static String SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/custom/send"; @@ -115,17 +129,33 @@ public class WeChatMessageServiceImpl implements IWeChatMessageService { // 事件类型 String event = requestMap.get("Event"); StringBuilder contentMessage = new StringBuilder(); - String contentStr = "嗨,欢迎加入通告快接,您想咨询那个问题,请点击选择"; + SysUser sysUser = sysUserService.selectWxUserByOpenIdOrPhone(fromUserName, null, null, null); + if (sysUser != null&&null!=sysUser.getUserId()){ + Object cacheObject = redisCache.getCacheObject("signInfo:" + sysUser.getUserId()); + if (ObjectUtil.isNotEmpty(cacheObject)){ + BusiNotice busiNotice = JSONObject.parseObject(cacheObject.toString(), BusiNotice.class); + String platformName = baseCategoryService.selectByCode(busiNotice.getPlatformCode()).get(0).getTitle(); + String res="通告快接\n" + + "【"+platformName+"】【"+busiNotice.getTitle()+"】\n" + + "招募人数:"+(busiNotice.getNeedNum()==null?"无上限":busiNotice.getNeedNum()+"名\n") + + "通告明细:"+busiNotice.getDetail()+"\n" + + "三方报名链接:"+busiNotice.getThirdUrl()+"\n" + + "大量小红书、B站、抖音、快手、微博高质量通告!\n"; + contentMessage.append(res); + redisCache.deleteObject("signInfo:" + sysUser.getUserId()); + } + } + // String tgzHtml = "https://www.ddtg.site/pages/mine/member/member-card?userType=01"; - String bzHtml = "https://www.ddtg.site/pages/mine/member/member-card?userType=02"; - String jzqHtml = "https://www.ddtg.site/pages/mine/coupon/my-coupon"; +// String bzHtml = "https://www.ddtg.site/pages/mine/member/member-card?userType=02"; +// String jzqHtml = "https://www.ddtg.site/pages/mine/coupon/my-coupon"; // String tgzStr = "1、通告主卡"; - String bzStr = "1、博主VIP"; - String jzqStr = "2、急招券"; - contentMessage.append(contentStr).append("\n") +// String bzStr = "1、博主VIP"; +// String jzqStr = "2、急招券"; + // .append(tgzStr).append("\n") - .append(bzStr).append("\n") - .append(jzqStr).append("\n"); +// .append(bzStr).append("\n") +// .append(jzqStr).append("\n"); if (msgType.equals("event")) { sendCustomerTextMessage(fromUserName, contentMessage.toString(), getAccessToken()); } else if (msgType.equals("text")) { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/util/TransferToUser.java b/ruoyi-admin/src/main/java/com/ruoyi/api/util/TransferToUser.java index 8e69646..c5adaa9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/util/TransferToUser.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/util/TransferToUser.java @@ -34,13 +34,12 @@ import java.time.Instant; import java.util.Base64; import java.util.List; import java.util.Objects; -import javax.annotation.Resource; + import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; -import com.ruoyi.payConfig.WechatPayConfig; import okhttp3.Headers; import okhttp3.MediaType; import okhttp3.OkHttpClient; @@ -62,10 +61,6 @@ public class TransferToUser { - @Resource - private WechatPayConfig wechatPayConfig; - - /** * https://pay.weixin.qq.com/doc/v3/merchant/4012716434 @@ -169,13 +164,13 @@ public class TransferToUser { } private String buildAuthorization(String method, String uri, String body) { - return Utility.buildAuthorization(wechatPayConfig.getMchId(), wechatPayConfig.getSerialNo(), Utility.loadPrivateKeyFromPath(wechatPayConfig.getPrivateKeyPath()), method, uri, body); + return Utility.buildAuthorization("1719491143", "52E1BDB97B3F01CA3687004D4C6FEBAC15DB58FB", Utility.loadPrivateKeyFromPath("/opt/cert/ownCert/apiclient_key.pem"), method, uri, body); } private Response sendHttpRequest(String uri, String body) throws IOException { Request.Builder builder = new Request.Builder().url(host + uri); builder.addHeader("Accept", "application/json"); - builder.addHeader("Wechatpay-Serial", wechatPayConfig.getPublicKeyId()); + builder.addHeader("Wechatpay-Serial", "PUB_KEY_ID_0117194911432025062300211538001004"); builder.addHeader("Authorization", buildAuthorization(method, uri, body)); builder.addHeader("Content-Type", "application/json"); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), body); @@ -200,7 +195,7 @@ public class TransferToUser { if (response.code() >= 200 && response.code() < 300) { // 2XX 成功,继续验证应答签名 Headers headers = response.headers(); - Utility.validateResponse(wechatPayConfig.getPublicKeyId(),Utility.loadPublicKeyFromPath(wechatPayConfig.getPublicKeyPath()) , headers, body); + Utility.validateResponse("PUB_KEY_ID_0117194911432025062300211538001004",Utility.loadPublicKeyFromPath("/opt/cert/ownCert/pub_key.pem") , headers, body); return body; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiTcInfoController.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiTcInfoController.java new file mode 100644 index 0000000..2b459a1 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiTcInfoController.java @@ -0,0 +1,112 @@ +package com.ruoyi.busi.controller; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.busi.domain.BusiTcInfo; +import com.ruoyi.busi.service.IBusiTcInfoService; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 提成记录Controller + * + * @author 朱春云 + * @date 2025-06-23 + */ +@RestController +@RequestMapping("/busi/tcinfo") +public class BusiTcInfoController extends BaseController +{ + @Autowired + private IBusiTcInfoService busiTcInfoService; + + /** + * 查询提成记录列表 + */ + @PreAuthorize("@ss.hasPermi('busi:tcinfo:list')") + @GetMapping("/list") + public AjaxResult list(BusiTcInfo busiTcInfo, + @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) + { + Page page = new Page<>(pageNum, pageSize); + IPage list = busiTcInfoService.queryListPage(busiTcInfo,page); + return success(list); + } + + /** + * 导出提成记录列表 + */ + @PreAuthorize("@ss.hasPermi('busi:tcinfo:export')") + @Log(title = "提成记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, BusiTcInfo busiTcInfo) + { + List list = busiTcInfoService.list(); + ExcelUtil util = new ExcelUtil(BusiTcInfo.class); + util.exportExcel(response, list, "提成记录数据"); + } + + /** + * 获取提成记录详细信息 + */ + @PreAuthorize("@ss.hasPermi('busi:tcinfo:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(busiTcInfoService.getById(id)); + } + + /** + * 新增提成记录 + */ + @PreAuthorize("@ss.hasPermi('busi:tcinfo:add')") + @Log(title = "提成记录", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody BusiTcInfo busiTcInfo) + { + return toAjax(busiTcInfoService.save(busiTcInfo)); + } + + /** + * 修改提成记录 + */ + @PreAuthorize("@ss.hasPermi('busi:tcinfo:edit')") + @Log(title = "提成记录", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody BusiTcInfo busiTcInfo) + { + return toAjax(busiTcInfoService.updateById(busiTcInfo)); + } + + /** + * 删除提成记录 + */ + @PreAuthorize("@ss.hasPermi('busi:tcinfo:remove')") + @Log(title = "提成记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + List list = new ArrayList<>(Arrays.asList(ids)); + return toAjax(busiTcInfoService.removeByIds(list)); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNoticeSign.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNoticeSign.java index 858ad81..dc7cacf 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNoticeSign.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNoticeSign.java @@ -88,7 +88,7 @@ public class BusiNoticeSign extends DlBaseEntity /** * 报价 */ - private BigDecimal price; + private String price; @TableField(exist = false) private String[] choosed={}; @TableField(exist = false) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiTcInfo.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiTcInfo.java new file mode 100644 index 0000000..28c3c6c --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiTcInfo.java @@ -0,0 +1,62 @@ +package com.ruoyi.busi.domain; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.ruoyi.common.annotation.Excel; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; +import com.ruoyi.common.core.domain.DlBaseEntity; + +/** + * 提成记录对象 busi_tc_info + * + * @author 朱春云 + * @date 2025-06-23 + */ +@TableName("busi_tc_info") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BusiTcInfo extends DlBaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + @TableId(type = IdType.ASSIGN_UUID) + private String id; + + /** 用户主键 */ + @Excel(name = "用户主键") + private Long userId; + + /** 来源用户id */ + @Excel(name = "来源用户id") + private Long formUserId; + + /** 部门主键 */ + @Excel(name = "部门主键") + private Long deptId; + + /** 提成信息 */ + @Excel(name = "提成信息") + private String info; + + /** 提成金额 */ + @Excel(name = "提成金额") + private BigDecimal money; + + /** 是否结算0否1是 */ + private String isJs; + /** + * 提成用户名称 + */ + @TableField(exist = false) + private String tcUserName; + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiTcInfoMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiTcInfoMapper.java new file mode 100644 index 0000000..4c0ce04 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiTcInfoMapper.java @@ -0,0 +1,21 @@ +package com.ruoyi.busi.mapper; + +import java.util.List; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.busi.domain.BusiTcInfo; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * 提成记录Mapper接口 + * + * @author 朱春云 + * @date 2025-06-23 + */ +@Mapper +public interface BusiTcInfoMapper extends BaseMapper +{ + IPage queryListPage(@Param("entity") BusiTcInfo entity, Page page); +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/query/BusiNoticeQuery.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/query/BusiNoticeQuery.java index 7528e97..9e416d5 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/query/BusiNoticeQuery.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/query/BusiNoticeQuery.java @@ -12,6 +12,7 @@ import java.util.Date; @Data public class BusiNoticeQuery { private String id; + private String thirdUrl; /**发布者名称**/ private String userNickName; /** 标题 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiTcInfoService.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiTcInfoService.java new file mode 100644 index 0000000..d8bec3f --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiTcInfoService.java @@ -0,0 +1,18 @@ +package com.ruoyi.busi.service; + +import java.util.List; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.busi.domain.BusiTcInfo; + +/** + * 提成记录Service接口 + * + * @author 朱春云 + * @date 2025-06-23 + */ +public interface IBusiTcInfoService extends IService +{ + IPage queryListPage(BusiTcInfo pageReqVO, Page page); +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java index 984ed70..207f699 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java @@ -13,16 +13,13 @@ import cn.hutool.http.HttpUtil; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.ruoyi.base.domain.BaseCategory; import com.ruoyi.base.domain.BaseCity; import com.ruoyi.base.service.IBaseCategoryService; import com.ruoyi.base.service.IBaseCityService; import com.ruoyi.busi.domain.*; import com.ruoyi.busi.mapper.BusiNoticeSignMapper; import com.ruoyi.busi.query.AppNoticeQuery; -import com.ruoyi.busi.service.IBusiNoticeFormService; -import com.ruoyi.busi.service.IBusiSubscribeService; -import com.ruoyi.busi.service.IBusiUserLoveService; +import com.ruoyi.busi.service.*; import com.ruoyi.busi.vo.BusiNoticeVo; import com.ruoyi.busi.vo.SubScribeQuery; import com.ruoyi.busi.vo.SubscribeDataObj; @@ -38,7 +35,6 @@ import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.busi.query.BusiNoticeQuery; -import com.ruoyi.constant.DictConstants; import com.ruoyi.member.domain.MemberPoints; import com.ruoyi.member.domain.MemberUser; import com.ruoyi.member.service.*; @@ -51,7 +47,6 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.busi.mapper.BusiNoticeMapper; -import com.ruoyi.busi.service.IBusiNoticeService; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; @@ -71,8 +66,7 @@ public class BusiNoticeServiceImpl extends ServiceImpl queryListPage(BusiNoticeQuery query, Page page) { - return busiNoticeMapper.queryListPage(query, page); + IPage busiNoticeVoIPage = busiNoticeMapper.queryListPage(query, page); + busiNoticeVoIPage.getRecords().forEach(item->{ + try { + item.setUserNickName(userService.selectUserById(item.getUserId()).getNickName()); + MemberUserVO memberUserVO = memberUserService.queryByUserId(item.getUserId(), "01"); + item.setIdentityType(memberUserVO.getIdentityType()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(BusiNoticeSign::getNoticeId,item.getId()); + item.setSignNum(busiNoticeSignMapper.selectCount(queryWrapper)); + }catch (Exception ignored){ + + } + + }); + return busiNoticeVoIPage; } // 方法用于提取URL中的eid参数值 @@ -148,31 +154,39 @@ public class BusiNoticeServiceImpl extends ServiceImpl queryWrapper =new LambdaQueryWrapper<>(); queryWrapper.gt(BusiNotice::getEndDate, DateUtil.format(new Date(),"yyyy-MM-dd")).eq(BusiNotice::getApprovalStatus,1); List list = this.list(queryWrapper); - //无问题数据直接审核通过 - data.setApprovalStatus("1"); - data.setApprovalUserId(null); - data.setApprovalTime(new Date()); //遍历 list的每条数据与data对比,如果两条数据相似度大于70% 提出预警 for (BusiNotice busiNotice : list) { + //过滤掉换行和空格符 if (StringUtils.isNotEmpty(data.getThirdUrl())&&StringUtils.isNotEmpty(busiNotice.getThirdUrl())){ - if (data.getThirdUrl().equals(busiNotice.getThirdUrl())){ + if (data.getThirdUrl().replaceAll("\\s*|\t|\r|\n","").equals(busiNotice.getThirdUrl().replaceAll("\\s*|\t|\r|\n",""))){ //两条thirdurl相等 data.setApprovalStatus("8"); data.setSimilarityIds(Optional.ofNullable(data.getSimilarityIds()).orElse("")+busiNotice.getId()+","); result.put("code",500); result.put("msg","通告查重,下次早点上传哦!"); - }else if (busiNotice.getThirdUrl().contains(data.getThirdUrl())||data.getThirdUrl().contains(busiNotice.getThirdUrl())){ + }else if (busiNotice.getThirdUrl().replaceAll("\\s*|\t|\r|\n","").contains(data.getThirdUrl().replaceAll("\\s*|\t|\r|\n",""))||data.getThirdUrl().replaceAll("\\s*|\t|\r|\n","").contains(busiNotice.getThirdUrl().replaceAll("\\s*|\t|\r|\n",""))){ //两条thirdurl存在包含情况 data.setApprovalStatus("8"); data.setSimilarityIds(Optional.ofNullable(data.getSimilarityIds()).orElse("")+busiNotice.getId()+","); result.put("code",500); result.put("msg","通告查重,下次早点上传哦!"); - }else if (isEidEqual(data.getThirdUrl(),busiNotice.getThirdUrl())){ + }else if (isEidEqual(data.getThirdUrl().replaceAll("\\s*|\t|\r|\n",""),busiNotice.getThirdUrl().replaceAll("\\s*|\t|\r|\n",""))){ //两条thirdurl都存在eid且eid相等 data.setApprovalStatus("8"); data.setSimilarityIds(Optional.ofNullable(data.getSimilarityIds()).orElse("")+busiNotice.getId()+","); @@ -184,6 +198,8 @@ public class BusiNoticeServiceImpl extends ServiceImpl().eq(BusiNoticeForm::getNoticeId,id)); this.removeById(id); + //删除对应的积分 + //先确定之前是否存在扣除记录 + LambdaQueryWrapper count =new LambdaQueryWrapper<>(); + count.eq(MemberPoints::getFormNotice,id).eq(MemberPoints::getType,"2"); + if (memberPointsService.count(count)>0){ + return; + } + LambdaQueryWrapper queryWrapper =new LambdaQueryWrapper<>(); + queryWrapper.eq(MemberPoints::getFormNotice,id).eq(MemberPoints::getType,"1"); + List list = memberPointsService.list(queryWrapper); + if (CollectionUtil.isNotEmpty(list)){ + for (MemberPoints memberPoints : list) { + MemberPoints memberPointsRemove =new MemberPoints(); + memberPointsRemove.setFormNotice(memberPoints.getFormNotice()); + memberPointsRemove.setPoints(memberPoints.getPoints()); + memberPointsRemove.setType("2"); + memberPointsRemove.setTitle("通告违规扣除积分"); + memberPointsRemove.setUserId(memberPoints.getUserId()); + memberPointsService.savePoints(memberPointsRemove); + } + } + } } @@ -398,11 +438,35 @@ public class BusiNoticeServiceImpl extends ServiceImpl count =new LambdaQueryWrapper<>(); + count.eq(MemberPoints::getFormNotice,noticeId).eq(MemberPoints::getType,"2"); + if (memberPointsService.count(count)>0){ + return; + } + LambdaQueryWrapper queryWrapper =new LambdaQueryWrapper<>(); + queryWrapper.eq(MemberPoints::getFormNotice,noticeId).eq(MemberPoints::getType,"1"); + List list = memberPointsService.list(queryWrapper); + if (CollectionUtil.isNotEmpty(list)){ + for (MemberPoints memberPoints : list) { + MemberPoints memberPointsRemove =new MemberPoints(); + memberPointsRemove.setFormNotice(memberPoints.getFormNotice()); + memberPointsRemove.setPoints(memberPoints.getPoints()); + memberPointsRemove.setType("2"); + memberPointsRemove.setTitle("通告违规扣除积分"); + memberPointsRemove.setUserId(memberPoints.getUserId()); + memberPointsService.savePoints(memberPointsRemove); + } + } + } this.updateById(data); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeSignServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeSignServiceImpl.java index 8f22bdd..4f71e18 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeSignServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeSignServiceImpl.java @@ -99,7 +99,7 @@ public class BusiNoticeSignServiceImpl extends ServiceImpl implements IBusiTcInfoService +{ + @Autowired + private BusiTcInfoMapper busiTcInfoMapper; + @Autowired + private ISysRoleService roleService; + + @Override + public IPage queryListPage(BusiTcInfo pageReqVO, Page page) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + SysUser user = loginUser.getUser(); + // 管理员拥有所有权限 + if (!user.isAdmin()) { + Set strings = roleService.selectRolePermissionByUserId(user.getUserId()); + //销售经理 + if (strings.contains("xsjl")){ + pageReqVO.setDeptId(user.getDeptId()); + }else if (strings.contains("xsry")){ + //销售人员 + pageReqVO.setUserId(user.getUserId()); + } + } + return busiTcInfoMapper.queryListPage(pageReqVO, page); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiNoticeVo.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiNoticeVo.java index a794fba..2f80e2f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiNoticeVo.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiNoticeVo.java @@ -44,5 +44,7 @@ public class BusiNoticeVo extends BusiNotice { private String signId; //报名卡片名称 private String cardName; + private String identityType; + private Integer signNum; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/controller/MemberPointsController.java b/ruoyi-admin/src/main/java/com/ruoyi/member/controller/MemberPointsController.java index e58d28b..fa0f1d9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/controller/MemberPointsController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/controller/MemberPointsController.java @@ -48,10 +48,28 @@ public class MemberPointsController extends BaseController { return success(list); } + /** + * 分页查询积分变动明细 + * + * @param pageNum 分页参数 + * @param pageSize 分页参数 + * @return com.ruoyi.common.core.domain.AjaxResult + * @author PQZ + * @date 15:24 2025/3/29 + **/ + @GetMapping("/adminList") + public AjaxResult adminList(MemberPoints memberPoints, + @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + Page page = new Page<>(pageNum, pageSize); + IPage list = memberPointsService.adminList(memberPoints, page); + return success(list); + } + /** * 查询在途订单 * @author PQZ - * @date 14:36 2025/4/29 + * @date 14:36 2025/4/29 * @return com.ruoyi.common.core.domain.AjaxResult **/ @GetMapping("/getOnWayOrder") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberApply.java b/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberApply.java index dc01462..124f2f3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberApply.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberApply.java @@ -1,6 +1,8 @@ package com.ruoyi.member.domain; import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.annotation.Excel; import com.baomidou.mybatisplus.annotation.IdType; @@ -11,7 +13,7 @@ import com.ruoyi.common.core.domain.DlBaseEntity; /** * 通告主认证申请对象 dl_member_apply - * + * * @author pqz * @date 2025-03-17 */ @@ -73,5 +75,7 @@ public class MemberApply extends DlBaseEntity @Excel(name = "审核备注") private String approvalRemark; private String applyJson; + @TableField(exist = false) + private String tel; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberBusiCard.java b/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberBusiCard.java index a30d9f5..10a020c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberBusiCard.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberBusiCard.java @@ -77,7 +77,7 @@ public class MemberBusiCard extends DlBaseEntity /** 商单自报价 */ @Excel(name = "商单自报价") - private BigDecimal price; + private String price; /** 所在领域/合作方式/是否为平台品牌合作人等 */ @Excel(name = "所在领域/合作方式/是否为平台品牌合作人等") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberOrder.java b/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberOrder.java index d45d924..9335040 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberOrder.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberOrder.java @@ -2,6 +2,8 @@ package com.ruoyi.member.domain; import java.math.BigDecimal; import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.annotation.Excel; import com.baomidou.mybatisplus.annotation.IdType; @@ -12,7 +14,7 @@ import com.ruoyi.common.core.domain.DlBaseEntity; /** * 订单对象 dl_member_order - * + * * @author pqz * @date 2025-03-17 */ @@ -116,5 +118,7 @@ public class MemberOrder extends DlBaseEntity /** 备注(保留字段) */ @Excel(name = "备注", readConverterExp = "保=留字段") private String remark; + @TableField(exist = false) + private String userPhone; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberPoints.java b/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberPoints.java index d974f82..be9780e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberPoints.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberPoints.java @@ -1,5 +1,6 @@ package com.ruoyi.member.domain; +import com.baomidou.mybatisplus.annotation.TableField; import com.ruoyi.common.annotation.Excel; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -9,7 +10,7 @@ import com.ruoyi.common.core.domain.DlBaseEntity; /** * 博主积分变动明细对象 dl_member_points - * + * * @author pqz * @date 2025-03-17 */ @@ -59,5 +60,10 @@ public class MemberPoints extends DlBaseEntity /** 备注 */ @Excel(name = "备注") private String remark; + //来源通告id + private String formNotice; + + @TableField(exist = false) + private String nickName; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberUser.java b/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberUser.java index b69f78d..7b2da48 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberUser.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/domain/MemberUser.java @@ -1,5 +1,6 @@ package com.ruoyi.member.domain; +import com.baomidou.mybatisplus.annotation.TableField; import com.ruoyi.common.annotation.Excel; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -80,6 +81,8 @@ public class MemberUser extends DlBaseEntity * 判断是否领过0否1是 */ private String isGetGift; + @TableField(exist = false) + private Long deptId; public MemberUser (String userType, SysUser user,Integer addNotice){ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/mapper/MemberPointsMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/member/mapper/MemberPointsMapper.java index 1111e95..1bcc79a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/mapper/MemberPointsMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/mapper/MemberPointsMapper.java @@ -26,4 +26,6 @@ public interface MemberPointsMapper extends BaseMapper { * @date 15:25 2025/3/29 **/ IPage queryListPage(@Param("userId") Long userId, Page page); + + IPage adminList(@Param("memberPoints") MemberPoints memberPoints, Page page); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberPointsService.java b/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberPointsService.java index df3e7fd..8daa84a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberPointsService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberPointsService.java @@ -25,6 +25,9 @@ public interface IMemberPointsService extends IService { * @date 15:24 2025/3/29 **/ IPage queryListPage(Long userId, Page page); + IPage adminList(MemberPoints memberPoints, Page page); + + /** * 新增积分变动记录 @@ -43,8 +46,11 @@ public interface IMemberPointsService extends IService { * @author PQZ * @date 16:11 2025/3/31 **/ + double getBloggerBalance(Long userId); + double getBloggerCanUseBalance(Long userId); + /** * 积分提现 * @author PQZ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberBusiCardServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberBusiCardServiceImpl.java index 242c57e..fd29108 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberBusiCardServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberBusiCardServiceImpl.java @@ -139,6 +139,7 @@ public class MemberBusiCardServiceImpl extends ServiceImpl0){ double points = memberOrder.getGoodsPrice().doubleValue()*v; //如果审核通过 @@ -116,8 +123,50 @@ public class MemberOrderServiceImpl extends ServiceImpl xsjl = userService.getUserByRole("xsjl", sysUser.getDeptId()); + if (ObjectUtil.isNotEmpty(xsjl)){ + for (SysUser xsInfo : xsjl) { + //先判断是否已存在提成记录 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(BusiTcInfo::getUserId, xsInfo.getUserId()).eq(BusiTcInfo::getFormUserId,sysUser1.getUserId()); + if (tcInfoService.count(queryWrapper)>0){ + continue; + } + double points1 = memberOrder.getGoodsPrice().doubleValue(); + //如果审核通过 + MemberPoints memberPoints1 =new MemberPoints(); + memberPoints1.setUserId(xsInfo.getUserId()); + memberPoints1.setPoints(points1); + memberPoints1.setType("1"); + memberPoints1.setTitle("销售:"+sysUser1.getNickName()+"邀请的用户"+sysUser.getNickName()+"消费"+memberOrder.getGoodsPrice()+"元,得"+points1+"积分"); + memberPointsService.savePoints(memberPoints1); + //插入提成记录表 + BusiTcInfo tcInfo2 =new BusiTcInfo(); + tcInfo2.setUserId(xsInfo.getUserId()); + tcInfo2.setInfo("销售:"+sysUser1.getNickName()+"邀请的用户"+sysUser.getNickName()+"消费"+memberOrder.getGoodsPrice()+"元,提成"+points/10+"元"); + tcInfo2.setMoney(BigDecimal.valueOf(points1/10)); + tcInfo2.setIsJs("0"); + tcInfo2.setFormUserId(sysUser1.getUserId()); + tcInfo2.setDeptId(sysUser1.getDeptId()); + tcInfoService.save(tcInfo2); + } + } + } + }catch (Exception e) { + e.printStackTrace(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java index 35136af..e1f10f5 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java @@ -16,8 +16,11 @@ import io.lettuce.core.LMoveArgs; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Comparator; +import java.util.Date; import java.util.List; import java.util.Random; +import java.util.stream.Collectors; /** * 博主积分变动明细Service业务层处理 @@ -47,6 +50,11 @@ public class MemberPointsServiceImpl extends ServiceImpl adminList(MemberPoints memberPoints, Page page) { + return memberPointsMapper.adminList(memberPoints,page); + } + /** * 新增积分变动记录 * @@ -110,6 +118,36 @@ public class MemberPointsServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper + .eq(MemberPoints::getUserId,userId) + .eq(MemberPoints::getStatus,"01") + .and(wrapper -> wrapper.eq(MemberPoints::getType,"1").lt(MemberPoints::getCreateTime, new Date(System.currentTimeMillis() - 86400000L)).or().eq(MemberPoints::getType,"2")) + .orderByDesc(DlBaseEntity::getCreateTime); + List list = list(lambdaQueryWrapper); + if (list.isEmpty()){ + return 0; + } else { + //获取记录中 type等于1的最新数据 + MemberPoints memberPoints = list.stream().filter(wrapper -> "1".equals(wrapper.getType())).max(Comparator.comparing(DlBaseEntity::getCreateTime)).get(); + //在获取在最新一条记录createtime后 type等于2的全部数据 + List memberPointsList = list.stream().filter(wrapper -> "2".equals(wrapper.getType())).filter(wrapper -> wrapper.getCreateTime().after(memberPoints.getCreateTime())).collect(Collectors.toList()); + //计算出可提现的积分 + return memberPoints.getBalance() - memberPointsList.stream().mapToDouble(MemberPoints::getPoints).sum(); + } + } + /** * 积分提现 * @@ -129,7 +167,7 @@ public class MemberPointsServiceImpl extends ServiceImplnowBalance){ throw new Exception("当前用户积分余额为"+nowBalance+"您已超出提现额度"); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberUserServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberUserServiceImpl.java index fe3e5da..330ab65 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberUserServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberUserServiceImpl.java @@ -144,36 +144,15 @@ public class MemberUserServiceImpl extends ServiceImpl strings = roleService.selectRolePermissionByUserId(user.getUserId()); - if (strings.contains("xsry")){ + //销售经理 + if (strings.contains("xsjl")){ + pageReqVO.setDeptId(user.getDeptId()); + }else if (strings.contains("xsry")){ + //销售人员 pageReqVO.setUserId(user.getUserId()); } } - //当前日期--年月日 - String today= DateUtil.today(); - //截取年月 - String yearMonth = today.substring(0, Math.min(today.length(), 7)); - IPage rtnPage=memberUserMapper.crmList(pageReqVO, page); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(MemberOrder::getIsPay,1); - for (MemberUserVO item: rtnPage.getRecords()){ - BigDecimal monthMoney = BigDecimal.valueOf(0); - BigDecimal allMoney = BigDecimal.valueOf(0); - queryWrapper.eq(MemberOrder::getUserId,item.getUserId()); - List orderList = orderService.list(queryWrapper); - for (MemberOrder order:orderList){ - String payTimeStr =DateUtil.formatDate(order.getPayTime()); - //截取年月 - String orderYearMonth = payTimeStr.substring(0, Math.min(payTimeStr.length(), 7)); - if(orderYearMonth.equals(yearMonth)){ - //本月的订单 - monthMoney =monthMoney.add(order.getGoodsPrice()); - } - allMoney = allMoney.add(order.getGoodsPrice()); - } - item.setMonthMoney(monthMoney); - item.setAllMoney(allMoney); - } - return rtnPage; + return memberUserMapper.crmList(pageReqVO, page); } /** @@ -243,6 +222,7 @@ public class MemberUserServiceImpl extends ServiceImpl addresses; /**积分*/ double pointsBalance; + double canUseBalance; /**报名次数*/ int report; /**剩余通告券*/ @@ -59,5 +60,6 @@ public class MemberUserVO extends MemberUser { BigDecimal monthMoney; /**所有订单总额*/ BigDecimal allMoney; + private String xsName; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/payConfig/WechatPayConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/payConfig/WechatPayConfig.java index c525ea8..31dd26f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/payConfig/WechatPayConfig.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/payConfig/WechatPayConfig.java @@ -43,7 +43,11 @@ public class WechatPayConfig { /** * 服务商商户号 */ - private String slMchId; + private String spMchid; + /** + * 服务商appid + */ + private String spAppid; /** * APIv2密钥 */ diff --git a/ruoyi-admin/src/main/resources/apiclient_cert.p12 b/ruoyi-admin/src/main/resources/apiclient_cert.p12 index 6010dd82f74533f927d51e610b25f5fb7e6cd40e..3f1a90d0b49886ee5130bccf47292dd6a9791ddc 100644 GIT binary patch delta 2577 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 delta 2577 zcmV+s3hwpR71kAyU4J6dZ&5m1(zpTw2mpYB1iU6BG;&BzKl(6B*gpxe@ZQ9$Wk&Z`4@UBy$PntvjKil-zM`A<$)N1z#-Wyra zBIE{)k6q#HL;BsP`b81PPaWS_d>q*?_e_%(0hxK_IF)ljet%=jz-Z()Md?1am|xX! z1H2EwQJoeM1_@1h(Y2^$6~^s^mlpgc-Ak)i=ZW|8NWJU>lg;$jKaOE#X$|$q)&;}0 zz<(ZUMD|MxhRAw#+qhN3%>)ragXuR*f3T&=aT9xpD7mBNL}Hv34bu{4Z6Rke47yNn zPmP1kc71)|a6~5hpJ&gIvCh&|)J7d<*+@Hpn5k-&M^Vo9Dz0*MEVq03_P z|NAy_8UhPhiCF8>cFOG(Ie_&CcIRWtRV$|iV^pf%vP%d(x%3wlbjDgB@5r((%f|m1 z61xjhTEX~4jav_>+AxlYcE>!~#7PNd^rpk1$I$YSky29x6=GMLXP>XfRsVs1J}W`# zS|Pw2?|)LHVPQo`qGt2b`5w)-VNkVeKO6W)g5z~{@do5nff*mHe_l_p!`TY1vHbTc zU^*YZ*t2ps=W3L*(;yx4&uD(a&ZT%Q#YXEVtjFg1wK*ZAl%4);pqnL=O6OC7Am@gw zo>YC%L@zu!V{H0U6?p>$-N{*4wX}le3o8QS4}WAta97zH4gB$=KNmJI&_?nZUmXLT zp_UTzat<&dVc=b`a)@2Sy2q*%^sC6&~y%aHP0dZVO>6;G~$g$Z$!|% z_kX-Mj2|GfbxAr|wu;vae%%N!)k!jGn_hT&1wjGTMrTQ$dGA57kr!0y!yC>&iishcE z{nNMYT_JhZdp4I8!wZ}vB{wka!H6DAO>KJ02|7JXr2Mx#49 zymJ+k#V3Hy;iPt>)2HLlO&j|_#~4Va7-jv(&`(UPG!`Fp(H*i%jSczrvZ~&Z%oi@- z^LPkG6c&HBPZ!Mxj@oq_0 zn0I1eXMliX?No_M-qjm?6=O15X`L_C3PqSWmwv$Uk|*BeCV3KioIVXy?&}05BvVvA z<9)3&x*kfOY%I5%-2~t&VkY@F!&z=*kjd}7x>aFpRijL=*1alwQ4+hYmS#i*cGI$z z{=hC6(VaE3xLB;SAB~*q?%c$RVWcb(Z$@KB>#UUMRIq3Krj*2AN?>4e3>9HBX&Q0G z7>93wHPw-mEd@q@OvM`jhZ`#t0s;sC1cC&}Q8h>&N`pQ1_eZ-F3rTw<0Qj@Q^14G0 z4v06Hg?eWbx==ZxLhoW$n=<<6f|e{YQOC|<6o3_nev3QA0_FU3~xFV-tPoc^==%w+?eJW-~e^&%g zwV*K1RqjqEfiY@gu^Yx8{jfi#IEcR-Cu87oVMc1&DrlNojQ6R0B(M(lYm=^1cegkRQ;Ti*MS;@tzWI)IPL1qSi=kO^Kkm-m2N_}unM ze3oA@WAVIX#$OwV0yMe-3n}wKQP~QG_!Mm{Bs3>LG;Sp>^YtV#vqFxvs1^2p-s8>YF4*57Zw(*dDW$#`P=}iJyq2OiAW&d9AQ3ta zn0=}TFQ3neKOcolF?b-7Ce*N)`nKlYAR5|#V1>U5IF=dBhXI`M+XZ)M_8`#IGB0HP zHDwKz1ku=t+pxPCfC=TBjE5kYFaVIDc9EX`yYO)n%_Eiiqow1E-B-wZpX^x{7sW}9m58VY9j?~N~np47PD0NQRixZ z)B!umN^AMLn-7)PhxZqoGPlfoT(7SvuT_0HF<^drG@GmiflK`)i#Heeb@|QW_Eb3M z&w&Yy7Zo>hwi{Yd5u$-=SBYKNAA9_{&Z=2QCq^Q4(LWR7lWK)C%|rhPK#1;U?5n7YBHjP4g zA(BqR@HDv5!EfuuL90IyiLDseU(j6XO?Fme1eLEwKKY@gV&x(F8NFA$8?cyvXHD{w zU)89cEW}&{&PclDH8GNl_=)0wn44M{3=%lF@+nGt>uTk#uTBJ2tvrPr`8l?KCkMlyi6yp$=z9wb3(b*fO#@N!SjJxn=Dr@z%* z{a8U`pM+?#LbQV-s4-eFBL)d7hDe6@4FL%iF%|?A!ATKP#V}ud?wOzoG@b*Q@lFH1 n=#z2^MjqDx%-b%hYI7KstLEy9)dSyP#<&Csunx9D>tGw@vIpuH diff --git a/ruoyi-admin/src/main/resources/apiclient_cert.pem b/ruoyi-admin/src/main/resources/apiclient_cert.pem index 2881fde..f1a5cab 100644 --- a/ruoyi-admin/src/main/resources/apiclient_cert.pem +++ b/ruoyi-admin/src/main/resources/apiclient_cert.pem @@ -1,25 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIEKDCCAxCgAwIBAgIUf82w5y1qkoATNhrLd/o/DcvTcOMwDQYJKoZIhvcNAQEL +MIIEKzCCAxOgAwIBAgIUOeQZBRJeVE9sjSAlUPhbxCEuhTEwDQYJKoZIhvcNAQEL BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg -Q0EwHhcNMjUwNDE1MDg0NzI0WhcNMzAwNDE0MDg0NzI0WjCBgTETMBEGA1UEAwwK -MTcxMjQ0NzkzNjEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMS0wKwYDVQQL -DCTljJfkuqzkuIPnhrnmlofljJbkvKDlqpLmnInpmZDlhazlj7gxCzAJBgNVBAYT -AkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC -AQoCggEBALsVQ6m/EtMwVx9RoDaDz8HzoaEZdcASfWFIxAykoCn6hdW/DUfVpb+Y -l+OIWWGWh1VcFDBWwJpUQ11tzCgKxCNgdaBS2RwW/iPy+vIxtvXdtxPJitxgQRGG -md5gMq/q081zy0Zlm7nkTFdtGtD71OWg7jesBeRSBpvGBF5xgSDTlbJkGOklWoWe -2bIIzf3icGav3ALwfrloMlzrQ3aHy/5mJgHOfho5q0lNR1AABX7STNKruRGf+MbX -0cMsRIuaSBfAU2lKbbWENPBNumUtdR8j3YmF3H+VDdoOiPyVUiNsRbtJCeTTBtTi -d8N+jaaWBci1EM80IeICdhFx1kKbjy8CAwEAAaOBuTCBtjAJBgNVHRMEAjAAMAsG -A1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDovL2V2Y2Eu -aXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJDMDRC -MDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJFMTJCMjdB -OUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IBAQCdlC6D -IF0H8rS/iuExBpHSUr+mGKyIE+M7v0WTH3BkusaFRURtVQ0YpDnUouINFjCtusqb -vOz7DXO0gKrqAcx/24bJhEJITJZSZPKA6KhCOJ1WINa/MRZexUOiSPuWmi8BgXZT -J4AZGkw5yGI7cpWEowKlJuTsO4ziQEhb3rwkbvlP3lcCAcXQpOWIIdDtKzEb3Mp4 -wrCge+LrxokMyhRKtt0wXpgnrwVGcekVO/dFDI+VLVie4f1tQQtvamDPeeG4pcI2 -FWmmQk1tqFULQG1gZaYGkvl2wbkg19z1DT6rKitxhxllLihlM0Za10z1H4BgYfzA -E1sxNDrd3dGWFXLl +Q0EwHhcNMjUwNjIxMDYwODEyWhcNMzAwNjIwMDYwODEyWjCBhDETMBEGA1UEAwwK +MTcxOTEzNTE2NzEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTAwLgYDVQQL +DCflsbHkuJzor7ror7rkupHova/ku7bnp5HmioDmnInpmZDlhazlj7gxCzAJBgNV +BAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAN7jDaUdCm3Lfl49VG4Sh0OaYyI19/7DO2G2dQB/SWtpw1a9w3vK +GE0WqU7LIRi20Qh8CWsALA3aZcNJxgOnF3rDWxoRd0CFWOcsRVNE7qnM8kq0n404 +s450lZCEeKCBcGr2VVfphX4LiuC95yZ/3DSgr/OWDiSYplljDDWRLs9tj8Cw6my3 +VFuXZGkZ8WxT6aVgyrL08Cvrcc1eBXW3UXwqw8l+HkVD6Wx68OlyGPkrp57ifjf9 +SLKT3K1JA2khQfReAV2bSAr9v66RmWbNoaUhCRFN2N/N65RSpf4UY0qUvuXScNIY +z3CA6G0c/sfySZXCGbqc5iIPlo9dTf46sUUCAwEAAaOBuTCBtjAJBgNVHRMEAjAA +MAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDovL2V2 +Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJD +MDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJFMTJC +MjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IBAQBn +rN7Ofk8uywG7p4lQMESKz0sD8qn9zCUnawUfUTd5NlEZKKj56cVuus+s3y8oZHgk +POonCnA5rPomDWyUHZcgELc9bg9o7uwQPBghoXXVsl9D/ilCnj4FAgklZB+l7JwA +7nR7OZtr8kYl5vaBLkToJbrLswZ0r5O1xP8aeTOJQyIluTaV6BLSWRGrNEgWvUiG +TblKPUY1meCLbVkp+fDMBv7OIat0aqiyuuXPOfRurRiYawYhEj+n16FjlMoytDE8 +YTTNIuLfOBr1YCuWZGxl9jIxL3/geOkVB3B/wa/AFIUWkyUK+pqWqSf2MizguZNw +wY7F84k6q3BD6evtqVSX -----END CERTIFICATE----- diff --git a/ruoyi-admin/src/main/resources/apiclient_key.pem b/ruoyi-admin/src/main/resources/apiclient_key.pem index cb3c4ad..022a879 100644 --- a/ruoyi-admin/src/main/resources/apiclient_key.pem +++ b/ruoyi-admin/src/main/resources/apiclient_key.pem @@ -1,28 +1,28 @@ -----BEGIN PRIVATE KEY----- -MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC7FUOpvxLTMFcf -UaA2g8/B86GhGXXAEn1hSMQMpKAp+oXVvw1H1aW/mJfjiFlhlodVXBQwVsCaVENd -bcwoCsQjYHWgUtkcFv4j8vryMbb13bcTyYrcYEERhpneYDKv6tPNc8tGZZu55ExX -bRrQ+9TloO43rAXkUgabxgRecYEg05WyZBjpJVqFntmyCM394nBmr9wC8H65aDJc -60N2h8v+ZiYBzn4aOatJTUdQAAV+0kzSq7kRn/jG19HDLESLmkgXwFNpSm21hDTw -TbplLXUfI92Jhdx/lQ3aDoj8lVIjbEW7SQnk0wbU4nfDfo2mlgXItRDPNCHiAnYR -cdZCm48vAgMBAAECggEBAIo57eJvYNNVNinXv45H2ast/U/wZcXiY20LvH6y6/vY -NCZ3oLJgsrRbZG4jAhdOhvOUsv38OxZMB/Hx/BPh0IVq8b3hOLS+cEvTbYKhJNOI -W4ptMQIexDTUxL8/SHQeBxwX4CtFS8gPXDCEVnnud6CqRRgxK7FEwck6h2PYbVX4 -e4575fqrPEQHA4raKQB/boUBLK2KxyXbomT1vU2Xehzlu/1Lcc3PMuKcXtTWNg0K -tvUcVdfI36BVde79TIiauultEIai0ZXVj1NUG/9CA2iHyzSGmVtTyWqQQQDEz5Ph -RdRhYCvPARoTEfw7AX0ShCM6trLkZjcTIM68gkuJdWECgYEA3CagoLXpUM08cySW -GzswCP/p06Pe/4NBGLronKj6+k2x32zFVEfZnv++CfdPAXd9d8iXqElRvLFceAsu -NbcxsbtPYKG5eBsc2qS7f5hVSjubiycJATqfR6JlFv+hHYG42snY10qfdzsJpJ8T -SKh7SJeZ54o9wlKqbkaV3ucUpIcCgYEA2Ywlp46INLzsn1LOzn3sV6pcwII33YEl -3JZz3OQWzrpGMuC/HCH9aazh3ZLyc6NXpRFAR5329mLgKKTOIT0yp0c4S3EQ8/M/ -nwUEDye/GrVJjsT7mqoXbSylVZpVfg/4M4SAZ3xbL7aANMtMcCS67J3ByulmHEAh -DvDiyplKEhkCgYEAjQZ5kzm00jwG40OmnJ8XsEwvf5HUAh4Uj0D8TY6556nprdRB -vDGiqIXvOPchtzDSQO9Qp08Aez2qnIOdAG/v94ij2qT+6H+FxlIMgjoVOM5iX4uL -6yugaQUQeOEcVoiI4C65J4D4EirRjJESi1LSVrg2sOoPkfHel3HEA9xHjvUCgYEA -nCCinYADbKXxw94wIa3pwni3nElYQpX/UDKB8JOZcr/oxXbacRxLvF2gs95UNn2R -1xtsYHmT1fvcGA8/CEfdZIQOeMYqfomirUNySFYkJszYf6gLUlKkAWw7NBZRKOnZ -HVAIvzxWTQXTORB2ST1zEYGepTugVsIHd6uVeAVPTXECgYEA2sgzcVHf38EFf16V -x8OfYalGBazfnTXxZUMji4DBaiaA0luH+cmEm21bEVnJkINs8pySrSP8IiGr01r3 -ieMkVZVdA8PulxPTKTGnnIuLEsQzdulD01A2i0f3mNxjyLUltBUX56SO7Sc8/Zoq -lENhDpQlP41ahoLE8X9Ti0uxpsw= +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDe4w2lHQpty35e +PVRuEodDmmMiNff+wzthtnUAf0lracNWvcN7yhhNFqlOyyEYttEIfAlrACwN2mXD +ScYDpxd6w1saEXdAhVjnLEVTRO6pzPJKtJ+NOLOOdJWQhHiggXBq9lVX6YV+C4rg +vecmf9w0oK/zlg4kmKZZYww1kS7PbY/AsOpst1Rbl2RpGfFsU+mlYMqy9PAr63HN +XgV1t1F8KsPJfh5FQ+lsevDpchj5K6ee4n43/Uiyk9ytSQNpIUH0XgFdm0gK/b+u +kZlmzaGlIQkRTdjfzeuUUqX+FGNKlL7l0nDSGM9wgOhtHP7H8kmVwhm6nOYiD5aP +XU3+OrFFAgMBAAECggEAc4Qd2Eta0li7H8CNd5bmv+TOKDbsVv98UUItFZrixGbG +NLiZDhlJyvpJuWqRtqtZXxpaDzjBnFRqlXIwzEfXZWrGVpZixe/WiclqDKQXRa3Q +jWNbpeeTN+u4cHQXyKgNSYJt7Og8pXz590y09kEiMaxuRMKqhdEPthgdhc2/AwV/ +9obD/wbEW3NRbyPrSs3nf3d3GsegYvZM95W2rXme3rmkqqlkb+cA6Z1s+oJ5o5t5 +PcCxHYexVfR6mYmwcmCEhU5ALfHV1VXcOxiE1yehlgj5uwfBN/nj0+0/4VgxYM3E +nBrdoseOcdtUTPdofa6IsPxotdz2Nvg6qVTTm7a4qQKBgQDv3PDAOfgmFvT+kWP1 +V3Kph9ouThCIcoq60tGobId2qUwlByiz16vgMtZniBvJMQeyQlW8gdRSv+XUOwNs +QQnYE5o4wc9UTSz/zf+ZXRiNFZVlJ415NjJtEOx48Ea9RdBf1GSGw6eXHjRyh9cZ +sp1UEm6IqcP6ZMDmlBSJrFtvjwKBgQDt4b2F4RXzY0g0OyDLicTZVMeLgm55KQKI +mOEfOVSpoo3Mamg8GKRBPDAKhM9mLlVGGmf0ayGRaGDR/9QhHMddSujLPrr3K2PQ +UM4OFtklhXjMt9ShkVCjgYlzSza8/7GQRS6XPjuMNk7i4K18nO3OOA3eBBjosfA0 +/zjupKun6wKBgQCzCrFuWxb+n446Yx5A6Qh+wRg8DitLHmytbWXwGSq4iUB8Ny7L +p0X1cR0XZMKQ2BdNmTRUJHjvV6xfUbmJWbbWYjNxAEIZRA49129d8966mQzN18tD +WhAj10kcMQYsi+sxTOHIskzrgTFW+Ey4Mto7AhMd0dKmmgRfWNNHvK73wwKBgQCp +NQ6ToYT0qGVeycRNI4VDNjvub2vXgSVNNrnDdQtU0szcX8AfJ0QHJyHhCZFhVInR +oMzbHi01ejKMjdY9a3QgVz15/PgPAu0v65p2iSgSuXsw235DItNiSq0TtqeMDrEm +Nx+p81l2Jdc9KKYe4p2BN3wdtXpmYtPDTtwXXEjB2wKBgQDaduFtoJ1JFC0JJCOc +NDrRGWnQWjTQr1m0OP7JuqukaycYarvjRcIR+DQwLJgHjstWCk/KMFmrE1FV8TEa +JN++vl+HEUq8nOcx2255rW8rCqgpiZSXtObxiVTOEmoBg7qeLMRvztZLtJFKYwkd +E+Cy8kKPOqamaKvc6pAHeYGPlA== -----END PRIVATE KEY----- diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml index 1b27283..175e6c1 100644 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ b/ruoyi-admin/src/main/resources/application-druid.yml @@ -14,9 +14,9 @@ spring: slave: # 从数据源开关/默认关闭 enabled: false - url: - username: - password: + url: + username: + password: # 初始连接数 initialSize: 5 # 最小连接池数量 @@ -40,7 +40,7 @@ spring: testWhileIdle: true testOnBorrow: false testOnReturn: false - webStatFilter: + webStatFilter: enabled: true statViewServlet: enabled: true @@ -59,4 +59,4 @@ spring: merge-sql: true wall: config: - multi-statement-allow: true \ No newline at end of file + multi-statement-allow: true diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 5c411b6..a50860f 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -16,7 +16,7 @@ ruoyi: # 开发环境配置 server: # 服务器的HTTP端口,默认为8080 - port: 8099 + port: 8088 servlet: # 应用的访问路径 context-path: / @@ -153,8 +153,10 @@ wx-app: wxpay: #微信公众号appid appId: wx7d10b0fa4886a583 + sp_appid: wx28b337a18b54e5ef + sp_mchid: 1719135167 #商户号 - mchId: 1712447936 + mchId: 1719491143 #商户密匙v2 mchKey: ab94673dd0cca78abd0a453d0aac9f98 # APIv3密钥 @@ -164,9 +166,9 @@ wxpay: # 微信支付V3-url前缀 baseUrl: https://api.mch.weixin.qq.com/v3 # 支付通知回调, pjm6m9.natappfree.cc 为内网穿透地址 - notifyUrl: https://3w823u8516.vicp.fun/noticeApi/payApi/payNotify + notifyUrl: https://www.ddtg.site/noticeApi/payApi/payNotify # 转账通知回调, pjm6m9.natappfree.cc 为内网穿透地址 - zhuanNotifyUrl: https://3w823u8516.vicp.fun/noticeApi/payApi/zhuanNotify + zhuanNotifyUrl: https://www.ddtg.site/noticeApi/payApi/zhuanNotify # 退款通知回调, pjm6m9.natappfree.cc 为内网穿透地址 refundNotifyUrl: https://www.ddtg.site/notice/notify/refundNotify # 密钥路径,resources根目录下 @@ -174,8 +176,8 @@ wxpay: privateCertPath: D:/任务平台项目/dl_admin/ruoyi-admin/src/main/resources/apiclient_cert.pem publicKeyPath: D:/任务平台项目/dl_admin/ruoyi-admin/src/main/resources/pub_key.pem #商户证书序列号 - serialNo: 7FCDB0E72D6A928013361ACB77FA3F0DCBD370E3 - publicKeyId: PUB_KEY_ID_0117124479362025041500321584003200 + serialNo: 39E41905125E544F6C8D202550F85BC4212E8531 + publicKeyId: PUB_KEY_ID_0117191351672025070400381681000800 wxAppSecret: 1515e5d055e8dabf5b30faad14ccbc8d # 普通用户权益值 diff --git a/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml b/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml index a8fb92d..f9e8668 100644 --- a/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml @@ -9,25 +9,37 @@ select main.id, main.user_id, main.title, main.platform_code, main.province, main.city, main.fee_down, main.fee_up, main.is_self_price, main.gift_detail, main.gift_price, main.end_date, main.brand, main.is_show_brand, main.need_num, main.fans_down, main.fans_up, main.is_eligible, main.pic, main.collect, main.detail, main.images, main.blogger_types, main.is_show_tel, main.wechat, main.tel, main.group_image, main.is_use_coupon, main.approval_status, main.approval_user_id, main.approval_time, - main.approval_remark, main.creator, main.create_time, main.updater, main.update_time, main.del_flag,main.is_platform_free,main.is_urgent, - uTable.nick_name as userNickName,auditTable.nick_name as approvalUserName,ifnull(noticeView.view_num,0) as viewNum, - bTable.title as platformName + main.approval_remark, main.creator, main.create_time, main.updater, main.update_time, main.del_flag,main.is_platform_free,main.is_urgent,main.similarity_ids, + bTable.title as platformName,main.third_url from dl_busi_notice main - left join sys_user uTable on main.user_id = uTable.user_id - left join sys_user auditTable on main.approval_user_id = auditTable.user_id left join dl_base_category bTable on main.platform_code = bTable.code - left join dl_busi_notice_view noticeView on noticeView.id = main.id + + left join sys_user uTable on uTable.user_id = main.user_id + - main.del_flag = '0' and main.approval_status != 8 + main.del_flag = '0' + and main.id = #{entity.id} and uTable.nick_name like concat('%', #{entity.userNickName}, '%') and main.user_id = #{entity.userId} and main.province = #{entity.province} and main.city = #{entity.city} + and (main.third_url is not null and main.third_url != '') + and (main.third_url is null or main.third_url = '') + and (main.third_url like concat('%', #{entity.params.thirdUrl}, '%')) and main.title like concat('%', #{entity.title}, '%') and main.platform_code = #{entity.platformCode} and main.is_urgent = #{entity.isUrgent} and main.is_platform_free = #{entity.isPlatformFree} - + + + + and main.approval_status !='2' and main.end_date >= CURDATE() + + + and (main.approval_status ='2' or main.end_date < CURDATE()) + + + and main.fee_down = ]]> #{entity.params.beginFeeDown} @@ -180,13 +192,13 @@ order by dbns.create_time desc SELECT dbn.*, - dbnv.view_num AS viewNum, + -- dbnv.view_num AS viewNum, su.avatar, su.nick_name AS userNickName, count(sign.id) as reportNum FROM dl_busi_notice dbn - LEFT JOIN dl_busi_notice_view dbnv ON dbn.id = dbnv.id + -- LEFT JOIN dl_busi_notice_view dbnv ON dbn.id = dbnv.id LEFT JOIN sys_user su ON dbn.user_id = su.user_id left join dl_busi_notice_sign sign on sign.notice_id = dbn.id and sign.del_flag = 0 WHERE @@ -299,13 +311,13 @@ order by dbns.create_time desc SELECT dbn.*, - dbnv.view_num AS viewNum, + -- dbnv.view_num AS viewNum, su.avatar, su.nick_name AS userNickName, count(sign.id) as reportNum, @@ -336,7 +348,7 @@ order by dbns.create_time desc mySign.id as signId FROM dl_busi_notice dbn - LEFT JOIN dl_busi_notice_view dbnv ON dbn.id = dbnv.id + -- LEFT JOIN dl_busi_notice_view dbnv ON dbn.id = dbnv.id LEFT JOIN sys_user su ON dbn.user_id = su.user_id LEFT join dl_busi_notice_sign sign on sign.notice_id = dbn.id and sign.del_flag = 0 inner join dl_busi_notice_sign mySign on dbn.id = mySign.notice_id and dbn.del_flag = 0 and mySign.user_id = #{entity.userId} @@ -369,7 +381,7 @@ order by dbns.create_time desc + select main.*,su.nick_name tcUserName + from busi_tc_info main + left join sys_user su on main.user_id = su.user_id + + and user_id = #{entity.userId} + and su.nick_name = #{entity.tcUserName} + and main.dept_id = #{entity.deptId} + and info = #{entity.info} + and money between #{entity.params.beginMoney} and #{entity.params.endMoney} + and main.create_time between #{entity.params.beginCreateTime} and #{entity.params.endCreateTime} + + + order by main.create_time desc + + diff --git a/ruoyi-admin/src/main/resources/mapper/member/MemberApplyMapper.xml b/ruoyi-admin/src/main/resources/mapper/member/MemberApplyMapper.xml index 60ae482..f6dc7eb 100644 --- a/ruoyi-admin/src/main/resources/mapper/member/MemberApplyMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/member/MemberApplyMapper.xml @@ -22,18 +22,21 @@ + select id, user_id, nickname, identity_type, content, remark, images, approval_status, approval_user_id, approval_time, approval_remark,approval_user_name, creator, create_time, updater, update_time, del_flag from dl_member_apply - \ No newline at end of file + diff --git a/ruoyi-admin/src/main/resources/mapper/member/MemberBusiCardMapper.xml b/ruoyi-admin/src/main/resources/mapper/member/MemberBusiCardMapper.xml index a13e86d..24c14af 100644 --- a/ruoyi-admin/src/main/resources/mapper/member/MemberBusiCardMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/member/MemberBusiCardMapper.xml @@ -39,6 +39,7 @@ del_flag = 0 and nickname like concat('%', #{entity.nickname}, '%') + and tel like concat('%', #{entity.tel}, '%') and platform_name like concat('%', #{entity.platformName}, '%') and account_name like concat('%', #{entity.accountName}, '%') and approval_status != 0 @@ -60,4 +61,4 @@ WHERE main.del_flag = 0 and main.id = #{id} - \ No newline at end of file + diff --git a/ruoyi-admin/src/main/resources/mapper/member/MemberOrderMapper.xml b/ruoyi-admin/src/main/resources/mapper/member/MemberOrderMapper.xml index 81b76cb..4d05cac 100644 --- a/ruoyi-admin/src/main/resources/mapper/member/MemberOrderMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/member/MemberOrderMapper.xml @@ -31,6 +31,7 @@ + @@ -42,7 +43,7 @@ - \ No newline at end of file + + diff --git a/ruoyi-admin/src/main/resources/mapper/member/MemberUserMapper.xml b/ruoyi-admin/src/main/resources/mapper/member/MemberUserMapper.xml index 4df896a..b1672c5 100644 --- a/ruoyi-admin/src/main/resources/mapper/member/MemberUserMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/member/MemberUserMapper.xml @@ -77,8 +77,12 @@ main.del_flag = 0 and main.user_type = #{entity.userType} + + AND main.identity_type is not null - and main.identity_type = + + + and main.identity_type = #{entity.identityType} and su.nick_name like concat('%',#{entity.nickName},'%') @@ -119,11 +123,10 @@ su.avatar AS avatar, su.user_name AS userName, su.phonenumber AS phonenumber, - GROUP_CONCAT(mc.card_name SEPARATOR ', ') AS memberCardName from dl_member_user main LEFT JOIN sys_user su ON main.user_id = su.user_id AND su.del_flag = 0 - left join (select dict_value,dict_label from sys_dict_data where dict_type = 'dl_identity_type') sdd on main.identity_type = sdd.dict_value + left join (select dict_value,dict_label from sys_dict_data where dict_type = 'dl_identity_type') sdd on main.identity_type = sdd.dict_value LEFT JOIN dl_member_card mc ON main.user_id = mc.user_id AND mc.start_date <= CURDATE() @@ -155,16 +158,28 @@ su.phonenumber AS phonenumber, su_temp.nick_name AS inviteName, GROUP_CONCAT(mc.card_name SEPARATOR ', ') AS memberCardName, + sum(dmo2.goods_price) AS monthMoney, + sum(dmo.goods_price) AS allMoney, main.create_time from dl_member_user main LEFT JOIN sys_user su ON main.user_id = su.user_id AND su.del_flag = 0 LEFT JOIN sys_user su_temp ON su.invite_id = su_temp.user_id AND su_temp.del_flag = 0 - LEFT JOIN dl_member_card mc - ON main.user_id = mc.user_id + LEFT JOIN ( + SELECT mc_inner.* + FROM dl_member_card mc_inner + INNER JOIN ( + SELECT user_id, MAX(create_time) AS latest_time + FROM dl_member_card + WHERE del_flag = 0 AND user_type = #{entity.userType} + GROUP BY user_id + ) latest ON mc_inner.user_id = latest.user_id AND mc_inner.create_time = latest.latest_time + ) mc ON main.user_id = mc.user_id AND mc.start_date <= CURDATE() AND mc.end_date >= CURDATE() - AND mc.del_flag = 0 - AND mc.user_type = #{entity.userType} + left join dl_member_order dmo on dmo.user_id = su.user_id and dmo.user_type = '02' and dmo.is_pay = 1 + left join dl_member_order dmo2 on dmo2.user_id = su.user_id and dmo2.user_type = '02' and dmo2.is_pay = 1 + and dmo.create_time =]]> DATE_FORMAT(CURDATE(), '%Y-%m-01') + and dmo.create_time LAST_DAY(CURDATE()) main.del_flag = 0 @@ -174,12 +189,22 @@ #{entity.identityType} and su.nick_name like concat('%',#{entity.nickName},'%') + and su_temp.nick_name like concat('%',#{entity.xsName},'%') and su.invite_id = #{entity.userId} + and su_temp.dept_id = #{entity.deptId} and main.tel like CONCAT('%',#{entity.tel},'%') and main.ttotal_num >= #{entity.params.minnum} and main.ttotal_num <= #{entity.params.maxnum} + and mc.card_name = #{entity.params.isVip} + GROUP BY main.user_id + + having sum(dmo.goods_price)>0 + + + having sum(dmo.goods_price) is null + ORDER BY ${entity.params.orderBy} diff --git a/ruoyi-admin/src/main/resources/pub_key.pem b/ruoyi-admin/src/main/resources/pub_key.pem index e44d2a4..64af631 100644 --- a/ruoyi-admin/src/main/resources/pub_key.pem +++ b/ruoyi-admin/src/main/resources/pub_key.pem @@ -1,9 +1,9 @@ -----BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnyLw8B8x3B+jWpCxiSeU -L+7NjFjx34Q44zlyRq6RXnz9xMFJXZq7HLv4YA9GcKyniF6aq7TvelKV8NUE8Ogd -fdOEZr2Gc/W15nz1RAo5Fu2K9q9IsZlQ4pM+HT9oqu4qVCrsPZEPbr11szQZjqtf -WdpZhRmiFzQRui0V0xzOQcd0GhicVhN5uMOekFqTALCq9JcWUl6Ti0fF4I4wH4kZ -iZVEkPTcXQACEUWRCH7hbRvluF1dEr87I/hdp98C1lo1UzQWHimVmFD8t0wHgnyO -qgSog353Hu59zkPB6qdraNNAvvOScOD8S/U57Nc4NXPXHOua1ZekwbE7lw/AvOcJ -zQIDAQAB +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA08i56HxnYH8rqaELK/JA +dAUK1HFz+PKdrNtF3jxR3mYeMjjZ32TOjDRpG0eG3ZE2fVzdKqdfNP3ti1cSt1p2 +2QCG9Ch91/MuQvCOzaBOh9o3+++H3zGUVy9++0MwjbYwlL0SdYydkgcrZL7FWktC +m1Jf+nDOFg8UStQK3BBK6LkzN123MeTTNrcdYZlSfG11rbdmU3MaBVsF52tH4rz0 +1V+DRhIT3c3p9eH5qvaOYe/1Al1x9JO9NuqPtiotU0bH1mR6/pewXvvIYizkrAeB +A/HTmv2y5nH9gzGUUBn+jZ+hODQID98T5H61wfPY/3hGCjYPPM1JAPU5Pu+peBCc +8wIDAQAB -----END PUBLIC KEY----- diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java index c49eaf4..1135580 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java @@ -22,6 +22,7 @@ public abstract class RepeatSubmitInterceptor implements HandlerInterceptor @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + if (handler instanceof HandlerMethod) { HandlerMethod handlerMethod = (HandlerMethod) handler; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java index 3eb2495..2e4eaf1 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java @@ -5,6 +5,9 @@ import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; @@ -18,7 +21,7 @@ import com.ruoyi.framework.web.service.TokenService; /** * token过滤器 验证token有效性 - * + * * @author ruoyi */ @Component @@ -26,14 +29,21 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { @Autowired private TokenService tokenService; + @Autowired + private ISysUserService sysUserService; @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException { LoginUser loginUser = tokenService.getLoginUser(request); + if (StringUtils.isNotNull(loginUser) && StringUtils.isNull(SecurityUtils.getAuthentication())) { + SysUser sysUser = sysUserService.selectUserById(loginUser.getUserId()); + if (!sysUser.getStatus().equals("0")){ + return; + } tokenService.verifyToken(loginUser); UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities()); authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java index 1880167..1e27dcd 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java @@ -131,5 +131,6 @@ public interface SysUserMapper * @return */ public SysUser selectWxUserByOpenIdOrPhone(@Param("openId") String openId,@Param("phone") String phone,@Param("wxOpenId") String wxOpenId,@Param("unionId") String unionId); + List getUserByRole(@Param("role") String role,@Param("deptId") Long deptId); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java index 10bc2ab..8da29a8 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java @@ -5,14 +5,14 @@ import com.ruoyi.common.core.domain.entity.SysUser; /** * 用户 业务层 - * + * * @author ruoyi */ public interface ISysUserService { /** * 根据条件分页查询用户列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -20,7 +20,7 @@ public interface ISysUserService /** * 根据条件分页查询已分配用户角色列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -28,7 +28,7 @@ public interface ISysUserService /** * 根据条件分页查询未分配用户角色列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -36,7 +36,7 @@ public interface ISysUserService /** * 通过用户名查询用户 - * + * * @param userName 用户名 * @return 用户对象信息 */ @@ -44,7 +44,7 @@ public interface ISysUserService /** * 通过用户ID查询用户 - * + * * @param userId 用户ID * @return 用户对象信息 */ @@ -52,7 +52,7 @@ public interface ISysUserService /** * 根据用户ID查询用户所属角色组 - * + * * @param userName 用户名 * @return 结果 */ @@ -60,7 +60,7 @@ public interface ISysUserService /** * 根据用户ID查询用户所属岗位组 - * + * * @param userName 用户名 * @return 结果 */ @@ -68,7 +68,7 @@ public interface ISysUserService /** * 校验用户名称是否唯一 - * + * * @param user 用户信息 * @return 结果 */ @@ -92,21 +92,21 @@ public interface ISysUserService /** * 校验用户是否允许操作 - * + * * @param user 用户信息 */ public void checkUserAllowed(SysUser user); /** * 校验用户是否有数据权限 - * + * * @param userId 用户id */ public void checkUserDataScope(Long userId); /** * 新增用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -114,7 +114,7 @@ public interface ISysUserService /** * 注册用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -122,7 +122,7 @@ public interface ISysUserService /** * 修改用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -130,7 +130,7 @@ public interface ISysUserService /** * 用户授权角色 - * + * * @param userId 用户ID * @param roleIds 角色组 */ @@ -138,7 +138,7 @@ public interface ISysUserService /** * 修改用户状态 - * + * * @param user 用户信息 * @return 结果 */ @@ -146,7 +146,7 @@ public interface ISysUserService /** * 修改用户基本信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -154,7 +154,7 @@ public interface ISysUserService /** * 修改用户头像 - * + * * @param userName 用户名 * @param avatar 头像地址 * @return 结果 @@ -163,7 +163,7 @@ public interface ISysUserService /** * 重置用户密码 - * + * * @param user 用户信息 * @return 结果 */ @@ -171,7 +171,7 @@ public interface ISysUserService /** * 重置用户密码 - * + * * @param userName 用户名 * @param password 密码 * @return 结果 @@ -180,7 +180,7 @@ public interface ISysUserService /** * 通过用户ID删除用户 - * + * * @param userId 用户ID * @return 结果 */ @@ -188,7 +188,7 @@ public interface ISysUserService /** * 批量删除用户信息 - * + * * @param userIds 需要删除的用户ID * @return 结果 */ @@ -196,11 +196,12 @@ public interface ISysUserService /** * 导入用户数据 - * + * * @param userList 用户数据列表 * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 * @param operName 操作用户 * @return 结果 */ public String importUser(List userList, Boolean isUpdateSupport, String operName); + List getUserByRole(String role, Long deptId); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index 0aa82fb..2e3eb1a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -33,7 +33,7 @@ import com.ruoyi.system.service.ISysUserService; /** * 用户 业务层处理 - * + * * @author ruoyi */ @Service @@ -67,7 +67,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 根据条件分页查询用户列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -80,7 +80,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 根据条件分页查询已分配用户角色列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -93,7 +93,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 根据条件分页查询未分配用户角色列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -106,7 +106,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 通过用户名查询用户 - * + * * @param userName 用户名 * @return 用户对象信息 */ @@ -118,7 +118,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 通过用户ID查询用户 - * + * * @param userId 用户ID * @return 用户对象信息 */ @@ -130,7 +130,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 查询用户所属角色组 - * + * * @param userName 用户名 * @return 结果 */ @@ -147,7 +147,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 查询用户所属岗位组 - * + * * @param userName 用户名 * @return 结果 */ @@ -164,7 +164,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 校验用户名称是否唯一 - * + * * @param user 用户信息 * @return 结果 */ @@ -218,7 +218,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 校验用户是否允许操作 - * + * * @param user 用户信息 */ @Override @@ -232,7 +232,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 校验用户是否有数据权限 - * + * * @param userId 用户id */ @Override @@ -252,7 +252,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 新增保存用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -271,7 +271,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 注册用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -283,7 +283,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 修改保存用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -305,7 +305,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 用户授权角色 - * + * * @param userId 用户ID * @param roleIds 角色组 */ @@ -319,7 +319,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 修改用户状态 - * + * * @param user 用户信息 * @return 结果 */ @@ -331,7 +331,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 修改用户基本信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -343,7 +343,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 修改用户头像 - * + * * @param userName 用户名 * @param avatar 头像地址 * @return 结果 @@ -356,7 +356,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 重置用户密码 - * + * * @param user 用户信息 * @return 结果 */ @@ -368,7 +368,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 重置用户密码 - * + * * @param userName 用户名 * @param password 密码 * @return 结果 @@ -381,7 +381,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 新增用户角色信息 - * + * * @param user 用户对象 */ public void insertUserRole(SysUser user) @@ -391,7 +391,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 新增用户岗位信息 - * + * * @param user 用户对象 */ public void insertUserPost(SysUser user) @@ -414,7 +414,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 新增用户角色信息 - * + * * @param userId 用户ID * @param roleIds 角色组 */ @@ -437,7 +437,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 通过用户ID删除用户 - * + * * @param userId 用户ID * @return 结果 */ @@ -454,7 +454,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 批量删除用户信息 - * + * * @param userIds 需要删除的用户ID * @return 结果 */ @@ -476,7 +476,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 导入用户数据 - * + * * @param userList 用户数据列表 * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 * @param operName 操作用户 @@ -547,4 +547,10 @@ public class SysUserServiceImpl implements ISysUserService } return successMsg.toString(); } + + @Override + public List getUserByRole(String role, Long deptId) { + + return userMapper.getUserByRole(role, deptId); + } } diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index 3fa6900..9b4bb21 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -249,4 +249,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and u.user_name = #{phone} +