crm功能开发
This commit is contained in:
parent
4418f3cf8e
commit
9409bbd6d2
@ -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<MemberOrder> 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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -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 = "<a href=\""+tgzHtml+"\">1、通告主卡</a>";
|
||||
String bzStr = "<a href=\""+bzHtml+"\">1、博主VIP</a>";
|
||||
String jzqStr = "<a href=\""+jzqHtml+"\">2、急招券</a>";
|
||||
contentMessage.append(contentStr).append("\n")
|
||||
// String bzStr = "<a href=\""+bzHtml+"\">1、博主VIP</a>";
|
||||
// String jzqStr = "<a href=\""+jzqHtml+"\">2、急招券</a>";
|
||||
|
||||
// .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")) {
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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<BusiTcInfo> page = new Page<>(pageNum, pageSize);
|
||||
IPage<BusiTcInfo> 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<BusiTcInfo> list = busiTcInfoService.list();
|
||||
ExcelUtil<BusiTcInfo> util = new ExcelUtil<BusiTcInfo>(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<String> list = new ArrayList<>(Arrays.asList(ids));
|
||||
return toAjax(busiTcInfoService.removeByIds(list));
|
||||
}
|
||||
}
|
||||
@ -88,7 +88,7 @@ public class BusiNoticeSign extends DlBaseEntity
|
||||
/**
|
||||
* 报价
|
||||
*/
|
||||
private BigDecimal price;
|
||||
private String price;
|
||||
@TableField(exist = false)
|
||||
private String[] choosed={};
|
||||
@TableField(exist = false)
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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<BusiTcInfo>
|
||||
{
|
||||
IPage<BusiTcInfo> queryListPage(@Param("entity") BusiTcInfo entity, Page<BusiTcInfo> page);
|
||||
}
|
||||
@ -12,6 +12,7 @@ import java.util.Date;
|
||||
@Data
|
||||
public class BusiNoticeQuery {
|
||||
private String id;
|
||||
private String thirdUrl;
|
||||
/**发布者名称**/
|
||||
private String userNickName;
|
||||
/** 标题 */
|
||||
|
||||
@ -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<BusiTcInfo>
|
||||
{
|
||||
IPage<BusiTcInfo> queryListPage(BusiTcInfo pageReqVO, Page<BusiTcInfo> page);
|
||||
}
|
||||
@ -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<BusiNoticeMapper,BusiNoti
|
||||
private BusiNoticeMapper busiNoticeMapper;
|
||||
@Autowired
|
||||
private BusiNoticeSignMapper busiNoticeSignMapper;
|
||||
@Autowired
|
||||
private NoticeUtils noticeUtils;
|
||||
|
||||
@Autowired
|
||||
private IBusiUserLoveService userLoveService;
|
||||
@Autowired
|
||||
@ -100,12 +94,24 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
|
||||
@Autowired
|
||||
private WxAppConfig wxAppConfig;
|
||||
|
||||
@Autowired
|
||||
private ThreadPoolTaskExecutor executor;
|
||||
|
||||
@Override
|
||||
public IPage<BusiNoticeVo> queryListPage(BusiNoticeQuery query, Page<BusiNotice> page) {
|
||||
return busiNoticeMapper.queryListPage(query, page);
|
||||
IPage<BusiNoticeVo> 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<BusiNoticeSign> 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<BusiNoticeMapper,BusiNoti
|
||||
result.put("code",100);
|
||||
result.put("msg","草稿数据暂存成功");
|
||||
}else {
|
||||
//无问题数据直接审核通过
|
||||
data.setApprovalStatus("1");
|
||||
data.setApprovalUserId(null);
|
||||
data.setApprovalTime(new Date());
|
||||
if (StringUtils.isNotEmpty(data.getThirdUrl())){
|
||||
//如果以问号或eid=结尾驳回
|
||||
if (data.getThirdUrl().endsWith("eid=") || data.getThirdUrl().endsWith("?")){
|
||||
data.setApprovalStatus("8");
|
||||
result.put("code",500);
|
||||
result.put("msg","第三方链接格式非法!");
|
||||
}else{
|
||||
//判断 内容重复度 是否大于70%
|
||||
//先获取 当前系统中截止日期之前的
|
||||
LambdaQueryWrapper<BusiNotice> queryWrapper =new LambdaQueryWrapper<>();
|
||||
queryWrapper.gt(BusiNotice::getEndDate, DateUtil.format(new Date(),"yyyy-MM-dd")).eq(BusiNotice::getApprovalStatus,1);
|
||||
List<BusiNotice> 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<BusiNoticeMapper,BusiNoti
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (StringUtils.isNotEmpty(data.getSimilarityIds())){
|
||||
//删除结尾的最后一个逗号
|
||||
data.setSimilarityIds(data.getSimilarityIds().substring(0, data.getSimilarityIds().length() - 1));
|
||||
@ -199,6 +215,7 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
|
||||
memberPoints.setUserId(SecurityUtils.getUserId());
|
||||
memberPoints.setType("1");
|
||||
memberPoints.setFromCode("fbgg");
|
||||
memberPoints.setFormNotice(data.getId());
|
||||
memberPointsService.savePoints(memberPoints);
|
||||
}
|
||||
//若是急招扣除对应急招券
|
||||
@ -284,6 +301,7 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
|
||||
memberPoints.setUserId(SecurityUtils.getUserId());
|
||||
memberPoints.setType("1");
|
||||
memberPoints.setFromCode("fbgg");
|
||||
memberPoints.setFormNotice(data.getId());
|
||||
memberPointsService.savePoints(memberPoints);
|
||||
}
|
||||
//若是急招扣除对应急招券
|
||||
@ -343,6 +361,28 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
|
||||
for (String id : ids) {
|
||||
busiNoticeFormService.remove(new LambdaQueryWrapper<BusiNoticeForm>().eq(BusiNoticeForm::getNoticeId,id));
|
||||
this.removeById(id);
|
||||
//删除对应的积分
|
||||
//先确定之前是否存在扣除记录
|
||||
LambdaQueryWrapper<MemberPoints> count =new LambdaQueryWrapper<>();
|
||||
count.eq(MemberPoints::getFormNotice,id).eq(MemberPoints::getType,"2");
|
||||
if (memberPointsService.count(count)>0){
|
||||
return;
|
||||
}
|
||||
LambdaQueryWrapper<MemberPoints> queryWrapper =new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(MemberPoints::getFormNotice,id).eq(MemberPoints::getType,"1");
|
||||
List<MemberPoints> 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<BusiNoticeMapper,BusiNoti
|
||||
memberPoints.setUserId(data.getUserId());
|
||||
memberPoints.setType("1");
|
||||
memberPoints.setFromCode("fbgg");
|
||||
memberPoints.setFormNotice(data.getId());
|
||||
memberPointsService.savePoints(memberPoints);
|
||||
}
|
||||
}else {
|
||||
//如果是关闭 关闭状态
|
||||
data.setApprovalStatus("2");
|
||||
//关闭需要扣除积分
|
||||
//删除对应的积分
|
||||
//先确定之前是否存在扣除记录
|
||||
LambdaQueryWrapper<MemberPoints> count =new LambdaQueryWrapper<>();
|
||||
count.eq(MemberPoints::getFormNotice,noticeId).eq(MemberPoints::getType,"2");
|
||||
if (memberPointsService.count(count)>0){
|
||||
return;
|
||||
}
|
||||
LambdaQueryWrapper<MemberPoints> queryWrapper =new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(MemberPoints::getFormNotice,noticeId).eq(MemberPoints::getType,"1");
|
||||
List<MemberPoints> 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);
|
||||
}
|
||||
|
||||
@ -99,7 +99,7 @@ public class BusiNoticeSignServiceImpl extends ServiceImpl<BusiNoticeSignMapper,
|
||||
busiNoticeSign.setStatus("01");
|
||||
busiNoticeSign.setFormData(JSONArray.toJSONString(appNoticeSign.getCustomForm()));
|
||||
busiNoticeSign.setCardId(cardInfo.getString("id"));
|
||||
busiNoticeSign.setPrice(cardInfo.getBigDecimal("price"));
|
||||
busiNoticeSign.setPrice(cardInfo.getString("price"));
|
||||
busiNoticeSign.setRemark(cardInfo.getString("remark"));
|
||||
busiNoticeSign.setTel(cardInfo.getString("tel"));
|
||||
busiNoticeSign.setIsSuper(appNoticeSign.getIsSuper());
|
||||
|
||||
@ -0,0 +1,51 @@
|
||||
package com.ruoyi.busi.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||
import com.ruoyi.common.core.domain.model.LoginUser;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
import com.ruoyi.system.service.ISysRoleService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.busi.mapper.BusiTcInfoMapper;
|
||||
import com.ruoyi.busi.domain.BusiTcInfo;
|
||||
import com.ruoyi.busi.service.IBusiTcInfoService;
|
||||
|
||||
/**
|
||||
* 提成记录Service业务层处理
|
||||
*
|
||||
* @author 朱春云
|
||||
* @date 2025-06-23
|
||||
*/
|
||||
@Service
|
||||
public class BusiTcInfoServiceImpl extends ServiceImpl<BusiTcInfoMapper,BusiTcInfo> implements IBusiTcInfoService
|
||||
{
|
||||
@Autowired
|
||||
private BusiTcInfoMapper busiTcInfoMapper;
|
||||
@Autowired
|
||||
private ISysRoleService roleService;
|
||||
|
||||
@Override
|
||||
public IPage<BusiTcInfo> queryListPage(BusiTcInfo pageReqVO, Page<BusiTcInfo> page) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
SysUser user = loginUser.getUser();
|
||||
// 管理员拥有所有权限
|
||||
if (!user.isAdmin()) {
|
||||
Set<String> 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);
|
||||
}
|
||||
}
|
||||
@ -44,5 +44,7 @@ public class BusiNoticeVo extends BusiNotice {
|
||||
private String signId;
|
||||
//报名卡片名称
|
||||
private String cardName;
|
||||
private String identityType;
|
||||
private Integer signNum;
|
||||
|
||||
}
|
||||
|
||||
@ -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<MemberPoints> page = new Page<>(pageNum, pageSize);
|
||||
IPage<MemberPoints> 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")
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
|
||||
@ -77,7 +77,7 @@ public class MemberBusiCard extends DlBaseEntity
|
||||
|
||||
/** 商单自报价 */
|
||||
@Excel(name = "商单自报价")
|
||||
private BigDecimal price;
|
||||
private String price;
|
||||
|
||||
/** 所在领域/合作方式/是否为平台品牌合作人等 */
|
||||
@Excel(name = "所在领域/合作方式/是否为平台品牌合作人等")
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
|
||||
@ -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){
|
||||
|
||||
@ -26,4 +26,6 @@ public interface MemberPointsMapper extends BaseMapper<MemberPoints> {
|
||||
* @date 15:25 2025/3/29
|
||||
**/
|
||||
IPage<MemberPoints> queryListPage(@Param("userId") Long userId, Page<MemberPoints> page);
|
||||
|
||||
IPage<MemberPoints> adminList(@Param("memberPoints") MemberPoints memberPoints, Page<MemberPoints> page);
|
||||
}
|
||||
|
||||
@ -25,6 +25,9 @@ public interface IMemberPointsService extends IService<MemberPoints> {
|
||||
* @date 15:24 2025/3/29
|
||||
**/
|
||||
IPage<MemberPoints> queryListPage(Long userId, Page<MemberPoints> page);
|
||||
IPage<MemberPoints> adminList(MemberPoints memberPoints, Page<MemberPoints> page);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 新增积分变动记录
|
||||
@ -43,8 +46,11 @@ public interface IMemberPointsService extends IService<MemberPoints> {
|
||||
* @author PQZ
|
||||
* @date 16:11 2025/3/31
|
||||
**/
|
||||
|
||||
double getBloggerBalance(Long userId);
|
||||
|
||||
double getBloggerCanUseBalance(Long userId);
|
||||
|
||||
/**
|
||||
* 积分提现
|
||||
* @author PQZ
|
||||
|
||||
@ -139,6 +139,7 @@ public class MemberBusiCardServiceImpl extends ServiceImpl<MemberBusiCardMapper,
|
||||
//设置用户审核状态
|
||||
String status = configService.selectConfigByKey("isPass");
|
||||
memberBusiCard.setApprovalStatus(status);
|
||||
memberBusiCard.setApprovalTime(new Date());
|
||||
saveOrUpdate(memberBusiCard);
|
||||
}
|
||||
/**
|
||||
|
||||
@ -131,7 +131,8 @@ public class MemberCardServiceImpl extends ServiceImpl<MemberCardMapper, MemberC
|
||||
.eq(MemberCard::getUserId, userId)
|
||||
.eq(DlBaseEntity::getDelFlag, 0)
|
||||
.lt(MemberCard::getStartDate, time)
|
||||
.ge(MemberCard::getEndDate, time);
|
||||
.ge(MemberCard::getEndDate, time)
|
||||
.orderByDesc(MemberCard::getEndDate);
|
||||
return list(lambdaQueryWrapper);
|
||||
}
|
||||
|
||||
|
||||
@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.busi.domain.BusiTcInfo;
|
||||
import com.ruoyi.busi.service.IBusiTcInfoService;
|
||||
import com.ruoyi.common.core.domain.DlBaseEntity;
|
||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||
import com.ruoyi.common.core.domain.model.LoginUser;
|
||||
@ -27,7 +29,9 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
|
||||
@ -53,6 +57,8 @@ public class MemberOrderServiceImpl extends ServiceImpl<MemberOrderMapper, Membe
|
||||
private ISysUserService userService;
|
||||
@Autowired
|
||||
private ISysRoleService roleService;
|
||||
@Autowired
|
||||
private IBusiTcInfoService tcInfoService;
|
||||
|
||||
|
||||
/**
|
||||
@ -104,11 +110,12 @@ public class MemberOrderServiceImpl extends ServiceImpl<MemberOrderMapper, Membe
|
||||
/*3、处理订单表数据*/
|
||||
memberOrder.setPayTime(new Date());
|
||||
memberOrder.setIsPay(1);
|
||||
memberOrder.setPayWay("02");
|
||||
memberOrder.setPayWay("01");
|
||||
updateById(memberOrder);
|
||||
SysUser sysUser = userService.selectUserById(memberOrder.getUserId());
|
||||
String tc = sysConfigService.selectConfigByKey("tc");
|
||||
double v = Double.parseDouble(tc);
|
||||
try {
|
||||
if (ObjectUtil.isNotEmpty(sysUser.getInviteId())&&v>0){
|
||||
double points = memberOrder.getGoodsPrice().doubleValue()*v;
|
||||
//如果审核通过
|
||||
@ -116,8 +123,50 @@ public class MemberOrderServiceImpl extends ServiceImpl<MemberOrderMapper, Membe
|
||||
memberPoints.setUserId(sysUser.getInviteId());
|
||||
memberPoints.setPoints(points);
|
||||
memberPoints.setType("1");
|
||||
memberPoints.setTitle("邀请用户消费"+memberOrder.getGoodsPrice()+"元,得"+points*10+"积分");
|
||||
memberPoints.setTitle("邀请用户:"+sysUser.getNickName()+"消费"+memberOrder.getGoodsPrice()+"元,得"+points+"积分");
|
||||
memberPointsService.savePoints(memberPoints);
|
||||
SysUser sysUser1 = userService.selectUserById(sysUser.getInviteId());
|
||||
//插入提成记录表
|
||||
BusiTcInfo tcInfo =new BusiTcInfo();
|
||||
tcInfo.setUserId(sysUser.getInviteId());
|
||||
tcInfo.setInfo("邀请用户"+sysUser.getNickName()+"消费"+memberOrder.getGoodsPrice()+"元,提成"+points*v/10+"元");
|
||||
tcInfo.setMoney(BigDecimal.valueOf(points*v/10));
|
||||
tcInfo.setIsJs("1");
|
||||
tcInfo.setFormUserId(memberOrder.getUserId());
|
||||
tcInfo.setDeptId(sysUser1.getDeptId());
|
||||
tcInfoService.save(tcInfo);
|
||||
//获取当前部门的销售总监
|
||||
List<SysUser> xsjl = userService.getUserByRole("xsjl", sysUser.getDeptId());
|
||||
if (ObjectUtil.isNotEmpty(xsjl)){
|
||||
for (SysUser xsInfo : xsjl) {
|
||||
//先判断是否已存在提成记录
|
||||
LambdaQueryWrapper<BusiTcInfo> 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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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<MemberPointsMapper, Mem
|
||||
return memberPointsMapper.queryListPage(userId,page);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPage<MemberPoints> adminList(MemberPoints memberPoints, Page<MemberPoints> page) {
|
||||
return memberPointsMapper.adminList(memberPoints,page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增积分变动记录
|
||||
*
|
||||
@ -110,6 +118,36 @@ public class MemberPointsServiceImpl extends ServiceImpl<MemberPointsMapper, Mem
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取积分
|
||||
*
|
||||
* @param userId 用户id
|
||||
* @return java.lang.Integer
|
||||
* @author PQZ
|
||||
* @date 16:11 2025/3/31
|
||||
**/
|
||||
@Override
|
||||
public double getBloggerCanUseBalance(Long userId) {
|
||||
LambdaQueryWrapper<MemberPoints> 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<MemberPoints> 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<MemberPoints> 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 ServiceImpl<MemberPointsMapper, Mem
|
||||
throw new Exception("存在未处理完成的提现订单");
|
||||
}
|
||||
|
||||
double nowBalance = getBloggerBalance(userId);
|
||||
double nowBalance = getBloggerCanUseBalance(userId);
|
||||
if (memberPoints.getPoints()>nowBalance){
|
||||
throw new Exception("当前用户积分余额为"+nowBalance+"您已超出提现额度");
|
||||
}
|
||||
|
||||
@ -144,36 +144,15 @@ public class MemberUserServiceImpl extends ServiceImpl<MemberUserMapper, MemberU
|
||||
// 管理员拥有所有权限
|
||||
if (!user.isAdmin()) {
|
||||
Set<String> 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<MemberUserVO> rtnPage=memberUserMapper.crmList(pageReqVO, page);
|
||||
LambdaQueryWrapper<MemberOrder> 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<MemberOrder> 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<MemberUserMapper, MemberU
|
||||
}
|
||||
//积分
|
||||
result.setPointsBalance(pointsService.getBloggerBalance(userId));
|
||||
result.setCanUseBalance(pointsService.getBloggerCanUseBalance(userId));
|
||||
if ("02".equals(userType)) {
|
||||
//报名
|
||||
Integer report = cardService.getCardRightsValue(userId, "02", "report");
|
||||
|
||||
@ -37,6 +37,7 @@ public class MemberUserVO extends MemberUser {
|
||||
List<MemberAddress> addresses;
|
||||
/**积分*/
|
||||
double pointsBalance;
|
||||
double canUseBalance;
|
||||
/**报名次数*/
|
||||
int report;
|
||||
/**剩余通告券*/
|
||||
@ -59,5 +60,6 @@ public class MemberUserVO extends MemberUser {
|
||||
BigDecimal monthMoney;
|
||||
/**所有订单总额*/
|
||||
BigDecimal allMoney;
|
||||
private String xsName;
|
||||
|
||||
}
|
||||
|
||||
@ -43,7 +43,11 @@ public class WechatPayConfig {
|
||||
/**
|
||||
* 服务商商户号
|
||||
*/
|
||||
private String slMchId;
|
||||
private String spMchid;
|
||||
/**
|
||||
* 服务商appid
|
||||
*/
|
||||
private String spAppid;
|
||||
/**
|
||||
* APIv2密钥
|
||||
*/
|
||||
|
||||
Binary file not shown.
@ -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-----
|
||||
|
||||
@ -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-----
|
||||
|
||||
@ -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
|
||||
multi-statement-allow: true
|
||||
|
||||
@ -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
|
||||
|
||||
# 普通用户权益值
|
||||
|
||||
@ -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
|
||||
<if test="entity.userNickName != null ">
|
||||
left join sys_user uTable on uTable.user_id = main.user_id
|
||||
</if>
|
||||
<where>
|
||||
main.del_flag = '0' and main.approval_status != 8
|
||||
main.del_flag = '0'
|
||||
<if test="entity.id != null "> and main.id = #{entity.id}</if>
|
||||
<if test="entity.userNickName != null "> and uTable.nick_name like concat('%', #{entity.userNickName}, '%')</if>
|
||||
<if test="entity.userId != null "> and main.user_id = #{entity.userId}</if>
|
||||
<if test="entity.province != null "> and main.province = #{entity.province}</if>
|
||||
<if test="entity.city != null "> and main.city = #{entity.city}</if>
|
||||
<if test="entity.thirdUrl != null and entity.thirdUrl == '01' "> and (main.third_url is not null and main.third_url != '')</if>
|
||||
<if test="entity.thirdUrl != null and entity.thirdUrl == '02' "> and (main.third_url is null or main.third_url = '')</if>
|
||||
<if test="entity.params.thirdUrl != null and entity.params.thirdUrl != '' "> and (main.third_url like concat('%', #{entity.params.thirdUrl}, '%'))</if>
|
||||
<if test="entity.title != null and entity.title != ''"> and main.title like concat('%', #{entity.title}, '%')</if>
|
||||
<if test="entity.platformCode != null and entity.platformCode != ''"> and main.platform_code = #{entity.platformCode}</if>
|
||||
<if test="entity.isUrgent != null and entity.isUrgent != ''"> and main.is_urgent = #{entity.isUrgent}</if>
|
||||
<if test="entity.isPlatformFree != null and entity.isPlatformFree != ''"> and main.is_platform_free = #{entity.isPlatformFree}</if>
|
||||
|
||||
<if test="entity.params.isRuning != null ">
|
||||
<choose>
|
||||
<when test="entity.params.isRuning=='01'">
|
||||
and main.approval_status !='2' and main.end_date >= CURDATE()
|
||||
</when>
|
||||
<when test="entity.params.isRuning=='02'">
|
||||
and (main.approval_status ='2' or main.end_date < CURDATE())
|
||||
</when>
|
||||
</choose>
|
||||
</if>
|
||||
<if test="entity.params.beginFeeDown != null and entity.params.beginFeeDown != ''">
|
||||
and main.fee_down <![CDATA[>= ]]> #{entity.params.beginFeeDown}
|
||||
</if>
|
||||
@ -180,13 +192,13 @@ order by dbns.create_time desc
|
||||
<select id="appFootprintList" resultType="com.ruoyi.busi.vo.BusiNoticeVo">
|
||||
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
|
||||
inner join dl_member_footprint footprint on footprint.notice_id = dbn.id and footprint.user_id = #{entity.userId}
|
||||
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
|
||||
@ -238,13 +250,13 @@ order by dbns.create_time desc
|
||||
<select id="subscribeList" resultType="com.ruoyi.busi.vo.BusiNoticeVo">
|
||||
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 id="loveList" resultType="com.ruoyi.busi.vo.BusiNoticeVo">
|
||||
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
|
||||
inner join dl_busi_user_love love on dbn.user_id = love.love_user_id and love.user_id = #{entity.userId}
|
||||
left join dl_busi_notice_sign sign on sign.notice_id = dbn.id and sign.del_flag = 0
|
||||
@ -320,7 +332,7 @@ order by dbns.create_time desc
|
||||
<select id="myNoticeList" resultType="com.ruoyi.busi.vo.BusiNoticeVo">
|
||||
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 id="myPublishNoticeList" resultType="com.ruoyi.busi.vo.BusiNoticeVo">
|
||||
SELECT
|
||||
dbn.*,
|
||||
dbnv.view_num AS viewNum,
|
||||
-- dbnv.view_num AS viewNum,
|
||||
su.avatar,
|
||||
su.nick_name AS userNickName,
|
||||
count(sign.id) as reportNum,
|
||||
@ -383,7 +395,7 @@ order by dbns.create_time desc
|
||||
END AS reportStatusText
|
||||
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
|
||||
|
||||
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.ruoyi.busi.mapper.BusiTcInfoMapper">
|
||||
|
||||
<resultMap type="com.ruoyi.busi.domain.BusiTcInfo" id="BusiTcInfoResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="userId" column="user_id" />
|
||||
<result property="formUserId" column="form_user_id" />
|
||||
<result property="deptId" column="dept_id" />
|
||||
<result property="info" column="info" />
|
||||
<result property="money" column="money" />
|
||||
<result property="isJs" column="is_js" />
|
||||
<result property="creator" column="creator" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updater" column="updater" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="delFlag" column="del_flag" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectBusiTcInfoVo">
|
||||
select id, user_id, form_user_id, dept_id, info, money, is_js, creator, create_time, updater, update_time, del_flag from busi_tc_info
|
||||
</sql>
|
||||
|
||||
<select id="queryListPage" parameterType="com.ruoyi.busi.domain.BusiTcInfo" resultMap="BusiTcInfoResult">
|
||||
select main.*,su.nick_name tcUserName
|
||||
from busi_tc_info main
|
||||
left join sys_user su on main.user_id = su.user_id
|
||||
<where>
|
||||
<if test="entity.userId != null "> and user_id = #{entity.userId}</if>
|
||||
<if test="entity.tcUserName != null "> and su.nick_name = #{entity.tcUserName}</if>
|
||||
<if test="entity.deptId != null "> and main.dept_id = #{entity.deptId}</if>
|
||||
<if test="entity.info != null and entity.info != ''"> and info = #{entity.info}</if>
|
||||
<if test="entity.params.beginMoney != null and entity.params.beginMoney != '' and entity.params.endMoney != null and entity.params.endMoney != ''"> and money between #{entity.params.beginMoney} and #{entity.params.endMoney}</if>
|
||||
<if test="entity.params.beginCreateTime != null and entity.params.beginCreateTime != '' and entity.params.endCreateTime != null and entity.params.endCreateTime != ''"> and main.create_time between #{entity.params.beginCreateTime} and #{entity.params.endCreateTime}</if>
|
||||
|
||||
</where>
|
||||
order by main.create_time desc
|
||||
</select>
|
||||
</mapper>
|
||||
@ -22,18 +22,21 @@
|
||||
<result property="updater" column="updater" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="delFlag" column="del_flag" />
|
||||
<result property="tel" column="tel" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectMemberApplyVo">
|
||||
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
|
||||
</sql>
|
||||
<select id="queryListPage" parameterType="MemberApply" resultMap="MemberApplyResult">
|
||||
<include refid="selectMemberApplyVo"/>
|
||||
select main.*,su.phonenumber tel from dl_member_apply main
|
||||
left join sys_user su on main.user_id = su.user_id
|
||||
|
||||
<where>
|
||||
del_flag=0
|
||||
main.del_flag=0
|
||||
<if test="entity.nickname != null and entity.nickname != ''"> and nickname like concat('%', #{entity.nickname}, '%')</if>
|
||||
<if test="entity.identityType != null and entity.identityType != ''"> and identity_type = #{entity.identityType}</if>
|
||||
|
||||
<if test="entity.tel != null "> and su.phonenumber like concat('%', #{entity.tel}, '%')</if>
|
||||
<if test="entity.approvalTime != null "> and approval_time = #{entity.approvalTime}</if>
|
||||
<if test="entity.startTime != null and entity.endTime != null"> and create_time between #{entity.startTime} and #{entity.endTime}</if>
|
||||
<if test="entity.approvalStatus == 10"> and approval_status != 0</if>
|
||||
@ -46,4 +49,4 @@
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
</mapper>
|
||||
|
||||
@ -39,6 +39,7 @@
|
||||
<where>
|
||||
del_flag = 0
|
||||
<if test="entity.nickname != null and entity.nickname != ''"> and nickname like concat('%', #{entity.nickname}, '%')</if>
|
||||
<if test="entity.tel != null and entity.tel != ''"> and tel like concat('%', #{entity.tel}, '%')</if>
|
||||
<if test="entity.platformName != null and entity.platformName != ''"> and platform_name like concat('%', #{entity.platformName}, '%')</if>
|
||||
<if test="entity.accountName != null and entity.accountName != ''"> and account_name like concat('%', #{entity.accountName}, '%')</if>
|
||||
<if test="entity.approvalStatus == 10"> and approval_status != 0</if>
|
||||
@ -60,4 +61,4 @@
|
||||
WHERE
|
||||
main.del_flag = 0 and main.id = #{id}
|
||||
</select>
|
||||
</mapper>
|
||||
</mapper>
|
||||
|
||||
@ -31,6 +31,7 @@
|
||||
<result property="updater" column="updater" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="delFlag" column="del_flag" />
|
||||
<result property="userPhone" column="userPhone" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectMemberOrderVo">
|
||||
@ -42,7 +43,7 @@
|
||||
<select id="queryListPage" parameterType="MemberOrder" resultMap="MemberOrderResult">
|
||||
select main.id, main.user_id, main.user_type, su.nick_name as nickname, main.order_no, main.order_type, main.goods_id, main.goods_num, main.goods_price, main.pay_time,
|
||||
main.content, main.pay_way, main.is_pay, main.is_refund, main.refund_user_id, main.refund_way, main.refund_no, main.refund_apply_time, main.refund_receive_time,
|
||||
main.refund_reason, main.remark, main.creator, main.create_time, main.updater, main.update_time, main.del_flag
|
||||
main.refund_reason, main.remark, main.creator, main.create_time, main.updater, main.update_time, main.del_flag,su.phonenumber as userPhone
|
||||
from dl_member_order main
|
||||
left join sys_user su on su.user_id = main.user_id
|
||||
<where>
|
||||
|
||||
@ -32,4 +32,23 @@
|
||||
</where>
|
||||
order by create_time desc
|
||||
</select>
|
||||
</mapper>
|
||||
<select id="adminList" resultType="com.ruoyi.member.domain.MemberPoints">
|
||||
select points.*,su.nick_name as nickName
|
||||
from dl_member_points points
|
||||
left join sys_user su on points.user_id = su.user_id
|
||||
<where>
|
||||
points.del_flag = 0 and points.status = '01'
|
||||
<if test="memberPoints.nickName !=null and memberPoints.nickName !=''">
|
||||
and su.nick_name like concat('%',#{memberPoints.nickName},'%')
|
||||
</if>
|
||||
<if test="memberPoints.type !=null and memberPoints.type !=''">
|
||||
and points.type = #{memberPoints.type}
|
||||
</if>
|
||||
<if test="memberPoints.params.beginCreateTime != null and memberPoints.params.beginCreateTime != '' and memberPoints.params.endCreateTime != null and memberPoints.params.endCreateTime != ''">
|
||||
and points.create_time between #{memberPoints.params.beginCreateTime} and #{memberPoints.params.endCreateTime}
|
||||
</if>
|
||||
</where>
|
||||
order by points.create_time desc
|
||||
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@ -77,8 +77,12 @@
|
||||
main.del_flag = 0
|
||||
<if test="entity.userType != null and entity.userType != ''">
|
||||
and main.user_type = #{entity.userType}
|
||||
<if test="entity.userType == '01'">
|
||||
AND main.identity_type is not null
|
||||
</if>
|
||||
<if test="entity.identityType != null and entity.identityType != ''">and main.identity_type =
|
||||
</if>
|
||||
<if test="entity.identityType != null and entity.identityType != ''">
|
||||
and main.identity_type =
|
||||
#{entity.identityType}
|
||||
</if>
|
||||
<if test="entity.nickName != null and entity.nickName != '' ">and su.nick_name like concat('%',#{entity.nickName},'%') </if>
|
||||
@ -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 <![CDATA[>=]]> DATE_FORMAT(CURDATE(), '%Y-%m-01')
|
||||
and dmo.create_time <![CDATA[<=]]> LAST_DAY(CURDATE())
|
||||
<where>
|
||||
main.del_flag = 0
|
||||
<if test="entity.userType != null and entity.userType != ''">
|
||||
@ -174,12 +189,22 @@
|
||||
#{entity.identityType}
|
||||
</if>
|
||||
<if test="entity.nickName != null and entity.nickName != '' ">and su.nick_name like concat('%',#{entity.nickName},'%') </if>
|
||||
<if test="entity.xsName != null and entity.xsName != '' ">and su_temp.nick_name like concat('%',#{entity.xsName},'%') </if>
|
||||
<if test="entity.userId != null "> and su.invite_id = #{entity.userId}</if>
|
||||
<if test="entity.deptId != null "> and su_temp.dept_id = #{entity.deptId}</if>
|
||||
<if test="entity.tel != null and entity.tel !='' "> and main.tel like CONCAT('%',#{entity.tel},'%') </if>
|
||||
<if test="entity.params.minnum != null"> and main.ttotal_num >= #{entity.params.minnum} </if>
|
||||
<if test="entity.params.maxnum != null"> and main.ttotal_num <= #{entity.params.maxnum} </if>
|
||||
<if test="entity.params.isVip != null and entity.params.isVip != ''"> and mc.card_name = #{entity.params.isVip} </if>
|
||||
|
||||
</where>
|
||||
GROUP BY main.user_id
|
||||
<if test="entity.params.isXf != null and entity.params.isXf == '01'">
|
||||
having sum(dmo.goods_price)>0
|
||||
</if>
|
||||
<if test="entity.params.isXf != null and entity.params.isXf == '02'">
|
||||
having sum(dmo.goods_price) is null
|
||||
</if>
|
||||
<choose>
|
||||
<when test="entity.params.orderBy != null and entity.params.orderBy != ''">
|
||||
ORDER BY ${entity.params.orderBy}
|
||||
|
||||
@ -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-----
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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));
|
||||
|
||||
@ -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<SysUser> getUserByRole(@Param("role") String role,@Param("deptId") Long deptId);
|
||||
|
||||
}
|
||||
|
||||
@ -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<SysUser> userList, Boolean isUpdateSupport, String operName);
|
||||
List<SysUser> getUserByRole(String role, Long deptId);
|
||||
}
|
||||
|
||||
@ -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<SysUser> getUserByRole(String role, Long deptId) {
|
||||
|
||||
return userMapper.getUserByRole(role, deptId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -249,4 +249,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
and u.user_name = #{phone}
|
||||
</if>
|
||||
</select>
|
||||
<select id="getUserByRole" resultType="com.ruoyi.common.core.domain.entity.SysUser">
|
||||
select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status,u.open_id,u.wx_open_id,u.union_id,u.invite_id
|
||||
,u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader
|
||||
from sys_user u
|
||||
left join sys_dept d on u.dept_id = d.dept_id
|
||||
left join sys_user_role ur on u.user_id = ur.user_id
|
||||
left join sys_role r on ur.role_id = r.role_id
|
||||
where u.del_flag = '0' and r.role_key = #{role} and d.dept_id = #{deptId}
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user