订单和权限同步逻辑

This commit is contained in:
easonzhu 2025-02-21 20:05:47 +08:00
parent 74b9f93218
commit fb70723f50
241 changed files with 1605 additions and 1067 deletions

View File

@ -43,7 +43,6 @@
<groupId>org.freemarker</groupId> <groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId> <artifactId>freemarker</artifactId>
<version>2.3.31</version> <version>2.3.31</version>
<scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.baomidou</groupId> <groupId>com.baomidou</groupId>

View File

@ -34,7 +34,7 @@ import java.util.Map;
* 投顾信息 前端控制器 * 投顾信息 前端控制器
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-08-30 * @since 2022-08-30
*/ */
@Api(tags = "投顾信息") @Api(tags = "投顾信息")

View File

@ -10,7 +10,7 @@ import java.time.LocalDateTime;
* 用户关注投顾信息 * 用户关注投顾信息
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-08-27 * @since 2022-08-27
*/ */
public class AdvisorFollow implements Serializable { public class AdvisorFollow implements Serializable {

View File

@ -12,7 +12,7 @@ import java.time.LocalDateTime;
* 投顾信息 * 投顾信息
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-08-27 * @since 2022-08-27
*/ */
public class AdvisorInfo implements Serializable { public class AdvisorInfo implements Serializable {

View File

@ -10,7 +10,7 @@ import java.util.Objects;
* 投顾基本信息 * 投顾基本信息
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-08-27 * @since 2022-08-27
*/ */
public class AdvisorSortEntity implements Serializable, Comparable<AdvisorSortEntity> { public class AdvisorSortEntity implements Serializable, Comparable<AdvisorSortEntity> {

View File

@ -9,7 +9,7 @@ import java.io.Serializable;
* 投顾标签关系表 * 投顾标签关系表
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-08-27 * @since 2022-08-27
*/ */
public class AdvisorTagRel implements Serializable { public class AdvisorTagRel implements Serializable {

View File

@ -1,14 +1,14 @@
package com.syzb.advisor.mapper; package com.syzb.advisor.mapper;
import com.syzb.advisor.entity.AdvisorFollow;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.syzb.advisor.entity.AdvisorFollow;
/** /**
* <p> * <p>
* 用户关注投顾信息 Mapper 接口 * 用户关注投顾信息 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-08-27 * @since 2022-08-27
*/ */
public interface AdvisorFollowMapper extends BaseMapper<AdvisorFollow> { public interface AdvisorFollowMapper extends BaseMapper<AdvisorFollow> {

View File

@ -1,8 +1,8 @@
package com.syzb.advisor.mapper; package com.syzb.advisor.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.syzb.advisor.entity.AdvisorInfo; import com.syzb.advisor.entity.AdvisorInfo;
import com.syzb.advisor.entity.AdvisorSortEntity; import com.syzb.advisor.entity.AdvisorSortEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
@ -13,7 +13,7 @@ import java.util.List;
* 投顾信息 Mapper 接口 * 投顾信息 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-08-27 * @since 2022-08-27
*/ */
public interface AdvisorInfoMapper extends BaseMapper<AdvisorInfo> { public interface AdvisorInfoMapper extends BaseMapper<AdvisorInfo> {

View File

@ -13,7 +13,7 @@ import java.util.List;
* 投顾标签关系表 Mapper 接口 * 投顾标签关系表 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-08-27 * @since 2022-08-27
*/ */
public interface AdvisorTagRelMapper extends EasyBaseMapper<AdvisorTagRel> { public interface AdvisorTagRelMapper extends EasyBaseMapper<AdvisorTagRel> {

View File

@ -2,6 +2,11 @@ package com.syzb.advisor.service;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.ImmutableSet;
import com.hazelcast.core.HazelcastInstance;
import com.syzb.advisor.constant.AdvisorInfoStatus; import com.syzb.advisor.constant.AdvisorInfoStatus;
import com.syzb.advisor.constant.FollowChannel; import com.syzb.advisor.constant.FollowChannel;
import com.syzb.advisor.constant.FollowOption; import com.syzb.advisor.constant.FollowOption;
@ -13,9 +18,6 @@ import com.syzb.advisor.query.*;
import com.syzb.advisor.vo.AdvisorBasicVO; import com.syzb.advisor.vo.AdvisorBasicVO;
import com.syzb.advisor.vo.AdvisorInfoAdminVO; import com.syzb.advisor.vo.AdvisorInfoAdminVO;
import com.syzb.advisor.vo.AdvisorInfoAppVO; import com.syzb.advisor.vo.AdvisorInfoAppVO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.syzb.common.constant.AdvertPosition; import com.syzb.common.constant.AdvertPosition;
import com.syzb.common.constant.IsOrNot; import com.syzb.common.constant.IsOrNot;
import com.syzb.common.constant.ProductType; import com.syzb.common.constant.ProductType;
@ -32,8 +34,6 @@ import com.syzb.common.state.StateMachine;
import com.syzb.common.vo.BackendUserVO; import com.syzb.common.vo.BackendUserVO;
import com.syzb.common.vo.CountVO; import com.syzb.common.vo.CountVO;
import com.syzb.common.vo.FrontUserVO; import com.syzb.common.vo.FrontUserVO;
import com.google.common.collect.ImmutableSet;
import com.hazelcast.core.HazelcastInstance;
import com.syzb.rbac.constant.DeptType; import com.syzb.rbac.constant.DeptType;
import com.syzb.rbac.entity.Dept; import com.syzb.rbac.entity.Dept;
import com.syzb.rbac.entity.UserDept; import com.syzb.rbac.entity.UserDept;

View File

@ -1,20 +0,0 @@
package com.syzb.app.constants;
// 订单状态 新订单180已开通220已停用/已退款90已过期80已取消70关闭权限但未退款230
public enum AppOrderStatus {
NEW(180, "新订单"),
OPENED(220, "已开通"),
REFUNDED(90, "已停用/已退款"),
EXPIRED(80, "已过期"),
CANCELED(70, "已取消"),
CLOSED_UN_REFUNDED(230, "关闭权限但未退款");
public final Integer value;
public final String name;
AppOrderStatus(Integer value, String name) {
this.value = value;
this.name = name;
}
}

View File

@ -1,292 +0,0 @@
package com.syzb.app.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* <p>
* C端订单
* </p>
*
* @author easonzhu
* @since 2024-11-07
*/
public class AppOrder implements Serializable {
/**
* 订单号
*/
@TableId("order_id")
private String orderId;
/**
* 产品ID
*/
@TableField("product_id")
private String productId;
/**
* 产品名称
*/
@TableField("product_name")
private String productName;
/**
* 用户名\UPID
*/
@TableField("user_name")
private String userName;
/**
* 订单状态 新订单180已开通220已停用/已退款90已过期80已取消70关闭权限但未退款230
*/
private Integer status;
/**
* 支付状态 1:已支付 2:未支付
*/
@TableField("pay_status")
private Integer payStatus;
/**
* 订单金额
*/
@TableField("total_price")
private BigDecimal totalPrice;
/**
* 支付金额
*/
@TableField("pay_total")
private BigDecimal payTotal;
/**
* 下单渠道
*/
private Integer currch;
/**
* 扩展信息
*/
@TableField("ext_info")
private String extInfo;
/**
* 传参
*/
private String bvideo;
/**
* 视频ID
*/
@TableField("video_id")
private Integer videoId;
/**
* 视频类型 3:直播
*/
@TableField("product_type")
private Integer productType;
/**
* 营销人员
*/
@TableField("sale_user_id")
private Integer saleUserId;
/**
* 下单时间
*/
@TableField("order_time")
private LocalDateTime orderTime;
/**
* 支付时间
*/
@TableField("pay_time")
private LocalDateTime payTime;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public String getProductId() {
return productId;
}
public void setProductId(String productId) {
this.productId = productId;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Integer getPayStatus() {
return payStatus;
}
public void setPayStatus(Integer payStatus) {
this.payStatus = payStatus;
}
public BigDecimal getTotalPrice() {
return totalPrice;
}
public void setTotalPrice(BigDecimal totalPrice) {
this.totalPrice = totalPrice;
}
public BigDecimal getPayTotal() {
return payTotal;
}
public void setPayTotal(BigDecimal payTotal) {
this.payTotal = payTotal;
}
public Integer getCurrch() {
return currch;
}
public void setCurrch(Integer currch) {
this.currch = currch;
}
public String getExtInfo() {
return extInfo;
}
public void setExtInfo(String extInfo) {
this.extInfo = extInfo;
}
public String getBvideo() {
return bvideo;
}
public void setBvideo(String bvideo) {
this.bvideo = bvideo;
}
public Integer getVideoId() {
return videoId;
}
public void setVideoId(Integer videoId) {
this.videoId = videoId;
}
public Integer getProductType() {
return productType;
}
public void setProductType(Integer productType) {
this.productType = productType;
}
public Integer getSaleUserId() {
return saleUserId;
}
public void setSaleUserId(Integer saleUserId) {
this.saleUserId = saleUserId;
}
public LocalDateTime getOrderTime() {
return orderTime;
}
public void setOrderTime(LocalDateTime orderTime) {
this.orderTime = orderTime;
}
public LocalDateTime getPayTime() {
return payTime;
}
public void setPayTime(LocalDateTime payTime) {
this.payTime = payTime;
}
public LocalDateTime getCreateTime() {
return createTime;
}
public void setCreateTime(LocalDateTime createTime) {
this.createTime = createTime;
}
public LocalDateTime getUpdateTime() {
return updateTime;
}
public void setUpdateTime(LocalDateTime updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
return "AppOrder{" +
"orderId=" + orderId +
", productId=" + productId +
", productName=" + productName +
", userName=" + userName +
", status=" + status +
", totalPrice=" + totalPrice +
", payTotal=" + payTotal +
", currch=" + currch +
", extInfo=" + extInfo +
", bvideo=" + bvideo +
", videoId=" + videoId +
", productType=" + productType +
", saleUserId=" + saleUserId +
", orderTime=" + orderTime +
", payTime=" + payTime +
", createTime=" + createTime +
", updateTime=" + updateTime +
"}";
}
}

View File

@ -1,48 +0,0 @@
package com.syzb.app.service;
import com.syzb.app.entity.AppOrder;
import com.syzb.app.mapper.AppOrderMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Objects;
@Service
public class OrderSyncService {
@Resource
private AppOrderMapper appOrderMapper;
@Transactional(rollbackFor = Exception.class)
public void syncAppOrder(LocalDateTime startTime, LocalDateTime endTime) {
// TODO
}
private boolean isEqual(AppOrder a, AppOrder b) {
return Objects.equals(a.getOrderId(), b.getOrderId())
&& Objects.equals(a.getProductId(), b.getProductId())
&& Objects.equals(a.getProductName(), b.getProductName())
&& Objects.equals(a.getUserName(), b.getUserName())
&& Objects.equals(a.getStatus(), b.getStatus())
&& Objects.equals(a.getPayStatus(), b.getPayStatus())
&& isEqual(a.getTotalPrice(), b.getTotalPrice())
&& isEqual(a.getPayTotal(), b.getPayTotal())
&& Objects.equals(a.getCurrch(), b.getCurrch())
&& Objects.equals(a.getExtInfo(), b.getExtInfo())
&& Objects.equals(a.getBvideo(), b.getBvideo())
&& Objects.equals(a.getVideoId(), b.getVideoId())
&& Objects.equals(a.getProductType(), b.getProductType())
&& Objects.equals(a.getSaleUserId(), b.getSaleUserId())
&& Objects.equals(a.getOrderTime(), b.getOrderTime())
&& Objects.equals(a.getPayTime(), b.getPayTime());
}
// BigDecimal忽略精度比较
private boolean isEqual(BigDecimal a, BigDecimal b) {
return a == null ? b == null : a.compareTo(b) == 0;
}
}

View File

@ -1,189 +0,0 @@
package com.syzb.app.vo;
import cn.hutool.core.date.DatePattern;
import com.syzb.advisor.entity.AdvisorBasic;
import com.syzb.video.entity.VideoLive;
import java.io.Serializable;
public class LiveDetailVO implements Serializable {
private Integer id;
private String title;
private String listCoverUrl;
private String coverUrl;
private Integer advisorId;
private String advisorName;
private String advisorAvatar;
private String liveUrl;
private Integer liveStatus;
private Integer status;
private String startTime;
private String endTime;
private Integer readCount;
private Integer messageCount;
private Integer favorCount;
private Integer isRecommend;
private Integer isDisplay;
public LiveDetailVO() {
}
public LiveDetailVO(VideoLive live, AdvisorBasic advisor, String liveUrl, Integer readCount, Integer messageCount, Integer favorCount) {
this.id = live.getId();
this.title = live.getTitle();
this.listCoverUrl = live.getListCoverUrl();
this.advisorId = live.getAdvisorId();
if (advisor != null) {
this.advisorName = advisor.getShowName();
this.advisorAvatar = advisor.getAvatar();
}
this.liveUrl = liveUrl;
this.coverUrl = live.getImgUrl();
this.liveStatus = live.getLiveStatus();
this.status = live.getStatus();
this.startTime = live.getStartTime().format(DatePattern.NORM_DATETIME_FORMATTER);
this.endTime = live.getEndTime().format(DatePattern.NORM_DATETIME_FORMATTER);
this.readCount = readCount;
this.messageCount = messageCount;
this.favorCount = favorCount;
this.isRecommend = live.getIsRecommend();
this.isDisplay = live.getIsDisplay();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getListCoverUrl() {
return listCoverUrl;
}
public void setListCoverUrl(String listCoverUrl) {
this.listCoverUrl = listCoverUrl;
}
public String getCoverUrl() {
return coverUrl;
}
public void setCoverUrl(String coverUrl) {
this.coverUrl = coverUrl;
}
public Integer getAdvisorId() {
return advisorId;
}
public void setAdvisorId(Integer advisorId) {
this.advisorId = advisorId;
}
public String getAdvisorName() {
return advisorName;
}
public void setAdvisorName(String advisorName) {
this.advisorName = advisorName;
}
public String getAdvisorAvatar() {
return advisorAvatar;
}
public void setAdvisorAvatar(String advisorAvatar) {
this.advisorAvatar = advisorAvatar;
}
public String getLiveUrl() {
return liveUrl;
}
public void setLiveUrl(String liveUrl) {
this.liveUrl = liveUrl;
}
public Integer getLiveStatus() {
return liveStatus;
}
public void setLiveStatus(Integer liveStatus) {
this.liveStatus = liveStatus;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public Integer getReadCount() {
return readCount;
}
public void setReadCount(Integer readCount) {
this.readCount = readCount;
}
public Integer getMessageCount() {
return messageCount;
}
public void setMessageCount(Integer messageCount) {
this.messageCount = messageCount;
}
public Integer getFavorCount() {
return favorCount;
}
public void setFavorCount(Integer favorCount) {
this.favorCount = favorCount;
}
public Integer getIsRecommend() {
return isRecommend;
}
public void setIsRecommend(Integer isRecommend) {
this.isRecommend = isRecommend;
}
public Integer getIsDisplay() {
return isDisplay;
}
public void setIsDisplay(Integer isDisplay) {
this.isDisplay = isDisplay;
}
}

View File

@ -1,44 +0,0 @@
package com.syzb.app.vo;
import java.io.Serializable;
import java.util.List;
public class LiveListVO implements Serializable {
public List<LiveDetailVO> result;
public Integer total;
public String listUrl;
public LiveListVO() {
}
public LiveListVO(List<LiveDetailVO> result, Integer total, String listUrl) {
this.result = result;
this.total = total;
this.listUrl = listUrl;
}
public List<LiveDetailVO> getResult() {
return result;
}
public void setResult(List<LiveDetailVO> result) {
this.result = result;
}
public Integer getTotal() {
return total;
}
public void setTotal(Integer total) {
this.total = total;
}
public String getListUrl() {
return listUrl;
}
public void setListUrl(String listUrl) {
this.listUrl = listUrl;
}
}

View File

@ -0,0 +1,32 @@
package com.syzb.business.constants;
// 订单状态
// 180:新订单
// 200:已支付
// 220:已开通
// 205:已升级
// 90:已退款
// 80:已过期
// 60:已关闭
// 50:已暂停
public enum AppOrderStatus {
NEW(180, "新订单"),
PAID(200, "已支付"),
OPENED(220, "已开通"),
UPGRADED(205, "已升级"),
REFUNDED(90, "已退款"),
EXPIRED(80, "已过期"),
CLOSED(60, "已关闭"),
PAUSED(50, "已暂停"),
;
public final Integer value;
public final String name;
AppOrderStatus(Integer value, String name) {
this.value = value;
this.name = name;
}
}

View File

@ -0,0 +1,563 @@
package com.syzb.business.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* <p>
* 订单表
* </p>
*
* @author helloSyzb
* @since 2025-02-21
*/
public class AppOrder implements Serializable {
/**
* 订单号
*/
@TableId(value = "order_id", type = IdType.AUTO)
private Integer orderId;
/**
* 产品名称
*/
@TableField("product_name")
private String productName;
/**
* 订购天数
*/
@TableField("order_day")
private Integer orderDay;
/**
* 当前价格
*/
@TableField("current_price")
private BigDecimal currentPrice;
/**
* 订单状态 180:新订单 200:已支付 220:已开通 205:已升级 90:已退款 80:已过期 60:已关闭 50:已暂停
*/
@TableField("order_state")
private Integer orderState;
/**
* 支付状态 1:已支付 2:未支付
*/
@TableField("pay_status")
private Integer payStatus;
/**
* 订单原价
*/
@TableField("original_price")
private BigDecimal originalPrice;
/**
* 开通状态 0:未开通 1:已开通
*/
@TableField("is_open")
private Integer isOpen;
/**
* 到账金额(多笔付款合计)
*/
@TableField("received_amount")
private BigDecimal receivedAmount;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 用户编号
*/
@TableField("user_id")
private String userId;
/**
* 手机号(脱敏)
*/
private String mobile;
/**
* 手机号(无规则的唯一键)
*/
@TableField("um_id")
private String umId;
/**
* 订单批次号
*/
@TableField("batch_id")
private String batchId;
/**
* 产品的唯一ID
*/
private String sku;
/**
* 渠道号
*/
private Integer channel;
/**
* 部门ID
*/
@TableField("department_id")
private Integer departmentId;
/**
* 开通时间
*/
@TableField("open_time")
private LocalDateTime openTime;
/**
* 暂停时间
*/
@TableField("suspend_time")
private LocalDateTime suspendTime;
/**
* 暂停原因
*/
@TableField("suspend_remark")
private String suspendRemark;
/**
* 剩余天数
*/
@TableField("remaining_day")
private Integer remainingDay;
/**
* 到账时间
*/
@TableField("received_amount_time")
private LocalDateTime receivedAmountTime;
/**
* 终止类型 1:升级 2:退款 3:作废 4:过期
*/
@TableField("stop_type")
private Integer stopType;
/**
* 终止时间
*/
@TableField("stop_time")
private LocalDateTime stopTime;
/**
* 下单时间
*/
@TableField("order_time")
private LocalDateTime orderTime;
/**
* 附加信息
*/
@TableField("ext_info")
private String extInfo;
/**
* 订单备注可以填写客户昵称备注作为区分
*/
private String remark;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
/**
* 活动名称
*/
@TableField("activity_name")
private String activityName;
/**
* 是否有合同
*/
@TableField("has_pdf")
private Boolean hasPdf;
/**
* 是否可以签约
*/
@TableField("can_sign")
private Boolean canSign;
/**
* 产品ID(ext_info解析)
*/
@TableField("product_id")
private Integer productId;
/**
* 产品类型(ext_info解析)
*/
@TableField("product_type")
private Integer productType;
/**
* 营销人员ID(ext_info解析)
*/
@TableField("sale_user_id")
private Integer saleUserId;
/**
* 插入数据时间
*/
@TableField("insert_time")
private LocalDateTime insertTime;
/**
* 数据更新时间
*/
@TableField("modify_time")
private LocalDateTime modifyTime;
public Integer getOrderId() {
return orderId;
}
public void setOrderId(Integer orderId) {
this.orderId = orderId;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public Integer getOrderDay() {
return orderDay;
}
public void setOrderDay(Integer orderDay) {
this.orderDay = orderDay;
}
public BigDecimal getCurrentPrice() {
return currentPrice;
}
public void setCurrentPrice(BigDecimal currentPrice) {
this.currentPrice = currentPrice;
}
public Integer getOrderState() {
return orderState;
}
public void setOrderState(Integer orderState) {
this.orderState = orderState;
}
public Integer getPayStatus() {
return payStatus;
}
public void setPayStatus(Integer payStatus) {
this.payStatus = payStatus;
}
public BigDecimal getOriginalPrice() {
return originalPrice;
}
public void setOriginalPrice(BigDecimal originalPrice) {
this.originalPrice = originalPrice;
}
public Integer getIsOpen() {
return isOpen;
}
public void setIsOpen(Integer isOpen) {
this.isOpen = isOpen;
}
public BigDecimal getReceivedAmount() {
return receivedAmount;
}
public void setReceivedAmount(BigDecimal receivedAmount) {
this.receivedAmount = receivedAmount;
}
public LocalDateTime getCreateTime() {
return createTime;
}
public void setCreateTime(LocalDateTime createTime) {
this.createTime = createTime;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getUmId() {
return umId;
}
public void setUmId(String umId) {
this.umId = umId;
}
public String getBatchId() {
return batchId;
}
public void setBatchId(String batchId) {
this.batchId = batchId;
}
public String getSku() {
return sku;
}
public void setSku(String sku) {
this.sku = sku;
}
public Integer getChannel() {
return channel;
}
public void setChannel(Integer channel) {
this.channel = channel;
}
public Integer getDepartmentId() {
return departmentId;
}
public void setDepartmentId(Integer departmentId) {
this.departmentId = departmentId;
}
public LocalDateTime getOpenTime() {
return openTime;
}
public void setOpenTime(LocalDateTime openTime) {
this.openTime = openTime;
}
public LocalDateTime getSuspendTime() {
return suspendTime;
}
public void setSuspendTime(LocalDateTime suspendTime) {
this.suspendTime = suspendTime;
}
public String getSuspendRemark() {
return suspendRemark;
}
public void setSuspendRemark(String suspendRemark) {
this.suspendRemark = suspendRemark;
}
public Integer getRemainingDay() {
return remainingDay;
}
public void setRemainingDay(Integer remainingDay) {
this.remainingDay = remainingDay;
}
public LocalDateTime getReceivedAmountTime() {
return receivedAmountTime;
}
public void setReceivedAmountTime(LocalDateTime receivedAmountTime) {
this.receivedAmountTime = receivedAmountTime;
}
public Integer getStopType() {
return stopType;
}
public void setStopType(Integer stopType) {
this.stopType = stopType;
}
public LocalDateTime getStopTime() {
return stopTime;
}
public void setStopTime(LocalDateTime stopTime) {
this.stopTime = stopTime;
}
public LocalDateTime getOrderTime() {
return orderTime;
}
public void setOrderTime(LocalDateTime orderTime) {
this.orderTime = orderTime;
}
public String getExtInfo() {
return extInfo;
}
public void setExtInfo(String extInfo) {
this.extInfo = extInfo;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public LocalDateTime getUpdateTime() {
return updateTime;
}
public void setUpdateTime(LocalDateTime updateTime) {
this.updateTime = updateTime;
}
public String getActivityName() {
return activityName;
}
public void setActivityName(String activityName) {
this.activityName = activityName;
}
public Boolean getHasPdf() {
return hasPdf;
}
public void setHasPdf(Boolean hasPdf) {
this.hasPdf = hasPdf;
}
public Boolean getCanSign() {
return canSign;
}
public void setCanSign(Boolean canSign) {
this.canSign = canSign;
}
public Integer getProductId() {
return productId;
}
public void setProductId(Integer productId) {
this.productId = productId;
}
public Integer getProductType() {
return productType;
}
public void setProductType(Integer productType) {
this.productType = productType;
}
public Integer getSaleUserId() {
return saleUserId;
}
public void setSaleUserId(Integer saleUserId) {
this.saleUserId = saleUserId;
}
public LocalDateTime getInsertTime() {
return insertTime;
}
public void setInsertTime(LocalDateTime insertTime) {
this.insertTime = insertTime;
}
public LocalDateTime getModifyTime() {
return modifyTime;
}
public void setModifyTime(LocalDateTime modifyTime) {
this.modifyTime = modifyTime;
}
@Override
public String toString() {
return "AppOrder{" +
"orderId=" + orderId +
", productName='" + productName + '\'' +
", orderDay=" + orderDay +
", currentPrice=" + currentPrice +
", orderState=" + orderState +
", payStatus=" + payStatus +
", originalPrice=" + originalPrice +
", isOpen=" + isOpen +
", receivedAmount=" + receivedAmount +
", createTime=" + createTime +
", userId=" + userId +
", mobile='" + mobile + '\'' +
", umId='" + umId + '\'' +
", batchId='" + batchId + '\'' +
", sku='" + sku + '\'' +
", channel=" + channel +
", departmentId=" + departmentId +
", openTime=" + openTime +
", suspendTime=" + suspendTime +
", suspendRemark='" + suspendRemark + '\'' +
", remainingDay=" + remainingDay +
", receivedAmountTime=" + receivedAmountTime +
", stopType=" + stopType +
", stopTime=" + stopTime +
", orderTime=" + orderTime +
", extInfo='" + extInfo + '\'' +
", remark='" + remark + '\'' +
", updateTime=" + updateTime +
", activityName='" + activityName + '\'' +
", hasPdf=" + hasPdf +
", canSign=" + canSign +
", productId=" + productId +
", productType=" + productType +
", saleUserId=" + saleUserId +
", insertTime=" + insertTime +
", modifyTime=" + modifyTime +
'}';
}
}

View File

@ -1,4 +1,4 @@
package com.syzb.app.entity; package com.syzb.business.entity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
@ -9,7 +9,7 @@ import java.io.Serializable;
* B端C端关系表 * B端C端关系表
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-10-29 * @since 2024-10-29
*/ */
public class AppRels implements Serializable { public class AppRels implements Serializable {

View File

@ -0,0 +1,112 @@
package com.syzb.business.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.time.LocalDateTime;
public class ModuleUser implements Serializable {
@TableId("id")
private Integer id;
@TableField("user_id")
private Integer userId;
@TableField("module_id")
private Integer moduleId;
@TableField("end_time")
private LocalDateTime endTime;
@TableField("create_time")
private LocalDateTime createTime;
@TableField("update_time")
private LocalDateTime updateTime;
@TableField("insert_time")
private LocalDateTime insertTime;
@TableField("modify_time")
private LocalDateTime modifyTime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public Integer getModuleId() {
return moduleId;
}
public void setModuleId(Integer moduleId) {
this.moduleId = moduleId;
}
public LocalDateTime getEndTime() {
return endTime;
}
public void setEndTime(LocalDateTime endTime) {
this.endTime = endTime;
}
public LocalDateTime getCreateTime() {
return createTime;
}
public void setCreateTime(LocalDateTime createTime) {
this.createTime = createTime;
}
public LocalDateTime getUpdateTime() {
return updateTime;
}
public void setUpdateTime(LocalDateTime updateTime) {
this.updateTime = updateTime;
}
public LocalDateTime getInsertTime() {
return insertTime;
}
public void setInsertTime(LocalDateTime insertTime) {
this.insertTime = insertTime;
}
public LocalDateTime getModifyTime() {
return modifyTime;
}
public void setModifyTime(LocalDateTime modifyTime) {
this.modifyTime = modifyTime;
}
@Override
public String toString() {
return "ModuleUser{" +
"id=" + id +
", userId=" + userId +
", moduleId=" + moduleId +
", endTime=" + endTime +
", createTime=" + createTime +
", updateTime=" + updateTime +
", insertTime=" + insertTime +
", modifyTime=" + modifyTime +
'}';
}
}

View File

@ -1,15 +1,15 @@
package com.syzb.app.mapper; package com.syzb.business.mapper;
import com.syzb.app.entity.AppOrder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.syzb.business.entity.AppOrder;
/** /**
* <p> * <p>
* C端订单 Mapper 接口 * 订单 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-11-07 * @since 2025-02-21
*/ */
public interface AppOrderMapper extends BaseMapper<AppOrder> { public interface AppOrderMapper extends BaseMapper<AppOrder> {

View File

@ -1,14 +1,14 @@
package com.syzb.app.mapper; package com.syzb.business.mapper;
import com.syzb.app.entity.AppRels;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.syzb.business.entity.AppRels;
/** /**
* <p> * <p>
* B端C端关系表 Mapper 接口 * B端C端关系表 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-10-29 * @since 2024-10-29
*/ */
public interface AppRelsMapper extends BaseMapper<AppRels> { public interface AppRelsMapper extends BaseMapper<AppRels> {

View File

@ -0,0 +1,16 @@
package com.syzb.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.syzb.business.entity.ModuleUser;
/**
* <p>
* 权限用户表 Mapper 接口
* </p>
*
* @author helloSyzb
* @since 2025-02-21
*/
public interface ModuleUserMapper extends BaseMapper<ModuleUser> {
}

View File

@ -0,0 +1,39 @@
package com.syzb.business.schedule;
import com.syzb.business.service.BusinessDataService;
import com.syzb.common.config.cache.CacheKey;
import com.syzb.common.service.CacheService;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;
@Component
public class BusinessTask {
@Resource
private CacheService cacheService;
@Resource
private BusinessDataService businessDataService;
@Scheduled(cron = "${cron.syncOrder}")
public void syncOrder() {
cacheService.lock(CacheKey.LockKey.SYNC_ORDER,
0, TimeUnit.SECONDS,
30, TimeUnit.SECONDS,
businessDataService::syncOrder
);
}
@Scheduled(cron = "${cron.syncModuleUser}")
public void syncModuleUser() {
cacheService.lock(CacheKey.LockKey.SYNC_MODULE_USER,
0, TimeUnit.SECONDS,
30, TimeUnit.SECONDS,
businessDataService::syncModuleUser
);
}
}

View File

@ -35,6 +35,8 @@ public class BusinessApiService {
private String getOrderListUrl = "/order/getAllBatchOrderListByPage"; private String getOrderListUrl = "/order/getAllBatchOrderListByPage";
private String getModuleUserListUrl = "/order/getUserModuleListByPage";
private String authorizationDeptId = "16"; private String authorizationDeptId = "16";
private String authorizationKey = "56e670eea5ff3a1aebbc02820e908ceb56e670eea5ff3a1aebbc02820e908ceb"; private String authorizationKey = "56e670eea5ff3a1aebbc02820e908ceb56e670eea5ff3a1aebbc02820e908ceb";
@ -73,12 +75,15 @@ public class BusinessApiService {
public List<BusinessOrderVO> getOrderList(LocalDateTime startTime, LocalDateTime endTime) { public List<BusinessOrderVO> getOrderList(LocalDateTime startTime, LocalDateTime endTime) {
List<BusinessOrderVO> result = new ArrayList<>(); List<BusinessOrderVO> result = new ArrayList<>();
String startTimeStr = LocalDateTimeUtil.format(startTime, DatePattern.NORM_DATETIME_PATTERN); String startTimeStr = LocalDateTimeUtil.format(startTime, DatePattern.NORM_DATETIME_FORMATTER);
String endTimeStr = LocalDateTimeUtil.format(endTime, DatePattern.NORM_DATETIME_PATTERN); String endTimeStr = LocalDateTimeUtil.format(endTime, DatePattern.NORM_DATETIME_FORMATTER);
Integer currentPage = 1; Integer currentPage = 1;
Integer pageSize = 100; Integer pageSize = 100;
while (true) { while (true) {
BusinessOrderExtVO extVO = getOrderList(startTimeStr, endTimeStr, currentPage, pageSize); BusinessOrderExtVO extVO = getOrderList(startTimeStr, endTimeStr, currentPage, pageSize);
if (extVO == null || extVO.getData() == null) {
break;
}
result.addAll(extVO.getData()); result.addAll(extVO.getData());
if (extVO.getData().size() < pageSize || result.size() >= extVO.getTotal()) { if (extVO.getData().size() < pageSize || result.size() >= extVO.getTotal()) {
break; break;
@ -88,7 +93,7 @@ public class BusinessApiService {
return result; return result;
} }
public BusinessOrderExtVO getOrderList(String startTime, String endTime, Integer currentPage, Integer pageSize) { private BusinessOrderExtVO getOrderList(String startTime, String endTime, Integer currentPage, Integer pageSize) {
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params.put("currentPage", currentPage); params.put("currentPage", currentPage);
params.put("pageSize", pageSize); params.put("pageSize", pageSize);
@ -98,6 +103,37 @@ public class BusinessApiService {
return vo.getData(); return vo.getData();
} }
public List<BusinessModuleUserVO> getModuleUserList(Integer moduleId, LocalDateTime startTime, LocalDateTime endTime) {
List<BusinessModuleUserVO> result = new ArrayList<>();
String startTimeStr = LocalDateTimeUtil.format(startTime, DatePattern.NORM_DATETIME_FORMATTER);
String endTimeStr = LocalDateTimeUtil.format(endTime, DatePattern.NORM_DATETIME_FORMATTER);
Integer currentPage = 1;
Integer pageSize = 100;
while (true) {
BusinessModuleUserExtVO extVO = getModuleUserList(moduleId, startTimeStr, endTimeStr, currentPage, pageSize);
if (extVO == null || extVO.getData() == null) {
break;
}
result.addAll(extVO.getData());
if (extVO.getData().size() < pageSize || result.size() >= extVO.getTotal()) {
break;
}
currentPage++;
}
return result;
}
private BusinessModuleUserExtVO getModuleUserList(Integer moduleId, String startTime, String endTime, Integer currentPage, Integer pageSize) {
Map<String, Object> params = new HashMap<>();
params.put("moduleId", moduleId);
params.put("currentPage", currentPage);
params.put("pageSize", pageSize);
params.put("updateStartTime", startTime);
params.put("updateEndTime", endTime);
BusinessModuleUserRspVO vo = post(getModuleUserListUrl, params, BusinessModuleUserRspVO.class);
return vo.getData();
}
public static void main(String[] args) { public static void main(String[] args) {
BusinessApiService service = new BusinessApiService(); BusinessApiService service = new BusinessApiService();
// BusinessLoginVO loginVO = service.loginByUserName("sz545138", "Abc@123"); // BusinessLoginVO loginVO = service.loginByUserName("sz545138", "Abc@123");
@ -106,8 +142,10 @@ public class BusinessApiService {
// BusinessUserVO userVO = service.getUser(token); // BusinessUserVO userVO = service.getUser(token);
// System.out.println(JSONUtil.toJsonStr(userVO)); // System.out.println(JSONUtil.toJsonStr(userVO));
// service.getModuleList(userVO.getUserId().toString()); // service.getModuleList(userVO.getUserId().toString());
List<BusinessOrderVO> orderList = service.getOrderList(LocalDate.now().withDayOfYear(1).atStartOfDay(), LocalDateTime.now()); // List<BusinessOrderVO> orderList = service.getOrderList(LocalDate.now().withDayOfYear(1).atStartOfDay(), LocalDateTime.now());
System.out.println(JSONUtil.toJsonStr(orderList)); // System.out.println(JSONUtil.toJsonStr(orderList));
List<BusinessModuleUserVO> moduleUserList = service.getModuleUserList(1000, LocalDate.now().withDayOfYear(1).atStartOfDay(), LocalDateTime.now());
System.out.println(JSONUtil.toJsonStr(moduleUserList));
} }
private <T extends BusinessVO> T post(String url, Map<String, Object> params, Class<T> type) { private <T extends BusinessVO> T post(String url, Map<String, Object> params, Class<T> type) {

View File

@ -0,0 +1,218 @@
package com.syzb.business.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.syzb.business.entity.AppOrder;
import com.syzb.business.entity.ModuleUser;
import com.syzb.business.mapper.AppOrderMapper;
import com.syzb.business.mapper.ModuleUserMapper;
import com.syzb.business.vo.BusinessModuleUserVO;
import com.syzb.business.vo.BusinessOrderVO;
import com.syzb.common.constant.IsOrNot;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
@Service
public class BusinessDataService {
private LocalDateTime INIT_SYNC_TIME = LocalDateTime.of(2025, 1, 1, 0, 0, 0);
@Resource
private BusinessApiService businessApiService;
@Resource
private AppOrderMapper appOrderMapper;
@Resource
private ModuleUserMapper moduleUserMapper;
@Transactional(rollbackFor = Exception.class)
public void syncOrder() {
QueryWrapper<AppOrder> wrapper = Wrappers.<AppOrder>query()
.select("max(update_time) as update_time");
AppOrder appOrder = appOrderMapper.selectOne(wrapper);
LocalDateTime startTime = INIT_SYNC_TIME;
if (appOrder != null && appOrder.getUpdateTime() != null) {
startTime = appOrder.getUpdateTime();
}
LocalDateTime endTime = LocalDateTime.now();
List<BusinessOrderVO> orderList = businessApiService.getOrderList(startTime, endTime);
if (CollUtil.isNotEmpty(orderList)) {
for (BusinessOrderVO order : orderList) {
Integer orderId = order.getOrderId();
AppOrder existOrder = appOrderMapper.selectById(orderId);
if (existOrder == null) {
appOrderMapper.insert(convertOrder(order, true));
} else {
AppOrder updateOrder = convertOrder(order, false);
if (!isEquals(existOrder, updateOrder)) {
appOrderMapper.updateById(updateOrder);
}
}
}
}
}
@Transactional(rollbackFor = Exception.class)
public void syncModuleUser() {
QueryWrapper<ModuleUser> wrapper = Wrappers.<ModuleUser>query()
.select("max(update_time) as update_time");
ModuleUser moduleUser = moduleUserMapper.selectOne(wrapper);
LocalDateTime startTime = INIT_SYNC_TIME;
if (moduleUser != null && moduleUser.getUpdateTime() != null) {
startTime = moduleUser.getUpdateTime();
}
LocalDateTime endTime = LocalDateTime.now();
Set<Integer> moduleIds = getModuleIds();
for (Integer moduleId : moduleIds) {
List<BusinessModuleUserVO> moduleUserList = businessApiService.getModuleUserList(moduleId, startTime, endTime);
if (CollUtil.isNotEmpty(moduleUserList)) {
for (BusinessModuleUserVO moduleUserVO : moduleUserList) {
Integer id = moduleUserVO.getId();
ModuleUser existModuleUser = moduleUserMapper.selectById(id);
if (existModuleUser == null) {
moduleUserMapper.insert(convertModuleUser(moduleUserVO, true));
} else {
ModuleUser updateModuleUser = convertModuleUser(moduleUserVO, false);
if (!isEquals(existModuleUser, updateModuleUser)) {
moduleUserMapper.updateById(updateModuleUser);
}
}
}
}
}
}
private Set<Integer> getModuleIds() {
// TODO
Set<Integer> set = new HashSet<>();
set.add(1000);
return set;
}
private AppOrder convertOrder(BusinessOrderVO order, boolean isNew) {
AppOrder appOrder = new AppOrder();
appOrder.setOrderId(order.getOrderId());
appOrder.setProductName(order.getProductName());
appOrder.setOrderDay(order.getOrderDay());
appOrder.setCurrentPrice(order.getCurrentPrice());
appOrder.setOrderState(order.getOrderState());
appOrder.setPayStatus(order.getReceivedAmount() == null || order.getReceivedAmount().compareTo(BigDecimal.ZERO) == 0 ? IsOrNot.NOT.value : IsOrNot.IS.value);
appOrder.setOriginalPrice(order.getOriginalPrice());
appOrder.setIsOpen(order.getIsOpen());
appOrder.setReceivedAmount(order.getReceivedAmount());
appOrder.setCreateTime(LocalDateTimeUtil.parse(order.getCreateTime(), DatePattern.NORM_DATETIME_FORMATTER));
appOrder.setUserId(order.getUserId().toString());
appOrder.setMobile(order.getMobile());
appOrder.setUmId(order.getUmId());
appOrder.setBatchId(order.getBatchId());
appOrder.setSku(order.getSku());
appOrder.setChannel(order.getChannel());
appOrder.setDepartmentId(order.getDepartmentId());
appOrder.setOpenTime(LocalDateTimeUtil.parse(order.getOpenTime(), DatePattern.NORM_DATETIME_FORMATTER));
appOrder.setSuspendTime(LocalDateTimeUtil.parse(order.getSuspendTime(), DatePattern.NORM_DATETIME_FORMATTER));
appOrder.setSuspendRemark(order.getSuspendRemark());
appOrder.setRemainingDay(order.getRemainingDay());
appOrder.setReceivedAmountTime(LocalDateTimeUtil.parse(order.getReceivedAmountTime(), DatePattern.NORM_DATETIME_FORMATTER));
appOrder.setStopType(order.getStopType());
appOrder.setStopTime(LocalDateTimeUtil.parse(order.getStopTime(), DatePattern.NORM_DATETIME_FORMATTER));
appOrder.setOrderTime(LocalDateTimeUtil.parse(order.getOrderTime(), DatePattern.NORM_DATETIME_FORMATTER));
appOrder.setExtInfo(order.getExtInfo());
appOrder.setRemark(order.getRemark());
appOrder.setUpdateTime(LocalDateTimeUtil.parse(order.getUpdateTime(), DatePattern.NORM_DATETIME_FORMATTER));
appOrder.setActivityName(order.getActivityName());
appOrder.setHasPdf(order.getHasPdf());
appOrder.setCanSign(order.getCanSign());
if (StrUtil.isNotBlank(order.getExtInfo())) {
JSONObject jsonObject = JSONObject.parseObject(order.getExtInfo());
appOrder.setProductId(jsonObject.getInteger("productId"));
appOrder.setProductType(jsonObject.getInteger("productType"));
appOrder.setSaleUserId(jsonObject.getInteger("saleUserId"));
}
if (isNew) {
appOrder.setInsertTime(LocalDateTime.now());
} else {
appOrder.setModifyTime(LocalDateTime.now());
}
return appOrder;
}
private ModuleUser convertModuleUser(BusinessModuleUserVO moduleUserVO, boolean isNew) {
ModuleUser moduleUser = new ModuleUser();
moduleUser.setId(moduleUserVO.getId());
moduleUser.setUserId(moduleUserVO.getUserId());
moduleUser.setModuleId(moduleUserVO.getModuleId());
moduleUser.setEndTime(LocalDateTimeUtil.parse(moduleUserVO.getEndTime(), DatePattern.NORM_DATETIME_FORMATTER));
moduleUser.setCreateTime(LocalDateTimeUtil.parse(moduleUserVO.getCreateTime(), DatePattern.NORM_DATETIME_FORMATTER));
moduleUser.setUpdateTime(LocalDateTimeUtil.parse(moduleUserVO.getUpdateTime(), DatePattern.NORM_DATETIME_FORMATTER));
if (isNew) {
moduleUser.setInsertTime(LocalDateTime.now());
} else {
moduleUser.setModifyTime(LocalDateTime.now());
}
return moduleUser;
}
private boolean isEquals(AppOrder a, AppOrder b) {
return Objects.equals(a.getOrderId(), b.getOrderId())
&& Objects.equals(a.getProductName(), b.getProductName())
&& Objects.equals(a.getOrderDay(), b.getOrderDay())
&& isEquals(a.getCurrentPrice(), b.getCurrentPrice())
&& Objects.equals(a.getOrderState(), b.getOrderState())
&& isEquals(a.getOriginalPrice(), b.getOriginalPrice())
&& Objects.equals(a.getIsOpen(), b.getIsOpen())
&& isEquals(a.getReceivedAmount(), b.getReceivedAmount())
&& Objects.equals(a.getCreateTime(), b.getCreateTime())
&& Objects.equals(a.getUserId(), b.getUserId())
&& Objects.equals(a.getMobile(), b.getMobile())
&& Objects.equals(a.getUmId(), b.getUmId())
&& Objects.equals(a.getBatchId(), b.getBatchId())
&& Objects.equals(a.getSku(), b.getSku())
&& Objects.equals(a.getChannel(), b.getChannel())
&& Objects.equals(a.getDepartmentId(), b.getDepartmentId())
&& Objects.equals(a.getOpenTime(), b.getOpenTime())
&& Objects.equals(a.getSuspendTime(), b.getSuspendTime())
&& Objects.equals(a.getSuspendRemark(), b.getSuspendRemark())
&& Objects.equals(a.getRemainingDay(), b.getRemainingDay())
&& Objects.equals(a.getReceivedAmountTime(), b.getReceivedAmountTime())
&& Objects.equals(a.getStopType(), b.getStopType())
&& Objects.equals(a.getStopTime(), b.getStopTime())
&& Objects.equals(a.getOrderTime(), b.getOrderTime())
&& Objects.equals(a.getExtInfo(), b.getExtInfo())
&& Objects.equals(a.getRemark(), b.getRemark())
&& Objects.equals(a.getUpdateTime(), b.getUpdateTime())
&& Objects.equals(a.getActivityName(), b.getActivityName())
&& Objects.equals(a.getHasPdf(), b.getHasPdf())
&& Objects.equals(a.getCanSign(), b.getCanSign())
&& Objects.equals(a.getProductId(), b.getProductId())
&& Objects.equals(a.getProductType(), b.getProductType())
&& Objects.equals(a.getSaleUserId(), b.getSaleUserId());
}
private boolean isEquals(ModuleUser a, ModuleUser b) {
return Objects.equals(a.getId(), b.getId())
&& Objects.equals(a.getUserId(), b.getUserId())
&& Objects.equals(a.getModuleId(), b.getModuleId())
&& Objects.equals(a.getEndTime(), b.getEndTime())
&& Objects.equals(a.getCreateTime(), b.getCreateTime())
&& Objects.equals(a.getUpdateTime(), b.getUpdateTime());
}
private boolean isEquals(BigDecimal a, BigDecimal b) {
return a == null ? b == null : a.compareTo(b) == 0;
}
}

View File

@ -1,20 +1,18 @@
package com.syzb.app.service; package com.syzb.business.service;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.syzb.app.constants.AppOrderStatus;
import com.syzb.app.entity.AppOrder;
import com.syzb.app.mapper.AppOrderMapper;
import com.syzb.app.vo.OrderStatCollect;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;
import com.syzb.business.entity.AppOrder;
import com.syzb.business.mapper.AppOrderMapper;
import com.syzb.business.vo.order.OrderStatCollect;
import com.syzb.common.constant.IsOrNot; import com.syzb.common.constant.IsOrNot;
import com.syzb.common.constant.ProductType; import com.syzb.common.constant.ProductType;
import com.google.common.collect.HashBasedTable; import com.syzb.video.vo.statistic.ProductSaleVO;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Table;
import com.syzb.video.vo.statistic.VideoLiveProductSaleVO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -29,45 +27,32 @@ public class OrderQueryService {
@Resource @Resource
private AppOrderMapper appOrderMapper; private AppOrderMapper appOrderMapper;
/* public OrderStatCollect queryOrderCollect(Integer productId, ProductType productType) {
* 订单状态 新订单180已开通220已停用/已退款90已过期80已取消70关闭权限但未退款230 return queryOrderCollect(productId, null, productType);
* 已支付包含: 已开通220已停用/已退款90已过期80关闭权限但未退款230
* 未支付包含: 新订单180已取消70
*/
public static final Set<Integer> PAID_STATUS = ImmutableSet.of(AppOrderStatus.OPENED.value, AppOrderStatus.REFUNDED.value, AppOrderStatus.EXPIRED.value, AppOrderStatus.CLOSED_UN_REFUNDED.value);
public static final Set<Integer> UNPAID_STATUS = ImmutableSet.of(AppOrderStatus.NEW.value, AppOrderStatus.CANCELED.value);
public static final String PAID_STATUS_STR = PAID_STATUS.stream().map(String::valueOf).collect(Collectors.joining(","));
public static final String UNPAID_STATUS_STR = UNPAID_STATUS.stream().map(String::valueOf).collect(Collectors.joining(","));
public OrderStatCollect queryOrderCollect(Integer videoId, ProductType productType) {
return queryOrderCollect(videoId, null, productType);
} }
public OrderStatCollect queryOrderCollect(Collection<Integer> videoIds, ProductType productType) { public OrderStatCollect queryOrderCollect(Collection<Integer> productIds, ProductType productType) {
return queryOrderCollect(null, videoIds, productType); return queryOrderCollect(null, productIds, productType);
} }
/** /**
* 查询订单支付状态Map * 查询订单支付状态Map
* *
* @param videoId 视频ID * @param productId 产品ID
* @param productType 产品类型 * @param productType 产品类型
* @return 订单支付状态Map key: 是否支付 value: 订单统计 * @return 订单支付状态Map key: 是否支付 value: 订单统计
*/ */
public OrderStatCollect queryOrderCollect(Integer videoId, Collection<Integer> videoIds, @NotNull ProductType productType) { public OrderStatCollect queryOrderCollect(Integer productId, Collection<Integer> productIds, @NotNull ProductType productType) {
// 计算订单汇总 // 计算订单汇总
QueryWrapper<AppOrder> orderWrapper = Wrappers.<AppOrder>query() QueryWrapper<AppOrder> orderWrapper = Wrappers.<AppOrder>query()
// 用sale_user_id保存订单数量 // 用sale_user_id保存订单数量
.select("pay_status", .select("pay_status",
"ifnull(count(1), 0) as sale_user_id", "ifnull(count(1), 0) as sale_user_id",
"IFNULL(SUM(total_price), 0) AS total_price", "IFNULL(SUM(original_price), 0) AS original_price",
"IFNULL(SUM(pay_total), 0) AS pay_total", "IFNULL(SUM(received_amount), 0) AS received_amount",
"IFNULL(COUNT(distinct user_name), 0) AS product_type") "IFNULL(COUNT(distinct user_id), 0) AS product_type")
.eq(videoId != null, "video_id", videoId) .eq(productId != null, "product_id", productId)
.in(CollUtil.isNotEmpty(videoIds), "video_id", videoIds) .in(CollUtil.isNotEmpty(productIds), "product_id", productIds)
.eq("product_type", productType.value) .eq("product_type", productType.value)
.isNotNull("pay_status") .isNotNull("pay_status")
.groupBy("pay_status WITH ROLLUP"); .groupBy("pay_status WITH ROLLUP");
@ -77,15 +62,15 @@ public class OrderQueryService {
for (AppOrder order : orders) { for (AppOrder order : orders) {
if (IsOrNot.IS.value.equals(order.getPayStatus())) { if (IsOrNot.IS.value.equals(order.getPayStatus())) {
result.setPayCount(order.getSaleUserId()); result.setPayCount(order.getSaleUserId());
result.setPayAmount(order.getPayTotal()); result.setPayAmount(order.getReceivedAmount());
result.setPayUserCount(order.getProductType()); result.setPayUserCount(order.getProductType());
} else if (IsOrNot.NOT.value.equals(order.getPayStatus())) { } else if (IsOrNot.NOT.value.equals(order.getPayStatus())) {
result.setUnPayCount(order.getSaleUserId()); result.setUnPayCount(order.getSaleUserId());
result.setUnPayAmount(order.getTotalPrice()); result.setUnPayAmount(order.getOriginalPrice());
result.setUnPayUserCount(order.getProductType()); result.setUnPayUserCount(order.getProductType());
} else if (order.getPayStatus() == null) { } else if (order.getPayStatus() == null) {
result.setCount(order.getSaleUserId()); result.setCount(order.getSaleUserId());
result.setOrderAmount(order.getTotalPrice()); result.setOrderAmount(order.getOriginalPrice());
result.setUserCount(order.getProductType()); result.setUserCount(order.getProductType());
} }
} }
@ -100,10 +85,10 @@ public class OrderQueryService {
*/ */
public Set<String> querySubUserBySaleUser(Integer saleUserId) { public Set<String> querySubUserBySaleUser(Integer saleUserId) {
QueryWrapper<AppOrder> wrapper = Wrappers.<AppOrder>query() QueryWrapper<AppOrder> wrapper = Wrappers.<AppOrder>query()
.select("distinct user_name") .select("distinct user_id")
.eq(saleUserId != null && saleUserId != 0, "sale_user_id", saleUserId); .eq(saleUserId != null && saleUserId != 0, "sale_user_id", saleUserId);
List<AppOrder> orders = appOrderMapper.selectList(wrapper); List<AppOrder> orders = appOrderMapper.selectList(wrapper);
return orders.stream().map(AppOrder::getUserName).collect(Collectors.toSet()); return orders.stream().map(order -> order.getUserId().toString()).collect(Collectors.toSet());
} }
/** /**
@ -118,17 +103,17 @@ public class OrderQueryService {
} }
QueryWrapper<AppOrder> wrapper = Wrappers.<AppOrder>query() QueryWrapper<AppOrder> wrapper = Wrappers.<AppOrder>query()
.select("user_name", .select("user_name",
"IFNULL(SUM(total_price), 0) AS total_price", "IFNULL(SUM(original_price), 0) AS original_price",
"IFNULL(SUM(pay_total), 0) AS pay_total", "IFNULL(SUM(received_amount), 0) AS received_amount",
"IFNULL(COUNT(1), 0) AS sale_user_id") "IFNULL(COUNT(1), 0) AS sale_user_id")
.in("user_name", userIds) .in("user_name", userIds)
.eq("pay_status", IsOrNot.IS.value) .eq("pay_status", IsOrNot.IS.value)
.groupBy("user_name"); .groupBy("user_name");
List<AppOrder> orders = appOrderMapper.selectList(wrapper); List<AppOrder> orders = appOrderMapper.selectList(wrapper);
return orders.stream().collect(Collectors.toMap(AppOrder::getUserName, order -> { return orders.stream().collect(Collectors.toMap(order -> order.getUserId().toString(), order -> {
OrderStatCollect orderStatCollect = new OrderStatCollect(); OrderStatCollect orderStatCollect = new OrderStatCollect();
orderStatCollect.setOrderAmount(order.getTotalPrice()); orderStatCollect.setOrderAmount(order.getOriginalPrice());
orderStatCollect.setPayAmount(order.getPayTotal()); orderStatCollect.setPayAmount(order.getReceivedAmount());
orderStatCollect.setPayCount(order.getSaleUserId()); orderStatCollect.setPayCount(order.getSaleUserId());
return orderStatCollect; return orderStatCollect;
})); }));
@ -138,9 +123,9 @@ public class OrderQueryService {
* 查询某位用户各产品的订阅订单 * 查询某位用户各产品的订阅订单
* *
* @param userId 用户ID * @param userId 用户ID
* @return Table row:产品类型 column:视频ID value:订单列表 * @return Table row:产品类型 column:产品ID value:订单列表
*/ */
public Table<Integer, Integer, List<AppOrder>> queryUserSignVideoOrders(String userId) { public Table<Integer, Integer, List<AppOrder>> queryUserSignProductOrders(String userId) {
Table<Integer, Integer, List<AppOrder>> table = HashBasedTable.create(); Table<Integer, Integer, List<AppOrder>> table = HashBasedTable.create();
if (StrUtil.isEmpty(userId)) { if (StrUtil.isEmpty(userId)) {
return table; return table;
@ -151,11 +136,11 @@ public class OrderQueryService {
List<AppOrder> orders = appOrderMapper.selectList(wrapper); List<AppOrder> orders = appOrderMapper.selectList(wrapper);
for (AppOrder order : orders) { for (AppOrder order : orders) {
Integer productType = order.getProductType(); Integer productType = order.getProductType();
Integer videoId = order.getVideoId(); Integer productId = order.getProductId();
List<AppOrder> list = table.get(productType, videoId); List<AppOrder> list = table.get(productType, productId);
if (list == null) { if (list == null) {
list = CollUtil.newArrayList(); list = CollUtil.newArrayList();
table.put(productType, videoId, list); table.put(productType, productId, list);
} }
list.add(order); list.add(order);
} }
@ -163,19 +148,19 @@ public class OrderQueryService {
} }
/** /**
* 查询某些视频的订单周期汇总数据 * 查询某些产品的订单周期汇总数据
* *
* @param productType 产品类型 * @param productType 产品类型
* @param videoIds 视频ID集合 * @param productIds 产品ID集合
* @param format 周期格式 * @param format 周期格式
* @return 订单周期汇总Map key:周期 value:订单统计 * @return 订单周期汇总Map key:周期 value:订单统计
*/ */
public Map<String, OrderStatCollect> queryCycleOrderCollect(@NotNull ProductType productType, Set<Integer> videoIds, CycleFormat format) { public Map<String, OrderStatCollect> queryCycleOrderCollect(@NotNull ProductType productType, Set<Integer> productIds, CycleFormat format) {
QueryWrapper<AppOrder> totalWrapper = Wrappers.<AppOrder>query() QueryWrapper<AppOrder> totalWrapper = Wrappers.<AppOrder>query()
.select("DATE_FORMAT(order_time, '" + format + "') AS order_id", .select("DATE_FORMAT(order_time, '" + format + "') AS product_name",
"IFNULL(SUM(total_price), 0) AS total_price", "IFNULL(SUM(original_price), 0) AS original_price",
"IFNULL(COUNT(1), 0) AS sale_user_id") "IFNULL(COUNT(1), 0) AS sale_user_id")
.in(CollUtil.isNotEmpty(videoIds), "video_id", videoIds) .in(CollUtil.isNotEmpty(productIds), "product_id", productIds)
.eq(productType != null, "product_type", productType.value) .eq(productType != null, "product_type", productType.value)
.groupBy("DATE_FORMAT(order_time, '" + format.format + "')") .groupBy("DATE_FORMAT(order_time, '" + format.format + "')")
// 必须用last替代orderBy不然MyBatis会移除格式里面的空格 // 必须用last替代orderBy不然MyBatis会移除格式里面的空格
@ -183,25 +168,25 @@ public class OrderQueryService {
List<AppOrder> totalOrders = appOrderMapper.selectList(totalWrapper); List<AppOrder> totalOrders = appOrderMapper.selectList(totalWrapper);
QueryWrapper<AppOrder> paidWrapper = Wrappers.<AppOrder>query() QueryWrapper<AppOrder> paidWrapper = Wrappers.<AppOrder>query()
.select("DATE_FORMAT(order_time, '" + format.format + "') AS order_id", .select("DATE_FORMAT(order_time, '" + format.format + "') AS product_name",
"IFNULL(SUM(pay_total), 0) AS pay_total", "IFNULL(SUM(received_amount), 0) AS received_amount",
"IFNULL(COUNT(1), 0) AS sale_user_id") "IFNULL(COUNT(1), 0) AS sale_user_id")
.in(CollUtil.isNotEmpty(videoIds), "video_id", videoIds) .in(CollUtil.isNotEmpty(productIds), "product_id", productIds)
.eq(productType != null, "product_type", productType.value) .eq(productType != null, "product_type", productType.value)
.eq("pay_status", IsOrNot.IS.value) .eq("pay_status", IsOrNot.IS.value)
.groupBy("DATE_FORMAT(order_time, '" + format.format + "')") .groupBy("DATE_FORMAT(order_time, '" + format.format + "')")
// 必须用last替代orderBy不然MyBatis会移除格式里面的空格 // 必须用last替代orderBy不然MyBatis会移除格式里面的空格
.last("ORDER BY DATE_FORMAT(order_time, '" + format.format + "')"); .last("ORDER BY DATE_FORMAT(order_time, '" + format.format + "')");
List<AppOrder> paidOrders = appOrderMapper.selectList(paidWrapper); List<AppOrder> paidOrders = appOrderMapper.selectList(paidWrapper);
Map<String, AppOrder> paidOrderMap = paidOrders.stream().collect(Collectors.toMap(AppOrder::getOrderId, order -> order)); Map<Integer, AppOrder> paidOrderMap = paidOrders.stream().collect(Collectors.toMap(AppOrder::getOrderId, order -> order));
return totalOrders.stream().collect(Collectors.toMap(AppOrder::getOrderId, order -> { return totalOrders.stream().collect(Collectors.toMap(AppOrder::getProductName, order -> {
OrderStatCollect orderStatCollect = new OrderStatCollect(); OrderStatCollect orderStatCollect = new OrderStatCollect();
orderStatCollect.setCount(order.getSaleUserId()); orderStatCollect.setCount(order.getSaleUserId());
orderStatCollect.setOrderAmount(order.getTotalPrice()); orderStatCollect.setOrderAmount(order.getOriginalPrice());
AppOrder paidOrder = paidOrderMap.get(order.getOrderId()); AppOrder paidOrder = paidOrderMap.get(order.getOrderId());
if (paidOrder != null) { if (paidOrder != null) {
orderStatCollect.setPayCount(paidOrder.getSaleUserId()); orderStatCollect.setPayCount(paidOrder.getSaleUserId());
orderStatCollect.setPayAmount(paidOrder.getPayTotal()); orderStatCollect.setPayAmount(paidOrder.getReceivedAmount());
orderStatCollect.setUnPayCount(order.getSaleUserId() - paidOrder.getSaleUserId()); orderStatCollect.setUnPayCount(order.getSaleUserId() - paidOrder.getSaleUserId());
} else { } else {
orderStatCollect.setPayCount(0); orderStatCollect.setPayCount(0);
@ -213,25 +198,25 @@ public class OrderQueryService {
} }
/** /**
* 查询某些视频的订单统计数据 * 查询某些产品的订单统计数据
*/ */
public Map<Integer, OrderStatCollect> queryVideoOrderCollect(ProductType productType, Set<Integer> videoIds) { public Map<Integer, OrderStatCollect> queryProductOrderCollect(ProductType productType, Set<Integer> productIds) {
QueryWrapper<AppOrder> wrapper = Wrappers.<AppOrder>query() QueryWrapper<AppOrder> wrapper = Wrappers.<AppOrder>query()
.select("video_id", .select("product_id",
"IFNULL(SUM(total_price), 0) AS total_price", "IFNULL(SUM(original_price), 0) AS original_price",
"IFNULL(SUM(pay_total), 0) AS pay_total", "IFNULL(SUM(received_amount), 0) AS received_amount",
"IFNULL(COUNT(1), 0) AS sale_user_id") "IFNULL(COUNT(1), 0) AS sale_user_id")
.in(CollUtil.isNotEmpty(videoIds), "video_id", videoIds) .in(CollUtil.isNotEmpty(productIds), "product_id", productIds)
.eq(productType != null, "product_type", productType.value) .eq(productType != null, "product_type", productType.value)
.eq("pay_status", IsOrNot.IS.value) .eq("pay_status", IsOrNot.IS.value)
.groupBy("video_id"); .groupBy("product_id");
List<AppOrder> orders = appOrderMapper.selectList(wrapper); List<AppOrder> orders = appOrderMapper.selectList(wrapper);
return orders.stream().collect(Collectors.toMap(AppOrder::getVideoId, order -> { return orders.stream().collect(Collectors.toMap(AppOrder::getProductId, order -> {
OrderStatCollect orderStatCollect = new OrderStatCollect(); OrderStatCollect orderStatCollect = new OrderStatCollect();
orderStatCollect.setCount(order.getSaleUserId()); orderStatCollect.setCount(order.getSaleUserId());
orderStatCollect.setPayCount(order.getSaleUserId()); orderStatCollect.setPayCount(order.getSaleUserId());
orderStatCollect.setOrderAmount(order.getTotalPrice()); orderStatCollect.setOrderAmount(order.getOriginalPrice());
orderStatCollect.setPayAmount(order.getPayTotal()); orderStatCollect.setPayAmount(order.getReceivedAmount());
return orderStatCollect; return orderStatCollect;
})); }));
} }
@ -239,34 +224,34 @@ public class OrderQueryService {
/** /**
* 查询直播间产品销量 * 查询直播间产品销量
*/ */
public List<VideoLiveProductSaleVO> queryVideoLiveProductSale(Integer videoId) { public List<ProductSaleVO> queryVideoLiveProductSale(Integer productId) {
QueryWrapper<AppOrder> wrapper = Wrappers.<AppOrder>query() QueryWrapper<AppOrder> wrapper = Wrappers.<AppOrder>query()
.select("product_id, product_name", .select("product_id, product_name",
"IFNULL(SUM(pay_total), 0) AS pay_total", "IFNULL(SUM(received_amount), 0) AS received_amount",
"IFNULL(COUNT(1), 0) AS sale_user_id") "IFNULL(COUNT(1), 0) AS sale_user_id")
.eq("video_id", videoId) .eq("product_id", productId)
.eq("product_type", ProductType.VIDEO_SINGLE.value) .eq("product_type", ProductType.VIDEO_SINGLE.value)
.eq("pay_status", IsOrNot.IS.value) .eq("pay_status", IsOrNot.IS.value)
.groupBy("product_id", "product_name") .groupBy("product_id", "product_name")
.orderByDesc("IFNULL(COUNT(1), 0)"); .orderByDesc("IFNULL(COUNT(1), 0)");
List<AppOrder> orders = appOrderMapper.selectList(wrapper); List<AppOrder> orders = appOrderMapper.selectList(wrapper);
return orders.stream().map(order -> new VideoLiveProductSaleVO(order.getProductName(), order.getSaleUserId(), order.getPayTotal())).collect(Collectors.toList()); return orders.stream().map(order -> new ProductSaleVO(order.getProductName(), order.getSaleUserId(), order.getReceivedAmount())).collect(Collectors.toList());
} }
/** /**
* 查询某视频的订单用户订阅的产品名称 * 查询某产品的订单用户订阅的产品名称
* *
* @param videoId 视频ID * @param productId 产品ID
* @param payStatus 支付状态 * @param payStatus 支付状态
* @return 用户订阅的产品名称Map key: 用户名 value: 产品名称列表 * @return 用户订阅的产品名称Map key: 用户名 value: 产品名称列表
*/ */
public Map<String, List<String>> calUserOrderName(Integer videoId, Integer payStatus) { public Map<String, List<String>> calUserOrderName(Integer productId, Integer payStatus) {
LambdaQueryWrapper<AppOrder> wrapper = Wrappers.<AppOrder>lambdaQuery() LambdaQueryWrapper<AppOrder> wrapper = Wrappers.<AppOrder>lambdaQuery()
.eq(AppOrder::getVideoId, videoId) .eq(AppOrder::getProductId, productId)
.in(payStatus != null, AppOrder::getPayStatus, payStatus); .isNotNull(IsOrNot.IS.value.equals(payStatus), AppOrder::getReceivedAmount);
List<AppOrder> orderList = appOrderMapper.selectList(wrapper); List<AppOrder> orderList = appOrderMapper.selectList(wrapper);
return orderList.stream() return orderList.stream()
.collect(Collectors.groupingBy(AppOrder::getUserName, .collect(Collectors.groupingBy(order -> order.getUserId().toString(),
Collectors.mapping(AppOrder::getProductName, Collectors.toList()))); Collectors.mapping(AppOrder::getProductName, Collectors.toList())));
} }

View File

@ -0,0 +1,46 @@
package com.syzb.business.vo;
import java.util.List;
public class BusinessModuleUserExtVO {
private Integer currentPage;
private Integer pageSize;
private Integer total;
private List<BusinessModuleUserVO> data;
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getTotal() {
return total;
}
public void setTotal(Integer total) {
this.total = total;
}
public List<BusinessModuleUserVO> getData() {
return data;
}
public void setData(List<BusinessModuleUserVO> data) {
this.data = data;
}
}

View File

@ -0,0 +1,14 @@
package com.syzb.business.vo;
public class BusinessModuleUserRspVO extends BusinessVO {
private BusinessModuleUserExtVO data;
public BusinessModuleUserExtVO getData() {
return data;
}
public void setData(BusinessModuleUserExtVO data) {
this.data = data;
}
}

View File

@ -0,0 +1,65 @@
package com.syzb.business.vo;
public class BusinessModuleUserVO {
private Integer id;
private Integer userId;
private Integer moduleId;
private String endTime;
private String createTime;
private String updateTime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public Integer getModuleId() {
return moduleId;
}
public void setModuleId(Integer moduleId) {
this.moduleId = moduleId;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUpdateTime() {
return updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
}

View File

@ -1,4 +1,4 @@
package com.syzb.app.vo; package com.syzb.business.vo.order;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;

View File

@ -46,6 +46,8 @@ public class CacheKey {
public static final String SAVE_MESSAGE_READ = "save_message_read"; public static final String SAVE_MESSAGE_READ = "save_message_read";
public static final String SAVE_GROUP_USER = "save_group_user"; public static final String SAVE_GROUP_USER = "save_group_user";
public static final String COLLECT_GROUP_DATA = "collect_group_data"; public static final String COLLECT_GROUP_DATA = "collect_group_data";
public static final String SYNC_ORDER = "sync_order";
public static final String SYNC_MODULE_USER = "sync_module_user";
} }
// 消息主题 // 消息主题

View File

@ -4,7 +4,6 @@ import com.syzb.common.handler.BizException;
import com.syzb.common.result.ResponseStatus; import com.syzb.common.result.ResponseStatus;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import java.util.Optional; import java.util.Optional;
public enum ProductType { public enum ProductType {

View File

@ -27,7 +27,7 @@ import java.util.List;
* 广告位 前端控制器 * 广告位 前端控制器
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-08-30 * @since 2022-08-30
*/ */
@Api(tags = "广告位") @Api(tags = "广告位")

View File

@ -26,7 +26,7 @@ import java.util.List;
* 推荐位 前端控制器 * 推荐位 前端控制器
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-08-30 * @since 2022-08-30
*/ */
@Api(tags = "推荐位") @Api(tags = "推荐位")

View File

@ -18,7 +18,7 @@ import java.util.List;
* 前端控制器 * 前端控制器
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2021-11-23 * @since 2021-11-23
*/ */
@Api(tags = "定时任务查询") @Api(tags = "定时任务查询")

View File

@ -1,5 +1,6 @@
package com.syzb.common.controller; package com.syzb.common.controller;
import com.google.common.base.Charsets;
import com.syzb.common.annotation.Auth; import com.syzb.common.annotation.Auth;
import com.syzb.common.constant.AccessRole; import com.syzb.common.constant.AccessRole;
import com.syzb.common.query.KeywordPageQuery; import com.syzb.common.query.KeywordPageQuery;
@ -10,7 +11,6 @@ import com.syzb.common.result.Pager;
import com.syzb.common.service.SensitiveWordService; import com.syzb.common.service.SensitiveWordService;
import com.syzb.common.vo.BackendUserVO; import com.syzb.common.vo.BackendUserVO;
import com.syzb.common.vo.SensitiveWordVO; import com.syzb.common.vo.SensitiveWordVO;
import com.google.common.base.Charsets;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
@ -33,7 +33,7 @@ import java.util.stream.Collectors;
* 前端控制器 * 前端控制器
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-08-30 * @since 2022-08-30
*/ */
@Api(tags = "敏感词") @Api(tags = "敏感词")

View File

@ -26,7 +26,7 @@ import javax.validation.constraints.NotNull;
* 标签表 前端控制器 * 标签表 前端控制器
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-08-30 * @since 2022-08-30
*/ */
@Api(tags = "通用标签") @Api(tags = "通用标签")

View File

@ -12,7 +12,7 @@ import java.time.LocalDateTime;
* 广告位 * 广告位
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-09-26 * @since 2022-09-26
*/ */
public class Advert implements Serializable { public class Advert implements Serializable {

View File

@ -10,7 +10,7 @@ import java.io.Serializable;
* *
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2021-09-24 * @since 2021-09-24
*/ */
public class BlackStock implements Serializable { public class BlackStock implements Serializable {

View File

@ -12,7 +12,7 @@ import java.time.LocalDateTime;
* 评论表 * 评论表
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-04-25 * @since 2024-04-25
*/ */
public class Comment implements Serializable { public class Comment implements Serializable {

View File

@ -12,7 +12,7 @@ import java.time.LocalDateTime;
* 评论禁言表 * 评论禁言表
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-04-25 * @since 2024-04-25
*/ */
public class CommentBlack implements Serializable { public class CommentBlack implements Serializable {

View File

@ -12,7 +12,7 @@ import java.time.LocalDateTime;
* 业务操作日志表 * 业务操作日志表
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-04-26 * @since 2022-04-26
*/ */
public class OperationLog implements Serializable { public class OperationLog implements Serializable {

View File

@ -13,7 +13,7 @@ import java.time.LocalDateTime;
* 推荐位 * 推荐位
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-09-29 * @since 2022-09-29
*/ */
public class Recommend implements IProduct, Serializable { public class Recommend implements IProduct, Serializable {

View File

@ -12,7 +12,7 @@ import java.time.LocalDateTime;
* 风险等级配置 * 风险等级配置
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-11-09 * @since 2022-11-09
*/ */
public class RiskLevel implements Serializable { public class RiskLevel implements Serializable {

View File

@ -11,7 +11,7 @@ import java.io.Serializable;
* 系统安全设置 * 系统安全设置
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2023-08-16 * @since 2023-08-16
*/ */
public class SafetyConfig implements Serializable { public class SafetyConfig implements Serializable {

View File

@ -15,7 +15,7 @@ import java.time.LocalDateTime;
* *
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-11-09 * @since 2022-11-09
*/ */
public class ScheduleLog implements Serializable { public class ScheduleLog implements Serializable {

View File

@ -12,7 +12,7 @@ import java.time.LocalDateTime;
* *
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-08-26 * @since 2022-08-26
*/ */
public class SensitiveWord implements Serializable { public class SensitiveWord implements Serializable {

View File

@ -9,7 +9,7 @@ import java.io.Serializable;
* *
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-07-02 * @since 2024-07-02
*/ */
public class ShortUrl implements Serializable { public class ShortUrl implements Serializable {

View File

@ -12,7 +12,7 @@ import java.time.LocalDateTime;
* 标签表 * 标签表
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-10-11 * @since 2022-10-11
*/ */
public class Tag implements Serializable { public class Tag implements Serializable {

View File

@ -12,7 +12,7 @@ import java.time.LocalDateTime;
* 用户行为日志 * 用户行为日志
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2023-11-27 * @since 2023-11-27
*/ */
public class UserBehaviorLog implements Serializable { public class UserBehaviorLog implements Serializable {

View File

@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.auth0.jwt.exceptions.JWTVerificationException; import com.auth0.jwt.exceptions.JWTVerificationException;
import com.auth0.jwt.exceptions.TokenExpiredException; import com.auth0.jwt.exceptions.TokenExpiredException;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;
import com.syzb.common.config.cache.CacheKey; import com.syzb.common.config.cache.CacheKey;
import com.syzb.common.constant.ClientType; import com.syzb.common.constant.ClientType;
import com.syzb.common.handler.BizException; import com.syzb.common.handler.BizException;
@ -14,8 +16,6 @@ import com.syzb.common.util.RequestIdUtil;
import com.syzb.common.util.logger.LoggerUtil; import com.syzb.common.util.logger.LoggerUtil;
import com.syzb.common.vo.BackendUserVO; import com.syzb.common.vo.BackendUserVO;
import com.syzb.common.vo.FrontUserVO; import com.syzb.common.vo.FrontUserVO;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;
import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;

View File

@ -29,7 +29,7 @@ public class CodeGenerator {
DataSourceConfig dsc = new DataSourceConfig DataSourceConfig dsc = new DataSourceConfig
.Builder("jdbc:mysql://47.96.178.171:3306/advisor_video?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8", .Builder("jdbc:mysql://47.96.178.171:3306/advisor_video?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8",
"eason", "eason",
"mysql2025easonzhu") "mysql2025helloSyzb")
// .Builder("jdbc:mysql://172.16.9.44:3306/db_crm_dyqh?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false", // .Builder("jdbc:mysql://172.16.9.44:3306/db_crm_dyqh?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false",
// "taf", // "taf",
// "taf2015") // "taf2015")
@ -44,7 +44,7 @@ public class CodeGenerator {
GlobalConfig globalConfig = new GlobalConfig GlobalConfig globalConfig = new GlobalConfig
.Builder() .Builder()
.outputDir(projectPath + "/src/main/java") .outputDir(projectPath + "/src/main/java")
.author("easonzhu") .author("helloSyzb")
.openDir(false) .openDir(false)
.fileOverride() .fileOverride()
.build(); .build();
@ -52,7 +52,7 @@ public class CodeGenerator {
// 包配置 // 包配置
PackageConfig packageConfig = new PackageConfig PackageConfig packageConfig = new PackageConfig
.Builder() .Builder()
.parent("com") .parent("com.syzb")
.moduleName(moduleName) .moduleName(moduleName)
.build(); .build();

View File

@ -1,9 +1,9 @@
package com.syzb.common.handler; package com.syzb.common.handler;
import com.google.common.collect.ImmutableSet;
import com.syzb.common.result.CommonResult; import com.syzb.common.result.CommonResult;
import com.syzb.common.result.ResponseStatus; import com.syzb.common.result.ResponseStatus;
import com.syzb.common.util.logger.LoggerUtil; import com.syzb.common.util.logger.LoggerUtil;
import com.google.common.collect.ImmutableSet;
import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.converter.HttpMessageNotReadableException; import org.springframework.http.converter.HttpMessageNotReadableException;

View File

@ -1,13 +1,13 @@
package com.syzb.common.interceptor; package com.syzb.common.interceptor;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.google.common.collect.ImmutableSet;
import com.syzb.common.constant.ProductType; import com.syzb.common.constant.ProductType;
import com.syzb.common.filter.AuthFilter; import com.syzb.common.filter.AuthFilter;
import com.syzb.common.handler.BizException; import com.syzb.common.handler.BizException;
import com.syzb.common.result.ResponseStatus; import com.syzb.common.result.ResponseStatus;
import com.syzb.common.vo.BackendUserVO; import com.syzb.common.vo.BackendUserVO;
import com.syzb.common.vo.FrontUserVO; import com.syzb.common.vo.FrontUserVO;
import com.google.common.collect.ImmutableSet;
import org.springframework.messaging.Message; import org.springframework.messaging.Message;
import org.springframework.messaging.simp.stomp.StompHeaderAccessor; import org.springframework.messaging.simp.stomp.StompHeaderAccessor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;

View File

@ -1,12 +1,12 @@
package com.syzb.common.interceptor; package com.syzb.common.interceptor;
import com.hazelcast.map.IMap;
import com.syzb.common.constant.IsOrNot; import com.syzb.common.constant.IsOrNot;
import com.syzb.common.constant.ProductType; import com.syzb.common.constant.ProductType;
import com.syzb.common.entity.OnlineUser; import com.syzb.common.entity.OnlineUser;
import com.syzb.common.vo.FrontUserVO; import com.syzb.common.vo.FrontUserVO;
import com.syzb.group.service.common.GroupCacheService; import com.syzb.group.service.common.GroupCacheService;
import com.syzb.group.service.common.GroupMessageService; import com.syzb.group.service.common.GroupMessageService;
import com.hazelcast.map.IMap;
import com.syzb.video.helper.VideoHelper; import com.syzb.video.helper.VideoHelper;
import com.syzb.video.service.common.VideoCacheService; import com.syzb.video.service.common.VideoCacheService;
import com.syzb.video.service.common.VideoMessageService; import com.syzb.video.service.common.VideoMessageService;

View File

@ -8,7 +8,7 @@ import com.syzb.common.entity.Advert;
* 广告位 Mapper 接口 * 广告位 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-09-26 * @since 2022-09-26
*/ */
public interface AdvertMapper extends BaseMapper<Advert> { public interface AdvertMapper extends BaseMapper<Advert> {

View File

@ -8,7 +8,7 @@ import com.syzb.common.entity.CommentBlack;
* 评论禁言表 Mapper 接口 * 评论禁言表 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-04-25 * @since 2024-04-25
*/ */
public interface CommentBlackMapper extends BaseMapper<CommentBlack> { public interface CommentBlackMapper extends BaseMapper<CommentBlack> {

View File

@ -15,7 +15,7 @@ import java.util.List;
* 评论表 Mapper 接口 * 评论表 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-04-25 * @since 2024-04-25
*/ */
public interface CommentMapper extends BaseMapper<Comment> { public interface CommentMapper extends BaseMapper<Comment> {

View File

@ -8,7 +8,7 @@ import com.syzb.common.entity.OperationLog;
* 业务操作日志表 Mapper 接口 * 业务操作日志表 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-04-26 * @since 2022-04-26
*/ */
public interface OperationLogMapper extends BaseMapper<OperationLog> { public interface OperationLogMapper extends BaseMapper<OperationLog> {

View File

@ -8,7 +8,7 @@ import com.syzb.common.entity.Recommend;
* 推荐位 Mapper 接口 * 推荐位 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-09-29 * @since 2022-09-29
*/ */
public interface RecommendMapper extends BaseMapper<Recommend> { public interface RecommendMapper extends BaseMapper<Recommend> {

View File

@ -8,7 +8,7 @@ import com.syzb.common.entity.RiskLevel;
* 风险等级配置 Mapper 接口 * 风险等级配置 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2021-10-11 * @since 2021-10-11
*/ */
public interface RiskLevelMapper extends BaseMapper<RiskLevel> { public interface RiskLevelMapper extends BaseMapper<RiskLevel> {

View File

@ -8,7 +8,7 @@ import com.syzb.common.entity.ScheduleLog;
* Mapper 接口 * Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2021-11-23 * @since 2021-11-23
*/ */
public interface ScheduleLogMapper extends BaseMapper<ScheduleLog> { public interface ScheduleLogMapper extends BaseMapper<ScheduleLog> {

View File

@ -8,7 +8,7 @@ import com.syzb.common.entity.SensitiveWord;
* 敏感词 Mapper 接口 * 敏感词 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-08-26 * @since 2022-08-26
*/ */
public interface SensitiveWordMapper extends BaseMapper<SensitiveWord> { public interface SensitiveWordMapper extends BaseMapper<SensitiveWord> {

View File

@ -8,7 +8,7 @@ import com.syzb.common.entity.ShortUrl;
* Mapper 接口 * Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-07-02 * @since 2024-07-02
*/ */
public interface ShortUrlMapper extends BaseMapper<ShortUrl> { public interface ShortUrlMapper extends BaseMapper<ShortUrl> {

View File

@ -8,7 +8,7 @@ import com.syzb.common.entity.Tag;
* 标签表 Mapper 接口 * 标签表 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-08-26 * @since 2022-08-26
*/ */
public interface TagMapper extends BaseMapper<Tag> { public interface TagMapper extends BaseMapper<Tag> {

View File

@ -4,6 +4,10 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import com.google.common.collect.Table;
import com.hazelcast.core.HazelcastInstance;
import com.syzb.common.config.cache.CacheKey; import com.syzb.common.config.cache.CacheKey;
import com.syzb.common.constant.AdvertPosition; import com.syzb.common.constant.AdvertPosition;
import com.syzb.common.constant.ProductType; import com.syzb.common.constant.ProductType;
@ -20,10 +24,6 @@ import com.syzb.common.vo.AdvertAppVO;
import com.syzb.common.vo.AdvertVO; import com.syzb.common.vo.AdvertVO;
import com.syzb.common.vo.BackendUserVO; import com.syzb.common.vo.BackendUserVO;
import com.syzb.common.vo.MergeProductInfoVO; import com.syzb.common.vo.MergeProductInfoVO;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import com.google.common.collect.Table;
import com.hazelcast.core.HazelcastInstance;
import com.syzb.rbac.entity.UserDept; import com.syzb.rbac.entity.UserDept;
import com.syzb.rbac.service.UserService; import com.syzb.rbac.service.UserService;
import org.springframework.dao.DuplicateKeyException; import org.springframework.dao.DuplicateKeyException;

View File

@ -120,7 +120,7 @@ public class AppUserService {
} }
List<BusinessModuleVO> moduleList = businessApiService.getModuleList(frontUserVO.getUserId()); List<BusinessModuleVO> moduleList = businessApiService.getModuleList(frontUserVO.getUserId());
if (CollUtil.isNotEmpty(moduleList)) { if (CollUtil.isNotEmpty(moduleList)) {
String now = LocalDateTimeUtil.format(LocalDateTimeUtil.now(), DatePattern.NORM_DATETIME_PATTERN); String now = LocalDateTimeUtil.format(LocalDateTimeUtil.now(), DatePattern.NORM_DATETIME_FORMATTER);
for (BusinessModuleVO moduleVO : moduleList) { for (BusinessModuleVO moduleVO : moduleList) {
if (auths.contains(moduleVO.getModuleId().toString()) && moduleVO.getEndTime().compareTo(now) > 0) { if (auths.contains(moduleVO.getModuleId().toString()) && moduleVO.getEndTime().compareTo(now) > 0) {
return new AuthResultVO(true); return new AuthResultVO(true);

View File

@ -1,15 +1,15 @@
package com.syzb.common.service; package com.syzb.common.service;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.syzb.common.config.cache.CacheKey;
import com.syzb.common.entity.ScheduleLog;
import com.syzb.common.handler.BizException;
import com.syzb.common.util.logger.LoggerUtil;
import com.hazelcast.collection.ISet; import com.hazelcast.collection.ISet;
import com.hazelcast.core.HazelcastInstance; import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.crdt.pncounter.PNCounter; import com.hazelcast.crdt.pncounter.PNCounter;
import com.hazelcast.instance.impl.HazelcastInstanceProxy; import com.hazelcast.instance.impl.HazelcastInstanceProxy;
import com.hazelcast.map.IMap; import com.hazelcast.map.IMap;
import com.syzb.common.config.cache.CacheKey;
import com.syzb.common.entity.ScheduleLog;
import com.syzb.common.handler.BizException;
import com.syzb.common.util.logger.LoggerUtil;
import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;

View File

@ -5,6 +5,9 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Table;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;
import com.syzb.common.constant.CommentBlackScope; import com.syzb.common.constant.CommentBlackScope;
import com.syzb.common.constant.CommentBlackStatus; import com.syzb.common.constant.CommentBlackStatus;
import com.syzb.common.constant.CommentBlackType; import com.syzb.common.constant.CommentBlackType;
@ -21,9 +24,6 @@ import com.syzb.common.util.logger.LoggerUtil;
import com.syzb.common.vo.BackendUserVO; import com.syzb.common.vo.BackendUserVO;
import com.syzb.common.vo.CommentBlackVO; import com.syzb.common.vo.CommentBlackVO;
import com.syzb.common.vo.MergeProductInfoVO; import com.syzb.common.vo.MergeProductInfoVO;
import com.google.common.collect.Table;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;
import com.syzb.rbac.entity.Dept; import com.syzb.rbac.entity.Dept;
import com.syzb.rbac.entity.UserDept; import com.syzb.rbac.entity.UserDept;
import com.syzb.rbac.service.DeptService; import com.syzb.rbac.service.DeptService;

View File

@ -1,12 +1,15 @@
package com.syzb.common.service; package com.syzb.common.service;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.syzb.advisor.entity.AdvisorBasic;
import com.syzb.advisor.service.AdvisorInfoService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Table;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;
import com.syzb.advisor.entity.AdvisorBasic;
import com.syzb.advisor.service.AdvisorInfoService;
import com.syzb.common.constant.CommentUserType; import com.syzb.common.constant.CommentUserType;
import com.syzb.common.constant.IsOrNot; import com.syzb.common.constant.IsOrNot;
import com.syzb.common.constant.OrderBy; import com.syzb.common.constant.OrderBy;
@ -21,9 +24,6 @@ import com.syzb.common.result.Pager;
import com.syzb.common.result.ResponseStatus; import com.syzb.common.result.ResponseStatus;
import com.syzb.common.util.CodecUtil; import com.syzb.common.util.CodecUtil;
import com.syzb.common.vo.*; import com.syzb.common.vo.*;
import com.google.common.collect.Table;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;
import com.syzb.rbac.entity.Dept; import com.syzb.rbac.entity.Dept;
import com.syzb.rbac.entity.UserDept; import com.syzb.rbac.entity.UserDept;
import com.syzb.rbac.service.DeptService; import com.syzb.rbac.service.DeptService;

View File

@ -1,5 +1,7 @@
package com.syzb.common.service; package com.syzb.common.service;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;
import com.syzb.advisor.entity.AdvisorBasic; import com.syzb.advisor.entity.AdvisorBasic;
import com.syzb.advisor.service.AdvisorInfoService; import com.syzb.advisor.service.AdvisorInfoService;
import com.syzb.advisor.vo.AdvisorInfoAppVO; import com.syzb.advisor.vo.AdvisorInfoAppVO;
@ -10,8 +12,6 @@ import com.syzb.common.vo.MergeProductInfoVO;
import com.syzb.course.query.IdAndSaleUserQuery; import com.syzb.course.query.IdAndSaleUserQuery;
import com.syzb.course.service.ShortVideoService; import com.syzb.course.service.ShortVideoService;
import com.syzb.course.vo.ShortVideoVO; import com.syzb.course.vo.ShortVideoVO;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;
import com.syzb.video.service.app.AppVideoColumnService; import com.syzb.video.service.app.AppVideoColumnService;
import com.syzb.video.service.app.AppVideoInfoService; import com.syzb.video.service.app.AppVideoInfoService;
import com.syzb.video.vo.column.VideoColumnAppVO; import com.syzb.video.vo.column.VideoColumnAppVO;

View File

@ -1,9 +1,12 @@
package com.syzb.common.service; package com.syzb.common.service;
import com.syzb.advisor.constant.AdvisorInfoStatus;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Table;
import com.hazelcast.core.HazelcastInstance;
import com.syzb.advisor.constant.AdvisorInfoStatus;
import com.syzb.common.config.cache.CacheKey; import com.syzb.common.config.cache.CacheKey;
import com.syzb.common.constant.ProductType; import com.syzb.common.constant.ProductType;
import com.syzb.common.constant.ThirdPartyProductStatus; import com.syzb.common.constant.ThirdPartyProductStatus;
@ -16,9 +19,6 @@ import com.syzb.common.result.ResponseStatus;
import com.syzb.common.vo.BackendUserVO; import com.syzb.common.vo.BackendUserVO;
import com.syzb.common.vo.MergeProductInfoVO; import com.syzb.common.vo.MergeProductInfoVO;
import com.syzb.common.vo.RecommendVO; import com.syzb.common.vo.RecommendVO;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Table;
import com.hazelcast.core.HazelcastInstance;
import com.syzb.rbac.entity.UserDept; import com.syzb.rbac.entity.UserDept;
import com.syzb.rbac.service.UserService; import com.syzb.rbac.service.UserService;
import org.springframework.dao.DuplicateKeyException; import org.springframework.dao.DuplicateKeyException;

View File

@ -33,7 +33,7 @@ import java.util.stream.Collectors;
* 服务类 * 服务类
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2022-08-30 * @since 2022-08-30
*/ */

View File

@ -1,11 +1,12 @@
package com.syzb.common.service; package com.syzb.common.service;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.syzb.advisor.service.AdvisorInfoService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hazelcast.core.HazelcastInstance;
import com.syzb.advisor.service.AdvisorInfoService;
import com.syzb.common.constant.IsActive; import com.syzb.common.constant.IsActive;
import com.syzb.common.constant.ProductType; import com.syzb.common.constant.ProductType;
import com.syzb.common.entity.Tag; import com.syzb.common.entity.Tag;
@ -19,7 +20,6 @@ import com.syzb.common.result.Pager;
import com.syzb.common.result.ResponseStatus; import com.syzb.common.result.ResponseStatus;
import com.syzb.common.vo.BackendUserVO; import com.syzb.common.vo.BackendUserVO;
import com.syzb.common.vo.TagVO; import com.syzb.common.vo.TagVO;
import com.hazelcast.core.HazelcastInstance;
import com.syzb.video.service.common.VideoCommonService; import com.syzb.video.service.common.VideoCommonService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;

View File

@ -3,6 +3,8 @@ package com.syzb.common.service;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;
import com.syzb.common.config.cache.CacheKey; import com.syzb.common.config.cache.CacheKey;
import com.syzb.common.entity.ShortUrl; import com.syzb.common.entity.ShortUrl;
import com.syzb.common.handler.BizException; import com.syzb.common.handler.BizException;
@ -10,8 +12,6 @@ import com.syzb.common.mapper.ShortUrlMapper;
import com.syzb.common.query.UrlResizeQuery; import com.syzb.common.query.UrlResizeQuery;
import com.syzb.common.result.ResponseStatus; import com.syzb.common.result.ResponseStatus;
import com.syzb.common.util.ShortUrlGenerator; import com.syzb.common.util.ShortUrlGenerator;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;

View File

@ -1,11 +1,11 @@
package com.syzb.common.state; package com.syzb.common.state;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;
import com.syzb.common.handler.BizException; import com.syzb.common.handler.BizException;
import com.syzb.common.result.ResponseStatus; import com.syzb.common.result.ResponseStatus;
import com.syzb.common.vo.BackendUserVO; import com.syzb.common.vo.BackendUserVO;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.List; import java.util.List;
@ -14,7 +14,7 @@ import java.util.Map;
/** /**
* 简单状态机 * 简单状态机
* *
* @author easonzhu * @author helloSyzb
* @since 2022-08-30 * @since 2022-08-30
*/ */
public class StateMachine<T> { public class StateMachine<T> {

View File

@ -13,7 +13,7 @@ import java.time.LocalDateTime;
* 课程表 * 课程表
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-08-15 * @since 2024-08-15
*/ */
public class Course implements Serializable { public class Course implements Serializable {

View File

@ -10,7 +10,7 @@ import java.time.LocalDateTime;
* 课程内容表 * 课程内容表
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-08-15 * @since 2024-08-15
*/ */
public class CourseContent implements Serializable { public class CourseContent implements Serializable {

View File

@ -13,7 +13,7 @@ import java.time.LocalDateTime;
* 甄选服务表 * 甄选服务表
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-08-30 * @since 2024-08-30
*/ */
public class CoursePackage implements Serializable { public class CoursePackage implements Serializable {

View File

@ -10,7 +10,7 @@ import java.time.LocalDateTime;
* 甄选服务内容表 * 甄选服务内容表
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-09-03 * @since 2024-09-03
*/ */
public class CoursePackageContent implements Serializable { public class CoursePackageContent implements Serializable {

View File

@ -9,7 +9,7 @@ import java.io.Serializable;
* 首页Tab表 * 首页Tab表
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-08-23 * @since 2024-08-23
*/ */
public class MainTab implements Serializable { public class MainTab implements Serializable {

View File

@ -12,7 +12,7 @@ import java.time.LocalDateTime;
* *
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-08-16 * @since 2024-08-16
*/ */
public class Page implements Serializable { public class Page implements Serializable {

View File

@ -12,7 +12,7 @@ import java.time.LocalDateTime;
* 合集表 * 合集表
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-08-15 * @since 2024-08-15
*/ */
public class Serial implements Serializable { public class Serial implements Serializable {

View File

@ -10,7 +10,7 @@ import java.time.LocalDateTime;
* 合集内容表 * 合集内容表
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-08-16 * @since 2024-08-16
*/ */
public class SerialContent implements Serializable { public class SerialContent implements Serializable {

View File

@ -12,7 +12,7 @@ import java.time.LocalDateTime;
* 短视频 * 短视频
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-08-21 * @since 2024-08-21
*/ */
public class ShortVideo implements Serializable { public class ShortVideo implements Serializable {

View File

@ -9,7 +9,7 @@ import java.io.Serializable;
* 短视频购物车商品 * 短视频购物车商品
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-08-21 * @since 2024-08-21
*/ */
public class ShortVideoCart implements Serializable { public class ShortVideoCart implements Serializable {

View File

@ -9,7 +9,7 @@ import java.io.Serializable;
* 短视频购物车点击 * 短视频购物车点击
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-10-14 * @since 2024-10-14
*/ */
public class ShortVideoCartClick implements Serializable { public class ShortVideoCartClick implements Serializable {

View File

@ -10,7 +10,7 @@ import java.time.LocalDateTime;
* 短视频点赞 * 短视频点赞
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-08-21 * @since 2024-08-21
*/ */
public class ShortVideoFavor implements Serializable { public class ShortVideoFavor implements Serializable {

View File

@ -9,7 +9,7 @@ import java.io.Serializable;
* 短视频营销表 * 短视频营销表
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-10-14 * @since 2024-10-14
*/ */
public class ShortVideoSale implements Serializable { public class ShortVideoSale implements Serializable {

View File

@ -10,7 +10,7 @@ import java.time.LocalDateTime;
* 短视频分享 * 短视频分享
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-09-03 * @since 2024-09-03
*/ */
public class ShortVideoShare implements Serializable { public class ShortVideoShare implements Serializable {

View File

@ -10,7 +10,7 @@ import java.time.LocalDateTime;
* 短视频观看 * 短视频观看
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-09-02 * @since 2024-09-02
*/ */
public class ShortVideoWatch implements Serializable { public class ShortVideoWatch implements Serializable {

View File

@ -11,7 +11,7 @@ import java.time.LocalDateTime;
* 企业微信表 * 企业微信表
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-08-30 * @since 2024-08-30
*/ */
public class WorkWeixin implements Serializable { public class WorkWeixin implements Serializable {

View File

@ -8,7 +8,7 @@ import com.syzb.course.entity.CourseContent;
* 课程内容表 Mapper 接口 * 课程内容表 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-08-15 * @since 2024-08-15
*/ */
public interface CourseContentMapper extends EasyBaseMapper<CourseContent> { public interface CourseContentMapper extends EasyBaseMapper<CourseContent> {

View File

@ -8,7 +8,7 @@ import com.syzb.course.entity.Course;
* 课程表 Mapper 接口 * 课程表 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-08-15 * @since 2024-08-15
*/ */
public interface CourseMapper extends BaseMapper<Course> { public interface CourseMapper extends BaseMapper<Course> {

View File

@ -8,7 +8,7 @@ import com.syzb.course.entity.CoursePackageContent;
* 甄选服务内容表 Mapper 接口 * 甄选服务内容表 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-09-03 * @since 2024-09-03
*/ */
public interface CoursePackageContentMapper extends EasyBaseMapper<CoursePackageContent> { public interface CoursePackageContentMapper extends EasyBaseMapper<CoursePackageContent> {

View File

@ -8,7 +8,7 @@ import com.syzb.course.entity.CoursePackage;
* 甄选服务表 Mapper 接口 * 甄选服务表 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-08-30 * @since 2024-08-30
*/ */
public interface CoursePackageMapper extends BaseMapper<CoursePackage> { public interface CoursePackageMapper extends BaseMapper<CoursePackage> {

View File

@ -8,7 +8,7 @@ import com.syzb.course.entity.MainTab;
* 首页Tab表 Mapper 接口 * 首页Tab表 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-08-23 * @since 2024-08-23
*/ */
public interface MainTabMapper extends EasyBaseMapper<MainTab> { public interface MainTabMapper extends EasyBaseMapper<MainTab> {

View File

@ -8,7 +8,7 @@ import com.syzb.course.entity.Page;
* Mapper 接口 * Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-08-16 * @since 2024-08-16
*/ */
public interface PageMapper extends BaseMapper<Page> { public interface PageMapper extends BaseMapper<Page> {

View File

@ -8,7 +8,7 @@ import com.syzb.course.entity.SerialContent;
* 合集内容表 Mapper 接口 * 合集内容表 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-08-16 * @since 2024-08-16
*/ */
public interface SerialContentMapper extends EasyBaseMapper<SerialContent> { public interface SerialContentMapper extends EasyBaseMapper<SerialContent> {

View File

@ -10,7 +10,7 @@ import org.apache.ibatis.annotations.Select;
* 合集表 Mapper 接口 * 合集表 Mapper 接口
* </p> * </p>
* *
* @author easonzhu * @author helloSyzb
* @since 2024-08-15 * @since 2024-08-15
*/ */
public interface SerialMapper extends BaseMapper<Serial> { public interface SerialMapper extends BaseMapper<Serial> {

Some files were not shown because too many files have changed in this diff Show More