diff --git a/pom.xml b/pom.xml index 7c4217ec..2f8fa236 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ 4.0 11.2.0.3 1.1.13 - 2.3.0 + 2.6 1.2.2 2.5 @@ -53,6 +53,26 @@ + + com.aliyun + dytnsapi20200217 + 2.9.0 + + + com.aliyun + tea-openapi + 0.3.6 + + + com.aliyun + tea-console + 0.0.1 + + + com.aliyun + tea-util + 0.2.23 + com.volcengine @@ -65,17 +85,17 @@ guava 19.0 - - com.amazonaws - aws-java-sdk - 1.11.274 - - - aws-java-sdk-simpleworkflow - com.amazonaws - - - + + + + + + + + + + + cn.afterturn easypoi-spring-boot-starter @@ -305,17 +325,17 @@ druid-spring-boot-starter ${druid.version} - - org.quartz-scheduler - quartz - ${quartz.version} - - - com.mchange - c3p0 - - - + + + + + + + + + + + commons-lang commons-lang diff --git a/src/main/java/com/sqx/common/utils/ApiAccessLimitUtil.java b/src/main/java/com/sqx/common/utils/ApiAccessLimitUtil.java index 8365d057..e6e5c944 100644 --- a/src/main/java/com/sqx/common/utils/ApiAccessLimitUtil.java +++ b/src/main/java/com/sqx/common/utils/ApiAccessLimitUtil.java @@ -1,6 +1,7 @@ package com.sqx.common.utils; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -114,8 +115,13 @@ public class ApiAccessLimitUtil { String redisKey = generateRedisKey(key, id); Object countObj = redisUtils.get(redisKey); if (countObj == null) { - // 根据不同时间周期设置过期时间并初始化访问次数为1 - long expireAt = calculateExpireAt(timeFormat); + long expireAt; + if (StrUtil.isBlank(timeFormat)) { + expireAt = count; + }else { + // 根据不同时间周期设置过期时间并初始化访问次数为1 + expireAt = calculateExpireAt(timeFormat); + } redisUtils.set(redisKey, 1, expireAt); return true; } @@ -127,6 +133,11 @@ public class ApiAccessLimitUtil { return false; } + public static void removeKey(String id, String key) { + String redisKey = generateRedisKey(key, id); + redisUtils.delete(redisKey); + } + public static T runFunAndCheckKey(Supplier supplier, String lockKey, Integer seconds) { try{ diff --git a/src/main/java/com/sqx/common/utils/PageUtils.java b/src/main/java/com/sqx/common/utils/PageUtils.java index 6e522c03..f00ff808 100644 --- a/src/main/java/com/sqx/common/utils/PageUtils.java +++ b/src/main/java/com/sqx/common/utils/PageUtils.java @@ -1,101 +1,120 @@ package com.sqx.common.utils; -import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.pagehelper.PageInfo; import java.io.Serializable; import java.util.List; /** * 分页工具类 - * */ public class PageUtils implements Serializable { - private static final long serialVersionUID = 1L; - /** - * 总记录数 - */ - private int totalCount; - /** - * 每页记录数 - */ - private int pageSize; - /** - * 总页数 - */ - private int totalPage; - /** - * 当前页数 - */ - private int currPage; - /** - * 列表数据 - */ - private List list; - - /** - * 分页 - * @param list 列表数据 - * @param totalCount 总记录数 - * @param pageSize 每页记录数 - * @param currPage 当前页数 - */ - public PageUtils(List list, int totalCount, int pageSize, int currPage) { - this.list = list; - this.totalCount = totalCount; - this.pageSize = pageSize; - this.currPage = currPage; - this.totalPage = (int)Math.ceil((double)totalCount/pageSize); - } + private static final long serialVersionUID = 1L; + /** + * 总记录数 + */ + private int totalCount; + /** + * 每页记录数 + */ + private int pageSize; + /** + * 总页数 + */ + private int totalPage; + /** + * 当前页数 + */ + private int currPage; + /** + * 列表数据 + */ + private List list; + private List records; - /** - * 分页 - */ - public PageUtils(IPage page) { - this.list = page.getRecords(); - this.totalCount = (int)page.getTotal(); - this.pageSize = (int)page.getSize(); - this.currPage = (int)page.getCurrent(); - this.totalPage = (int)page.getPages(); - } - public int getTotalCount() { - return totalCount; - } + public PageUtils() { + } - public void setTotalCount(int totalCount) { - this.totalCount = totalCount; - } + /** + * 分页 + * + * @param list 列表数据 + * @param totalCount 总记录数 + * @param pageSize 每页记录数 + * @param currPage 当前页数 + */ + public PageUtils(List list, int totalCount, int pageSize, int currPage) { + this.list = list; + this.totalCount = totalCount; + this.pageSize = pageSize; + this.currPage = currPage; + this.totalPage = (int) Math.ceil((double) totalCount / pageSize); + } - public int getPageSize() { - return pageSize; - } + public static PageUtils page(PageInfo page) { + return page(page,false); + } - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } + public static PageUtils page(PageInfo page, boolean isRecords) { + PageUtils pageUtils = new PageUtils(); + if (isRecords) { + pageUtils.records = page.getList(); + } else { + pageUtils.list = page.getList(); + } + pageUtils.totalCount = (int) page.getTotal(); + pageUtils.pageSize = page.getSize(); + pageUtils.currPage = page.getPageNum(); + pageUtils.totalPage = page.getPages(); + return pageUtils; + } - public int getTotalPage() { - return totalPage; - } + public int getTotalCount() { + return totalCount; + } - public void setTotalPage(int totalPage) { - this.totalPage = totalPage; - } + public void setTotalCount(int totalCount) { + this.totalCount = totalCount; + } - public int getCurrPage() { - return currPage; - } + public int getPageSize() { + return pageSize; + } - public void setCurrPage(int currPage) { - this.currPage = currPage; - } + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + } - public List getList() { - return list; - } + public int getTotalPage() { + return totalPage; + } - public void setList(List list) { - this.list = list; - } - + public void setTotalPage(int totalPage) { + this.totalPage = totalPage; + } + + public int getCurrPage() { + return currPage; + } + + public void setCurrPage(int currPage) { + this.currPage = currPage; + } + + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + + public List getRecords() { + return records; + } + + public void setRecords(List records) { + this.records = records; + } } diff --git a/src/main/java/com/sqx/common/utils/Query.java b/src/main/java/com/sqx/common/utils/Query.java deleted file mode 100644 index bbddb661..00000000 --- a/src/main/java/com/sqx/common/utils/Query.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.sqx.common.utils; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.metadata.OrderItem; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.sqx.common.xss.SQLFilter; -import org.apache.commons.lang.StringUtils; - -import java.util.Map; - -/** - * 查询参数 - * - */ -public class Query { - - public IPage getPage(Map params) { - return this.getPage(params, null, false); - } - - public IPage getPage(Map params, String defaultOrderField, boolean isAsc) { - //分页参数 - long curPage = 1; - long limit = 10; - - if(params.get(Constant.PAGE) != null){ - curPage = Long.parseLong(String.valueOf(params.get(Constant.PAGE))); - } - if(params.get(Constant.LIMIT) != null){ - limit = Long.parseLong(String.valueOf(params.get(Constant.LIMIT))); - } - - //分页对象 - Page page = new Page<>(curPage, limit); - - //分页参数 - params.put(Constant.PAGE, page); - - //排序字段 - //防止SQL注入(因为sidx、order是通过拼接SQL实现排序的,会有SQL注入风险) - String orderField = SQLFilter.sqlInject((String)params.get(Constant.ORDER_FIELD)); - String order = (String)params.get(Constant.ORDER); - - - //前端字段排序 - if(StringUtils.isNotEmpty(orderField) && StringUtils.isNotEmpty(order)){ - if(Constant.ASC.equalsIgnoreCase(order)) { - return page.addOrder(OrderItem.asc(orderField)); - }else { - return page.addOrder(OrderItem.desc(orderField)); - } - } - - //没有排序字段,则不排序 - if(StringUtils.isBlank(defaultOrderField)){ - return page; - } - - //默认排序 - if(isAsc) { - page.addOrder(OrderItem.asc(defaultOrderField)); - }else { - page.addOrder(OrderItem.desc(defaultOrderField)); - } - - return page; - } -} diff --git a/src/main/java/com/sqx/common/utils/SpringContextUtils.java b/src/main/java/com/sqx/common/utils/SpringContextUtils.java index 96a3976f..c92b97e5 100644 --- a/src/main/java/com/sqx/common/utils/SpringContextUtils.java +++ b/src/main/java/com/sqx/common/utils/SpringContextUtils.java @@ -23,6 +23,11 @@ public class SpringContextUtils implements ApplicationContextAware { return applicationContext.getBean(name); } + public static Object getSpringBean(Class clazz) { + return applicationContext == null ? null : applicationContext.getBean(clazz); + } + + public static T getBean(String name, Class requiredType) { return applicationContext.getBean(name, requiredType); } diff --git a/src/main/java/com/sqx/config/ShardingConfig.java b/src/main/java/com/sqx/config/ShardingConfig.java index 297a772f..7cc0f0b7 100644 --- a/src/main/java/com/sqx/config/ShardingConfig.java +++ b/src/main/java/com/sqx/config/ShardingConfig.java @@ -1,25 +1,31 @@ package com.sqx.config; +import com.sqx.modules.utils.InvitationCodeUtil; import com.sqx.sharding.MasterSlaveRules; import com.sqx.sharding.ShardingDataBase; +import com.sqx.sharding.StandardShardingStrategyConf; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import lombok.Data; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.apache.shardingsphere.api.config.masterslave.MasterSlaveRuleConfiguration; +import org.apache.shardingsphere.api.config.sharding.KeyGeneratorConfiguration; import org.apache.shardingsphere.api.config.sharding.ShardingRuleConfiguration; import org.apache.shardingsphere.api.config.sharding.TableRuleConfiguration; +import org.apache.shardingsphere.api.config.sharding.strategy.InlineShardingStrategyConfiguration; +import org.apache.shardingsphere.api.config.sharding.strategy.StandardShardingStrategyConfiguration; +import org.apache.shardingsphere.core.strategy.route.standard.StandardShardingStrategy; import org.apache.shardingsphere.shardingjdbc.api.ShardingDataSourceFactory; +import org.codehaus.groovy.util.StringUtil; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import javax.annotation.PostConstruct; import javax.sql.DataSource; import java.sql.SQLException; import java.util.*; -import java.util.stream.Collectors; /** @@ -31,6 +37,9 @@ import java.util.stream.Collectors; @ConfigurationProperties(prefix = "spring.shardingsphere") public class ShardingConfig { + @Value("${spring.profiles.active}") + private String activeProfile; + /** * 读取数据源信息 */ @@ -44,17 +53,56 @@ public class ShardingConfig { */ private String showSql; + /** + * 广播表 + */ +// private Set broadcastTables; + /** * 中心库的节点 */ private String centerTablesDataNode; - /** * 中心表,不进行分库操作 */ - private List centerTables; + private Set centerTables; + /** + * 区域库的节点 + */ + private String regionTablesDataNode; + + /** + * 区域表分库策略的字段 + */ + private String regionTablesShardingDatabaseColumn; + + /** + * 区域表分库的算法 + */ + private String regionTablesShardingDatabaseAlgorithm; + + /** + * 分库表,通过userId进行分库 + */ + private Set regionTables; + + + /** + * 区域表分库策略的字段 + */ + private String courseDetailsShardingDatabaseColumn; + + /** + * 区域表分库的算法 + */ + private String courseDetailsShardingDatabaseAlgorithm; + + /** + * 分库表,通过userId进行分库 + */ + private Set courseDetails; /** * 配置sharding-jdbc数据源 @@ -66,9 +114,18 @@ public class ShardingConfig { // 配置数据库主从 shardingRuleConfig.setMasterSlaveRuleConfigs(masterSlaveRuleConfigs()); + // 配置广播表 +// shardingRuleConfig.setBroadcastTables(broadcastTables); + // 配置表的切分策略 shardingRuleConfig.setTableRuleConfigs(addTableRuleConfigs()); + // 配置表绑定规则 + List> sets = new ArrayList<>(); + sets.add(regionTables); + shardingRuleConfig.setBindingTableGroups(bindingTableGroups(sets)); + + // 配置是否显示sql Properties props = new Properties(); props.put("sql.show", showSql); @@ -88,15 +145,30 @@ public class ShardingConfig { String.format(centerTablesDataNode, centerTable)); sets.add(tableRuleConfig); } - -// // 定义区域表的分库规则 + // 定义区域表的分库规则 + StandardShardingStrategyConfiguration databaseShardingStrategyConfig = new StandardShardingStrategyConfiguration( + regionTablesShardingDatabaseColumn, new StandardShardingStrategyConf()); // InlineShardingStrategyConfiguration databaseShardingStrategyConfig = new InlineShardingStrategyConfiguration( // regionTablesShardingDatabaseColumn, regionTablesShardingDatabaseAlgorithm); -// for (String regionTable : regionTables) { -// TableRuleConfiguration tableRuleConfig = new TableRuleConfiguration(regionTable, String.format(regionTablesDataNode, regionTable)); -// tableRuleConfig.setDatabaseShardingStrategyConfig(databaseShardingStrategyConfig); -// sets.add(tableRuleConfig); -// } + for (String regionTable : regionTables) { + TableRuleConfiguration tableRuleConfig = new TableRuleConfiguration(regionTable, String.format(regionTablesDataNode, regionTable)); + tableRuleConfig.setDatabaseShardingStrategyConfig(databaseShardingStrategyConfig); + sets.add(tableRuleConfig); + } + + + // 定义区域表的分库规则 + StandardShardingStrategyConfiguration courseDetailsShardingStrategyConfig = new StandardShardingStrategyConfiguration( + courseDetailsShardingDatabaseColumn, new StandardShardingStrategyConf()); + for (String regionTable : courseDetails) { + TableRuleConfiguration tableRuleConfig = new TableRuleConfiguration(regionTable, String.format(regionTablesDataNode, regionTable)); + tableRuleConfig.setDatabaseShardingStrategyConfig(courseDetailsShardingStrategyConfig); + // 设置区域表使用雪花算法生成主键 + KeyGeneratorConfiguration keyGeneratorConfig = new KeyGeneratorConfiguration("SNOWFLAKE", "id"); + tableRuleConfig.setKeyGeneratorConfig(keyGeneratorConfig); + + sets.add(tableRuleConfig); + } return sets; } @@ -136,4 +208,38 @@ public class ShardingConfig { }); return sets; } -} \ No newline at end of file + + /** + * 绑定表的分片规则 + */ + public static Set bindingTableGroups(List> sets) { + if (sets != null && !sets.isEmpty()) { + Set tableGroups = new HashSet<>(); + for (Set set : sets) { + String tableNames = bindingTable(set.toArray(new String[0])); + if (StringUtils.isNotBlank(tableNames)) { + tableGroups.add(tableNames); + } + } + return tableGroups; + } + return null; + } + + /** + * 批量绑定表规则 + * + * @param tables 批量绑定的标规则 + * @return tableNames + */ + private static String bindingTable(String... tables) { + StringBuilder tableNames = new StringBuilder(); + if (tables != null && tables.length != 0) { + for (String table : tables) { + tableNames.append(table).append(","); + } + tableNames.deleteCharAt(tableNames.length() - 1); + } + return tableNames.toString(); + } +} diff --git a/src/main/java/com/sqx/config/SnowFlake.java b/src/main/java/com/sqx/config/SnowFlake.java new file mode 100644 index 00000000..c6096bd7 --- /dev/null +++ b/src/main/java/com/sqx/config/SnowFlake.java @@ -0,0 +1,114 @@ +package com.sqx.config; + +/** + * 描述: Twitter的分布式自增ID雪花算法snowflake (Java版) + **/ +public class SnowFlake { + + /** + * 起始的时间戳 + */ + private final static long START_STMP = 1480166465631L; + + /** + * 每一部分占用的位数 + */ + private final static long SEQUENCE_BIT = 12; //序列号占用的位数 + private final static long MACHINE_BIT = 5; //机器标识占用的位数 + private final static long DATACENTER_BIT = 5;//数据中心占用的位数 + + /** + * 每一部分的最大值 + */ + private final static long MAX_DATACENTER_NUM = ~(-1L << DATACENTER_BIT); + private final static long MAX_MACHINE_NUM = ~(-1L << MACHINE_BIT); + private final static long MAX_SEQUENCE = ~(-1L << SEQUENCE_BIT); + + /** + * 每一部分向左的位移 + */ + private final static long MACHINE_LEFT = SEQUENCE_BIT; + private final static long DATACENTER_LEFT = SEQUENCE_BIT + MACHINE_BIT; + private final static long TIMESTMP_LEFT = DATACENTER_LEFT + DATACENTER_BIT; + + /** + * 数据中心 + */ + private long datacenterId; + /** + * 机器标识 + */ + private long machineId; + /** + * 代表了一毫秒内生成的多个id的最新序号 + */ + private long sequence = 10000L; + /** + * 上一次时间戳 + */ + private long lastStmp = -1L; + + public SnowFlake() { + } + + public SnowFlake(long datacenterId, long machineId) { + if (datacenterId > MAX_DATACENTER_NUM || datacenterId < 0) { + throw new IllegalArgumentException("datacenterId can't be greater than MAX_DATACENTER_NUM or less than 0"); + } + if (machineId > MAX_MACHINE_NUM || machineId < 0) { + throw new IllegalArgumentException("machineId can't be greater than MAX_MACHINE_NUM or less than 0"); + } + this.datacenterId = datacenterId; + this.machineId = machineId; + } + + /** + * 产生下一个ID + * + * @param ifEvenNum 是否偶数 true 时间不连续全是偶数 时间连续 奇数偶数 false 时间不连续 奇偶都有 所以一般建议用false + */ + public synchronized long nextId(boolean ifEvenNum) { + long currStmp = getNewstmp(); + if (currStmp < lastStmp) { + throw new RuntimeException("Clock moved backwards. Refusing to generate id"); + } + /** + * 时间不连续出来全是偶数 + */ + if (ifEvenNum) { + if (currStmp == lastStmp) { + //相同毫秒内,序列号自增 + sequence = (sequence + 1) & MAX_SEQUENCE; + //同一毫秒的序列数已经达到最大 + if (sequence == 0L) { + currStmp = getNextMill(); + } + } else { + //不同毫秒内,序列号置为0 + sequence = 0L; + } + } else { + //相同毫秒内,序列号自增 + sequence = (sequence + 1) & MAX_SEQUENCE; + } + + lastStmp = currStmp; + + return (currStmp - START_STMP) << TIMESTMP_LEFT //时间戳部分 + | datacenterId << DATACENTER_LEFT //数据中心部分 + | machineId << MACHINE_LEFT //机器标识部分 + | sequence; //序列号部分 + } + + private long getNextMill() { + long mill = getNewstmp(); + while (mill <= lastStmp) { + mill = getNewstmp(); + } + return mill; + } + + private long getNewstmp() { + return System.currentTimeMillis(); + } +} \ No newline at end of file diff --git a/src/main/java/com/sqx/config/SnowFlakeConfig.java b/src/main/java/com/sqx/config/SnowFlakeConfig.java new file mode 100644 index 00000000..49b10930 --- /dev/null +++ b/src/main/java/com/sqx/config/SnowFlakeConfig.java @@ -0,0 +1,24 @@ +package com.sqx.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class SnowFlakeConfig { + /** + * 数据中心 + */ + @Value("${snowflake.datacenterId}") + private String datacenterId; + /** + * 机器标识 + */ + @Value("${snowflake.machineId}") + private String machineId; + + @Bean(name = "snowFlake") + public SnowFlake snowFlake() { + return new SnowFlake(Long.parseLong(datacenterId), Long.parseLong(machineId)); + } +} \ No newline at end of file diff --git a/src/main/java/com/sqx/modules/announcement/controller/AnnouncementController.java b/src/main/java/com/sqx/modules/announcement/controller/AnnouncementController.java new file mode 100644 index 00000000..41dcd709 --- /dev/null +++ b/src/main/java/com/sqx/modules/announcement/controller/AnnouncementController.java @@ -0,0 +1,41 @@ +package com.sqx.modules.announcement.controller; + +import com.sqx.common.utils.Result; +import com.sqx.modules.announcement.service.AnnouncementService; +import com.sqx.modules.common.dto.AddAnnouncementDTO; +import com.sqx.modules.common.dto.DeleteAnnouncementDTO; +import com.sqx.modules.common.dto.UpdateAnnouncementDTO; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/announcement") +public class AnnouncementController { + + private final AnnouncementService announcementService; + + public AnnouncementController(AnnouncementService announcementService) { + this.announcementService = announcementService; + } + + @GetMapping("/list") + public Result list(@RequestParam(required = false) String title, @RequestParam(required = false) Integer state, @RequestParam(required = false) Integer id) { + return Result.success().put("data", announcementService.listInfo(title, state, id)); + } + + @PostMapping + public Result add(@RequestBody @Validated AddAnnouncementDTO announcementDTO) { + return Result.success().put("data", announcementService.add(announcementDTO)); + } + + @PutMapping + public Result update(@RequestBody @Validated UpdateAnnouncementDTO updateAnnouncementDTO) { + return Result.success().put("data", announcementService.updateInfo(updateAnnouncementDTO)); + } + + @DeleteMapping + public Result delete(@RequestBody @Validated DeleteAnnouncementDTO deleteAnnouncementDTO) { + return Result.success().put("data", announcementService.removeById(deleteAnnouncementDTO.getId())); + } + +} diff --git a/src/main/java/com/sqx/modules/announcement/entity/Announcement.java b/src/main/java/com/sqx/modules/announcement/entity/Announcement.java new file mode 100644 index 00000000..30002c7d --- /dev/null +++ b/src/main/java/com/sqx/modules/announcement/entity/Announcement.java @@ -0,0 +1,101 @@ +package com.sqx.modules.announcement.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * 公告表 + * @TableName announcement + */ +@TableName(value ="announcement") +@Data +public class Announcement implements Serializable { + /** + * + */ +// @TableId + private Integer id; + + /** + * 标题 + */ + private String title; + + /** + * 内容 + */ + private String content; + + /** + * 状态0关闭 1打开 + */ + private Integer state; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 修改时间 + */ + private Date updateTime; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; + + @Override + public boolean equals(Object that) { + if (this == that) { + return true; + } + if (that == null) { + return false; + } + if (getClass() != that.getClass()) { + return false; + } + Announcement other = (Announcement) that; + return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId())) + && (this.getTitle() == null ? other.getTitle() == null : this.getTitle().equals(other.getTitle())) + && (this.getContent() == null ? other.getContent() == null : this.getContent().equals(other.getContent())) + && (this.getState() == null ? other.getState() == null : this.getState().equals(other.getState())) + && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime())) + && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime())); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((getId() == null) ? 0 : getId().hashCode()); + result = prime * result + ((getTitle() == null) ? 0 : getTitle().hashCode()); + result = prime * result + ((getContent() == null) ? 0 : getContent().hashCode()); + result = prime * result + ((getState() == null) ? 0 : getState().hashCode()); + result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode()); + result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode()); + return result; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", id=").append(id); + sb.append(", title=").append(title); + sb.append(", content=").append(content); + sb.append(", state=").append(state); + sb.append(", createTime=").append(createTime); + sb.append(", updateTime=").append(updateTime); + sb.append(", serialVersionUID=").append(serialVersionUID); + sb.append("]"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/sqx/modules/announcement/mapper/AnnouncementMapper.java b/src/main/java/com/sqx/modules/announcement/mapper/AnnouncementMapper.java new file mode 100644 index 00000000..0c98bf78 --- /dev/null +++ b/src/main/java/com/sqx/modules/announcement/mapper/AnnouncementMapper.java @@ -0,0 +1,20 @@ +package com.sqx.modules.announcement.mapper; + +import com.sqx.modules.announcement.entity.Announcement; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** +* @author Administrator +* @description 针对表【announcement(公告表)】的数据库操作Mapper +* @createDate 2025-01-02 14:33:44 +* @Entity com.sqx.modules.announcement.entity.Announcement +*/ +@Mapper +public interface AnnouncementMapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/com/sqx/modules/announcement/service/AnnouncementService.java b/src/main/java/com/sqx/modules/announcement/service/AnnouncementService.java new file mode 100644 index 00000000..6a1180b4 --- /dev/null +++ b/src/main/java/com/sqx/modules/announcement/service/AnnouncementService.java @@ -0,0 +1,22 @@ +package com.sqx.modules.announcement.service; + +import com.sqx.modules.announcement.entity.Announcement; +import com.baomidou.mybatisplus.extension.service.IService; +import com.sqx.modules.common.dto.AddAnnouncementDTO; +import com.sqx.modules.common.dto.DeleteAnnouncementDTO; +import com.sqx.modules.common.dto.UpdateAnnouncementDTO; + +/** +* @author Administrator +* @description 针对表【announcement(公告表)】的数据库操作Service +* @createDate 2025-01-02 14:33:44 +*/ +public interface AnnouncementService extends IService { + + Object add(AddAnnouncementDTO announcementDTO); + + Object updateInfo(UpdateAnnouncementDTO updateAnnouncementDTO); + + Object listInfo(String title, Integer state, Integer id); + +} diff --git a/src/main/java/com/sqx/modules/announcement/service/impl/AnnouncementServiceImpl.java b/src/main/java/com/sqx/modules/announcement/service/impl/AnnouncementServiceImpl.java new file mode 100644 index 00000000..a89bd838 --- /dev/null +++ b/src/main/java/com/sqx/modules/announcement/service/impl/AnnouncementServiceImpl.java @@ -0,0 +1,65 @@ +package com.sqx.modules.announcement.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.sqx.common.exception.SqxException; +import com.sqx.modules.announcement.entity.Announcement; +import com.sqx.modules.announcement.service.AnnouncementService; +import com.sqx.modules.announcement.mapper.AnnouncementMapper; +import com.sqx.modules.common.dto.AddAnnouncementDTO; +import com.sqx.modules.common.dto.UpdateAnnouncementDTO; +import org.springframework.stereotype.Service; + +/** +* @author Administrator +* @description 针对表【announcement(公告表)】的数据库操作Service实现 +* @createDate 2025-01-02 14:33:44 +*/ +@Service +public class AnnouncementServiceImpl extends ServiceImpl + implements AnnouncementService{ + + @Override + public Object listInfo(String title, Integer state, Integer id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + boolean flag = false; + if (StrUtil.isNotBlank(title)) { + queryWrapper.like(Announcement::getTitle, title); + flag = true; + } + if (state != null) { + queryWrapper.eq(Announcement::getState, state); + flag = true; + } + if (id != null) { + queryWrapper.eq(Announcement::getId, id); + } + return flag ? list(queryWrapper) : list(); + } + + @Override + public Object add(AddAnnouncementDTO announcementDTO) { + Announcement announcement = new Announcement(); + BeanUtil.copyProperties(announcementDTO, announcement); + announcement.setCreateTime(DateUtil.date()); + return save(announcement); + } + + @Override + public Object updateInfo(UpdateAnnouncementDTO updateAnnouncementDTO) { + Announcement announcement = getById(updateAnnouncementDTO.getId()); + if (announcement == null) { + throw new SqxException("公告不存在"); + } + BeanUtil.copyProperties(updateAnnouncementDTO, announcement); + announcement.setUpdateTime(DateUtil.date()); + return updateById(announcement); + } +} + + + + diff --git a/src/main/java/com/sqx/modules/app/controller/AppUpgradeController.java b/src/main/java/com/sqx/modules/app/controller/AppUpgradeController.java index a09d2a66..02c1dbdd 100644 --- a/src/main/java/com/sqx/modules/app/controller/AppUpgradeController.java +++ b/src/main/java/com/sqx/modules/app/controller/AppUpgradeController.java @@ -1,8 +1,9 @@ package com.sqx.modules.app.controller; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.app.entity.App; import com.sqx.modules.app.service.AppService; @@ -13,6 +14,7 @@ import org.springframework.web.bind.annotation.*; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.List; /** * APP登录授权 @@ -30,8 +32,10 @@ public class AppUpgradeController { @ApiOperation("管理平台升级详情") @ResponseBody public Result list(Integer page,Integer limit) { - IPage pages =new Page<>(page,limit); - return Result.success().put("data",iAppService.page(pages)); + PageHelper.startPage(page,limit); + List list = iAppService.list(); + PageInfo pageInfo = new PageInfo<>(list); + return Result.success().put("data", PageUtils.page(pageInfo, true)); } diff --git a/src/main/java/com/sqx/modules/app/controller/UserController.java b/src/main/java/com/sqx/modules/app/controller/UserController.java index 7ff0b9bf..b1def84d 100644 --- a/src/main/java/com/sqx/modules/app/controller/UserController.java +++ b/src/main/java/com/sqx/modules/app/controller/UserController.java @@ -1,8 +1,8 @@ package com.sqx.modules.app.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.app.entity.UserEntity; @@ -270,9 +270,8 @@ public class UserController { @GetMapping("/courseMessage") @ApiOperation("短剧分析") public Result courseMessage(Long page, Long limit, String date, int type, Long sysUserId) { - Page> iPage = new Page<>(page, limit); - IPage> mapIPage = userService.queryCourseOrder(iPage, type, TimeCompleteUtils.completeStartTime(date), sysUserId); - return Result.success().put("data", new PageUtils(mapIPage)); + PageUtils pageUtils = userService.queryCourseOrder(page, limit, type, TimeCompleteUtils.completeStartTime(date), sysUserId); + return Result.success().put("data", pageUtils); } /** diff --git a/src/main/java/com/sqx/modules/app/controller/VipDetailsController.java b/src/main/java/com/sqx/modules/app/controller/VipDetailsController.java index 97aa1266..8e63357a 100644 --- a/src/main/java/com/sqx/modules/app/controller/VipDetailsController.java +++ b/src/main/java/com/sqx/modules/app/controller/VipDetailsController.java @@ -1,6 +1,8 @@ package com.sqx.modules.app.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.DateUtils; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; @@ -16,6 +18,7 @@ import org.springframework.web.bind.annotation.*; import java.util.Calendar; import java.util.Date; +import java.util.List; @RestController @Api(value = "会员管理", tags = {"会员管理"}) @@ -89,7 +92,10 @@ public class VipDetailsController { @ApiParam("查询会员列表") @GetMapping("/selectVipDetailsList") public Result selectVipDetailsList(Integer page,Integer limit) { - return Result.success().put("data",new PageUtils(vipDetailsService.page(new Page<>(page,limit)))); + PageHelper.startPage(page,limit); + List list = vipDetailsService.list(); + PageInfo pageInfo = new PageInfo<>(list); + return Result.success().put("data", PageUtils.page(pageInfo)); } } diff --git a/src/main/java/com/sqx/modules/app/controller/app/AppAnnouncementController.java b/src/main/java/com/sqx/modules/app/controller/app/AppAnnouncementController.java new file mode 100644 index 00000000..b3cbb836 --- /dev/null +++ b/src/main/java/com/sqx/modules/app/controller/app/AppAnnouncementController.java @@ -0,0 +1,33 @@ +package com.sqx.modules.app.controller.app; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.github.pagehelper.PageHelper; +import com.sqx.common.utils.Result; +import com.sqx.modules.announcement.entity.Announcement; +import com.sqx.modules.announcement.service.AnnouncementService; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/app/announcement") +public class AppAnnouncementController { + + private final AnnouncementService announcementService; + + public AppAnnouncementController(AnnouncementService announcementService) { + this.announcementService = announcementService; + } + + @GetMapping + public Result get() { + PageHelper.startPage(1,1); + List list = announcementService.list(new LambdaQueryWrapper() + .eq(Announcement::getState, 1) + .orderByDesc(Announcement::getCreateTime)); + return Result.success().put("data", list.isEmpty() ? null : list.get(0)); + } + +} diff --git a/src/main/java/com/sqx/modules/app/controller/app/AppController.java b/src/main/java/com/sqx/modules/app/controller/app/AppController.java index 323ffebc..7d61f7eb 100644 --- a/src/main/java/com/sqx/modules/app/controller/app/AppController.java +++ b/src/main/java/com/sqx/modules/app/controller/app/AppController.java @@ -1,17 +1,24 @@ package com.sqx.modules.app.controller.app; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdcardUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.sqx.common.annotation.Debounce; +import com.sqx.common.exception.SqxException; import com.sqx.common.utils.ApiAccessLimitUtil; import com.sqx.common.utils.DataLimitUtil; import com.sqx.common.utils.Result; import com.sqx.modules.app.annotation.Login; import com.sqx.modules.app.annotation.LoginUser; import com.sqx.modules.app.entity.UserEntity; +import com.sqx.modules.app.entity.UserInfo; +import com.sqx.modules.app.service.AliService; import com.sqx.modules.app.service.AppService; +import com.sqx.modules.app.service.UserInfoService; import com.sqx.modules.app.service.UserService; import com.sqx.modules.common.service.CommonInfoService; import io.swagger.annotations.Api; @@ -21,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import java.util.Map; /** * APP登录授权 @@ -36,6 +44,13 @@ public class AppController { private AppService appService; @Autowired private CommonInfoService commonRepository; + private final UserInfoService userInfoService; + private final AliService aliService; + + public AppController(UserInfoService userInfoService, AliService aliService) { + this.userInfoService = userInfoService; + this.aliService = aliService; + } @PostMapping("/authenticationRegister") @ApiOperation("认证创建账号") @@ -79,43 +94,86 @@ public class AppController { @ApiOperation("用户修改个人信息") @ResponseBody @Debounce(interval = 3000, value = "#userId") - public Result updateUserImageUrl(@RequestAttribute("userId") Long userId, String zhiFuBao, String zhiFuBaoName) { - if (StrUtil.isEmpty(zhiFuBao) || StrUtil.isEmpty(zhiFuBaoName)) { - return Result.error("支付宝账户及姓名不能为空!"); + public Result updateUserImageUrl(@RequestAttribute("userId") Long userId, @RequestParam(required = false) String zhiFuBao, + @RequestParam String certName, @RequestParam(required = false) String certNum) { + if (StrUtil.isAllBlank(zhiFuBao, certNum)) { + return Result.error("支付宝账号或实名身份证号码必须传递一个"); } - if (!DataLimitUtil.isAccessAllowed(zhiFuBao+zhiFuBaoName, Integer.parseInt(commonRepository.findOne(924).getValue()), "month")) { - return Result.error("修改失败,相同支付宝账号每月可绑定次数已用完"); - } - int count = userService.count(new QueryWrapper() - .ne("user_id", userId) - .eq("zhi_fu_bao_name", zhiFuBaoName) - .eq("zhi_fu_bao", zhiFuBao)); - if (count > 0) { - return Result.error("一个支付宝账号仅可绑定一个用户"); + UserInfo userInfo = userInfoService.getByUserId(userId); + UserEntity userEntity = userService.getById(userId); + + String errMsg = null; + if (StrUtil.isNotBlank(zhiFuBao) && !zhiFuBao.equals(userEntity.getZhiFuBao())) { + int count = userService.count(new QueryWrapper() + .ne("user_id", userId) + .eq("zhi_fu_bao_name", certName) + .eq("zhi_fu_bao", zhiFuBao)); + if (count > 0) { + errMsg = "支付宝信息修改失败: 一个支付宝账号仅可绑定一个用户"; + } + if (StrUtil.isNotBlank(userInfo.getCertName()) && !certName.equals(userInfo.getCertName())) { + errMsg = "支付宝信息修改失败: 姓名与实名认证信息不相符"; + } + + if (!DataLimitUtil.isAccessAllowed(zhiFuBao+certName, Integer.parseInt(commonRepository.findOne(924).getValue()), "month")) { + errMsg = "支付宝信息修改失败: 相同支付宝账号每月可绑定次数已用完"; + } + + if (!ApiAccessLimitUtil.isAccessAllowed(userId.toString(), "updateZFB", Integer.parseInt(commonRepository.findOne(925).getValue()), "month")) { + errMsg = "支付宝信息修改失败: 每月可修改次数已用完,请联系管理员"; + } + + if (errMsg == null) { + userEntity.setZhiFuBao(zhiFuBao); + userEntity.setZhiFuBaoName(certName); + userService.updateById(userEntity); + } } - if (!ApiAccessLimitUtil.isAccessAllowed(userId.toString(), "updateZFB", Integer.parseInt(commonRepository.findOne(925).getValue()), "month")) { - return Result.error("每月可修改次数已用完,请联系管理员"); + + + if (StrUtil.isNotBlank(certNum) && !certNum.equals(userInfo.getCertNo())) { + if (StrUtil.isNotBlank(userEntity.getZhiFuBaoName()) && !certName.equals(userEntity.getZhiFuBaoName())) { + errMsg = "实名修改失败: 姓名与绑定支付宝信息不相符"; + } + if (!IdcardUtil.isValidCard(certNum)) { + errMsg = "实名修改失败: 身份证号码有误"; + } + + Integer idCount = userInfoService.countCertCount(certName, certNum); + if (idCount > 1) { + errMsg = "实名修改失败: 此实名信息已存在"; + } + + if (!ApiAccessLimitUtil.isAccessAllowed(String.valueOf(userId), "updateAuthCertInfo", 1, "month")) { + errMsg = "实名修改失败: 每月可修改次数已用完,请联系管理员"; + } + + try { + aliService.authCertNo(certName, certNum); + }catch (Exception e) { + ApiAccessLimitUtil.removeKey(String.valueOf(userId), "updateAuthCertInfo"); + errMsg = "实名修改失败: 身份证信息不匹配"; + } + + if (errMsg != null && errMsg.contains("实名修改失败")) { + return Result.error(errMsg); + } + + userInfo.setCertName(certName); + userInfo.setCertNo(certNum); + userInfo.setUpdateTime(DateUtil.date()); + userInfoService.updateById(userInfo); } - UserEntity old = userService.getById(userId); - String accountNo = old.getZhiFuBao(); - String accountName = old.getZhiFuBaoName(); - boolean isFirstBind = false; - if (StrUtil.isEmpty(accountNo) && StrUtil.isEmpty(accountName)) { - isFirstBind = true; + + if (errMsg != null) { + return Result.error(errMsg); } - UserEntity userEntity = new UserEntity(); - userEntity.setZhiFuBao(zhiFuBao); - userEntity.setZhiFuBaoName(zhiFuBaoName); - userEntity.setUserId(userId); - old.setZhiFuBao(userEntity.getZhiFuBao()); - old.setZhiFuBaoName(userEntity.getZhiFuBaoName()); - boolean bool = userService.updateById(userEntity); + return Result.success(); // 去除首绑支付宝奖励 // if (bool && isFirstBind) { // userService.firstBindAwardsMoney(old); // } - return Result.success(); } @@ -170,7 +228,10 @@ public class AppController { @ApiOperation("获取用户详细信息") @ResponseBody public Result selectUserById(@LoginUser UserEntity user) { - return Result.success().put("data", user); + UserInfo userInfo = userInfoService.getByUserId(user.getUserId()); + Map map = BeanUtil.beanToMap(user); + map.putAll(BeanUtil.beanToMap(userInfo)); + return Result.success().put("data", map); } diff --git a/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java b/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java index 19ff76ea..a621ad32 100644 --- a/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java +++ b/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java @@ -4,7 +4,10 @@ package com.sqx.modules.app.controller.app; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.sqx.common.annotation.Debounce; +import com.sqx.common.utils.ApiAccessLimitUtil; import com.sqx.common.utils.Result; +import com.sqx.modules.app.annotation.Login; +import com.sqx.modules.app.dao.AuthCertNoDTO; import com.sqx.modules.app.entity.UserEntity; import com.sqx.modules.app.service.IAppleService; import com.sqx.modules.app.service.UserService; @@ -19,6 +22,7 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import weixin.popular.api.SnsAPI; import weixin.popular.bean.sns.SnsToken; @@ -163,6 +167,16 @@ public class AppLoginController { return userService.sendMsg(phone, state,null); } + @Login + @Debounce(value = "#authCertNoDTO.idNum") + @PostMapping("/authCertNo") + public Result authCertNo(@RequestBody @Validated AuthCertNoDTO authCertNoDTO, @RequestAttribute("userId") long userId) { + if (!ApiAccessLimitUtil.isAccessAllowed(String.valueOf(userId), "updateAuthCertInfo", 1, "month")) { + return Result.error("每月可修改次数已用完,请联系管理员"); + } + return Result.success().put("data", userService.authCertNo(userId, authCertNoDTO)); + } + @ApiOperation("解密手机号") @RequestMapping(value = "/selectPhone",method = RequestMethod.POST) public Result getPhoneNumberBeanS5(@RequestBody WxPhone wxPhone) { diff --git a/src/main/java/com/sqx/modules/app/dao/AuthCertNoDTO.java b/src/main/java/com/sqx/modules/app/dao/AuthCertNoDTO.java new file mode 100644 index 00000000..077708c4 --- /dev/null +++ b/src/main/java/com/sqx/modules/app/dao/AuthCertNoDTO.java @@ -0,0 +1,13 @@ +package com.sqx.modules.app.dao; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class AuthCertNoDTO { + @NotBlank + private String name; + @NotBlank + private String idNum; +} diff --git a/src/main/java/com/sqx/modules/app/dao/UserDao.java b/src/main/java/com/sqx/modules/app/dao/UserDao.java index 97df46fd..037fe2eb 100644 --- a/src/main/java/com/sqx/modules/app/dao/UserDao.java +++ b/src/main/java/com/sqx/modules/app/dao/UserDao.java @@ -1,8 +1,6 @@ package com.sqx.modules.app.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sqx.modules.app.entity.UserEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -17,7 +15,7 @@ import java.util.Map; public interface UserDao extends BaseMapper { - IPage selectUserPage(@Param("page") Page page, @Param("search") String search, @Param("sex") Integer sex, @Param("platform") String platform, + List selectUserPage(@Param("search") String search, @Param("sex") Integer sex, @Param("platform") String platform, @Param("sysPhone") String sysPhone, @Param("status") Integer status, @Param("member") Integer member, @Param("inviterCode") String inviterCode, @Param("userName") String userName, @Param("invitationCode") String invitationCode, @Param("startTime") String startTime, @@ -31,13 +29,13 @@ public interface UserDao extends BaseMapper { Double queryPayMoney(@Param("type") int type, @Param("date") String date,String qdCode); - IPage> queryCourseOrder(Page iPage,@Param("type") int type, @Param("start") String start, @Param("end") String end,Long sysUserId); + List> queryCourseOrder(@Param("type") int type, @Param("start") String start, @Param("end") String end,Long sysUserId); int userMessage( String date, int type,String qdCode,Integer vipType); int insertUser(UserEntity userEntity); - IPage selectInviteUserList(Page page,String userName,String phone); + List selectInviteUserList(String userName,String phone); int selectUserOnLineCount(String qdCode); diff --git a/src/main/java/com/sqx/modules/app/dao/UserMoneyDao.java b/src/main/java/com/sqx/modules/app/dao/UserMoneyDao.java index b66f0f53..601a3b10 100644 --- a/src/main/java/com/sqx/modules/app/dao/UserMoneyDao.java +++ b/src/main/java/com/sqx/modules/app/dao/UserMoneyDao.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.sqx.modules.app.entity.UserMoney; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.math.BigDecimal; @Mapper public interface UserMoneyDao extends BaseMapper { @@ -14,4 +17,11 @@ public interface UserMoneyDao extends BaseMapper { void updateSysMoney(@Param("type") Integer type, @Param("sysUserId")Long sysUserId, @Param("money") Double money); void updateSysAmount(@Param("type") Integer type, @Param("sysUserId")Long sysUserId, @Param("amount") Double amount); + + @Select("select sum(money) from user_money_details where user_id=#{userId} and classify in (6,1) and (content like '%额外奖励金币%' or content like '获取金币')") + BigDecimal sumMoney(Long userId); + + @Select("select sum(money) from user_money_details where user_id=#{userId} and classify=6 and content like '%额外奖励现金红包%'") + BigDecimal sumMoney2(Long userId); + } diff --git a/src/main/java/com/sqx/modules/app/entity/App.java b/src/main/java/com/sqx/modules/app/entity/App.java index cdb7c94d..142715db 100644 --- a/src/main/java/com/sqx/modules/app/entity/App.java +++ b/src/main/java/com/sqx/modules/app/entity/App.java @@ -2,6 +2,8 @@ package com.sqx.modules.app.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -13,6 +15,7 @@ import java.io.Serializable; @TableName("app") public class App implements Serializable { @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long id; private String createAt; diff --git a/src/main/java/com/sqx/modules/app/entity/InviteAchievement.java b/src/main/java/com/sqx/modules/app/entity/InviteAchievement.java index f034862b..427f343c 100644 --- a/src/main/java/com/sqx/modules/app/entity/InviteAchievement.java +++ b/src/main/java/com/sqx/modules/app/entity/InviteAchievement.java @@ -7,6 +7,9 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; @@ -23,18 +26,21 @@ public class InviteAchievement implements Serializable { /** * */ - @TableId(type = IdType.AUTO) - private Integer id; + @TableId + @JsonSerialize(using = ToStringSerializer.class) + private Long id; /** - * 用户id + * 邀请用户用户id -- 上级 */ + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** - * 上级邀请用户id + * 下级被邀请用户id 当前达标用户id */ - private Long sourceUserId; + @JsonSerialize(using = ToStringSerializer.class) + private Long targetUserId; /** * 达标次数 diff --git a/src/main/java/com/sqx/modules/app/entity/Msg.java b/src/main/java/com/sqx/modules/app/entity/Msg.java index 58a67ad2..a3dfd5cf 100644 --- a/src/main/java/com/sqx/modules/app/entity/Msg.java +++ b/src/main/java/com/sqx/modules/app/entity/Msg.java @@ -2,6 +2,8 @@ package com.sqx.modules.app.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -17,6 +19,7 @@ public class Msg implements Serializable { private static final long serialVersionUID = 1L; @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long id; private String code; diff --git a/src/main/java/com/sqx/modules/app/entity/UserEntity.java b/src/main/java/com/sqx/modules/app/entity/UserEntity.java index ebfcd975..e5ddbae7 100644 --- a/src/main/java/com/sqx/modules/app/entity/UserEntity.java +++ b/src/main/java/com/sqx/modules/app/entity/UserEntity.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -28,7 +30,8 @@ public class UserEntity implements Serializable { */ @Excel(name = "用户id", orderNum = "1") @ApiModelProperty("用户id") - @TableId(type = IdType.AUTO, value = "user_id") + @TableId(value = "user_id") + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** * 用户名 @@ -199,5 +202,4 @@ public class UserEntity implements Serializable { @TableField(exist = false) private Integer vipType; - } diff --git a/src/main/java/com/sqx/modules/app/entity/UserInfo.java b/src/main/java/com/sqx/modules/app/entity/UserInfo.java new file mode 100644 index 00000000..65f26d8a --- /dev/null +++ b/src/main/java/com/sqx/modules/app/entity/UserInfo.java @@ -0,0 +1,92 @@ +package com.sqx.modules.app.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * + * @TableName user_info + */ +@TableName(value ="user_info") +@Data +public class UserInfo implements Serializable { + /** + * + */ + @TableId + private Long id; + + /** + * 用户id + */ + @TableField(updateStrategy = FieldStrategy.NEVER) + private Long userId; + + /** + * 姓名 + */ + private String certName; + + /** + * 身份证号码 + */ + private String certNo; + + /** + * 修改时间 + */ + private Date updateTime; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; + + @Override + public boolean equals(Object that) { + if (this == that) { + return true; + } + if (that == null) { + return false; + } + if (getClass() != that.getClass()) { + return false; + } + UserInfo other = (UserInfo) that; + return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId())) + && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId())) + && (this.getCertName() == null ? other.getCertName() == null : this.getCertName().equals(other.getCertName())) + && (this.getCertNo() == null ? other.getCertNo() == null : this.getCertNo().equals(other.getCertNo())) + && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime())); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((getId() == null) ? 0 : getId().hashCode()); + result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode()); + result = prime * result + ((getCertName() == null) ? 0 : getCertName().hashCode()); + result = prime * result + ((getCertNo() == null) ? 0 : getCertNo().hashCode()); + result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode()); + return result; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", id=").append(id); + sb.append(", userId=").append(userId); + sb.append(", certName=").append(certName); + sb.append(", certNo=").append(certNo); + sb.append(", updateTime=").append(updateTime); + sb.append(", serialVersionUID=").append(serialVersionUID); + sb.append("]"); + return sb.toString(); + } +} diff --git a/src/main/java/com/sqx/modules/app/entity/UserMoney.java b/src/main/java/com/sqx/modules/app/entity/UserMoney.java index 0786e12f..ca27673b 100644 --- a/src/main/java/com/sqx/modules/app/entity/UserMoney.java +++ b/src/main/java/com/sqx/modules/app/entity/UserMoney.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; @@ -23,7 +25,8 @@ public class UserMoney implements Serializable { * 主键id */ @ApiModelProperty("主键id") - @TableId(type = IdType.AUTO) + @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** @@ -43,6 +46,7 @@ public class UserMoney implements Serializable { */ @ApiModelProperty("用户id") @TableField("user_id") + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** @@ -50,6 +54,10 @@ public class UserMoney implements Serializable { */ @ApiModelProperty("渠道用户id") @TableField("sys_user_id") + @JsonSerialize(using = ToStringSerializer.class) private Long sysUserId; + private BigDecimal inviteIncomeMoney;; + private BigDecimal inviteIncomeCoin; + } diff --git a/src/main/java/com/sqx/modules/app/entity/UserMoneyDetails.java b/src/main/java/com/sqx/modules/app/entity/UserMoneyDetails.java index cfecdf9d..2f911e7a 100644 --- a/src/main/java/com/sqx/modules/app/entity/UserMoneyDetails.java +++ b/src/main/java/com/sqx/modules/app/entity/UserMoneyDetails.java @@ -1,16 +1,18 @@ package com.sqx.modules.app.entity; import cn.hutool.core.date.DateUtil; -import com.amazonaws.services.dynamodbv2.xspec.L; -import com.baomidou.mybatisplus.annotation.IdType; +//import com.amazonaws.services.dynamodbv2.xspec.L; +//import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; -import lombok.NoArgsConstructor; +//import lombok.NoArgsConstructor; import java.io.Serializable; import java.math.BigDecimal; @@ -24,13 +26,15 @@ public class UserMoneyDetails implements Serializable { * 钱包详情id */ @ApiModelProperty("钱包详情id") - @TableId(type = IdType.AUTO) + @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** * 用户id */ @TableField("user_id") @ApiModelProperty("用户id") + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** @@ -38,8 +42,10 @@ public class UserMoneyDetails implements Serializable { */ @ApiModelProperty("渠道用户id") @TableField("sys_user_id") + @JsonSerialize(using = ToStringSerializer.class) private Long sysUserId; @ApiModelProperty("源id") + @JsonSerialize(using = ToStringSerializer.class) private Long sourceId; /** @@ -47,6 +53,7 @@ public class UserMoneyDetails implements Serializable { */ @TableField("by_user_id") @ApiModelProperty("对应用户id") + @JsonSerialize(using = ToStringSerializer.class) private Long byUserId; /** * 标题 diff --git a/src/main/java/com/sqx/modules/app/entity/UserPrizeExchange.java b/src/main/java/com/sqx/modules/app/entity/UserPrizeExchange.java index cdab4dae..34a594a6 100644 --- a/src/main/java/com/sqx/modules/app/entity/UserPrizeExchange.java +++ b/src/main/java/com/sqx/modules/app/entity/UserPrizeExchange.java @@ -3,6 +3,8 @@ package com.sqx.modules.app.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -24,10 +26,12 @@ public class UserPrizeExchange implements Serializable { * 奖品记录 */ @TableId(type = IdType.ID_WORKER) + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** * 奖品引用id */ + @JsonSerialize(using = ToStringSerializer.class) private Long foreignId; /** * 活动类型 task-任务奖励 spinning-大转盘 @@ -44,6 +48,7 @@ public class UserPrizeExchange implements Serializable { /** * 用户id */ + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** * 用户名 diff --git a/src/main/java/com/sqx/modules/app/entity/UserVip.java b/src/main/java/com/sqx/modules/app/entity/UserVip.java index 156ae09e..3587716c 100644 --- a/src/main/java/com/sqx/modules/app/entity/UserVip.java +++ b/src/main/java/com/sqx/modules/app/entity/UserVip.java @@ -2,6 +2,8 @@ package com.sqx.modules.app.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -13,6 +15,7 @@ public class UserVip implements Serializable { * 用户会员ID */ @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long vipId; /** * 会员类型 @@ -21,6 +24,7 @@ public class UserVip implements Serializable { /** * 用户ID */ + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** diff --git a/src/main/java/com/sqx/modules/app/entity/VipDetails.java b/src/main/java/com/sqx/modules/app/entity/VipDetails.java index d6a997e7..4abf3671 100644 --- a/src/main/java/com/sqx/modules/app/entity/VipDetails.java +++ b/src/main/java/com/sqx/modules/app/entity/VipDetails.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; @@ -20,7 +22,8 @@ import java.math.BigDecimal; @ApiModel("会员详情") public class VipDetails implements Serializable { - @TableId(type = IdType.AUTO) + @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long id; @ApiModelProperty("会员类型") diff --git a/src/main/java/com/sqx/modules/app/mapper/InviteAchievementMapper.java b/src/main/java/com/sqx/modules/app/mapper/InviteAchievementMapper.java index 144dd004..f43d959b 100644 --- a/src/main/java/com/sqx/modules/app/mapper/InviteAchievementMapper.java +++ b/src/main/java/com/sqx/modules/app/mapper/InviteAchievementMapper.java @@ -15,8 +15,8 @@ import org.apache.ibatis.annotations.Update; @Mapper public interface InviteAchievementMapper extends BaseMapper { - @Update("update invite_achievement set count = count + #{i}, update_time=now() where id = #{id}") - int incrCount(Integer id, int i); + @Update("update invite_achievement set count = count + #{i}, update_time=now() where id = #{id} and user_id = #{userId}") + int incrCount(Long id, Long userId, int i); @Insert("INSERT INTO invite_achievement (user_id, source_user_id, count, state, create_time)\n" + "SELECT #{userId}, #{sourceUserId}, #{count}, #{state}, #{createTime} " + diff --git a/src/main/java/com/sqx/modules/app/mapper/UserInfoMapper.java b/src/main/java/com/sqx/modules/app/mapper/UserInfoMapper.java new file mode 100644 index 00000000..4be869d6 --- /dev/null +++ b/src/main/java/com/sqx/modules/app/mapper/UserInfoMapper.java @@ -0,0 +1,20 @@ +package com.sqx.modules.app.mapper; + +import com.sqx.modules.app.entity.UserInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** +* @author Administrator +* @description 针对表【user_info】的数据库操作Mapper +* @createDate 2025-01-02 14:15:08 +* @Entity com.sqx.modules.app.entity.UserInfo +*/ +@Mapper +public interface UserInfoMapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/com/sqx/modules/app/service/AliService.java b/src/main/java/com/sqx/modules/app/service/AliService.java new file mode 100644 index 00000000..7a9c27fe --- /dev/null +++ b/src/main/java/com/sqx/modules/app/service/AliService.java @@ -0,0 +1,6 @@ +package com.sqx.modules.app.service; + + +public interface AliService { + void authCertNo(String name, String idCard); +} diff --git a/src/main/java/com/sqx/modules/app/service/InviteAchievementService.java b/src/main/java/com/sqx/modules/app/service/InviteAchievementService.java index 1203354b..44828abf 100644 --- a/src/main/java/com/sqx/modules/app/service/InviteAchievementService.java +++ b/src/main/java/com/sqx/modules/app/service/InviteAchievementService.java @@ -14,7 +14,7 @@ public interface InviteAchievementService extends IService { InviteAchievement getByUserId(Long userId); - int incrCount(Integer id, int i); + int incrCount(Long id, Long userId, int i); boolean insertNotExists(InviteAchievement inviteAchievement); diff --git a/src/main/java/com/sqx/modules/app/service/UserInfoService.java b/src/main/java/com/sqx/modules/app/service/UserInfoService.java new file mode 100644 index 00000000..baaeb1b8 --- /dev/null +++ b/src/main/java/com/sqx/modules/app/service/UserInfoService.java @@ -0,0 +1,17 @@ +package com.sqx.modules.app.service; + +import com.sqx.modules.app.entity.UserInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author Administrator +* @description 针对表【user_info】的数据库操作Service +* @createDate 2025-01-02 14:15:08 +*/ +public interface UserInfoService extends IService { + + UserInfo getByUserId(long userId); + + Integer countCertCount(String name, String idNum); + +} diff --git a/src/main/java/com/sqx/modules/app/service/UserMoneyService.java b/src/main/java/com/sqx/modules/app/service/UserMoneyService.java index fbedc7a4..a9e7c914 100644 --- a/src/main/java/com/sqx/modules/app/service/UserMoneyService.java +++ b/src/main/java/com/sqx/modules/app/service/UserMoneyService.java @@ -16,5 +16,4 @@ public interface UserMoneyService extends IService { void updateSysMoney(int i, Long userId, double money); void updateSysAmount(int i, Long userId, double amount); - } diff --git a/src/main/java/com/sqx/modules/app/service/UserService.java b/src/main/java/com/sqx/modules/app/service/UserService.java index eb3bc9ac..e5d0e344 100644 --- a/src/main/java/com/sqx/modules/app/service/UserService.java +++ b/src/main/java/com/sqx/modules/app/service/UserService.java @@ -2,11 +2,11 @@ package com.sqx.modules.app.service; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; +import com.sqx.modules.app.dao.AuthCertNoDTO; import com.sqx.modules.app.entity.UserEntity; import javax.servlet.http.HttpServletRequest; @@ -214,7 +214,7 @@ public interface UserService extends IService { Double queryPayMoney(int type,String qdCode); - IPage> queryCourseOrder(Page> iPage, int type, String date,Long sysUserId); + PageUtils queryCourseOrder(Long page, Long limit, int type, String date,Long sysUserId); int userMessage( String date, int type,String qdCode,Integer vipType); @@ -229,4 +229,8 @@ public interface UserService extends IService { void firstBindAwardsMoney(UserEntity entity); + /** + * 二要素身份证认证 + */ + Object authCertNo(long userId, AuthCertNoDTO authCertNoDTO); } diff --git a/src/main/java/com/sqx/modules/app/service/impl/AliServiceImpl.java b/src/main/java/com/sqx/modules/app/service/impl/AliServiceImpl.java new file mode 100644 index 00000000..ce0d9ac5 --- /dev/null +++ b/src/main/java/com/sqx/modules/app/service/impl/AliServiceImpl.java @@ -0,0 +1,67 @@ +package com.sqx.modules.app.service.impl; + +import com.aliyun.dytnsapi20200217.Client; +import com.aliyun.dytnsapi20200217.models.CertNoTwoElementVerificationRequest; +import com.aliyun.dytnsapi20200217.models.CertNoTwoElementVerificationResponse; +import com.aliyun.teautil.models.RuntimeOptions; +import com.sqx.common.exception.SqxException; +import com.sqx.modules.app.service.AliService; +import com.sqx.modules.common.entity.CommonInfo; +import com.sqx.modules.common.service.CommonInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; + +@Service +@Slf4j +public class AliServiceImpl implements AliService { + private final CommonInfoService commonInfoService; + private Client client; + + public AliServiceImpl(CommonInfoService commonInfoService) { + this.commonInfoService = commonInfoService; + } + + @PostConstruct + public void init() throws Exception { + CommonInfo keyIdInfo = commonInfoService.findOne(85); + CommonInfo securityInfo = commonInfoService.findOne(86); + + com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() + // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 + .setAccessKeyId(keyIdInfo.getValue()) + // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 + .setAccessKeySecret(securityInfo.getValue()); + config.endpoint = "dytnsapi.aliyuncs.com"; + this.client = new Client(config); + } + + + @Override + public void authCertNo(String name, String idCard) { + log.info("阿里云二要素认证请求参数: {} {}", name, idCard); + CertNoTwoElementVerificationRequest certNoTwoElementVerificationRequest = new com.aliyun.dytnsapi20200217.models.CertNoTwoElementVerificationRequest() + .setAuthCode("t92K8i9ae6") + .setCertName(name) + .setCertNo(idCard); + RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); + try { + CertNoTwoElementVerificationResponse resp = client.certNoTwoElementVerificationWithOptions(certNoTwoElementVerificationRequest, runtime); + log.info("阿里云二要素认证响应参数: {}", resp); + if (resp.getStatusCode() != 200) { + throw new SqxException("请求失败"); + } + + if (!"OK".equals(resp.getBody().getCode())) { + throw new SqxException(resp.getBody().getMessage()); + } + + if (!"1".equals(resp.getBody().getData().getIsConsistent())) { + throw new SqxException("身份证信息不匹配,认证失败"); + } + } catch (Exception e) { + throw new SqxException(e.getMessage()); + } + } +} diff --git a/src/main/java/com/sqx/modules/app/service/impl/InviteAchievementServiceImpl.java b/src/main/java/com/sqx/modules/app/service/impl/InviteAchievementServiceImpl.java index d25ee40c..1136f33f 100644 --- a/src/main/java/com/sqx/modules/app/service/impl/InviteAchievementServiceImpl.java +++ b/src/main/java/com/sqx/modules/app/service/impl/InviteAchievementServiceImpl.java @@ -25,12 +25,12 @@ public class InviteAchievementServiceImpl extends ServiceImpl() - .eq(InviteAchievement::getUserId, userId)); + .eq(InviteAchievement::getTargetUserId, userId)); } @Override - public int incrCount(Integer id, int i) { - return baseMapper.incrCount(id,i); + public int incrCount(Long id, Long userId, int i) { + return baseMapper.incrCount(id, userId,i); } @Override @@ -42,13 +42,13 @@ public class InviteAchievementServiceImpl extends ServiceImpl() .eq(InviteAchievement::getState, 1) - .eq(InviteAchievement::getSourceUserId, userId)); + .eq(InviteAchievement::getUserId, userId)); } @Override public int countNum(Long userId, Integer signCount) { return count(new LambdaQueryWrapper() - .eq(InviteAchievement::getSourceUserId, userId) + .eq(InviteAchievement::getUserId, userId) .ge(InviteAchievement::getCount, signCount)); } } diff --git a/src/main/java/com/sqx/modules/app/service/impl/UserInfoServiceImpl.java b/src/main/java/com/sqx/modules/app/service/impl/UserInfoServiceImpl.java new file mode 100644 index 00000000..e129cf11 --- /dev/null +++ b/src/main/java/com/sqx/modules/app/service/impl/UserInfoServiceImpl.java @@ -0,0 +1,41 @@ +package com.sqx.modules.app.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.sqx.modules.app.entity.UserInfo; +import com.sqx.modules.app.mapper.UserInfoMapper; +import com.sqx.modules.app.service.UserInfoService; +import org.springframework.stereotype.Service; + +/** +* @author Administrator +* @description 针对表【user_info】的数据库操作Service实现 +* @createDate 2025-01-02 14:15:08 +*/ +@Service +public class UserInfoServiceImpl extends ServiceImpl + implements UserInfoService{ + + @Override + public UserInfo getByUserId(long userId) { + UserInfo userInfo = getOne(new LambdaQueryWrapper() + .eq(UserInfo::getUserId, userId)); + if (userInfo == null) { + userInfo = new UserInfo(); + userInfo.setUserId(userId); + save(userInfo); + } + return userInfo; + } + + @Override + public Integer countCertCount(String name, String idNum) { + return count(new LambdaQueryWrapper() + .eq(UserInfo::getCertName, name) + .eq(UserInfo::getCertNo, idNum)); + } +} + + + + diff --git a/src/main/java/com/sqx/modules/app/service/impl/UserMoneyDetailsServiceImpl.java b/src/main/java/com/sqx/modules/app/service/impl/UserMoneyDetailsServiceImpl.java index 344ec9de..4d1fbe42 100644 --- a/src/main/java/com/sqx/modules/app/service/impl/UserMoneyDetailsServiceImpl.java +++ b/src/main/java/com/sqx/modules/app/service/impl/UserMoneyDetailsServiceImpl.java @@ -1,17 +1,19 @@ package com.sqx.modules.app.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.app.dao.UserMoneyDetailsDao; +import com.sqx.modules.app.entity.UserMoney; import com.sqx.modules.app.entity.UserMoneyDetails; import com.sqx.modules.app.service.UserMoneyDetailsService; import org.springframework.stereotype.Service; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -21,7 +23,7 @@ public class UserMoneyDetailsServiceImpl extends ServiceImpl page1 = new Page(page, limit); + PageHelper.startPage(page, limit); QueryWrapper queryWrapper = new QueryWrapper(); if (sysUserId != null) { queryWrapper.eq("sys_user_id", sysUserId); @@ -45,7 +47,7 @@ public class UserMoneyDetailsServiceImpl extends ServiceImpl(baseMapper.selectList(queryWrapper)),true)); } @Override @@ -58,6 +60,7 @@ public class UserMoneyDetailsServiceImpl extends ServiceImpl map = new HashMap<>(2); map.put("inviteMoney", inviteMoney == null ? 0 : inviteMoney); map.put("inviteGoldMoney", inviteGoldMoney == null ? 0 : inviteGoldMoney); diff --git a/src/main/java/com/sqx/modules/app/service/impl/UserPrizeExchangeServiceImpl.java b/src/main/java/com/sqx/modules/app/service/impl/UserPrizeExchangeServiceImpl.java index b07235c6..4e3f09fd 100644 --- a/src/main/java/com/sqx/modules/app/service/impl/UserPrizeExchangeServiceImpl.java +++ b/src/main/java/com/sqx/modules/app/service/impl/UserPrizeExchangeServiceImpl.java @@ -9,10 +9,11 @@ import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; import com.aliyun.tea.ValidateException; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; +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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.exception.SqxException; import com.sqx.common.utils.Constant; import com.sqx.common.utils.PageUtils; @@ -28,6 +29,7 @@ import com.sqx.modules.common.entity.CommonInfo; import com.sqx.modules.common.service.CommonInfoService; import com.sqx.modules.discSpinning.dao.DiscSpinningRecordDao; import com.sqx.modules.discSpinning.entity.DiscSpinningRecord; +import com.sqx.modules.discSpinning.service.DiscSpinningRecordService; import com.sqx.modules.taskCenter.dao.TaskCenterRecordDao; import com.sqx.modules.taskCenter.dao.TaskCenterRewardDao; import com.sqx.modules.taskCenter.entity.TaskCenterRecord; @@ -54,6 +56,8 @@ public class UserPrizeExchangeServiceImpl extends ServiceImpl page = this.page(new Page<>(pageNum, pageSize), wrapper); - return new PageUtils(page); + PageHelper.startPage((int) pageNum, (int) pageSize); + return PageUtils.page(new PageInfo<>(this.list(wrapper))); } @Override @@ -126,7 +130,10 @@ public class UserPrizeExchangeServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("id", dto.getForeignId()); + queryWrapper.eq("user_id", currentUserId); + DiscSpinningRecord record = discSpinningRecordService.getOne(queryWrapper); if (record == null) { throw new SqxException("中奖记录不存在"); } @@ -245,14 +252,14 @@ public class UserPrizeExchangeServiceImpl extends ServiceImpllambdaQuery() - .eq(UserMoneyDetails::getUserId, currentUserId) + .eq(UserMoneyDetails::getUserId, currentUserId) .eq(UserMoneyDetails::getType, 1) .eq(UserMoneyDetails::getClassify, 7) .eq(UserMoneyDetails::getMoneyType, 1) .likeLeft(UserMoneyDetails::getTitle, "[连续签到") .likeRight(UserMoneyDetails::getTitle, "天]") ); - if(count > 0){ + if (count > 0) { throw new SqxException("已经领取过连续签到奖励,无需重复操作"); } BigDecimal money = new BigDecimal(moneyStr); diff --git a/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java b/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java index b0dab570..332bd8ae 100644 --- a/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java +++ b/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java @@ -4,6 +4,8 @@ package com.sqx.modules.app.service.impl; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.thread.ThreadUtil; +import cn.hutool.core.util.IdcardUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -15,8 +17,9 @@ import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.http.MethodType; import com.aliyuncs.profile.DefaultProfile; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.getui.push.v2.sdk.ApiHelper; @@ -31,17 +34,18 @@ import com.getui.push.v2.sdk.dto.req.message.android.GTNotification; import com.getui.push.v2.sdk.dto.req.message.ios.Alert; import com.getui.push.v2.sdk.dto.req.message.ios.Aps; import com.getui.push.v2.sdk.dto.req.message.ios.IosDTO; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.github.qcloudsms.SmsSingleSenderResult; +import com.sqx.common.exception.SqxException; import com.sqx.common.utils.DateUtils; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; +import com.sqx.modules.app.dao.AuthCertNoDTO; import com.sqx.modules.app.dao.MsgDao; import com.sqx.modules.app.dao.UserDao; import com.sqx.modules.app.entity.*; -import com.sqx.modules.app.service.UserMoneyDetailsService; -import com.sqx.modules.app.service.UserMoneyService; -import com.sqx.modules.app.service.UserService; -import com.sqx.modules.app.service.UserVipService; +import com.sqx.modules.app.service.*; import com.sqx.modules.app.utils.JwtUtils; import com.sqx.modules.app.utils.UserConstantInterface; import com.sqx.modules.common.entity.CommonInfo; @@ -69,6 +73,7 @@ import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import weixin.popular.api.SnsAPI; @@ -117,12 +122,19 @@ public class UserServiceImpl extends ServiceImpl implements private DiscSpinningService discSpinningService; @Autowired private SysUserService sysUserService; + private final AliService aliService; + private final UserInfoService userInfoService; @Value("${spring.profiles.active}") private String profiles; private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true); + public UserServiceImpl(@Lazy AliService aliService, UserInfoService userInfoService) { + this.aliService = aliService; + this.userInfoService = userInfoService; + } + @Override public Result authenticationRegister(JSONObject jsonObject, HttpServletRequest request) { reentrantReadWriteLock.writeLock().lock(); @@ -959,6 +971,8 @@ public class UserServiceImpl extends ServiceImpl implements userInfo.setUpdateTime(sdf.format(new Date())); userInfo.setRate(new BigDecimal(commonInfoService.findOne(420).getValue())); userInfo.setTwoRate(new BigDecimal(commonInfoService.findOne(421).getValue())); + Long snowFlakeId = InvitationCodeUtil.getSnowFlakeId(); + userInfo.setUserId(snowFlakeId); baseMapper.insert(userInfo); userInfo.setInvitationCode(InvitationCodeUtil.toSerialCode(userInfo.getUserId())); baseMapper.updateById(userInfo); @@ -1348,9 +1362,11 @@ public class UserServiceImpl extends ServiceImpl implements public PageUtils selectUserPage(Integer page, Integer limit, String search, Integer sex, String platform, String sysPhone, Integer status, Integer member, String inviterCode, String userName, String invitationCode, String startTime, String endTime, String qdCode, String sysUserName, Integer vipType) { - Page pages = new Page<>(page, limit); - return new PageUtils(baseMapper.selectUserPage(pages, search, sex, platform, sysPhone, status, member, - inviterCode, userName, invitationCode, TimeCompleteUtils.completeStartTime(startTime), TimeCompleteUtils.completeEndTime(endTime), qdCode, sysUserName, vipType)); + PageHelper.startPage(page, limit); + List entities = baseMapper.selectUserPage(search, sex, platform, sysPhone, status, member, + inviterCode, userName, invitationCode, TimeCompleteUtils.completeStartTime(startTime), TimeCompleteUtils.completeEndTime(endTime), qdCode, sysUserName, vipType); + PageInfo pageInfo = new PageInfo<>(entities); + return PageUtils.page(pageInfo); } @Override @@ -1381,7 +1397,7 @@ public class UserServiceImpl extends ServiceImpl implements } @Override - public IPage> queryCourseOrder(Page> iPage, int type, String date, Long sysUserId) { + public PageUtils queryCourseOrder(Long page, Long limit, int type, String date, Long sysUserId) { DateTime parse = DateUtil.parse(date, "yyyy-MM-dd"); String startTime = DateUtil.format(parse, "yyyy-MM-dd 00:00:00"); @@ -1393,7 +1409,12 @@ public class UserServiceImpl extends ServiceImpl implements startTime = DateUtil.format(DateUtil.beginOfYear(parse), "yyyy-MM-dd 00:00:00"); endTime = DateUtil.format(DateUtil.endOfYear(parse), "yyyy-MM-dd 23:59:59"); } - return baseMapper.queryCourseOrder(iPage, type, startTime, endTime, sysUserId); + + PageHelper.startPage(page.intValue(), limit.intValue()); + List> list = baseMapper.queryCourseOrder(type, startTime, endTime, sysUserId); + PageInfo> pageInfo = new PageInfo<>(list); + + return PageUtils.page(pageInfo, true); } @Override @@ -1474,7 +1495,8 @@ public class UserServiceImpl extends ServiceImpl implements @Override public Result selectInviteUserList(Integer page, Integer limit, String userName, String phone) { - return Result.success().put("data", baseMapper.selectInviteUserList(new Page<>(page, limit), userName, phone)); + PageHelper.startPage(page,limit); + return Result.success().put("data", PageUtils.page(new PageInfo<>(baseMapper.selectInviteUserList(userName, phone)),true)); } @Override @@ -1535,4 +1557,35 @@ public class UserServiceImpl extends ServiceImpl implements } } + + @Override + public Object authCertNo(long userId, AuthCertNoDTO authCertNoDTO) { + authCertNoDTO.setName(StrUtil.trim(authCertNoDTO.getName())); + authCertNoDTO.setIdNum(StrUtil.trim(authCertNoDTO.getIdNum())); + if (!IdcardUtil.isValidCard(authCertNoDTO.getIdNum())) { + throw new SqxException("身份证号码有误"); + } + + UserEntity userEntity = baseMapper.selectById(userId); + if (userEntity == null) { + throw new SqxException("用户信息不存在"); + } + + UserInfo userInfo = userInfoService.getByUserId(userId); + if (userInfo.getCertName() != null) { + throw new SqxException("此账号已认证"); + } + + Integer count = userInfoService.countCertCount(authCertNoDTO.getName(), authCertNoDTO.getIdNum()); + if (count > 1) { + throw new SqxException("此实名信息已存在"); + } + + aliService.authCertNo(authCertNoDTO.getName(), authCertNoDTO.getIdNum()); + + userInfo.setCertName(authCertNoDTO.getName()); + userInfo.setCertNo(authCertNoDTO.getIdNum()); + userInfo.setUpdateTime(DateUtil.date()); + return userInfoService.updateById(userInfo); + } } diff --git a/src/main/java/com/sqx/modules/banner/controller/app/AppBannerController.java b/src/main/java/com/sqx/modules/banner/controller/app/AppBannerController.java index 6bf029e5..da8be333 100644 --- a/src/main/java/com/sqx/modules/banner/controller/app/AppBannerController.java +++ b/src/main/java/com/sqx/modules/banner/controller/app/AppBannerController.java @@ -3,6 +3,8 @@ package com.sqx.modules.banner.controller.app; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.banner.entity.Banner; @@ -13,6 +15,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * @author fang * @date 2020/7/9 @@ -38,7 +42,10 @@ public class AppBannerController { @ApiOperation("查询所有banner图") @ResponseBody public Result selectBannerPage(Integer page,Integer limit,Integer classify) { - return Result.success().put("data", new PageUtils(bannerService.page(new Page<>(page,limit),new QueryWrapper().eq("classify",classify)))); + PageHelper.startPage(page,limit); + List classify1 = bannerService.list(new QueryWrapper().eq("classify", classify)); + PageInfo pageInfo = new PageInfo<>(classify1); + return Result.success().put("data", PageUtils.page(pageInfo)); } @RequestMapping(value = "/clickBanner", method = RequestMethod.GET) @@ -49,4 +56,4 @@ public class AppBannerController { } -} \ No newline at end of file +} diff --git a/src/main/java/com/sqx/modules/banner/dao/BannerDao.java b/src/main/java/com/sqx/modules/banner/dao/BannerDao.java index 4710d0ac..1d9d46a8 100644 --- a/src/main/java/com/sqx/modules/banner/dao/BannerDao.java +++ b/src/main/java/com/sqx/modules/banner/dao/BannerDao.java @@ -1,8 +1,6 @@ package com.sqx.modules.banner.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sqx.modules.banner.entity.Banner; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -21,6 +19,6 @@ public interface BannerDao extends BaseMapper { // List selectList(@Param("classify") Integer classify); - IPage selectBannerPage(Page page,@Param("classify") Integer classify); + List selectBanner(@Param("classify") Integer classify); } diff --git a/src/main/java/com/sqx/modules/banner/entity/Activity.java b/src/main/java/com/sqx/modules/banner/entity/Activity.java index c1facbd8..881a3dff 100644 --- a/src/main/java/com/sqx/modules/banner/entity/Activity.java +++ b/src/main/java/com/sqx/modules/banner/entity/Activity.java @@ -3,6 +3,8 @@ package com.sqx.modules.banner.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -14,6 +16,7 @@ import java.io.Serializable; @TableName("activity") public class Activity implements Serializable { @TableId(type = IdType.INPUT) + @JsonSerialize(using = ToStringSerializer.class) private Long id; private String createAt; diff --git a/src/main/java/com/sqx/modules/banner/entity/Banner.java b/src/main/java/com/sqx/modules/banner/entity/Banner.java index 57d12e41..db632089 100644 --- a/src/main/java/com/sqx/modules/banner/entity/Banner.java +++ b/src/main/java/com/sqx/modules/banner/entity/Banner.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.sqx.modules.course.entity.Course; import lombok.AllArgsConstructor; import lombok.Data; @@ -27,6 +29,7 @@ public class Banner implements Serializable { * banner图id */ @TableId(type = IdType.INPUT) + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** diff --git a/src/main/java/com/sqx/modules/banner/service/impl/BannerServiceImpl.java b/src/main/java/com/sqx/modules/banner/service/impl/BannerServiceImpl.java index c6a4ed5f..87028667 100644 --- a/src/main/java/com/sqx/modules/banner/service/impl/BannerServiceImpl.java +++ b/src/main/java/com/sqx/modules/banner/service/impl/BannerServiceImpl.java @@ -1,13 +1,12 @@ package com.sqx.modules.banner.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.banner.dao.BannerDao; -import com.sqx.modules.banner.entity.Activity; import com.sqx.modules.banner.entity.Banner; import com.sqx.modules.banner.service.BannerService; import com.sqx.modules.course.dao.CourseDao; @@ -53,8 +52,8 @@ public class BannerServiceImpl extends ServiceImpl implements @Override public PageUtils selectBannerPage(Integer page, Integer limit, Integer classify) { - Page pages = new Page<>(page, limit); - return new PageUtils(bannerDao.selectBannerPage(pages, classify)); + PageHelper.startPage(page, limit); + return PageUtils.page(new PageInfo<>(bannerDao.selectBanner(classify))); } @Override @@ -83,12 +82,13 @@ public class BannerServiceImpl extends ServiceImpl implements @Override public Result clickBanner(Integer bannerId, int page, int limit) { - Page page1 = new Page<>(page, limit); + PageHelper.startPage(page, limit); QueryWrapper queryWrapper = new QueryWrapper(); //查询banner 对应短剧 queryWrapper.eq("banner_id", bannerId); - IPage coursePage = courseDao.selectPage(page1, queryWrapper); - return Result.success().put("data", coursePage); + List coursePage = courseDao.selectList(queryWrapper); + PageInfo pageInfo = new PageInfo<>(coursePage); + return Result.success().put("data", PageUtils.page(pageInfo, true)); } diff --git a/src/main/java/com/sqx/modules/callback/entity/UniAdCallbackRecord.java b/src/main/java/com/sqx/modules/callback/entity/UniAdCallbackRecord.java index 43ff1af6..0a3f2e94 100644 --- a/src/main/java/com/sqx/modules/callback/entity/UniAdCallbackRecord.java +++ b/src/main/java/com/sqx/modules/callback/entity/UniAdCallbackRecord.java @@ -6,6 +6,9 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.util.Date; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; /** @@ -18,12 +21,14 @@ public class UniAdCallbackRecord implements Serializable { /** * */ - @TableId(type = IdType.AUTO) + @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** * 用户id */ + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** diff --git a/src/main/java/com/sqx/modules/callback/service/impl/UniAdCallbackRecordServiceImpl.java b/src/main/java/com/sqx/modules/callback/service/impl/UniAdCallbackRecordServiceImpl.java index 98810a30..2174a5f9 100644 --- a/src/main/java/com/sqx/modules/callback/service/impl/UniAdCallbackRecordServiceImpl.java +++ b/src/main/java/com/sqx/modules/callback/service/impl/UniAdCallbackRecordServiceImpl.java @@ -97,6 +97,7 @@ public class UniAdCallbackRecordServiceImpl extends ServiceImpl findAppKv(); + + void cleanAppKv(); } \ No newline at end of file diff --git a/src/main/java/com/sqx/modules/common/service/impl/CommonInfoServiceImpl.java b/src/main/java/com/sqx/modules/common/service/impl/CommonInfoServiceImpl.java index c6729987..1e0fb0b7 100644 --- a/src/main/java/com/sqx/modules/common/service/impl/CommonInfoServiceImpl.java +++ b/src/main/java/com/sqx/modules/common/service/impl/CommonInfoServiceImpl.java @@ -1,5 +1,7 @@ package com.sqx.modules.common.service.impl; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.sqx.common.utils.Result; import com.sqx.modules.common.dao.CommonInfoDao; @@ -7,14 +9,18 @@ import com.sqx.modules.common.entity.CommonInfo; import com.sqx.modules.common.service.CommonInfoService; import com.sqx.modules.course.service.CourseService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.CachePut; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * @author fang @@ -29,6 +35,9 @@ public class CommonInfoServiceImpl extends ServiceImpl findAppKv() { + List list = commonInfoDao.selectList(Wrappers.lambdaQuery().eq(CommonInfo::getIsAppUse, 1).orderByAsc(CommonInfo::getType).orderByAsc(CommonInfo::getId)); + if (CollUtil.isEmpty(list)) { + return new HashMap<>(0); + } + Map data = list.stream().collect(Collectors.toMap(CommonInfo::getType, CommonInfo::getValue)); + return data; + } + + @Override + public void cleanAppKv() { + cacheManager.getCache("commonInfoAppKv").clear(); + } } \ No newline at end of file diff --git a/src/main/java/com/sqx/modules/complet/entity/CompletAward.java b/src/main/java/com/sqx/modules/complet/entity/CompletAward.java index 43630e21..9221f07f 100644 --- a/src/main/java/com/sqx/modules/complet/entity/CompletAward.java +++ b/src/main/java/com/sqx/modules/complet/entity/CompletAward.java @@ -5,6 +5,8 @@ import java.util.Date; import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -23,6 +25,7 @@ import lombok.Data; @ApiModel(value = "达标奖励表(邀请人员 几个人达标后的额外奖励) 实体类") public class CompletAward extends Model { @ApiModelProperty("id") + @JsonSerialize(using = ToStringSerializer.class) private Long id; @ApiModelProperty("人数") private Integer inviteCount; diff --git a/src/main/java/com/sqx/modules/coupon/entity/Coupon.java b/src/main/java/com/sqx/modules/coupon/entity/Coupon.java index 45767b6e..0b22518e 100644 --- a/src/main/java/com/sqx/modules/coupon/entity/Coupon.java +++ b/src/main/java/com/sqx/modules/coupon/entity/Coupon.java @@ -3,6 +3,8 @@ package com.sqx.modules.coupon.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -15,7 +17,8 @@ public class Coupon implements Serializable { /** * 优惠券d */ - @TableId(type = IdType.AUTO) + @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long couponId; /** * 优惠券名称 diff --git a/src/main/java/com/sqx/modules/coupon/entity/CouponUser.java b/src/main/java/com/sqx/modules/coupon/entity/CouponUser.java index dbd087ef..d57d817a 100644 --- a/src/main/java/com/sqx/modules/coupon/entity/CouponUser.java +++ b/src/main/java/com/sqx/modules/coupon/entity/CouponUser.java @@ -3,6 +3,8 @@ package com.sqx.modules.coupon.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -15,11 +17,13 @@ public class CouponUser implements Serializable { /** * 用户优惠券id */ - @TableId(type = IdType.AUTO) + @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long couponUserId; /** *用户id */ + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** * 优惠券金币 diff --git a/src/main/java/com/sqx/modules/coupon/service/impl/CouponServiceImpl.java b/src/main/java/com/sqx/modules/coupon/service/impl/CouponServiceImpl.java index ed479946..fe0a2567 100644 --- a/src/main/java/com/sqx/modules/coupon/service/impl/CouponServiceImpl.java +++ b/src/main/java/com/sqx/modules/coupon/service/impl/CouponServiceImpl.java @@ -1,9 +1,8 @@ package com.sqx.modules.coupon.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; import com.sqx.common.utils.Result; import com.sqx.modules.coupon.dao.CouponDao; import com.sqx.modules.coupon.entity.Coupon; @@ -34,13 +33,12 @@ public class CouponServiceImpl extends ServiceImpl implements @Override public Result selectCoupon(Integer page, Integer limit, String couponName) { - IPage pages = new Page<>(page, limit); + PageHelper.startPage(page,limit); QueryWrapper queryWrapper1 = new QueryWrapper<>(); if(couponName!=null){ queryWrapper1.eq("coupon_name",couponName); } - pages=baseMapper.selectPage(pages,queryWrapper1); - return Result.success().put("data",pages.getRecords()); + return Result.success().put("data",baseMapper.selectList(queryWrapper1)); } @Override diff --git a/src/main/java/com/sqx/modules/course/controller/app/AppCourseCollectController.java b/src/main/java/com/sqx/modules/course/controller/app/AppCourseCollectController.java index 7155066e..a4401c1a 100644 --- a/src/main/java/com/sqx/modules/course/controller/app/AppCourseCollectController.java +++ b/src/main/java/com/sqx/modules/course/controller/app/AppCourseCollectController.java @@ -33,5 +33,11 @@ public class AppCourseCollectController extends AbstractController { return courseCollectService.selectByUserId(page,limit,userId,classify); } + @Login + @GetMapping("/collectVideoSummary") + public Result collectVideoSummary(@RequestAttribute("userId") Long userId){ + return courseCollectService.collectVideoSummary(userId); + } + } diff --git a/src/main/java/com/sqx/modules/course/controller/app/AppCourseController.java b/src/main/java/com/sqx/modules/course/controller/app/AppCourseController.java index 537433fc..4f39ae65 100644 --- a/src/main/java/com/sqx/modules/course/controller/app/AppCourseController.java +++ b/src/main/java/com/sqx/modules/course/controller/app/AppCourseController.java @@ -45,6 +45,20 @@ public class AppCourseController extends AbstractController { null, over, wxCourse, dyCourse, wxShow, dyShow); } + @Login + @GetMapping("/courseSets") + @ApiOperation("根据id查询短剧集数列表") + public Result courseSets(@RequestAttribute("userId") Long userId, Long courseId) { + return courseDetailsService.courseSets(userId, courseId); + } + + @Login + @GetMapping("/courseDetails") + @ApiOperation("查询短剧 内容") + public Result courseDetails(@RequestAttribute("userId") Long userId, Long courseId, Integer sort) { + return courseDetailsService.courseDetails(userId, courseId, sort); + } + @Login @GetMapping("/selectCourseDetailsById") diff --git a/src/main/java/com/sqx/modules/course/dao/CourseClassificationDao.java b/src/main/java/com/sqx/modules/course/dao/CourseClassificationDao.java index 6e0c700f..07f52219 100644 --- a/src/main/java/com/sqx/modules/course/dao/CourseClassificationDao.java +++ b/src/main/java/com/sqx/modules/course/dao/CourseClassificationDao.java @@ -1,8 +1,6 @@ package com.sqx.modules.course.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sqx.modules.course.entity.CourseClassification; import com.sqx.modules.course.response.ClassificationResponse; import com.sqx.modules.course.response.CurriculumResponse; @@ -14,10 +12,7 @@ import java.util.Map; @Mapper public interface CourseClassificationDao extends BaseMapper { - - IPage> selectCourseClassificationPage(Page> pages, @Param("classificationName") String classificationName); - - IPage> selectCourseClassificationList(@Param("classificationName") String classificationName); + List> selectCourseClassificationList(@Param("classificationName") String classificationName); int updateDelete(@Param("id") Long id); diff --git a/src/main/java/com/sqx/modules/course/dao/CourseCollectDao.java b/src/main/java/com/sqx/modules/course/dao/CourseCollectDao.java index ac228619..f273a04f 100644 --- a/src/main/java/com/sqx/modules/course/dao/CourseCollectDao.java +++ b/src/main/java/com/sqx/modules/course/dao/CourseCollectDao.java @@ -1,18 +1,19 @@ package com.sqx.modules.course.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sqx.modules.course.entity.Course; import com.sqx.modules.course.entity.CourseCollect; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; -import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; @Mapper public interface CourseCollectDao extends BaseMapper { - IPage selectCourseByCollect(Page page, @Param("userId") Long userId,@Param("classify") Integer classify); + List selectCourseByCollect(@Param("userId") Long userId, @Param("classify") Integer classify); + Map selectSummary(Long userId); } diff --git a/src/main/java/com/sqx/modules/course/dao/CourseCommentDao.java b/src/main/java/com/sqx/modules/course/dao/CourseCommentDao.java index d90e5e7a..c85c8959 100644 --- a/src/main/java/com/sqx/modules/course/dao/CourseCommentDao.java +++ b/src/main/java/com/sqx/modules/course/dao/CourseCommentDao.java @@ -1,12 +1,11 @@ package com.sqx.modules.course.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sqx.modules.course.entity.CourseComment; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; import java.util.Map; @Mapper @@ -14,7 +13,7 @@ public interface CourseCommentDao extends BaseMapper { int updateCourseComment(@Param("type") Integer type, @Param("courseCommentId") Long courseCommentId); - IPage selectCourseComment(Page page, @Param("courseId") Long courseId,@Param("userId") Long userId); + List selectCourseComment(@Param("courseId") Long courseId, @Param("userId") Long userId); /** * 删除评论的点赞关联 @@ -22,8 +21,8 @@ public interface CourseCommentDao extends BaseMapper { * @return */ int deleteCommentGood(@Param("courseCommentId") Long courseCommentId); - - IPage> selectCourseCommentByUserId(Page> page,@Param("userId") Long userId); - - + + List> selectCourseCommentByUserId(@Param("userId") Long userId); + + } diff --git a/src/main/java/com/sqx/modules/course/dao/CourseDao.java b/src/main/java/com/sqx/modules/course/dao/CourseDao.java index 126f2c70..549e2c01 100644 --- a/src/main/java/com/sqx/modules/course/dao/CourseDao.java +++ b/src/main/java/com/sqx/modules/course/dao/CourseDao.java @@ -1,29 +1,30 @@ package com.sqx.modules.course.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sqx.modules.course.entity.Course; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import java.util.List; import java.util.Map; +import java.util.Set; @Mapper public interface CourseDao extends BaseMapper { int updateDelete(@Param("id") Long id); - IPage> selectCourse(Page> pages, @Param("classifyId") Long classifyId, - @Param("title") String title,@Param("isRecommend") Integer isRecommend, - @Param("status") Integer status,@Param("bannerId") Long bannerId, - @Param("sort") Integer sort,@Param("startTime") String startTime, - @Param("endTime") String endTime,@Param("userId") Long userId, - @Param("isPrice") Integer isPrice,@Param("over") Integer over, - @Param("wxCourse") Integer wxCourse,@Param("dyCourse") Integer dyCourse, - @Param("wxShow") Integer wxShow,@Param("dyShow") Integer dyShow); + List> selectCourse(@Param("classifyId") Long classifyId, + @Param("title") String title, @Param("isRecommend") Integer isRecommend, + @Param("status") Integer status, @Param("bannerId") Long bannerId, + @Param("sort") Integer sort, @Param("startTime") String startTime, + @Param("endTime") String endTime, @Param("userId") Long userId, + @Param("isPrice") Integer isPrice, @Param("over") Integer over, + @Param("wxCourse") Integer wxCourse, @Param("dyCourse") Integer dyCourse, + @Param("wxShow") Integer wxShow, @Param("dyShow") Integer dyShow); - IPage> selectCourseAdmin(Page> pages, @Param("classifyId") Long classifyId, + List> selectCourseAdmin(@Param("classifyId") Long classifyId, @Param("title") String title,@Param("isRecommend") Integer isRecommend, @Param("status") Integer status,@Param("bannerId") Long bannerId, @Param("sort") Integer sort,@Param("startTime") String startTime, @@ -34,10 +35,8 @@ public interface CourseDao extends BaseMapper { /** * 根据title 模糊查询短剧 - * @param pages * @param title * @return */ - IPage> selectCourseTitle(Page> pages, @Param("title")String title); - + List> selectCourseTitle(@Param("title")String title); } diff --git a/src/main/java/com/sqx/modules/course/dao/CourseDetailsDao.java b/src/main/java/com/sqx/modules/course/dao/CourseDetailsDao.java index e93a28a2..861a8741 100644 --- a/src/main/java/com/sqx/modules/course/dao/CourseDetailsDao.java +++ b/src/main/java/com/sqx/modules/course/dao/CourseDetailsDao.java @@ -1,25 +1,51 @@ package com.sqx.modules.course.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sqx.modules.course.entity.CourseDetails; +import com.sqx.modules.course.vo.CourseDetailsSetVo; +import com.sqx.modules.course.vo.CourseDetailsVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.Cacheable; +import java.math.BigDecimal; import java.util.List; +import java.util.Map; @Mapper +@CacheConfig public interface CourseDetailsDao extends BaseMapper { + /** + * @param courseId 剧的id + * @param isPrice 是否收费 true 收费 + * @param price 全剧价格 + * @param wholesalePrice 10集价格 + */ + @Cacheable(cacheNames = "courseSets" ,key = "#courseId") + List courseSets(@Param("courseId") Long courseId, Integer isPrice, BigDecimal price, BigDecimal wholesalePrice); - List findByCourseId(@Param("id") Long id,@Param("userId") Long userId); + List courseDetails(@Param("courseId") Long courseId, @Param("collect") Long collect, + @Param("starSort") Integer starSort, @Param("endSort") Integer endSort); - IPage selectCoursePageByCourseId(Page page, @Param("id") Long id,@Param("good") Integer good); + List findByCourseId(@Param("id") Long id, @Param("userId") Long userId); - List findByCourseIdNotUrl(@Param("id") Long id,@Param("userId") Long userId); + List selectCoursePageByCourseId(@Param("id") Long id, @Param("good") Integer good); + + List findByCourseIdNotUrl(@Param("id") Long id, @Param("userId") Long userId); int deleteCourseDetails(String[] ids); - IPage selectCourseDetailsList(Page page,String randomNum,Integer wxShow,Integer dyShow); + /** + * 播放数 + * 点赞数 + * 总集数 + */ + Map countCourse(Long courseId); + + @Cacheable(cacheNames = "courseCount" ,key = "#courseId") + Integer countCourseByCourseId(Long courseId); + + List countByCourseId(); } diff --git a/src/main/java/com/sqx/modules/course/dao/CourseUserDao.java b/src/main/java/com/sqx/modules/course/dao/CourseUserDao.java index de0a5902..71ae2fe5 100644 --- a/src/main/java/com/sqx/modules/course/dao/CourseUserDao.java +++ b/src/main/java/com/sqx/modules/course/dao/CourseUserDao.java @@ -1,23 +1,15 @@ package com.sqx.modules.course.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.sqx.modules.course.entity.Course; import com.sqx.modules.course.entity.CourseUser; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Set; @Mapper public interface CourseUserDao extends BaseMapper { - -// IPage selectLatelyCourse(Page pages, @Param("userId") Long userId); - - //子查询不能用 -// IPage selectCourseByCourseUser(Page pages, @Param("userId") Long userId); - /** * 查询用户是否订购 * @@ -28,6 +20,8 @@ public interface CourseUserDao extends BaseMapper { CourseUser selectCourseUser(@Param("id") Long id, @Param("userId") Long userId); List selectCourseUserList(@Param("id") Long id, @Param("userId") Long userId); + //查询用户已购买的集 + Set selectUserCourseDetailsId(@Param("id") Long id, @Param("userId") Long userId); /** * 修改时间 diff --git a/src/main/java/com/sqx/modules/course/entity/CommentGood.java b/src/main/java/com/sqx/modules/course/entity/CommentGood.java index a4364f5b..3f57f10b 100644 --- a/src/main/java/com/sqx/modules/course/entity/CommentGood.java +++ b/src/main/java/com/sqx/modules/course/entity/CommentGood.java @@ -2,6 +2,8 @@ package com.sqx.modules.course.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -20,17 +22,20 @@ public class CommentGood implements Serializable { /** * 评论点赞id */ - @TableId(type = IdType.AUTO) + @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long commentGoodId; /** * 评论id */ + @JsonSerialize(using = ToStringSerializer.class) private Long courseCommentId; /** * 用户id */ + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** diff --git a/src/main/java/com/sqx/modules/course/entity/Course.java b/src/main/java/com/sqx/modules/course/entity/Course.java index cf486c58..b62bd296 100644 --- a/src/main/java/com/sqx/modules/course/entity/Course.java +++ b/src/main/java/com/sqx/modules/course/entity/Course.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.sqx.modules.orders.entity.Orders; import lombok.Data; @@ -25,7 +27,8 @@ public class Course implements Serializable { /** * 短剧id */ - @TableId(type = IdType.AUTO) + @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long courseId; /** @@ -68,6 +71,7 @@ public class Course implements Serializable { * 分类 */ @TableField("classify_id") + @JsonSerialize(using = ToStringSerializer.class) private Long classifyId; /** * 短剧分类对象 @@ -332,6 +336,8 @@ public class Course implements Serializable { @TableField(exist = false) private Integer isCollect; + private Integer weekView; + private Integer weekPay; public Course() {} } diff --git a/src/main/java/com/sqx/modules/course/entity/CourseClassification.java b/src/main/java/com/sqx/modules/course/entity/CourseClassification.java index 52d3f3ee..0e98c206 100644 --- a/src/main/java/com/sqx/modules/course/entity/CourseClassification.java +++ b/src/main/java/com/sqx/modules/course/entity/CourseClassification.java @@ -3,6 +3,8 @@ package com.sqx.modules.course.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -19,7 +21,8 @@ public class CourseClassification implements Serializable { /** * 分类id */ - @TableId(type = IdType.AUTO) + @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long classificationId; /** * 分类名称 diff --git a/src/main/java/com/sqx/modules/course/entity/CourseCollect.java b/src/main/java/com/sqx/modules/course/entity/CourseCollect.java index 17b6e034..9c9935a7 100644 --- a/src/main/java/com/sqx/modules/course/entity/CourseCollect.java +++ b/src/main/java/com/sqx/modules/course/entity/CourseCollect.java @@ -1,11 +1,12 @@ package com.sqx.modules.course.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import lombok.experimental.Accessors; +import org.apache.ibatis.annotations.Update; +import org.apache.ibatis.annotations.UpdateProvider; import java.io.Serializable; @@ -25,22 +26,27 @@ public class CourseCollect implements Serializable { /** * 收藏id */ - @TableId(type = IdType.AUTO) + @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long courseCollectId; /** * 短剧id */ + @JsonSerialize(using = ToStringSerializer.class) private Long courseId; /** * 集id */ + @JsonSerialize(using = ToStringSerializer.class) private Long courseDetailsId; /** * 用户id */ + @TableField(updateStrategy = FieldStrategy.NEVER) + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** diff --git a/src/main/java/com/sqx/modules/course/entity/CourseComment.java b/src/main/java/com/sqx/modules/course/entity/CourseComment.java index a8e9001b..4d9b19bd 100644 --- a/src/main/java/com/sqx/modules/course/entity/CourseComment.java +++ b/src/main/java/com/sqx/modules/course/entity/CourseComment.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.sqx.modules.app.entity.UserEntity; import lombok.Data; @@ -24,12 +26,14 @@ public class CourseComment implements Serializable { /** * 短剧评论id */ - @TableId(type = IdType.AUTO) + @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long courseCommentId; /** * 用户id */ + @JsonSerialize(using = ToStringSerializer.class) private Long userId; @TableField(exist = false) private UserEntity userEntity; @@ -49,6 +53,7 @@ public class CourseComment implements Serializable { /** * 短剧id */ + @JsonSerialize(using = ToStringSerializer.class) private Long courseId; /** * 短剧 diff --git a/src/main/java/com/sqx/modules/course/entity/CourseDetails.java b/src/main/java/com/sqx/modules/course/entity/CourseDetails.java index 7099c515..661e09a9 100644 --- a/src/main/java/com/sqx/modules/course/entity/CourseDetails.java +++ b/src/main/java/com/sqx/modules/course/entity/CourseDetails.java @@ -1,9 +1,8 @@ package com.sqx.modules.course.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -24,12 +23,15 @@ public class CourseDetails implements Serializable { /** * 短剧目录id */ - @TableId(type = IdType.AUTO) + @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long courseDetailsId; /** * 短剧id */ + @TableField(updateStrategy = FieldStrategy.NEVER) + @JsonSerialize(using = ToStringSerializer.class) private Long courseId; @TableField(exist = false) @@ -136,11 +138,13 @@ public class CourseDetails implements Serializable { /** * 播放量 */ + @JsonSerialize(using = ToStringSerializer.class) private Long viewCount; /** * 完播量 */ + @JsonSerialize(using = ToStringSerializer.class) private Long playCompleteCount; @TableField(exist = false) diff --git a/src/main/java/com/sqx/modules/course/entity/CourseUser.java b/src/main/java/com/sqx/modules/course/entity/CourseUser.java index fe28e60b..240f934f 100644 --- a/src/main/java/com/sqx/modules/course/entity/CourseUser.java +++ b/src/main/java/com/sqx/modules/course/entity/CourseUser.java @@ -1,9 +1,8 @@ package com.sqx.modules.course.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -23,17 +22,20 @@ public class CourseUser implements Serializable { /** * 我的短剧id */ - @TableId(type = IdType.AUTO) + @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long courseUserId; /** * 短剧id */ + @JsonSerialize(using = ToStringSerializer.class) private Long courseId; /** * 集数id */ + @JsonSerialize(using = ToStringSerializer.class) private Long courseDetailsId; /** @@ -44,11 +46,14 @@ public class CourseUser implements Serializable { /** * 订单id */ + @JsonSerialize(using = ToStringSerializer.class) private Long orderId; /** * 用户id */ + @TableField(updateStrategy = FieldStrategy.NEVER) + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** diff --git a/src/main/java/com/sqx/modules/course/service/CourseCollectService.java b/src/main/java/com/sqx/modules/course/service/CourseCollectService.java index 0a612b5a..446f5674 100644 --- a/src/main/java/com/sqx/modules/course/service/CourseCollectService.java +++ b/src/main/java/com/sqx/modules/course/service/CourseCollectService.java @@ -9,6 +9,7 @@ public interface CourseCollectService extends IService { Result insertCourseCollect(CourseCollect courseCollect); Result selectByUserId(Integer page, Integer limit, Long userId,Integer classify); + Result collectVideoSummary(Long userId); CourseCollect selectCourseCollectUserIdAnd(Long userId,Long courseId,Integer classify,Long courseDetailsId); } diff --git a/src/main/java/com/sqx/modules/course/service/CourseDetailsService.java b/src/main/java/com/sqx/modules/course/service/CourseDetailsService.java index bbad4fca..71a3534e 100644 --- a/src/main/java/com/sqx/modules/course/service/CourseDetailsService.java +++ b/src/main/java/com/sqx/modules/course/service/CourseDetailsService.java @@ -14,6 +14,16 @@ public interface CourseDetailsService extends IService { Result deleteCourseDetails(String ids); + /** + * 集数列表 + * @param userId + * @param courseId + * @return + */ + Result courseSets(Long userId, Long courseId); + + Result courseDetails(Long userId, Long courseId, Integer sort); + Result selectCourseDetailsById(Long id,String token,String courseDetailsId); Result selectCourseDetailsList(Integer page,Integer limit,String token,String randomNum,Integer wxShow,Integer dyShow); diff --git a/src/main/java/com/sqx/modules/course/service/CourseService.java b/src/main/java/com/sqx/modules/course/service/CourseService.java index 85932b6d..8c5db2e5 100644 --- a/src/main/java/com/sqx/modules/course/service/CourseService.java +++ b/src/main/java/com/sqx/modules/course/service/CourseService.java @@ -63,4 +63,8 @@ public interface CourseService extends IService { Result getRedEnvelopeTips(Long userId); + /** + * 增加短剧周支付次数 + */ + void incrWeekPayCount(Long courseId); } diff --git a/src/main/java/com/sqx/modules/course/service/CourseUserService.java b/src/main/java/com/sqx/modules/course/service/CourseUserService.java index 4a972394..7f221b54 100644 --- a/src/main/java/com/sqx/modules/course/service/CourseUserService.java +++ b/src/main/java/com/sqx/modules/course/service/CourseUserService.java @@ -9,9 +9,5 @@ public interface CourseUserService extends IService { void updateTime(Long courseId); -// Result selectCourseUser(Integer page, Integer limit, Long userId); - -// Result selectLatelyCourse(Integer page, Integer limit, Long userId); - Result insertCourseUser(CourseUser courseUser); } diff --git a/src/main/java/com/sqx/modules/course/service/impl/CourseClassificationServiceImpl.java b/src/main/java/com/sqx/modules/course/service/impl/CourseClassificationServiceImpl.java index b4acde98..d2363c01 100644 --- a/src/main/java/com/sqx/modules/course/service/impl/CourseClassificationServiceImpl.java +++ b/src/main/java/com/sqx/modules/course/service/impl/CourseClassificationServiceImpl.java @@ -1,8 +1,9 @@ package com.sqx.modules.course.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.course.dao.CourseClassificationDao; @@ -37,11 +38,16 @@ public class CourseClassificationServiceImpl extends ServiceImpl> pages = new Page<>(page, limit); - return Result.success().put("data", new PageUtils(baseMapper.selectCourseClassificationPage(pages, classificationName))); + if (limit == null) { + limit = 10; + } + PageHelper.startPage(page, limit); + List> list = baseMapper.selectCourseClassificationList(classificationName); + PageInfo> pageInfo = new PageInfo<>(list); + return Result.success().put("data", PageUtils.page(pageInfo)); } @Override diff --git a/src/main/java/com/sqx/modules/course/service/impl/CourseCollectServiceImpl.java b/src/main/java/com/sqx/modules/course/service/impl/CourseCollectServiceImpl.java index 02a33b55..574927b4 100644 --- a/src/main/java/com/sqx/modules/course/service/impl/CourseCollectServiceImpl.java +++ b/src/main/java/com/sqx/modules/course/service/impl/CourseCollectServiceImpl.java @@ -1,13 +1,18 @@ package com.sqx.modules.course.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.DateUtils; +import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.course.dao.CourseClassificationDao; import com.sqx.modules.course.dao.CourseCollectDao; +import com.sqx.modules.course.dao.CourseDao; +import com.sqx.modules.course.dao.CourseDetailsDao; import com.sqx.modules.course.entity.Course; import com.sqx.modules.course.entity.CourseCollect; import com.sqx.modules.course.entity.CourseDetails; @@ -19,19 +24,26 @@ import org.springframework.cache.annotation.CachePut; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.concurrent.locks.ReentrantReadWriteLock; +import java.util.stream.Collectors; @Service public class CourseCollectServiceImpl extends ServiceImpl implements CourseCollectService { + private final CourseDao courseDao; @Autowired private CourseClassificationDao courseClassificationDao; @Autowired private CourseDetailsService courseDetailsService; - private ReentrantReadWriteLock reentrantReadWriteLock=new ReentrantReadWriteLock(true); + private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true); + @Autowired + private CourseDetailsDao courseDetailsDao; + + public CourseCollectServiceImpl(CourseDao courseDao) { + this.courseDao = courseDao; + } @Override @CacheEvict(value = "app:courseCollect", key = "#courseCollect.userId") @@ -42,15 +54,18 @@ public class CourseCollectServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.eq("user_id", courseCollect.getUserId()).eq("classify", 3).eq("course_id", courseCollect.getCourseId()); queryWrapper.orderByDesc("create_time"); - queryWrapper.last("limit 1"); - CourseCollect collect = baseMapper.selectOne(queryWrapper); - if (collect != null) { - collect.setUpdateTime(DateUtils.format(new Date())); - collect.setCourseCollectId(courseCollect.getCourseCollectId()); - baseMapper.updateById(collect); - return Result.success("操作成功!"); + PageHelper.startPage(1, 1); + List courseCollects = baseMapper.selectList(queryWrapper); + CourseCollect collect; + if (CollectionUtil.isNotEmpty(courseCollects)) { + collect = courseCollects.get(0); + if (collect != null) { + collect.setUpdateTime(DateUtils.format(new Date())); + collect.setCourseCollectId(courseCollect.getCourseCollectId()); + baseMapper.updateById(collect); + return Result.success("操作成功!"); + } } - collect = new CourseCollect() .setUserId(courseCollect.getUserId()) .setCourseId(courseCollect.getCourseId()) @@ -61,37 +76,38 @@ public class CourseCollectServiceImpl extends ServiceImpl pages=new Page<>(page,limit); - IPage courseIPage = baseMapper.selectCourseByCollect(pages, userId,classify); - List courses = courseIPage.getRecords(); - if (courses != null && courses.size() > 0) { + public Result selectByUserId(Integer page, Integer limit, Long userId, Integer classify) { + PageHelper.startPage(page, limit); + List courseCollectList = baseMapper.selectList(new LambdaQueryWrapper() + .eq(CourseCollect::getUserId, userId) + .eq(CourseCollect::getClassify, classify) + .isNotNull(CourseCollect::getCourseId) + .select(CourseCollect::getCourseId, CourseCollect::getUserId, CourseCollect::getCourseDetailsId)); + + Set courseIdList = new HashSet<>(); + HashMap courseCollectHashMap = new HashMap<>(); + for (CourseCollect courseCollect : courseCollectList) { + courseIdList.add(courseCollect.getCourseId()); + courseCollectHashMap.put(courseCollect.getCourseId(), courseCollect); + } + + List courseList = courseIdList.isEmpty() ? new ArrayList<>() : courseDao.selectList(new LambdaQueryWrapper().in(Course::getCourseId, courseIdList)); +// List courseList = baseMapper.selectCourseByCollect(userId, classify); + Set detailIdList = courseCollectList.stream().map(CourseCollect::getCourseDetailsId).collect(Collectors.toSet()); + Map courseDetailsMap = detailIdList.isEmpty() ? new HashMap<>() : courseDetailsService.list(new LambdaQueryWrapper() + .in(CourseDetails::getCourseDetailsId, detailIdList)).stream() + .collect(Collectors.toMap(CourseDetails::getCourseDetailsId, item->item)); + + Map countMap = courseDetailsDao.countByCourseId().stream().collect(Collectors.toMap(CourseDetails::getCourseId, CourseDetails::getCourseDetailsCount)); + + PageInfo pageInfo = new PageInfo<>(courseList); + if (CollectionUtil.isNotEmpty(courseList)) { + List courses = pageInfo.getList(); for (Course course : courses) { course.setCourseClassification(courseClassificationDao.selectById(course.getClassifyId())); + CourseCollect courseCollect = courseCollectHashMap.get(course.getCourseId()); + CourseDetails courseDetails = courseCollect == null ? null : courseDetailsMap.get(courseCollect.getCourseDetailsId()); + course.setCourseDetailsCount(courseCollect == null ? 0 :countMap.get(courseCollect.getCourseId())); + if (courseDetails != null) { + course.setCourseDetailsName(courseDetails.getCourseDetailsName()); + course.setCourseDetailsId(courseDetails.getCourseDetailsId()); + } } } - return Result.success().put("data",courseIPage); + return Result.success().put("data", PageUtils.page(pageInfo, true)); } + @Override + public Result collectVideoSummary(Long userId) { + return Result.success().put("data", baseMapper.selectSummary(userId)); + } @Override - public CourseCollect selectCourseCollectUserIdAnd(Long userId,Long courseId,Integer classify,Long courseDetailsId){ - return baseMapper.selectOne(new QueryWrapper().eq(courseDetailsId!=null,"course_details_id",courseDetailsId).eq("user_id",userId).eq("classify",classify).eq("course_id",courseId)); + public CourseCollect selectCourseCollectUserIdAnd(Long userId, Long courseId, Integer classify, Long courseDetailsId) { + return baseMapper.selectOne(new QueryWrapper().eq(courseDetailsId != null, "course_details_id", courseDetailsId).eq("user_id", userId).eq("classify", classify).eq("course_id", courseId)); } diff --git a/src/main/java/com/sqx/modules/course/service/impl/CourseCommentServiceImpl.java b/src/main/java/com/sqx/modules/course/service/impl/CourseCommentServiceImpl.java index 4edbaab7..1b27dab4 100644 --- a/src/main/java/com/sqx/modules/course/service/impl/CourseCommentServiceImpl.java +++ b/src/main/java/com/sqx/modules/course/service/impl/CourseCommentServiceImpl.java @@ -1,7 +1,8 @@ package com.sqx.modules.course.service.impl; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.course.dao.CourseCommentDao; @@ -15,6 +16,7 @@ import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.List; import java.util.Map; @Service @@ -62,9 +64,11 @@ public class CourseCommentServiceImpl extends ServiceImpl courseCommentPage = new Page<>(page, limit); - return Result.success().put("data", new PageUtils(baseMapper.selectCourseComment(courseCommentPage, courseId,userId))); + public Result selectCourseComment(Integer page, Integer limit, Long courseId, Long userId) { + PageHelper.startPage(page, limit); + List commentList = baseMapper.selectCourseComment(courseId, userId); + PageInfo pageInfo = new PageInfo<>(commentList); + return Result.success().put("data", PageUtils.page(pageInfo)); } @Override @@ -77,8 +81,10 @@ public class CourseCommentServiceImpl extends ServiceImpl> pages=new Page(page,limit); - return Result.success().put("data",new PageUtils(baseMapper.selectCourseCommentByUserId(pages,userId))); + public Result selectCourseCommentUser(Integer page, Integer limit, Long userId) { + PageHelper.startPage(page, limit); + List> list = baseMapper.selectCourseCommentByUserId(userId); + PageInfo> pageInfo = new PageInfo<>(list); + return Result.success().put("data", PageUtils.page(pageInfo)); } } diff --git a/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java b/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java index abde3ffc..da447a24 100644 --- a/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java +++ b/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java @@ -1,16 +1,20 @@ package com.sqx.modules.course.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Validator; +import cn.hutool.core.thread.ThreadUtil; +import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.exception.SqxException; +import com.sqx.common.utils.ApiAccessLimitUtil; import com.sqx.common.utils.DateUtils; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; @@ -29,6 +33,8 @@ import com.sqx.modules.course.entity.CourseDetails; import com.sqx.modules.course.entity.CourseUser; import com.sqx.modules.course.service.CourseDetailsService; import com.sqx.modules.course.vo.CourseDetailsIn; +import com.sqx.modules.course.vo.CourseDetailsSetVo; +import com.sqx.modules.course.vo.CourseDetailsVo; import com.sqx.modules.orders.dao.OrdersDao; import com.sqx.modules.orders.service.OrdersService; import com.sqx.modules.redisService.impl.RedisServiceImpl; @@ -40,13 +46,14 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.math.BigDecimal; -import java.util.Date; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; @Service @Slf4j @@ -75,6 +82,7 @@ public class CourseDetailsServiceImpl extends ServiceImpl().eq("course_id", courseId) + .eq("user_id", userId).eq("classify", 3).last("limit 1")); + Course bean = courseDao.selectById(courseId); + //查询用户是否购买了整集 + CourseUser courseUser = courseUserDao.selectCourseUser(courseId, userId); + // 每天购买超过上限,获得免费时间段资格 + boolean freeWatch = checkFreeWatchPayCount(userId); + List courseDetailsSetVos; + if (freeWatch || courseUser != null) { + courseDetailsSetVos = baseMapper.courseSets(courseId, 2, null, null); + } else { +// courseDetailsSetVos = baseMapper.courseSets(courseId, 1, bean.getPrice(), bean.getWholesalePrice()); + courseDetailsSetVos = baseMapper.courseSets(courseId, 2, bean.getPrice(), bean.getWholesalePrice()); + //查询用户是否单独购买了集 + Set detailsId = courseUserDao.selectUserCourseDetailsId(courseId, userId); + if (courseCollect != null) { + for (CourseDetailsSetVo s : courseDetailsSetVos) { + if (s.getCourseDetailsId().equals(courseCollect.getCourseDetailsId())) { + s.setCurrent(1); + break; + } + } + } else { + courseDetailsSetVos.get(0).setCurrent(1); + } + if (CollectionUtil.isNotEmpty(detailsId)) { + courseDetailsSetVos = courseDetailsSetVos.stream() + .peek(s -> { + if (detailsId.contains(s.getCourseDetailsId())) { + s.setIsPrice(2); + } + }) + .collect(Collectors.toList()); + } + } + Map map = new HashMap<>(); + map.put("title", bean.getTitle()); + map.put("list", courseDetailsSetVos); + return new Result().put("data", map); + } + + @Override + public Result courseDetails(Long userId, Long courseId, Integer sort) { + Course bean = courseDao.selectById(courseId); + Integer detailCount = baseMapper.countCourseByCourseId(courseId); + if (detailCount == null || detailCount.equals(0)) { + return Result.error("暂无可看剧集,请观看其它影片。"); + } + int startSort = 0; + int endSort = 5; + if (sort == null) { + CourseCollect courseCollect = courseCollectDao.selectOne(new QueryWrapper().eq("course_id", courseId) + .eq("user_id", userId).eq("classify", 3).last("limit 1")); + if (courseCollect != null) { + CourseDetails courseDetails = baseMapper.selectOne(new QueryWrapper() + .eq("course_details_id", courseCollect.getCourseDetailsId()).eq("course_id", courseCollect.getCourseId()).last("limit 1")); + sort = courseDetails.getSort(); + } + } + if (sort != null && sort > 2) { + startSort = sort - 3; + endSort = sort + 3; + if (detailCount < endSort) { + startSort = detailCount - 5; + endSort = detailCount + 1; + } + } + //查询用户是否购买了整集 + CourseUser courseUser = courseUserDao.selectCourseUser(courseId, userId); + boolean freeWatch = true; + if (courseUser == null) { + // 每天购买超过上限,获得免费时间段资格 + freeWatch = checkFreeWatchPayCount(userId); + } + Integer collect = courseCollectDao.selectCount(new QueryWrapper() + .eq("user_id", userId).eq("course_id", courseId) + .eq("classify", 1).last("limit 1")); + Set detailsId = new HashSet<>(); + //全剧免费 + if ((!freeWatch)) { + detailsId = courseUserDao.selectUserCourseDetailsId(courseId, userId); + } + List courseDetailsVos = baseMapper.courseDetails(courseId, collect == null ? 0L : 1L, startSort, endSort); + Set finalDetailsId = detailsId; + courseDetailsVos.stream().forEach(s -> { + // 不免费 3集以后 (已买的不为空 并不在已买的包含) +// if (!freeWatch && s.getSort() > 3 && (CollectionUtil.isEmpty(finalDetailsId) || !finalDetailsId.contains(s.getCourseDetailsId()))) { +// s.setVideoUrl(null); +// } + CourseCollect isGood = courseCollectDao.selectOne(new QueryWrapper() + .eq("user_id", userId).eq("course_details_id", s.getCourseDetailsId()).eq("classify", 2).last("limit 1")); + s.setIsGood(isGood == null ? 0 : 1); + }); + ThreadUtil.execAsync(() -> { + setCourseView(bean); + }); + return new Result().put("data", courseDetailsVos); + } + @Override public Result selectCourseDetailsById(Long id, String token, String courseDetailsId) { Course bean = courseDao.selectById(id); @@ -139,6 +263,9 @@ public class CourseDetailsServiceImpl extends ServiceImpl().eq(CourseDetails::getCourseId, id) + .eq(CourseDetails::getCourseDetailsId, courseCollect.getCourseDetailsId())); if (courseDetails != null) { bean.setCourseDetailsId(courseDetails.getCourseDetailsId()); bean.setCourseDetailsName(courseDetails.getCourseDetailsName()); bean.setCourseDetailsCount(courseDetails.getCourseDetailsCount()); } - }else{ + } else { //默认取第一集 CourseDetails courseDetails = courseDetailsDao.selectOne(Wrappers.lambdaQuery().eq(CourseDetails::getCourseId, id) .orderByAsc(CourseDetails::getSort).last(" limit 1")); @@ -241,24 +369,30 @@ public class CourseDetailsServiceImpl extends ServiceImpl courseDetailsIPage = baseMapper.selectCourseDetailsList(new Page<>(page, limit), randomNum, wxShow, dyShow); - - if (userId != null) { - List records = courseDetailsIPage.getRecords(); - for (CourseDetails courseDetails : records) { - courseDetails.setIsCollect(courseCollectDao.selectCount(new QueryWrapper() - .eq("user_id", userId).eq("course_details_id", courseDetails.getCourseDetailsId()).eq("classify", 1))); - courseDetails.setIsGood(courseCollectDao.selectCount(new QueryWrapper() - .eq("user_id", userId).eq("course_details_id", courseDetails.getCourseDetailsId()).eq("classify", 2))); - courseDetails.setCourse(courseDao.selectById(courseDetails.getCourseId())); - courseDetails.setTitle(courseDetails.getCourse().getTitle()); - courseDetails.setCourseDetailsCount(baseMapper.selectCount(new QueryWrapper().eq("course_id", courseDetails.getCourseId()))); - } } - return Result.success().put("data", new PageUtils(courseDetailsIPage)); + Integer detailCount = baseMapper.selectCount(new QueryWrapper<>()); + if (detailCount != null) { + PageHelper.startPage(RandomUtil.randomInt(1, detailCount / 10), 10); + } + List list = baseMapper.selectList(new QueryWrapper<>()); + + PageInfo pageInfo = new PageInfo<>(list); + +// if (userId != null) { +// List records = pageInfo.getList(); +// for (CourseDetails courseDetails : records) { +// courseDetails.setIsCollect(courseCollectDao.selectCount(new QueryWrapper() +// .eq("user_id", userId).eq("course_details_id", courseDetails.getCourseDetailsId()).eq("classify", 1))); +// courseDetails.setIsGood(courseCollectDao.selectCount(new QueryWrapper() +// .eq("user_id", userId).eq("course_details_id", courseDetails.getCourseDetailsId()).eq("classify", 2))); +// courseDetails.setCourse(courseDao.selectById(courseDetails.getCourseId())); +// courseDetails.setTitle(courseDetails.getCourse().getTitle()); +// courseDetails.setCourseDetailsCount(baseMapper.selectCount(new QueryWrapper().eq("course_id", courseDetails.getCourseId()))); +// } +// } + return Result.success().put("data", PageUtils.page(pageInfo)); } @Override diff --git a/src/main/java/com/sqx/modules/course/service/impl/CourseServiceImpl.java b/src/main/java/com/sqx/modules/course/service/impl/CourseServiceImpl.java index 4a68dd00..01efa8b7 100644 --- a/src/main/java/com/sqx/modules/course/service/impl/CourseServiceImpl.java +++ b/src/main/java/com/sqx/modules/course/service/impl/CourseServiceImpl.java @@ -9,17 +9,21 @@ import cn.hutool.crypto.SecureUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.google.common.util.concurrent.ThreadFactoryBuilder; +import com.sqx.common.utils.*; import com.sqx.common.utils.DateUtils; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.RedisUtils; import com.sqx.common.utils.Result; -import com.sqx.modules.app.entity.InviteAchievement; import com.sqx.modules.app.service.InviteAchievementService; import com.sqx.modules.app.utils.JwtUtils; import com.sqx.modules.common.service.CommonInfoService; @@ -33,7 +37,9 @@ import com.sqx.modules.course.entity.CourseUser; import com.sqx.modules.course.service.CourseService; import com.sqx.modules.course.service.CourseUserService; import com.sqx.modules.course.vo.CourseIn; +import com.sqx.modules.orders.dao.OrdersDao; import com.sqx.modules.orders.service.OrdersService; +import com.sqx.modules.redisService.RedisService; import com.sqx.modules.search.service.AppSearchService; import com.sqx.modules.utils.EasyPoi.ExcelUtils; import com.sqx.modules.utils.HttpClientUtil; @@ -43,6 +49,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheEvict; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @@ -69,18 +76,22 @@ public class CourseServiceImpl extends ServiceImpl implements @Autowired private OrdersService ordersService; @Autowired + private OrdersDao ordersDao; + @Autowired private CommonInfoService commonInfoService; @Autowired private JwtUtils jwtUtils; @Autowired private CourseUserService courseUserService; + private final RedisService redisService; private final InviteAchievementService inviteAchievementService; @Resource private RedisUtils redisUtils; - public CourseServiceImpl(InviteAchievementService inviteAchievementService) { + public CourseServiceImpl(RedisService redisService, InviteAchievementService inviteAchievementService) { + this.redisService = redisService; this.inviteAchievementService = inviteAchievementService; } @@ -139,6 +150,7 @@ public class CourseServiceImpl extends ServiceImpl implements } @Override + @CacheEvict(cacheNames = {"courseSets", "courseCount"}, key = "#course.courseId") public Result updateCourse(Course course) { baseMapper.updateById(course); return Result.success("操作成功!"); @@ -163,7 +175,6 @@ public class CourseServiceImpl extends ServiceImpl implements } } } - Page> pages = new Page<>(page, limit); // 一周的第一天 DateTime begin = DateUtil.beginOfWeek(new Date()); String startTime = begin.toString(); @@ -177,30 +188,47 @@ public class CourseServiceImpl extends ServiceImpl implements Map data = JSONUtil.toBean(cache, Map.class); return Result.success().put("data", data); } + + PageHelper.startPage(page, limit); if (admin == null) { - IPage> mapIPage = baseMapper.selectCourse(pages, classifyId, title, isRecommend, status, bannerId, + List> map = baseMapper.selectCourse(classifyId, title, isRecommend, status, bannerId, sort, startTime, endTime, userId, isPrice, over, wxCourse, dyCourse, wxShow, dyShow); - List> records = mapIPage.getRecords(); - for (Map map : records) { - map.put("courseDetailsId", null); - map.put("courseDetailsName", ""); - map.put("dyEpisodeId", ""); - map.put("wxCourseDetailsId", ""); + PageInfo> pageInfo = new PageInfo<>(map); + List> records = pageInfo.getList(); + for (Map m : records) { + Integer i = courseDetailsDao.selectCount(new QueryWrapper().eq("course_id", m.get("courseId"))); + m.put("courseDetailsCount", i == null ? 0 : i); + m.put("courseDetailsId", null); + m.put("courseDetailsName", ""); + m.put("dyEpisodeId", ""); + m.put("wxCourseDetailsId", ""); } - setCache(cacheKey, JSONUtil.toJsonStr(new PageUtils(mapIPage))); - return Result.success().put("data", new PageUtils(mapIPage)); + PageUtils pageUtils = PageUtils.page(pageInfo); + setCache(cacheKey, JSONUtil.toJsonStr(pageUtils)); + return Result.success().put("data", pageUtils); } - IPage> mapIPage = baseMapper.selectCourseAdmin(pages, classifyId, title, isRecommend, status, bannerId, + +// 无用 ifnull(tt.isRecommend,0) as isRecommend +// left join (select course_id,count(*) as isRecommend from course_details where good=1 group by course_id) tt on tt.course_id = c.course_id + + List> list = baseMapper.selectCourseAdmin(classifyId, title, isRecommend, status, bannerId, sort, startTime, endTime, userId, isPrice, over, wxCourse, dyCourse, wxShow, dyShow); - List> records = mapIPage.getRecords(); + PageInfo> pageInfo = new PageInfo<>(list); + List> records = pageInfo.getList(); for (Map map : records) { + long courseId = Convert.toLong(map.get("courseId")); + Map countMap = courseDetailsDao.countCourse(courseId); + BigDecimal payMoney = ordersDao.sumPayByCourseId(courseId); + map.put("payMoney", payMoney == null ? BigDecimal.ZERO : payMoney); map.put("courseDetailsId", null); map.put("courseDetailsName", ""); map.put("dyEpisodeId", ""); map.put("wxCourseDetailsId", ""); + map.putAll(countMap); } - setCache(cacheKey, JSONUtil.toJsonStr(new PageUtils(mapIPage))); - return Result.success().put("data", new PageUtils(mapIPage)); + PageUtils pageUtils = PageUtils.page(pageInfo); +// setCache(cacheKey, JSONUtil.toJsonStr(pageUtils)); + return Result.success().put("data", pageUtils); } /*@Override @@ -233,8 +261,10 @@ public class CourseServiceImpl extends ServiceImpl implements @Override public Result selectCourseById(Integer page, Integer limit, Long id, Integer good) { - Page pages = new Page<>(page, limit); - return Result.success().put("data", new PageUtils(courseDetailsDao.selectCoursePageByCourseId(pages, id, good))); + PageHelper.startPage(page, limit); + List details = courseDetailsDao.selectCoursePageByCourseId(id, good); + PageInfo pageInfo = new PageInfo<>(details); + return Result.success().put("data", PageUtils.page(pageInfo)); } @Override @@ -245,15 +275,14 @@ public class CourseServiceImpl extends ServiceImpl implements //记录或更新搜索内容 appSearchService.insetAppSearch(title, userId); } - //拼接模糊查询 - String title1 = null; - if (StringUtils.isNotBlank(title)) { - title1 = "%" + title + "%"; - return Result.success().put("data", new PageUtils(baseMapper.selectCourseTitle(pages, title1))); - } else { + if (StringUtils.isEmpty(title)) { return Result.error("请输入要搜索的内容!"); } + PageHelper.startPage(page, limit); + List> list = baseMapper.selectCourseTitle(title); + PageInfo> pageInfo = new PageInfo<>(list); + return Result.success().put("data", PageUtils.page(pageInfo)); } @Override @@ -1288,4 +1317,14 @@ public class CourseServiceImpl extends ServiceImpl implements return Result.success().put("data", data); } + + @Override + public void incrWeekPayCount(Long courseId) { + if (ApiAccessLimitUtil.isAccessAllowed("setWeekPayCount", courseId.toString(), 1, 600)) { + int count = redisService.getCourseWeekPayCount(courseId); + update(null, new LambdaUpdateWrapper() + .eq(Course::getCourseId, courseId) + .set(Course::getWeekPay, count)); + } + } } diff --git a/src/main/java/com/sqx/modules/course/service/impl/CourseUserServiceImpl.java b/src/main/java/com/sqx/modules/course/service/impl/CourseUserServiceImpl.java index 37055fcf..d6cf01bf 100644 --- a/src/main/java/com/sqx/modules/course/service/impl/CourseUserServiceImpl.java +++ b/src/main/java/com/sqx/modules/course/service/impl/CourseUserServiceImpl.java @@ -2,17 +2,12 @@ package com.sqx.modules.course.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.course.dao.CourseClassificationDao; import com.sqx.modules.course.dao.CourseUserDao; -import com.sqx.modules.course.entity.Course; import com.sqx.modules.course.entity.CourseUser; import com.sqx.modules.course.service.CourseUserService; -import com.sqx.modules.orders.entity.Orders; import com.sqx.modules.orders.service.OrdersService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -20,7 +15,6 @@ import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.util.Date; -import java.util.List; @Service @Slf4j @@ -42,41 +36,6 @@ public class CourseUserServiceImpl extends ServiceImpl courseUserPage = new Page<>(page, limit); -// IPage iPage = baseMapper.selectCourseByCourseUser(courseUserPage, userId); -// -// List courses = iPage.getRecords(); -// if (courses != null && courses.size() > 0) { -// for (Course course : courses) { -// Orders orders = ordersService.selectOrdersByCourseIdAndUserId(userId, course.getCourseId()); -// if(orders!=null){ -// course.setOrders(orders); -// } -// course.setCourseClassification(courseClassificationDao.selectById(course.getClassifyId())); -// } -// } -// return Result.success().put("data", new PageUtils(iPage)); -// } - -// @Override -// public Result selectLatelyCourse(Integer page, Integer limit, Long userId) { -// Page pages = new Page<>(page, limit); -// IPage iPage = baseMapper.selectLatelyCourse(pages, userId); -// List courses = iPage.getRecords(); -// if (courses != null && courses.size() > 0) { -// for (Course course : courses) { -// Orders orders = ordersService.selectOrdersByCourseIdAndUserId(userId, course.getCourseId()); -// if(orders!=null){ -// course.setOrders(orders); -// } -// course.setCourseClassification(courseClassificationDao.selectById(course.getClassifyId())); -// } -// } -// return Result.success().put("data", new PageUtils(iPage)); -// } - @Override public Result insertCourseUser(CourseUser courseUser) { diff --git a/src/main/java/com/sqx/modules/course/vo/CourseDetailsSetVo.java b/src/main/java/com/sqx/modules/course/vo/CourseDetailsSetVo.java new file mode 100644 index 00000000..bc2534c1 --- /dev/null +++ b/src/main/java/com/sqx/modules/course/vo/CourseDetailsSetVo.java @@ -0,0 +1,18 @@ +package com.sqx.modules.course.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class CourseDetailsSetVo { + private Long courseId; + private Long courseDetailsId; + private String courseDetailsName; + private Integer current = 0; + private Integer isPrice; + private BigDecimal price; + private BigDecimal wholesalePrice; + private BigDecimal countPrice; + private Integer sort; +} diff --git a/src/main/java/com/sqx/modules/course/vo/CourseDetailsVo.java b/src/main/java/com/sqx/modules/course/vo/CourseDetailsVo.java new file mode 100644 index 00000000..1c5e9f9d --- /dev/null +++ b/src/main/java/com/sqx/modules/course/vo/CourseDetailsVo.java @@ -0,0 +1,31 @@ +package com.sqx.modules.course.vo; + +import lombok.Data; + +@Data +public class CourseDetailsVo { + private Long courseId; + private Long courseDetailsId; + private String courseDetailsName; + /** + * 封面图 + */ + private String titleImg; + /** + * 视频地址 + */ + private String videoUrl; + /** + * 点赞数 + */ + private Integer goodNum; + /** + * 是否已追 + */ + private Long isCollect; + /** + * 是否点赞 + */ + private Integer isGood; + private Integer sort; +} diff --git a/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningController.java b/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningController.java index 0db4ddbf..82ed50d6 100644 --- a/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningController.java +++ b/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningController.java @@ -2,7 +2,8 @@ package com.sqx.modules.discSpinning.controller; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.annotation.Debounce; import com.sqx.common.exception.CzgException; import com.sqx.common.utils.*; @@ -27,7 +28,9 @@ import springfox.documentation.annotations.ApiIgnore; import java.math.BigDecimal; import java.util.*; -import java.util.concurrent.*; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; @Slf4j @RestController @@ -126,8 +129,10 @@ public class DiscSpinningController { }) @ApiOperation("查询大转盘") public Result selectDiscSpinning(@RequestParam(required = false, defaultValue = "1") Integer source) { - return Result.success().put("data", discSpinningService.page(new Page<>(1, 20), - new QueryWrapper().eq("disc_type", source).orderByAsc("disc_type", "odds"))); + PageHelper.startPage(1,20); + return Result.success().put("data", PageUtils.page(new PageInfo<>(discSpinningService.list( + new QueryWrapper().eq("disc_type", source).orderByAsc("disc_type", "odds"))),true) + ); } diff --git a/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningRecordController.java b/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningRecordController.java index a311cfa7..b19b830d 100644 --- a/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningRecordController.java +++ b/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningRecordController.java @@ -3,6 +3,9 @@ package com.sqx.modules.discSpinning.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.app.annotation.Login; import com.sqx.modules.discSpinning.entity.DiscSpinningRecord; @@ -13,6 +16,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; + @Slf4j @RestController @Api(value = "大转盘抽奖记录", tags = {"大转盘抽奖记录"}) @@ -33,8 +38,11 @@ public class DiscSpinningRecordController { @Login @GetMapping("/selectDiscSpinningRecord") @ApiOperation("查询大转盘抽奖记录") - public Result selectDiscSpinningRecord(Integer page, Integer limit,@RequestAttribute("userId") Long userId) { - return Result.success().put("data", discSpinningRecordService.page(new Page<>(page, limit), new QueryWrapper().eq("user_id",userId).orderByDesc("create_time"))); + public Result selectDiscSpinningRecord(Integer page, Integer limit, @RequestAttribute("userId") Long userId) { + PageHelper.startPage(page, limit); + List list = discSpinningRecordService.list(new QueryWrapper().eq("user_id", userId).orderByDesc("create_time")); + PageInfo pageInfo = new PageInfo<>(list); + PageUtils pageUtils = PageUtils.page(pageInfo, true); + return Result.success().put("data", pageUtils); } } - diff --git a/src/main/java/com/sqx/modules/discSpinning/entity/DiscSpinningRecord.java b/src/main/java/com/sqx/modules/discSpinning/entity/DiscSpinningRecord.java index d68c1cb5..fcd94cda 100644 --- a/src/main/java/com/sqx/modules/discSpinning/entity/DiscSpinningRecord.java +++ b/src/main/java/com/sqx/modules/discSpinning/entity/DiscSpinningRecord.java @@ -1,7 +1,11 @@ package com.sqx.modules.discSpinning.entity; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.math.BigDecimal; @@ -16,10 +20,13 @@ import java.math.BigDecimal; @TableName("disc_spinning_record") public class DiscSpinningRecord extends Model { //主键 + @JsonSerialize(using = ToStringSerializer.class) private Long id; - + @JsonSerialize(using = ToStringSerializer.class) private Long sourceId; + @TableField(updateStrategy = FieldStrategy.NEVER) + @JsonSerialize(using = ToStringSerializer.class) private Long userId; private String imgUrl; //描述 @@ -30,7 +37,7 @@ public class DiscSpinningRecord extends Model { private BigDecimal number; //流向 1 提现 2 存入余额 3 兑换 private String target; - + @JsonSerialize(using = ToStringSerializer.class) private Long targetId; //抽奖日期 private String drawDay; diff --git a/src/main/java/com/sqx/modules/discSpinning/service/impl/DiscSpinningServiceImpl.java b/src/main/java/com/sqx/modules/discSpinning/service/impl/DiscSpinningServiceImpl.java index aa3fd15b..7b96f023 100644 --- a/src/main/java/com/sqx/modules/discSpinning/service/impl/DiscSpinningServiceImpl.java +++ b/src/main/java/com/sqx/modules/discSpinning/service/impl/DiscSpinningServiceImpl.java @@ -101,10 +101,11 @@ public class DiscSpinningServiceImpl extends ServiceImpl 0 && StringUtils.isNotBlank(userInfo.getZhiFuBao()) && StringUtils.isNotBlank(userInfo.getZhiFuBaoName())) { - //提现 - withdraw(userInfo, receive.getNumber().doubleValue()); - } + // 去除自动提现 +// if (receive.getNumber().compareTo(new BigDecimal("0.1")) > 0 && StringUtils.isNotBlank(userInfo.getZhiFuBao()) && StringUtils.isNotBlank(userInfo.getZhiFuBaoName())) { +// //提现 +// withdraw(userInfo, receive.getNumber().doubleValue()); +// } } @Override diff --git a/src/main/java/com/sqx/modules/file/AliFileUploadController.java b/src/main/java/com/sqx/modules/file/AliFileUploadController.java index c47d3a48..ccd2a30a 100644 --- a/src/main/java/com/sqx/modules/file/AliFileUploadController.java +++ b/src/main/java/com/sqx/modules/file/AliFileUploadController.java @@ -4,9 +4,9 @@ package com.sqx.modules.file; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.tea.TeaException; -import com.amazonaws.services.s3.AmazonS3; -import com.amazonaws.services.s3.model.CannedAccessControlList; -import com.amazonaws.services.s3.model.ObjectMetadata; +//import com.amazonaws.services.s3.AmazonS3; +//import com.amazonaws.services.s3.model.CannedAccessControlList; +//import com.amazonaws.services.s3.model.ObjectMetadata; import com.qcloud.cos.COSClient; import com.qcloud.cos.ClientConfig; import com.qcloud.cos.auth.BasicCOSCredentials; @@ -56,12 +56,14 @@ public class AliFileUploadController { private final CommonInfoService commonRepository; - private AmazonS3 amazonS3; +// private AmazonS3 amazonS3; @Autowired - public AliFileUploadController(CommonInfoService commonRepository, AmazonS3 amazonS3) { + public AliFileUploadController(CommonInfoService commonRepository +// , AmazonS3 amazonS3 + ) { this.commonRepository = commonRepository; - this.amazonS3 = amazonS3; +// this.amazonS3 = amazonS3; } @GetMapping(value = "/getCredentials") @@ -164,24 +166,24 @@ public class AliFileUploadController { cosclient.shutdown(); } }else if("3".equals(value)){ - String suffix = file.getOriginalFilename().substring(Objects.requireNonNull(file.getOriginalFilename()).lastIndexOf(".")); - // 上传文件流。 - InputStream inputStream = null; - try { - inputStream =new ByteArrayInputStream(file.getBytes()); - } catch (IOException e) { - e.printStackTrace(); - } - String completePath=getPath(suffix); - String bucket=commonRepository.findOne(810).getValue(); - com.amazonaws.services.s3.model.PutObjectRequest putObjectRequest = new com.amazonaws.services.s3.model.PutObjectRequest(bucket, completePath, inputStream, new ObjectMetadata()); - - putObjectRequest.setCannedAcl(CannedAccessControlList.PublicRead); - - com.amazonaws.services.s3.model.PutObjectResult putObjectResult = amazonS3.putObject(putObjectRequest); - - IOUtils.closeQuietly(inputStream); - return Result.success().put("data",commonRepository.findOne(811).getValue()+"/"+completePath); +// String suffix = file.getOriginalFilename().substring(Objects.requireNonNull(file.getOriginalFilename()).lastIndexOf(".")); +// // 上传文件流。 +// InputStream inputStream = null; +// try { +// inputStream =new ByteArrayInputStream(file.getBytes()); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// String completePath=getPath(suffix); +// String bucket=commonRepository.findOne(810).getValue(); +// com.amazonaws.services.s3.model.PutObjectRequest putObjectRequest = new com.amazonaws.services.s3.model.PutObjectRequest(bucket, completePath, inputStream, new ObjectMetadata()); +// +// putObjectRequest.setCannedAcl(CannedAccessControlList.PublicRead); +// +// com.amazonaws.services.s3.model.PutObjectResult putObjectResult = amazonS3.putObject(putObjectRequest); +// +// IOUtils.closeQuietly(inputStream); +// return Result.success().put("data",commonRepository.findOne(811).getValue()+"/"+completePath); }else if("4".equals(value)){ String endpoint = "tos-cn-beijing.volces.com"; String region = "cn-beijing"; @@ -301,24 +303,24 @@ public class AliFileUploadController { cosclient.shutdown(); } }else if("3".equals(value)){ - String suffix = file.getOriginalFilename().substring(Objects.requireNonNull(file.getOriginalFilename()).lastIndexOf(".")); - // 上传文件流。 - InputStream inputStream = null; - try { - inputStream =new ByteArrayInputStream(file.getBytes()); - } catch (IOException e) { - e.printStackTrace(); - } - String completePath=getPath(suffix); - String bucket=commonRepository.findOne(810).getValue(); - com.amazonaws.services.s3.model.PutObjectRequest putObjectRequest = new com.amazonaws.services.s3.model.PutObjectRequest(bucket, completePath, inputStream, new ObjectMetadata()); - - putObjectRequest.setCannedAcl(CannedAccessControlList.PublicRead); - - com.amazonaws.services.s3.model.PutObjectResult putObjectResult = amazonS3.putObject(putObjectRequest); - - IOUtils.closeQuietly(inputStream); - return commonRepository.findOne(811).getValue()+"/"+completePath; +// String suffix = file.getOriginalFilename().substring(Objects.requireNonNull(file.getOriginalFilename()).lastIndexOf(".")); +// // 上传文件流。 +// InputStream inputStream = null; +// try { +// inputStream =new ByteArrayInputStream(file.getBytes()); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// String completePath=getPath(suffix); +// String bucket=commonRepository.findOne(810).getValue(); +// com.amazonaws.services.s3.model.PutObjectRequest putObjectRequest = new com.amazonaws.services.s3.model.PutObjectRequest(bucket, completePath, inputStream, new ObjectMetadata()); +// +// putObjectRequest.setCannedAcl(CannedAccessControlList.PublicRead); +// +// com.amazonaws.services.s3.model.PutObjectResult putObjectResult = amazonS3.putObject(putObjectRequest); +// +// IOUtils.closeQuietly(inputStream); +// return commonRepository.findOne(811).getValue()+"/"+completePath; }else if("4".equals(value)){ String endpoint = "tos-cn-beijing.volces.com"; String region = "cn-beijing"; diff --git a/src/main/java/com/sqx/modules/file/S3Service.java b/src/main/java/com/sqx/modules/file/S3Service.java index c5259240..3da5850d 100644 --- a/src/main/java/com/sqx/modules/file/S3Service.java +++ b/src/main/java/com/sqx/modules/file/S3Service.java @@ -1,91 +1,91 @@ -package com.sqx.modules.file; - -import com.amazonaws.services.s3.AmazonS3; -import com.amazonaws.services.s3.model.*; -import com.sqx.modules.common.service.CommonInfoService; -import org.apache.commons.io.IOUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Service; -import org.springframework.util.StringUtils; -import org.springframework.web.multipart.MultipartFile; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -@Service -public class S3Service { - - @Autowired - private AmazonS3 amazonS3; - @Autowired - private CommonInfoService commonInfoService; - - private PutObjectResult upload(String filePath, String uploadKey) throws FileNotFoundException { - return upload(new FileInputStream(filePath), uploadKey); - } - - private PutObjectResult upload(InputStream inputStream, String uploadKey) { - PutObjectRequest putObjectRequest = new PutObjectRequest(commonInfoService.findOne(810).getValue(), uploadKey, inputStream, new ObjectMetadata()); - - putObjectRequest.setCannedAcl(CannedAccessControlList.PublicRead); - - PutObjectResult putObjectResult = amazonS3.putObject(putObjectRequest); - - IOUtils.closeQuietly(inputStream); - - return putObjectResult; - } - - public List upload(MultipartFile[] multipartFiles) { - List putObjectResults = new ArrayList<>(); - - Arrays.stream(multipartFiles) - .filter(multipartFile -> !StringUtils.isEmpty(multipartFile.getOriginalFilename())) - .forEach(multipartFile -> { - try { - putObjectResults.add(upload(multipartFile.getInputStream(), multipartFile.getOriginalFilename())); - } catch (IOException e) { - e.printStackTrace(); - } - }); - - return putObjectResults; - } - - public ResponseEntity download(String key) throws IOException { - GetObjectRequest getObjectRequest = new GetObjectRequest(commonInfoService.findOne(810).getValue(), key); - - S3Object s3Object = amazonS3.getObject(getObjectRequest); - - S3ObjectInputStream objectInputStream = s3Object.getObjectContent(); - - byte[] bytes = IOUtils.toByteArray(objectInputStream); - - String fileName = URLEncoder.encode(key, "UTF-8").replaceAll("\\+", "%20"); - - HttpHeaders httpHeaders = new HttpHeaders(); - httpHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); - httpHeaders.setContentLength(bytes.length); - httpHeaders.setContentDispositionFormData("attachment", fileName); - - return new ResponseEntity<>(bytes, httpHeaders, HttpStatus.OK); - } - - public List list() { - ObjectListing objectListing = amazonS3.listObjects(new ListObjectsRequest().withBucketName(commonInfoService.findOne(810).getValue())); - - List s3ObjectSummaries = objectListing.getObjectSummaries(); - - return s3ObjectSummaries; - } -} +//package com.sqx.modules.file; +// +//import com.amazonaws.services.s3.AmazonS3; +//import com.amazonaws.services.s3.model.*; +//import com.sqx.modules.common.service.CommonInfoService; +//import org.apache.commons.io.IOUtils; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.http.HttpHeaders; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.MediaType; +//import org.springframework.http.ResponseEntity; +//import org.springframework.stereotype.Service; +//import org.springframework.util.StringUtils; +//import org.springframework.web.multipart.MultipartFile; +// +//import java.io.FileInputStream; +//import java.io.FileNotFoundException; +//import java.io.IOException; +//import java.io.InputStream; +//import java.net.URLEncoder; +//import java.util.ArrayList; +//import java.util.Arrays; +//import java.util.List; +// +//@Service +//public class S3Service { +// +// @Autowired +// private AmazonS3 amazonS3; +// @Autowired +// private CommonInfoService commonInfoService; +// +// private PutObjectResult upload(String filePath, String uploadKey) throws FileNotFoundException { +// return upload(new FileInputStream(filePath), uploadKey); +// } +// +// private PutObjectResult upload(InputStream inputStream, String uploadKey) { +// PutObjectRequest putObjectRequest = new PutObjectRequest(commonInfoService.findOne(810).getValue(), uploadKey, inputStream, new ObjectMetadata()); +// +// putObjectRequest.setCannedAcl(CannedAccessControlList.PublicRead); +// +// PutObjectResult putObjectResult = amazonS3.putObject(putObjectRequest); +// +// IOUtils.closeQuietly(inputStream); +// +// return putObjectResult; +// } +// +// public List upload(MultipartFile[] multipartFiles) { +// List putObjectResults = new ArrayList<>(); +// +// Arrays.stream(multipartFiles) +// .filter(multipartFile -> !StringUtils.isEmpty(multipartFile.getOriginalFilename())) +// .forEach(multipartFile -> { +// try { +// putObjectResults.add(upload(multipartFile.getInputStream(), multipartFile.getOriginalFilename())); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// }); +// +// return putObjectResults; +// } +// +// public ResponseEntity download(String key) throws IOException { +// GetObjectRequest getObjectRequest = new GetObjectRequest(commonInfoService.findOne(810).getValue(), key); +// +// S3Object s3Object = amazonS3.getObject(getObjectRequest); +// +// S3ObjectInputStream objectInputStream = s3Object.getObjectContent(); +// +// byte[] bytes = IOUtils.toByteArray(objectInputStream); +// +// String fileName = URLEncoder.encode(key, "UTF-8").replaceAll("\\+", "%20"); +// +// HttpHeaders httpHeaders = new HttpHeaders(); +// httpHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); +// httpHeaders.setContentLength(bytes.length); +// httpHeaders.setContentDispositionFormData("attachment", fileName); +// +// return new ResponseEntity<>(bytes, httpHeaders, HttpStatus.OK); +// } +// +// public List list() { +// ObjectListing objectListing = amazonS3.listObjects(new ListObjectsRequest().withBucketName(commonInfoService.findOne(810).getValue())); +// +// List s3ObjectSummaries = objectListing.getObjectSummaries(); +// +// return s3ObjectSummaries; +// } +//} diff --git a/src/main/java/com/sqx/modules/file/config/AWSConfiguration.java b/src/main/java/com/sqx/modules/file/config/AWSConfiguration.java index 7d1d225c..4ad24f80 100644 --- a/src/main/java/com/sqx/modules/file/config/AWSConfiguration.java +++ b/src/main/java/com/sqx/modules/file/config/AWSConfiguration.java @@ -1,34 +1,34 @@ -package com.sqx.modules.file.config; - -import com.amazonaws.auth.AWSCredentials; -import com.amazonaws.auth.AWSStaticCredentialsProvider; -import com.amazonaws.auth.BasicAWSCredentials; -import com.amazonaws.services.s3.AmazonS3; -import com.amazonaws.services.s3.AmazonS3ClientBuilder; -import com.sqx.modules.common.service.CommonInfoService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.stereotype.Component; - -@Configuration -@Component -public class AWSConfiguration { - - @Autowired - private CommonInfoService commonInfoService; - - @Bean - public BasicAWSCredentials basicAWSCredentials() { - return new BasicAWSCredentials(commonInfoService.findOne(807).getValue(), commonInfoService.findOne(808).getValue()); - } - - @Bean - public AmazonS3 amazonS3Client(AWSCredentials awsCredentials) { - AmazonS3ClientBuilder builder = AmazonS3ClientBuilder.standard(); - builder.withCredentials(new AWSStaticCredentialsProvider(awsCredentials)); - builder.setRegion(commonInfoService.findOne(809).getValue()); - AmazonS3 amazonS3 = builder.build(); - return amazonS3; - } -} +//package com.sqx.modules.file.config; +// +//import com.amazonaws.auth.AWSCredentials; +//import com.amazonaws.auth.AWSStaticCredentialsProvider; +//import com.amazonaws.auth.BasicAWSCredentials; +//import com.amazonaws.services.s3.AmazonS3; +//import com.amazonaws.services.s3.AmazonS3ClientBuilder; +//import com.sqx.modules.common.service.CommonInfoService; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.stereotype.Component; +// +//@Configuration +//@Component +//public class AWSConfiguration { +// +// @Autowired +// private CommonInfoService commonInfoService; +// +// @Bean +// public BasicAWSCredentials basicAWSCredentials() { +// return new BasicAWSCredentials(commonInfoService.findOne(807).getValue(), commonInfoService.findOne(808).getValue()); +// } +// +// @Bean +// public AmazonS3 amazonS3Client(AWSCredentials awsCredentials) { +// AmazonS3ClientBuilder builder = AmazonS3ClientBuilder.standard(); +// builder.withCredentials(new AWSStaticCredentialsProvider(awsCredentials)); +// builder.setRegion(commonInfoService.findOne(809).getValue()); +// AmazonS3 amazonS3 = builder.build(); +// return amazonS3; +// } +//} diff --git a/src/main/java/com/sqx/modules/helpCenter/controller/HelpWordController.java b/src/main/java/com/sqx/modules/helpCenter/controller/HelpWordController.java index 54ed66e5..50f1d481 100644 --- a/src/main/java/com/sqx/modules/helpCenter/controller/HelpWordController.java +++ b/src/main/java/com/sqx/modules/helpCenter/controller/HelpWordController.java @@ -1,8 +1,8 @@ package com.sqx.modules.helpCenter.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.DateUtils; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; @@ -32,7 +32,7 @@ public class HelpWordController { @PostMapping("/insertHelpClassify") @ApiOperation("添加帮助分类") - public Result insertHelpClassify(@RequestBody HelpClassify helpClassify){ + public Result insertHelpClassify(@RequestBody HelpClassify helpClassify) { helpClassify.setCreateTime(DateUtils.format(new Date())); helpClassifyService.save(helpClassify); return Result.success(); @@ -40,14 +40,14 @@ public class HelpWordController { @PostMapping("/updateHelpClassify") @ApiOperation("修改帮助分类") - public Result updateHelpClassify(@RequestBody HelpClassify helpClassify){ + public Result updateHelpClassify(@RequestBody HelpClassify helpClassify) { helpClassifyService.updateById(helpClassify); return Result.success(); } @PostMapping("/deleteHelpClassify") @ApiOperation("删除帮助分类") - public Result deleteHelpClassify(Long helpClassifyId){ + public Result deleteHelpClassify(Long helpClassifyId) { helpClassifyService.removeById(helpClassifyId); return Result.success(); } @@ -55,27 +55,28 @@ public class HelpWordController { @GetMapping("/selectHelpClassifyList") @ApiOperation("查询帮助分类") - public Result selectHelpClassifyList(Integer page,Integer limit,Long parentId,Integer types,String helpClassifyName){ - if(page==null || limit==null){ - List page1 = helpClassifyService.list( - new QueryWrapper() - .eq(types!=null,"types",types) - .eq(StringUtils.isNotBlank(helpClassifyName), "help_classify_name", helpClassifyName) - .eq(parentId != null, "parent_id", parentId).orderByAsc("sort")); - return Result.success().put("data",page1); + public Result selectHelpClassifyList(Integer page, Integer limit, Long parentId, Integer types, String helpClassifyName) { + if (page == null) { + page = 1; } - IPage page1 = helpClassifyService.page(new Page<>(page, limit), - new QueryWrapper() - .eq(types!=null,"types",types) - .eq(StringUtils.isNotBlank(helpClassifyName), "help_classify_name", helpClassifyName) - .eq(parentId != null, "parent_id", parentId).orderByAsc("sort")); - return Result.success().put("data",new PageUtils(page1)); + if (limit == null) { + limit = 10; + } + + PageHelper.startPage(page, limit); + List list = helpClassifyService.list(new QueryWrapper() + .eq(types != null, "types", types) + .eq(StringUtils.isNotBlank(helpClassifyName), "help_classify_name", helpClassifyName) + .eq(parentId != null, "parent_id", parentId).orderByAsc("sort")); + + PageInfo pageInfo = new PageInfo<>(list); + return Result.success().put("data", PageUtils.page(pageInfo)); } @PostMapping("/insertHelpWord") @ApiOperation("添加帮助文档") - public Result insertHelpWord(@RequestBody HelpWord helpWord){ + public Result insertHelpWord(@RequestBody HelpWord helpWord) { helpWord.setCreateTime(DateUtils.format(new Date())); helpWordService.save(helpWord); return Result.success(); @@ -83,14 +84,14 @@ public class HelpWordController { @PostMapping("/updateHelpWord") @ApiOperation("修改帮助文档") - public Result updateHelpWord(@RequestBody HelpWord helpWord){ + public Result updateHelpWord(@RequestBody HelpWord helpWord) { helpWordService.updateById(helpWord); return Result.success(); } @PostMapping("/deleteHelpWord") @ApiOperation("删除帮助文档") - public Result deleteHelpWord(Long helpWordId){ + public Result deleteHelpWord(Long helpWordId) { helpWordService.removeById(helpWordId); return Result.success(); } @@ -98,15 +99,16 @@ public class HelpWordController { @GetMapping("/selectHelpWordList") @ApiOperation("查询帮助文档") - public Result selectHelpWordList(Integer page,Integer limit,Long helpClassifyId,String helpWordTitle){ - IPage page1 = helpWordService.page(new Page<>(page, limit), new QueryWrapper() + public Result selectHelpWordList(Integer page, Integer limit, Long helpClassifyId, String helpWordTitle) { + PageHelper.startPage(page, limit); + + List page1 = helpWordService.list(new QueryWrapper() .eq(helpClassifyId != null, "help_classify_id", helpClassifyId) .eq(StringUtils.isNotBlank(helpWordTitle), "help_word_title", helpWordTitle).orderByAsc("sort")); - return Result.success().put("data",new PageUtils(page1)); + + PageInfo pageInfo = new PageInfo<>(page1); + return Result.success().put("data", PageUtils.page(pageInfo)); } - - - } diff --git a/src/main/java/com/sqx/modules/helpCenter/entity/HelpClassify.java b/src/main/java/com/sqx/modules/helpCenter/entity/HelpClassify.java index ad1e52fa..06dc76c3 100644 --- a/src/main/java/com/sqx/modules/helpCenter/entity/HelpClassify.java +++ b/src/main/java/com/sqx/modules/helpCenter/entity/HelpClassify.java @@ -22,7 +22,7 @@ public class HelpClassify implements Serializable { /** * 帮助中心分类 */ - @TableId(type = IdType.AUTO) + @TableId private Long helpClassifyId; /** diff --git a/src/main/java/com/sqx/modules/helpCenter/entity/HelpWord.java b/src/main/java/com/sqx/modules/helpCenter/entity/HelpWord.java index 2c27591c..d916e674 100644 --- a/src/main/java/com/sqx/modules/helpCenter/entity/HelpWord.java +++ b/src/main/java/com/sqx/modules/helpCenter/entity/HelpWord.java @@ -16,7 +16,7 @@ public class HelpWord implements Serializable { private static final long serialVersionUID = 1L; - @TableId(type = IdType.AUTO) + @TableId /** * 帮助文档id */ diff --git a/src/main/java/com/sqx/modules/integral/entity/UserIntegral.java b/src/main/java/com/sqx/modules/integral/entity/UserIntegral.java index 743c7681..329230e6 100644 --- a/src/main/java/com/sqx/modules/integral/entity/UserIntegral.java +++ b/src/main/java/com/sqx/modules/integral/entity/UserIntegral.java @@ -3,6 +3,8 @@ package com.sqx.modules.integral.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; @Data @@ -13,6 +15,7 @@ public class UserIntegral { * 用户id */ @TableId(type = IdType.INPUT) + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** diff --git a/src/main/java/com/sqx/modules/integral/entity/UserIntegralDetails.java b/src/main/java/com/sqx/modules/integral/entity/UserIntegralDetails.java index 092fbace..fba107f2 100644 --- a/src/main/java/com/sqx/modules/integral/entity/UserIntegralDetails.java +++ b/src/main/java/com/sqx/modules/integral/entity/UserIntegralDetails.java @@ -3,6 +3,8 @@ package com.sqx.modules.integral.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; @Data @@ -12,6 +14,7 @@ public class UserIntegralDetails { * 积分详情id */ @TableId(type = IdType.INPUT) + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** diff --git a/src/main/java/com/sqx/modules/integral/service/Impl/UserIntegralDetailsServiceImpl.java b/src/main/java/com/sqx/modules/integral/service/Impl/UserIntegralDetailsServiceImpl.java index d0cd06b3..7b94b069 100644 --- a/src/main/java/com/sqx/modules/integral/service/Impl/UserIntegralDetailsServiceImpl.java +++ b/src/main/java/com/sqx/modules/integral/service/Impl/UserIntegralDetailsServiceImpl.java @@ -1,9 +1,10 @@ package com.sqx.modules.integral.service.Impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.app.entity.UserMoneyDetails; import com.sqx.modules.app.service.UserMoneyDetailsService; @@ -40,11 +41,12 @@ public class UserIntegralDetailsServiceImpl extends ServiceImpl page1 = userIntegralDetailsDao.selectPage(new Page<>(page, limit), new QueryWrapper().eq(userId != null, "user_id", userId).orderByDesc("create_time")); - - return page1; + public PageUtils selectUserIntegralDetailsByUserId(int page, int limit, Long userId) { + PageHelper.startPage(page,limit); + return PageUtils.page(new PageInfo<>(userIntegralDetailsDao.selectList( + new QueryWrapper() + .eq(userId != null, "user_id", userId) + .orderByDesc("create_time"))),true); } diff --git a/src/main/java/com/sqx/modules/integral/service/UserIntegralDetailsService.java b/src/main/java/com/sqx/modules/integral/service/UserIntegralDetailsService.java index afbcb9b3..d186cb3b 100644 --- a/src/main/java/com/sqx/modules/integral/service/UserIntegralDetailsService.java +++ b/src/main/java/com/sqx/modules/integral/service/UserIntegralDetailsService.java @@ -1,13 +1,13 @@ package com.sqx.modules.integral.service; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.integral.entity.UserIntegralDetails; public interface UserIntegralDetailsService extends IService { - IPage selectUserIntegralDetailsByUserId(int page, int limit, Long userId); + PageUtils selectUserIntegralDetailsByUserId(int page, int limit, Long userId); Result signIn(Long userId); diff --git a/src/main/java/com/sqx/modules/invite/controller/InviteAwardController.java b/src/main/java/com/sqx/modules/invite/controller/InviteAwardController.java index d44f0e67..3a24183f 100644 --- a/src/main/java/com/sqx/modules/invite/controller/InviteAwardController.java +++ b/src/main/java/com/sqx/modules/invite/controller/InviteAwardController.java @@ -3,7 +3,10 @@ package com.sqx.modules.invite.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.DateUtils; +import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.invite.entity.InviteAward; import com.sqx.modules.invite.service.InviteAwardService; @@ -14,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.Date; +import java.util.List; /** * @author fang @@ -53,7 +57,10 @@ public class InviteAwardController { @GetMapping("/selectInviteAwardList") @ApiOperation("查询邀请奖励列表") public Result selectInviteAwardList(Integer page,Integer limit){ - return Result.success().put("data",inviteAwardService.page(new Page<>(page,limit),new QueryWrapper().orderByAsc("invite_count"))); + PageHelper.startPage(page,limit); + List inviteAwards = inviteAwardService.list(new QueryWrapper().orderByAsc("invite_count")); + PageInfo pageInfo = new PageInfo<>(inviteAwards); + return Result.success().put("data", PageUtils.page(pageInfo, true)); } -} \ No newline at end of file +} diff --git a/src/main/java/com/sqx/modules/invite/controller/app/AppInviteController.java b/src/main/java/com/sqx/modules/invite/controller/app/AppInviteController.java index e6ccf197..b79c6642 100644 --- a/src/main/java/com/sqx/modules/invite/controller/app/AppInviteController.java +++ b/src/main/java/com/sqx/modules/invite/controller/app/AppInviteController.java @@ -1,18 +1,21 @@ package com.sqx.modules.invite.controller.app; -import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapBuilder; +import cn.hutool.core.map.MapUtil; import cn.hutool.extra.qrcode.QrCodeUtil; import cn.hutool.extra.qrcode.QrConfig; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.app.annotation.Login; import com.sqx.modules.app.annotation.LoginUser; import com.sqx.modules.app.entity.InviteAchievement; import com.sqx.modules.app.entity.UserEntity; +import com.sqx.modules.app.entity.UserMoney; import com.sqx.modules.app.service.InviteAchievementService; import com.sqx.modules.app.service.UserMoneyDetailsService; import com.sqx.modules.app.service.UserMoneyService; @@ -25,7 +28,6 @@ import com.sqx.modules.invite.service.InviteAwardService; import com.sqx.modules.invite.service.InviteMoneyService; import com.sqx.modules.invite.service.InviteService; import com.sqx.modules.urlAddress.service.UrlAddressService; -import com.sqx.modules.userSign.entity.UserSignRecord; import com.sqx.modules.utils.SenInfoCheckUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,7 +38,6 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; -import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -115,13 +116,15 @@ public class AppInviteController { Integer inviteCount = inviteService.selectInviteCount2(userEntity.getInvitationCode()); // Integer inviteSignCount = inviteService.selectInviteSignCount(userEntity.getInvitationCode()); int inviteSignCount = inviteAchievementService.count(new LambdaQueryWrapper().eq(InviteAchievement::getState, 1) - .eq(InviteAchievement::getSourceUserId, userId)); - Map earningMap = userMoneyDetailsService.queryUserTotalEarning(userId); + .eq(InviteAchievement::getUserId, userId)); + UserMoney userMoney = userMoneyService.getOne(new LambdaQueryWrapper().eq(UserMoney::getUserId, userId)); +// Map earningMap = userMoneyDetailsService.queryUserTotalEarning(userId); Map result = new HashMap<>(); result.put("inviteMoney", inviteMoney); result.put("inviteCount", inviteCount); result.put("inviteSignCount", inviteSignCount); - result.put("earning", earningMap); + result.put("earning", MapUtil.builder().put("inviteMoney", userMoney == null ? null :userMoney.getInviteIncomeMoney()) + .put("inviteGoldMoney", userMoney == null ? null :userMoney.getInviteIncomeCoin()).build()); return Result.success().put("data", result); } @@ -170,7 +173,8 @@ public class AppInviteController { @GetMapping("/selectInviteAwardList") @ApiOperation("查询邀请奖励列表") public Result selectInviteAwardList(Integer page, Integer limit) { - return Result.success().put("data", inviteAwardService.page(new Page<>(page, limit), new QueryWrapper().orderByAsc("invite_count"))); + PageHelper.startPage(page,limit); + return Result.success().put("data", PageUtils.page(new PageInfo<>(inviteAwardService.list(new QueryWrapper().orderByAsc("invite_count"))),true)); } @Login diff --git a/src/main/java/com/sqx/modules/invite/dao/InviteDao.java b/src/main/java/com/sqx/modules/invite/dao/InviteDao.java index b94cf694..fdcc4024 100644 --- a/src/main/java/com/sqx/modules/invite/dao/InviteDao.java +++ b/src/main/java/com/sqx/modules/invite/dao/InviteDao.java @@ -1,8 +1,6 @@ package com.sqx.modules.invite.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sqx.modules.invite.entity.Invite; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -18,7 +16,7 @@ import java.util.Map; @Mapper public interface InviteDao extends BaseMapper { - IPage selectInviteList(Page> page, @Param("state") Integer state, @Param("userId") Long userId); + List selectInviteList(@Param("state") Integer state, @Param("userId") Long userId); Integer selectInviteCount(@Param("state") Integer state, @Param("userId") Long userId); Integer selectInviteCount2(@Param("code") String code); @@ -28,8 +26,7 @@ public interface InviteDao extends BaseMapper { Double selectInviteSum(@Param("state") Integer state, @Param("userId") Long userId); -// IPage> selectInviteUser(Page> page, @Param("userId") Long userId,@Param("state") Integer state,@Param("userType") Integer userType); - IPage> selectInviteUser(Page> page,@Param("code") String code); + List> selectInviteUser(@Param("code") String code); Invite selectInviteByUser(@Param("userId")Long userId,@Param("inviteeUserId") Long inviteeUserId,@Param("userType") Integer userType); @@ -41,7 +38,7 @@ public interface InviteDao extends BaseMapper { Double sumInviteMoney(@Param("time")String time,@Param("flag")Integer flag); - IPage> inviteAnalysis(Page> page,@Param("time")String time,@Param("flag")Integer flag); + List> inviteAnalysis(@Param("time")String time,@Param("flag")Integer flag); } diff --git a/src/main/java/com/sqx/modules/invite/entity/Invite.java b/src/main/java/com/sqx/modules/invite/entity/Invite.java index a6eb8f04..32fd8802 100644 --- a/src/main/java/com/sqx/modules/invite/entity/Invite.java +++ b/src/main/java/com/sqx/modules/invite/entity/Invite.java @@ -3,6 +3,8 @@ package com.sqx.modules.invite.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -20,16 +22,19 @@ public class Invite implements Serializable { * 邀请id */ @TableId(type = IdType.INPUT) + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** * 邀请人id */ + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** * 被邀请人id */ + @JsonSerialize(using = ToStringSerializer.class) private Long inviteeUserId; /** diff --git a/src/main/java/com/sqx/modules/invite/entity/InviteAward.java b/src/main/java/com/sqx/modules/invite/entity/InviteAward.java index e849db60..54e16f06 100644 --- a/src/main/java/com/sqx/modules/invite/entity/InviteAward.java +++ b/src/main/java/com/sqx/modules/invite/entity/InviteAward.java @@ -17,7 +17,7 @@ public class InviteAward implements Serializable { private static final long serialVersionUID = 1L; - @TableId(type = IdType.AUTO) + @TableId /** * 邀请奖励id */ diff --git a/src/main/java/com/sqx/modules/invite/entity/InviteMoney.java b/src/main/java/com/sqx/modules/invite/entity/InviteMoney.java index 0f355b99..df805e0e 100644 --- a/src/main/java/com/sqx/modules/invite/entity/InviteMoney.java +++ b/src/main/java/com/sqx/modules/invite/entity/InviteMoney.java @@ -1,5 +1,7 @@ package com.sqx.modules.invite.entity; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -16,11 +18,13 @@ public class InviteMoney implements Serializable { /** * 邀请收益钱包id */ + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** * 用户id */ + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** diff --git a/src/main/java/com/sqx/modules/invite/service/impl/InviteServiceImpl.java b/src/main/java/com/sqx/modules/invite/service/impl/InviteServiceImpl.java index f4926807..0881ba74 100644 --- a/src/main/java/com/sqx/modules/invite/service/impl/InviteServiceImpl.java +++ b/src/main/java/com/sqx/modules/invite/service/impl/InviteServiceImpl.java @@ -1,21 +1,19 @@ package com.sqx.modules.invite.service.impl; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.DateUtils; import com.sqx.common.utils.PageUtils; -import com.sqx.modules.app.entity.UserEntity; -import com.sqx.modules.app.entity.UserMoney; -import com.sqx.modules.app.entity.UserMoneyDetails; -import com.sqx.modules.app.entity.UserVip; -import com.sqx.modules.app.service.UserMoneyDetailsService; -import com.sqx.modules.app.service.UserMoneyService; -import com.sqx.modules.app.service.UserService; -import com.sqx.modules.app.service.UserVipService; +import com.sqx.modules.app.entity.*; +import com.sqx.modules.app.service.*; import com.sqx.modules.common.service.CommonInfoService; import com.sqx.modules.invite.dao.InviteDao; import com.sqx.modules.invite.entity.Invite; @@ -24,6 +22,8 @@ import com.sqx.modules.invite.service.InviteAwardService; import com.sqx.modules.invite.service.InviteMoneyService; import com.sqx.modules.invite.service.InviteService; import com.sqx.modules.sys.entity.SysUserEntity; +import com.sqx.modules.sys.entity.SysUserMoneyDetails; +import com.sqx.modules.sys.service.SysUserMoneyDetailsService; import com.sqx.modules.sys.service.SysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -32,6 +32,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; /** * 邀请记录 @@ -58,22 +59,59 @@ public class InviteServiceImpl extends ServiceImpl implements private UserVipService userVipService; @Autowired private SysUserService sysUserService; + @Autowired + private InviteAchievementService inviteAchievementService; + private final SysUserMoneyDetailsService sysUserMoneyDetailsService; + + public InviteServiceImpl(SysUserMoneyDetailsService sysUserMoneyDetailsService) { + this.sysUserMoneyDetailsService = sysUserMoneyDetailsService; + } @Override public PageUtils selectInviteList(int page, int limit, Integer state, Long userId) { - Page> pages = new Page<>(page, limit); + PageHelper.startPage(page, limit); if (state == null || state == -1) { state = null; } - return new PageUtils(inviteDao.selectInviteList(pages, state, userId)); + List inviteList = inviteDao.selectInviteList(state, userId); + return PageUtils.page(new PageInfo<>(inviteList)); } @Override public PageUtils selectInviteUser(int page, int limit, Long userId, Integer state, Integer userType) { - Page> pages = new Page<>(page, limit); UserEntity userEntity = userService.queryByUserId(userId); - return new PageUtils(inviteDao.selectInviteUser(pages, userEntity.getInvitationCode())); + PageHelper.startPage(page, limit); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.select(UserEntity::getUserId, UserEntity::getAvatar, UserEntity::getUserName); + queryWrapper.eq(UserEntity::getInviterCode, userEntity.getInvitationCode()); + List list = userService.list(queryWrapper); + PageInfo pageInfo = new PageInfo<>(list); + if (list.isEmpty()) { + return PageUtils.page(pageInfo); + } + + List userIds = list.stream().map(UserEntity::getUserId).collect(Collectors.toList()); + LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); + queryWrapper1.ge(InviteAchievement::getCount, 3); + queryWrapper1.eq(InviteAchievement::getUserId, userId); + queryWrapper1.in(InviteAchievement::getTargetUserId, userIds); + List achievementList = inviteAchievementService.list(queryWrapper1); + Set achievementUserIds = achievementList.stream().map(InviteAchievement::getTargetUserId).collect(Collectors.toSet()); + + List jsonList = new ArrayList<>(); + for (UserEntity entity : list) { + JSONObject item = new JSONObject(); + item.put("userId", entity.getUserId()); + item.put("avatar", entity.getAvatar()); + item.put("userName", entity.getUserName()); + item.put("recordNum", achievementUserIds.contains(entity.getUserId()) ? 1 : 0); + + jsonList.add(item); + } + + return new PageUtils(jsonList, (int) pageInfo.getTotal(), pageInfo.getPageSize(), pageInfo.getPageNum()); } @Override @@ -98,8 +136,8 @@ public class InviteServiceImpl extends ServiceImpl implements @Override public PageUtils inviteAnalysis(int page, int limit, String time, Integer flag) { - Page> pages = new Page<>(page, limit); - return new PageUtils(inviteDao.inviteAnalysis(pages, time, flag)); + PageHelper.startPage(page, limit); + return PageUtils.page(new PageInfo<>(inviteDao.inviteAnalysis(time, flag))); } @Override @@ -179,6 +217,11 @@ public class InviteServiceImpl extends ServiceImpl implements userMoneyDetails.setState(2); userMoneyDetails.setMoneyType(2); userMoneyDetailsService.save(userMoneyDetails); + // 更新邀请人钱包 + + UserMoney userMoney = userMoneyService.selectUserMoneyByUserId(userEntity.getUserId()); + userMoney.setInviteIncomeCoin(userMoney.getInviteIncomeCoin() == null ? new BigDecimal(money) : userMoney.getInviteIncomeCoin().add(new BigDecimal(money))); + userMoneyService.update(userMoney, new LambdaQueryWrapper().eq(UserMoney::getUserId, userMoney.getUserId()).eq(UserMoney::getId, userMoney.getId())); } //助力活动 @@ -323,8 +366,9 @@ public class InviteServiceImpl extends ServiceImpl implements return result; } userMoneyService.updateSysAmount(1, sysUserEntity.getUserId(), sumMoney.doubleValue()); - UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); + SysUserMoneyDetails userMoneyDetails = new SysUserMoneyDetails(); userMoneyDetails.setSysUserId(sysUserEntity.getUserId()); + userMoneyDetails.setUserId(sysUserEntity.getUserId()); userMoneyDetails.setType(1); userMoneyDetails.setMoney(sumMoney); userMoneyDetails.setCreateTime(format); @@ -340,7 +384,7 @@ public class InviteServiceImpl extends ServiceImpl implements } userMoneyDetails.setContent(title + ",到账佣金:" + sumMoney); userMoneyDetails.setMoneyType(1); - userMoneyDetailsService.save(userMoneyDetails); + sysUserMoneyDetailsService.save(userMoneyDetails); result.put("sysUserId", sysUserEntity.getUserId()); result.put("qdMoney", sumMoney); return result; diff --git a/src/main/java/com/sqx/modules/job/entity/ScheduleJobEntity.java b/src/main/java/com/sqx/modules/job/entity/ScheduleJobEntity.java index cc4b8c19..5d416b6b 100644 --- a/src/main/java/com/sqx/modules/job/entity/ScheduleJobEntity.java +++ b/src/main/java/com/sqx/modules/job/entity/ScheduleJobEntity.java @@ -3,6 +3,8 @@ package com.sqx.modules.job.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -27,6 +29,7 @@ public class ScheduleJobEntity implements Serializable { * 任务id */ @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long jobId; /** diff --git a/src/main/java/com/sqx/modules/job/entity/ScheduleJobLogEntity.java b/src/main/java/com/sqx/modules/job/entity/ScheduleJobLogEntity.java index 1025c25f..85284cd6 100644 --- a/src/main/java/com/sqx/modules/job/entity/ScheduleJobLogEntity.java +++ b/src/main/java/com/sqx/modules/job/entity/ScheduleJobLogEntity.java @@ -3,6 +3,8 @@ package com.sqx.modules.job.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -21,11 +23,13 @@ public class ScheduleJobLogEntity implements Serializable { * 日志id */ @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long logId; /** * 任务id */ + @JsonSerialize(using = ToStringSerializer.class) private Long jobId; /** diff --git a/src/main/java/com/sqx/modules/job/service/impl/ScheduleJobLogServiceImpl.java b/src/main/java/com/sqx/modules/job/service/impl/ScheduleJobLogServiceImpl.java index d81f5eca..754d93ba 100644 --- a/src/main/java/com/sqx/modules/job/service/impl/ScheduleJobLogServiceImpl.java +++ b/src/main/java/com/sqx/modules/job/service/impl/ScheduleJobLogServiceImpl.java @@ -1,10 +1,12 @@ package com.sqx.modules.job.service.impl; +import cn.hutool.core.map.MapProxy; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.sqx.common.utils.Constant; import com.sqx.common.utils.PageUtils; -import com.sqx.common.utils.Query; import com.sqx.modules.job.dao.ScheduleJobLogDao; import com.sqx.modules.job.entity.ScheduleJobLogEntity; import com.sqx.modules.job.service.ScheduleJobLogService; @@ -20,12 +22,11 @@ public class ScheduleJobLogServiceImpl extends ServiceImpl params) { String jobId = (String)params.get("jobId"); - IPage page = this.page( - new Query().getPage(params), - new QueryWrapper().like(StringUtils.isNotBlank(jobId),"job_id", jobId).orderByDesc("create_time") - ); - - return new PageUtils(page); + MapProxy proxy = MapProxy.create(params); + long pageNum = proxy.getLong(Constant.PAGE, 1L); + long pageSize = proxy.getLong(Constant.LIMIT, 10L); + PageHelper.startPage((int) pageNum, (int) pageSize); + return PageUtils.page(new PageInfo<>(this.list(new QueryWrapper().like(StringUtils.isNotBlank(jobId),"job_id", jobId).orderByDesc("create_time")))); } } diff --git a/src/main/java/com/sqx/modules/job/service/impl/ScheduleJobServiceImpl.java b/src/main/java/com/sqx/modules/job/service/impl/ScheduleJobServiceImpl.java index 1a4f6fe6..d67b058f 100644 --- a/src/main/java/com/sqx/modules/job/service/impl/ScheduleJobServiceImpl.java +++ b/src/main/java/com/sqx/modules/job/service/impl/ScheduleJobServiceImpl.java @@ -1,14 +1,14 @@ package com.sqx.modules.job.service.impl; +import cn.hutool.core.map.MapProxy; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.Constant; import com.sqx.common.utils.PageUtils; -import com.sqx.common.utils.Query; import com.sqx.modules.job.dao.ScheduleJobDao; -import com.sqx.modules.job.dto.RunJobDTO; import com.sqx.modules.job.entity.ScheduleJobEntity; import com.sqx.modules.job.service.ScheduleJobService; import org.apache.commons.lang.StringUtils; @@ -37,12 +37,11 @@ public class ScheduleJobServiceImpl extends ServiceImpl params) { String beanName = (String)params.get("beanName"); - IPage page = this.page( - new Query().getPage(params), - new QueryWrapper ().like(StringUtils.isNotBlank(beanName),"bean_name", beanName) - ); - - return new PageUtils(page); + MapProxy proxy = MapProxy.create(params); + long pageNum = proxy.getLong(Constant.PAGE, 1L); + long pageSize = proxy.getLong(Constant.LIMIT, 10L); + PageHelper.startPage((int) pageNum, (int) pageSize); + return PageUtils.page(new PageInfo<>(this.list(new QueryWrapper ().like(StringUtils.isNotBlank(beanName),"bean_name", beanName)))); } diff --git a/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java b/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java index e7ff4779..30b4e291 100644 --- a/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java +++ b/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java @@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sqx.common.utils.DateUtils; import com.sqx.modules.app.entity.InviteAchievement; import com.sqx.modules.app.entity.UserEntity; +import com.sqx.modules.app.entity.UserMoney; import com.sqx.modules.app.entity.UserMoneyDetails; import com.sqx.modules.app.service.InviteAchievementService; import com.sqx.modules.app.service.UserMoneyDetailsService; @@ -19,6 +20,7 @@ import com.sqx.modules.app.service.UserService; import com.sqx.modules.common.service.CommonInfoService; import com.sqx.modules.complet.entity.CompletAward; import com.sqx.modules.complet.service.CompletAwardService; +import com.sqx.modules.course.service.CourseService; import com.sqx.modules.invite.dao.InviteDao; import com.sqx.modules.invite.entity.Invite; import com.sqx.modules.invite.service.InviteService; @@ -30,6 +32,8 @@ import com.sqx.modules.pay.entity.PayDetails; import com.sqx.modules.pay.wuyou.BaseResp; import com.sqx.modules.pay.wuyou.WuyouPay; import com.sqx.modules.sys.entity.SysUserEntity; +import com.sqx.modules.sys.entity.SysUserMoneyDetails; +import com.sqx.modules.sys.service.SysUserMoneyDetailsService; import com.sqx.modules.sys.service.SysUserService; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -75,14 +79,17 @@ public class TempOrdersTask { @Value("${spring.profiles.active}") private String profiles; private final InviteAchievementService inviteAchievementService; + private final CourseService courseService; + private final SysUserMoneyDetailsService sysUserMoneyDetailsService; private Logger logger = LoggerFactory.getLogger(getClass()); - public TempOrdersTask(InviteAchievementService inviteAchievementService) { + public TempOrdersTask(InviteAchievementService inviteAchievementService, CourseService courseService, SysUserMoneyDetailsService sysUserMoneyDetailsService) { this.inviteAchievementService = inviteAchievementService; + this.courseService = courseService; + this.sysUserMoneyDetailsService = sysUserMoneyDetailsService; } - @Scheduled(cron = "0 0/10 * * * ? ") public void order() { if (!"pay".equals(profiles)) { @@ -159,20 +166,26 @@ public class TempOrdersTask { inviteAchievement.setState(0); inviteAchievement.setCount(1); inviteAchievement.setCreateTime(DateUtil.date()); - inviteAchievement.setUserId(user.getUserId()); - inviteAchievement.setSourceUserId(byUser.getUserId()); + inviteAchievement.setTargetUserId(user.getUserId()); + inviteAchievement.setUserId(byUser.getUserId()); inviteAchievementService.save(inviteAchievement); } else { - inviteAchievementService.incrCount(inviteAchievement.getId(), 1); + inviteAchievementService.incrCount(inviteAchievement.getId(), inviteAchievement.getUserId(), 1); } } ThreadUtil.execAsync(() -> { ThreadUtil.sleep(1000); activities(user, byUser); }); + ThreadUtil.execAsync(() -> { inviteService.updateInvite(byUser, DateUtil.now(), user.getUserId(), order.getPayMoney()); }); + + //增加剧集支付次数 + ThreadUtil.execAsync(() -> { + courseService.incrWeekPayCount(order.getCourseId()); + }); //Map map = inviteService.updateInvite(byUser, DateUtil.now(), user.getUserId(), order.getPayMoney()); // Object oneUserId = map.get("oneUserId"); // if (oneUserId != null) { @@ -197,7 +210,11 @@ public class TempOrdersTask { if (sourceUser == null || sourceUser.getUserId() == 1) { return; } + logger.info("活动领取开始: 用户: {}, 邀请用户: {}", user.getUserName(), sourceUser.getUserName()); InviteAchievement inviteAchievement = inviteAchievementService.getByUserId(user.getUserId()); + + BigDecimal incomeMoney = new BigDecimal(0); + BigDecimal incomeCoin = new BigDecimal(0); // 首次达标 int signCount = Integer.parseInt(commonRepository.findOne(913).getValue()); logger.info("{}签到次数: {}", user.getUserName(), inviteAchievement.getCount()); @@ -220,30 +237,39 @@ public class TempOrdersTask { userMoneyService.updateAmount(1, sourceUser.getUserId(), Double.parseDouble(amount)); inviteAchievement.setState(1); - inviteAchievementService.updateById(inviteAchievement); + inviteAchievementService.update(inviteAchievement, new LambdaQueryWrapper() + .eq(InviteAchievement::getUserId, inviteAchievement.getUserId()) + .eq(InviteAchievement::getId, inviteAchievement.getId())); + incomeMoney = incomeMoney.add(new BigDecimal(amount)); //代理 if (StringUtils.isNotBlank(user.getQdCode()) && !"666666".equals(user.getQdCode())) { SysUserEntity sysUser = sysUserService.selectSysUserByQdCode(user.getQdCode()); if (sysUser != null) { String qdAward = commonRepository.findOne(915).getValue(); - UserMoneyDetails userMoneyDetails4 = new UserMoneyDetails( - null, sysUser.getUserId(), null, "[分享达标额外奖励]", 6, 1, 2, + SysUserMoneyDetails userMoneyDetails4 = new SysUserMoneyDetails( + sysUser.getUserId(), sysUser.getUserId(), null, "[分享达标额外奖励]", 6, 1, 2, new BigDecimal(qdAward), "推广人员首次达标,额外奖励现金红包" + qdAward, 2); userMoneyService.updateSysAmount(1, sysUser.getUserId(), Double.parseDouble(qdAward)); - userMoneyDetailsService.save(userMoneyDetails4); + sysUserMoneyDetailsService.save(userMoneyDetails4); + + UserMoney userMoney = userMoneyService.selectSysUserMoneyByUserId(sysUser.getSysUserId()); + userMoney.setInviteIncomeMoney(userMoney.getInviteIncomeMoney().add(new BigDecimal(qdAward))); + userMoneyService.update(userMoney, new LambdaQueryWrapper() + .eq(UserMoney::getSysUserId, userMoney.getSysUserId()) + .eq(UserMoney::getId, userMoney.getId())); } } } int count = inviteAchievementService.count( new LambdaQueryWrapper() - .eq(InviteAchievement::getSourceUserId, sourceUser.getUserId()) + .eq(InviteAchievement::getUserId, sourceUser.getUserId()) .eq(InviteAchievement::getState, 1)); logger.info("邀请人员: {}", count); //count 邀请的已达标人数 - completAwardService.list(new QueryWrapper().eq("invite_count", count).eq("status", 1)).forEach(completAward -> { + for (CompletAward completAward : completAwardService.list(new QueryWrapper().eq("invite_count", count).eq("status", 1))) { QueryWrapper moneyDetailsQuery = new QueryWrapper<>(); moneyDetailsQuery.eq("classify", 6); moneyDetailsQuery.eq("user_id", sourceUser.getUserId()); @@ -260,6 +286,7 @@ public class TempOrdersTask { userMoneyService.updateMoney(1, sourceUser.getUserId(), completAward.getAwardNumber().doubleValue()); userMoneyDetailsService.save(userMoneyDetails1); + incomeCoin = completAward.getAwardNumber(); break; case 2: UserMoneyDetails userMoneyDetails2 = new UserMoneyDetails( @@ -268,10 +295,21 @@ public class TempOrdersTask { userMoneyService.updateAmount(1, sourceUser.getUserId(), completAward.getAwardNumber().doubleValue()); userMoneyDetailsService.save(userMoneyDetails2); + incomeMoney = incomeMoney.add(completAward.getAwardNumber()); break; } } - }); + } + + + if (incomeMoney.compareTo(BigDecimal.ZERO) > 0 || incomeCoin.compareTo(BigDecimal.ZERO) > 0) { + UserMoney userMoney = userMoneyService.selectUserMoneyByUserId(sourceUser.getUserId()); + userMoney.setInviteIncomeCoin(userMoney.getInviteIncomeCoin() == null ? incomeCoin : userMoney.getInviteIncomeCoin().add(incomeCoin)); + userMoney.setInviteIncomeMoney(userMoney.getInviteIncomeMoney() == null ? incomeMoney : userMoney.getInviteIncomeMoney().add(incomeMoney)); + userMoneyService.update(userMoney, new LambdaQueryWrapper() + .eq(UserMoney::getUserId, userMoney.getUserId()) + .eq(UserMoney::getId, userMoney.getId())); + } } } diff --git a/src/main/java/com/sqx/modules/message/dao/ActivityMessageInfoDao.java b/src/main/java/com/sqx/modules/message/dao/ActivityMessageInfoDao.java index 55204d0d..ab214de5 100644 --- a/src/main/java/com/sqx/modules/message/dao/ActivityMessageInfoDao.java +++ b/src/main/java/com/sqx/modules/message/dao/ActivityMessageInfoDao.java @@ -1,12 +1,12 @@ package com.sqx.modules.message.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sqx.modules.message.entity.ActivityMessageInfo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * @author fang * @date 2020/7/9 @@ -14,11 +14,11 @@ import org.apache.ibatis.annotations.Param; @Mapper public interface ActivityMessageInfoDao extends BaseMapper { - IPage find(Page page,@Param("state") String state); + List find(@Param("state") String state); - IPage findType(Page page,@Param("type") Integer type); + List findType(@Param("type") Integer type); - IPage findTypeByUserId(Page page,@Param("type")String type,@Param("userId") String userId); + List findTypeByUserId(@Param("type")String type,@Param("userId") String userId); Integer updateState(@Param("state") String state, @Param("id") Long id); diff --git a/src/main/java/com/sqx/modules/message/entity/ActivityMessageInfo.java b/src/main/java/com/sqx/modules/message/entity/ActivityMessageInfo.java index ec4bbce0..cdcc7c7b 100644 --- a/src/main/java/com/sqx/modules/message/entity/ActivityMessageInfo.java +++ b/src/main/java/com/sqx/modules/message/entity/ActivityMessageInfo.java @@ -3,6 +3,8 @@ package com.sqx.modules.message.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -18,6 +20,7 @@ public class ActivityMessageInfo implements Serializable { private static final long serialVersionUID = 1L; @TableId(type = IdType.INPUT) + @JsonSerialize(using = ToStringSerializer.class) private long id; private String createAt; diff --git a/src/main/java/com/sqx/modules/message/entity/MessageInfo.java b/src/main/java/com/sqx/modules/message/entity/MessageInfo.java index 568cfe44..4e37a2db 100644 --- a/src/main/java/com/sqx/modules/message/entity/MessageInfo.java +++ b/src/main/java/com/sqx/modules/message/entity/MessageInfo.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.sqx.modules.app.entity.UserEntity; import lombok.Data; @@ -20,6 +22,7 @@ public class MessageInfo implements Serializable { private static final long serialVersionUID = 1L; @TableId(type = IdType.INPUT) + @JsonSerialize(using = ToStringSerializer.class) private long id; private String createAt; diff --git a/src/main/java/com/sqx/modules/message/service/impl/ActivityMessageServiceImpl.java b/src/main/java/com/sqx/modules/message/service/impl/ActivityMessageServiceImpl.java index 1a295a77..c5c61987 100644 --- a/src/main/java/com/sqx/modules/message/service/impl/ActivityMessageServiceImpl.java +++ b/src/main/java/com/sqx/modules/message/service/impl/ActivityMessageServiceImpl.java @@ -2,6 +2,8 @@ package com.sqx.modules.message.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.PageUtils; import com.sqx.modules.message.dao.ActivityMessageInfoDao; import com.sqx.modules.message.entity.ActivityMessageInfo; @@ -54,8 +56,8 @@ public class ActivityMessageServiceImpl extends ServiceImpl pages = new Page<>(page, limit); - return new PageUtils(activityMessageInfoDao.find(pages,state)); + PageHelper.startPage(page, limit); + return PageUtils.page(new PageInfo<>(activityMessageInfoDao.find(state))); } @Override @@ -67,8 +69,8 @@ public class ActivityMessageServiceImpl extends ServiceImpl pages = new Page<>(page, limit); - return new PageUtils(activityMessageInfoDao.findType(pages,type)); + PageHelper.startPage(page, limit); + return PageUtils.page(new PageInfo<>(activityMessageInfoDao.findType(type))); } @Override @@ -85,8 +87,8 @@ public class ActivityMessageServiceImpl extends ServiceImpl pages = new Page<>(page, limit); - return new PageUtils(activityMessageInfoDao.findTypeByUserId(pages,type,userId)); + PageHelper.startPage(page, limit); + return PageUtils.page(new PageInfo<>(activityMessageInfoDao.findTypeByUserId(type,userId))); } diff --git a/src/main/java/com/sqx/modules/message/service/impl/MessageServiceImpl.java b/src/main/java/com/sqx/modules/message/service/impl/MessageServiceImpl.java index 38152573..e859049d 100644 --- a/src/main/java/com/sqx/modules/message/service/impl/MessageServiceImpl.java +++ b/src/main/java/com/sqx/modules/message/service/impl/MessageServiceImpl.java @@ -1,10 +1,12 @@ package com.sqx.modules.message.service.impl; +import cn.hutool.core.map.MapProxy; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.sqx.common.utils.Constant; import com.sqx.common.utils.PageUtils; -import com.sqx.common.utils.Query; import com.sqx.modules.app.service.UserService; import com.sqx.modules.message.dao.MessageInfoDao; import com.sqx.modules.message.entity.MessageInfo; @@ -38,20 +40,22 @@ public class MessageServiceImpl extends ServiceImpl Long userId = (Long)params.get("userId"); Integer state = (Integer)params.get("state"); Integer type = (Integer)params.get("type"); - IPage page = this.page( - new Query().getPage(params), - new QueryWrapper() - .eq(userId!=null,"user_id", userId) - .eq(state!=null,"state", state) - .eq(type!=null,"type", type).orderByDesc("create_at") - ); - List records = page.getRecords(); + MapProxy proxy = MapProxy.create(params); + long pageNum = proxy.getLong(Constant.PAGE, 1L); + long pageSize = proxy.getLong(Constant.LIMIT, 10L); + PageHelper.startPage((int) pageNum, (int) pageSize); + PageUtils page = PageUtils.page(new PageInfo<>(this.list(new QueryWrapper() + .eq(userId != null, "user_id", userId) + .eq(state != null, "state", state) + .eq(type != null, "type", type).orderByDesc("create_at")))); + + List records = (List) page.getList(); for (MessageInfo messageInfo:records){ if(messageInfo.getUserId()!=null){ messageInfo.setUserEntity(userService.selectUserById(Long.parseLong(messageInfo.getUserId()))); } } - return new PageUtils(page); + return page; } @Override diff --git a/src/main/java/com/sqx/modules/orders/dao/OrdersDao.java b/src/main/java/com/sqx/modules/orders/dao/OrdersDao.java index 9a1fa430..6105299f 100644 --- a/src/main/java/com/sqx/modules/orders/dao/OrdersDao.java +++ b/src/main/java/com/sqx/modules/orders/dao/OrdersDao.java @@ -1,12 +1,13 @@ package com.sqx.modules.orders.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sqx.modules.orders.entity.Orders; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; +import java.util.List; + @Mapper public interface OrdersDao extends BaseMapper { @@ -14,11 +15,11 @@ public interface OrdersDao extends BaseMapper { int insertOrders(Orders orders); - IPage selectOrdersByOrdersNo(Page pages, @Param("ordersNo") String ordersNo, @Param("status") Integer status, - @Param("userId") Long userId, @Param("courseId") Long courseId, @Param("flag") Integer flag, - @Param("time") String time, @Param("userName") String userName, @Param("ordersType") Integer ordersType, - @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("sysUserId") Long sysUserId, - @Param("qdCode") String qdCode, @Param("sysUserName") String sysUserName); + List selectOrdersByOrdersNo(@Param("ordersNo") String ordersNo, @Param("status") Integer status, + @Param("userId") Long userId, @Param("courseId") Long courseId, @Param("flag") Integer flag, + @Param("time") String time, @Param("userName") String userName, @Param("ordersType") Integer ordersType, + @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("sysUserId") Long sysUserId, + @Param("qdCode") String qdCode, @Param("sysUserName") String sysUserName); int deleteOrders(String[] ids); @@ -26,7 +27,7 @@ public interface OrdersDao extends BaseMapper { Orders selectOrdersByCourseIdAndUserId(Long userId, Long courseId); - IPage selectOrdersMoneyList(Page page, Integer flag, String time); + List selectOrdersMoneyList(Integer flag, String time); Integer selectOrdersCount(Integer status, Integer ordersType, Integer flag, String time, Long sysUserId); @@ -43,5 +44,5 @@ public interface OrdersDao extends BaseMapper { Integer countOrderNum(Long userId, String time); - + BigDecimal sumPayByCourseId(Long courseId); } diff --git a/src/main/java/com/sqx/modules/orders/entity/Orders.java b/src/main/java/com/sqx/modules/orders/entity/Orders.java index c11801c8..f3d8bcaa 100644 --- a/src/main/java/com/sqx/modules/orders/entity/Orders.java +++ b/src/main/java/com/sqx/modules/orders/entity/Orders.java @@ -1,9 +1,8 @@ package com.sqx.modules.orders.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.sqx.modules.course.entity.Course; import lombok.Data; @@ -24,7 +23,8 @@ public class Orders implements Serializable { /** * 订单id */ - @TableId(type = IdType.AUTO) + @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long ordersId; /** @@ -40,13 +40,17 @@ public class Orders implements Serializable { /** * 用户id */ + @TableField(updateStrategy = FieldStrategy.NEVER) + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** * 短剧id */ + @JsonSerialize(using = ToStringSerializer.class) private Long courseId; + @JsonSerialize(using = ToStringSerializer.class) private Long courseDetailsId; private String courseDetailsIds; @@ -111,6 +115,7 @@ public class Orders implements Serializable { /** * 渠道用户 */ + @JsonSerialize(using = ToStringSerializer.class) private Long sysUserId; /** diff --git a/src/main/java/com/sqx/modules/orders/service/impl/OrdersServiceImpl.java b/src/main/java/com/sqx/modules/orders/service/impl/OrdersServiceImpl.java index bfafba8d..2c5d07b1 100644 --- a/src/main/java/com/sqx/modules/orders/service/impl/OrdersServiceImpl.java +++ b/src/main/java/com/sqx/modules/orders/service/impl/OrdersServiceImpl.java @@ -8,10 +8,10 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.DateUtils; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; @@ -657,28 +657,32 @@ public class OrdersServiceImpl extends ServiceImpl implements public Result selectOrders(Integer page, Integer limit, String ordersNo, Integer status, Long userId, Long courseId, Integer flag, String time, String userName, Integer ordersType, String startTime, String endTime, Long sysUserId, String qdCode, String sysUserName) { - Page pages = new Page<>(page, limit); + PageHelper.startPage(page, limit); - return Result.success().put("data", new PageUtils(baseMapper.selectOrdersByOrdersNo(pages, ordersNo, status, userId, courseId, - flag, time, userName, ordersType, TimeCompleteUtils.completeStartTime(startTime), TimeCompleteUtils.completeEndTime(endTime), sysUserId, qdCode, sysUserName))); + List orders = baseMapper.selectOrdersByOrdersNo(ordersNo, status, userId, courseId, + flag, time, userName, ordersType, TimeCompleteUtils.completeStartTime(startTime), TimeCompleteUtils.completeEndTime(endTime), sysUserId, qdCode, sysUserName); + PageInfo pageInfo = new PageInfo<>(orders); + + return Result.success().put("data", PageUtils.page(pageInfo)); } @Override public Result selectOrderByUserId(Integer page, Integer limit, Long userId) { - IPage orderPage = new Page<>(page, limit); + PageHelper.startPage(page, limit); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("user_id", userId); queryWrapper.eq("orders_type", 1); queryWrapper.eq("status", 1); queryWrapper.orderByDesc("create_time"); - IPage iPage = baseMapper.selectPage(orderPage, queryWrapper); - List bean = iPage.getRecords(); + List list = baseMapper.selectList(queryWrapper); + PageInfo pageInfo = new PageInfo<>(list); + List bean = pageInfo.getList(); if (bean != null && bean.size() > 0) { for (int i = 0; bean.size() > i; i++) { bean.get(i).setCourse(courseDao.selectById(bean.get(i).getCourseId())); } } - return Result.success().put("data", iPage); + return Result.success().put("data", PageUtils.page(pageInfo, true)); } @Override @@ -711,7 +715,8 @@ public class OrdersServiceImpl extends ServiceImpl implements @Override public Result selectOrdersMoneyList(Integer page, Integer limit, Integer flag, String time) { - return Result.success().put("data", baseMapper.selectOrdersMoneyList(new Page<>(page, limit), flag, time)); + PageHelper.startPage(page,limit); + return Result.success().put("data", PageUtils.page(new PageInfo<>(baseMapper.selectOrdersMoneyList( flag, time)),true)); } diff --git a/src/main/java/com/sqx/modules/oss/entity/SysOssEntity.java b/src/main/java/com/sqx/modules/oss/entity/SysOssEntity.java index e8693848..4ff9ccc5 100644 --- a/src/main/java/com/sqx/modules/oss/entity/SysOssEntity.java +++ b/src/main/java/com/sqx/modules/oss/entity/SysOssEntity.java @@ -2,6 +2,8 @@ package com.sqx.modules.oss.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -18,6 +20,7 @@ public class SysOssEntity implements Serializable { private static final long serialVersionUID = 1L; @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long id; //URL地址 private String url; diff --git a/src/main/java/com/sqx/modules/oss/service/impl/SysOssServiceImpl.java b/src/main/java/com/sqx/modules/oss/service/impl/SysOssServiceImpl.java index 0d6bf835..95c86868 100644 --- a/src/main/java/com/sqx/modules/oss/service/impl/SysOssServiceImpl.java +++ b/src/main/java/com/sqx/modules/oss/service/impl/SysOssServiceImpl.java @@ -1,9 +1,11 @@ package com.sqx.modules.oss.service.impl; -import com.baomidou.mybatisplus.core.metadata.IPage; +import cn.hutool.core.map.MapProxy; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.sqx.common.utils.Constant; import com.sqx.common.utils.PageUtils; -import com.sqx.common.utils.Query; import com.sqx.modules.oss.dao.SysOssDao; import com.sqx.modules.oss.entity.SysOssEntity; import com.sqx.modules.oss.service.SysOssService; @@ -17,11 +19,11 @@ public class SysOssServiceImpl extends ServiceImpl impl @Override public PageUtils queryPage(Map params) { - IPage page = this.page( - new Query().getPage(params) - ); - - return new PageUtils(page); + MapProxy proxy = MapProxy.create(params); + long pageNum = proxy.getLong(Constant.PAGE, 1L); + long pageSize = proxy.getLong(Constant.LIMIT, 10L); + PageHelper.startPage((int) pageNum, (int) pageSize); + return PageUtils.page(new PageInfo<>(this.list())); } - + } diff --git a/src/main/java/com/sqx/modules/pay/controller/CashController.java b/src/main/java/com/sqx/modules/pay/controller/CashController.java index 63167c20..988a1c79 100644 --- a/src/main/java/com/sqx/modules/pay/controller/CashController.java +++ b/src/main/java/com/sqx/modules/pay/controller/CashController.java @@ -197,7 +197,7 @@ public class CashController { @ApiOperation("查询提现记录列表") @ResponseBody public Result selectHelpProfit(int page, int limit, CashOut cashOut) { - return Result.success().put("data", cashOutService.selectCashOutList(page, limit, cashOut)); + return Result.success().put("data", cashOutService.selectCashOutList(page, limit, cashOut, false)); } @RequestMapping(value = "/excelPayDetails", method = RequestMethod.GET) diff --git a/src/main/java/com/sqx/modules/pay/controller/PayClassifyController.java b/src/main/java/com/sqx/modules/pay/controller/PayClassifyController.java index 137277cb..df77bf5f 100644 --- a/src/main/java/com/sqx/modules/pay/controller/PayClassifyController.java +++ b/src/main/java/com/sqx/modules/pay/controller/PayClassifyController.java @@ -2,6 +2,8 @@ package com.sqx.modules.pay.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.pay.entity.PayClassify; @@ -14,6 +16,7 @@ import org.springframework.web.bind.annotation.*; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.List; /** * @author fang @@ -31,7 +34,7 @@ public class PayClassifyController { @PostMapping("/insertPayClassify") @ApiOperation("添加充值分类") - public Result insertPayClassify(@RequestBody PayClassify payClassify){ + public Result insertPayClassify(@RequestBody PayClassify payClassify) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); payClassify.setCreateTime(sdf.format(new Date())); payClassifyService.save(payClassify); @@ -40,26 +43,26 @@ public class PayClassifyController { @PostMapping("/updatePayClassify") @ApiOperation("修改充值分类") - public Result updatePayClassify(@RequestBody PayClassify payClassify){ + public Result updatePayClassify(@RequestBody PayClassify payClassify) { payClassifyService.updateById(payClassify); return Result.success(); } @PostMapping("/deletePayClassify") @ApiOperation("删除充值分类") - public Result deletePayClassify(Long payClassifyId){ + public Result deletePayClassify(Long payClassifyId) { payClassifyService.removeById(payClassifyId); return Result.success(); } @GetMapping("/selectPayClassifyList") @ApiOperation("查询充值分类") - public Result selectPayClassifyList(Integer page,Integer limit){ - Page pages=new Page<>(page,limit); - return Result.success().put("data",new PageUtils(payClassifyService.page(pages))); + public Result selectPayClassifyList(Integer page, Integer limit) { + PageHelper.startPage(page, limit); + List list = payClassifyService.list(); + PageInfo pageInfo = new PageInfo<>(list); + return Result.success().put("data", PageUtils.page(pageInfo)); } - - -} \ No newline at end of file +} diff --git a/src/main/java/com/sqx/modules/pay/controller/app/AppCashController.java b/src/main/java/com/sqx/modules/pay/controller/app/AppCashController.java index 8feee5d0..868c2d49 100644 --- a/src/main/java/com/sqx/modules/pay/controller/app/AppCashController.java +++ b/src/main/java/com/sqx/modules/pay/controller/app/AppCashController.java @@ -6,9 +6,12 @@ import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.app.annotation.Login; import com.sqx.modules.app.service.UserMoneyDetailsService; +import com.sqx.modules.common.entity.CommonInfo; +import com.sqx.modules.common.service.CommonInfoService; import com.sqx.modules.pay.entity.CashOut; import com.sqx.modules.pay.service.CashOutService; import com.sqx.modules.pay.service.PayDetailsService; +import com.sqx.modules.redisService.RedisService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -24,7 +27,8 @@ import org.springframework.web.bind.annotation.*; @Api(value = "提现", tags = {"提现"}) @RequestMapping(value = "/app/cash") public class AppCashController { - + private final CommonInfoService commonInfoService; + private final RedisService redisService; /** * 提现记录 */ @@ -35,6 +39,11 @@ public class AppCashController { @Autowired private UserMoneyDetailsService userMoneyDetailsService; + public AppCashController(CommonInfoService commonInfoService, RedisService redisService) { + this.commonInfoService = commonInfoService; + this.redisService = redisService; + } + @Login @GetMapping(value = "/cashMoney") @@ -43,11 +52,28 @@ public class AppCashController { return cashOutService.cashMoney(userId, money); } + @Login + @GetMapping("/canCash") + public Result canCash(@RequestAttribute("userId") Long userId) { + CommonInfo info = commonInfoService.findOne(928); + if ("0".equals(info.getValue())) { + return Result.success().put("data", true); + } + return Result.success().put("data", redisService.isCanCash(userId)); + } + @Login @GetMapping(value = "/withdraw") @Debounce(interval = 3000, value = "#userId") @ApiOperation("发起提现 余额 金钱") public Result withdraw(@RequestAttribute("userId") Long userId, Double amount) { + boolean canCash = redisService.isCanCash(userId); + if (!canCash) { + CommonInfo info = commonInfoService.findOne(928); + if ("1".equals(info.getValue())) { + return Result.error("您未观看激励广告,清先观看"); + } + } return cashOutService.withdraw(userId, amount, null, false); } @@ -66,7 +92,7 @@ public class AppCashController { public Result selectHelpProfit(int page, int limit, @RequestAttribute("userId") Long userId) { CashOut cashOut = new CashOut(); cashOut.setUserId(userId); - PageUtils pageUtils = cashOutService.selectCashOutList(page, limit, cashOut); + PageUtils pageUtils = cashOutService.selectCashOutList(page, limit, cashOut, true); return Result.success().put("data", pageUtils); } diff --git a/src/main/java/com/sqx/modules/pay/dao/CashOutDao.java b/src/main/java/com/sqx/modules/pay/dao/CashOutDao.java index 655a3000..cb46b76e 100644 --- a/src/main/java/com/sqx/modules/pay/dao/CashOutDao.java +++ b/src/main/java/com/sqx/modules/pay/dao/CashOutDao.java @@ -1,17 +1,14 @@ package com.sqx.modules.pay.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sqx.modules.pay.entity.CashOut; -import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; import java.util.List; -import java.util.Map; /** * @author fang @@ -42,10 +39,11 @@ public interface CashOutDao extends BaseMapper { Double selectMayMoney(@Param("userId") Long userId); - IPage selectCashOutPage(Page page, CashOut cashOut); + List selectCashOutPage(CashOut cashOut,@Param("isApp") boolean isApp); List selectCashOutList(@Param("cashOut") CashOut cashOut); BigDecimal selectSumMoney(@Param("userId") Long userId, @Param("state") Integer state); + List selectSumByUserIdList(ArrayList userIdList, Integer state); } diff --git a/src/main/java/com/sqx/modules/pay/dao/PayDetailsDao.java b/src/main/java/com/sqx/modules/pay/dao/PayDetailsDao.java index 830246fc..fd3cfefe 100644 --- a/src/main/java/com/sqx/modules/pay/dao/PayDetailsDao.java +++ b/src/main/java/com/sqx/modules/pay/dao/PayDetailsDao.java @@ -1,8 +1,6 @@ package com.sqx.modules.pay.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sqx.modules.pay.entity.PayDetails; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -29,19 +27,19 @@ public interface PayDetailsDao extends BaseMapper { int updateState(@Param("id") Long id, @Param("state") Integer state, @Param("time") String time, @Param("tradeNo") String tradeNo,@Param("thirdOrderNo") String thirdOrderNo); - IPage> selectPayDetails(@Param("page") Page> page, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("userId") Long userId, @Param("state") Integer state, @Param("userName") String userName, String orderId); + List> selectPayDetails(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("userId") Long userId, @Param("state") Integer state, @Param("userName") String userName, String orderId); Double selectSumPay(@Param("createTime") String createTime, @Param("endTime") String endTime, @Param("userId") Long userId); Double selectSumMember(@Param("time") String time, @Param("flag") Integer flag); - IPage> payMemberAnalysis(Page> page, @Param("time") String time, @Param("flag") Integer flag); + List> payMemberAnalysis(@Param("time") String time, @Param("flag") Integer flag); Double selectSumPayByState(@Param("time") String time, @Param("flag") Integer flag, @Param("state") Integer state); Double selectSumPayByClassify(@Param("time") String time, @Param("flag") Integer flag, @Param("classify") Integer classify,@Param("payClassify") Integer payClassify); - IPage> selectUserMemberList(Page> page, @Param("phone") String phone); + List> selectUserMemberList(@Param("phone") String phone); int selectPayCount(Long userId); diff --git a/src/main/java/com/sqx/modules/pay/entity/CashOut.java b/src/main/java/com/sqx/modules/pay/entity/CashOut.java index 8c1e1d5b..baba18a8 100644 --- a/src/main/java/com/sqx/modules/pay/entity/CashOut.java +++ b/src/main/java/com/sqx/modules/pay/entity/CashOut.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -24,6 +26,7 @@ public class CashOut implements Serializable { * 申请提现id */ @TableId(type = IdType.INPUT) + @JsonSerialize(using = ToStringSerializer.class) private long id; /** @@ -54,6 +57,7 @@ public class CashOut implements Serializable { /** * 用户id */ + @JsonSerialize(using = ToStringSerializer.class) private Long userId; @TableField(exist = false) @@ -89,6 +93,7 @@ public class CashOut implements Serializable { */ private Double rate; + @JsonSerialize(using = ToStringSerializer.class) private Long sysUserId; /** @@ -124,6 +129,7 @@ public class CashOut implements Serializable { * 成功提现次数 */ @TableField(exist = false) + @JsonSerialize(using = ToStringSerializer.class) private Long count; /** * 待复审金额 @@ -135,6 +141,7 @@ public class CashOut implements Serializable { * 待复审笔数 */ @TableField(exist = false) + @JsonSerialize(using = ToStringSerializer.class) private Long verifyCount; private Integer withdrawType; diff --git a/src/main/java/com/sqx/modules/pay/entity/PayClassify.java b/src/main/java/com/sqx/modules/pay/entity/PayClassify.java index e22908c6..6eb3975d 100644 --- a/src/main/java/com/sqx/modules/pay/entity/PayClassify.java +++ b/src/main/java/com/sqx/modules/pay/entity/PayClassify.java @@ -2,6 +2,8 @@ package com.sqx.modules.pay.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -17,10 +19,11 @@ public class PayClassify implements Serializable { private static final long serialVersionUID = 1L; - @TableId(type = IdType.AUTO) + @TableId /** * 充值分类id */ + @JsonSerialize(using = ToStringSerializer.class) private Long payClassifyId; /** diff --git a/src/main/java/com/sqx/modules/pay/entity/PayDetails.java b/src/main/java/com/sqx/modules/pay/entity/PayDetails.java index 93c08a79..7773c9ef 100644 --- a/src/main/java/com/sqx/modules/pay/entity/PayDetails.java +++ b/src/main/java/com/sqx/modules/pay/entity/PayDetails.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -23,6 +25,7 @@ public class PayDetails implements Serializable { * 充值记录id */ @TableId(type = IdType.INPUT) + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** @@ -53,6 +56,7 @@ public class PayDetails implements Serializable { /** * 用户id */ + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** diff --git a/src/main/java/com/sqx/modules/pay/service/CashOutService.java b/src/main/java/com/sqx/modules/pay/service/CashOutService.java index 56736921..8786ab5e 100644 --- a/src/main/java/com/sqx/modules/pay/service/CashOutService.java +++ b/src/main/java/com/sqx/modules/pay/service/CashOutService.java @@ -13,7 +13,7 @@ import java.util.Map; public interface CashOutService { - PageUtils selectCashOutList(Integer page, Integer limit, CashOut cashOut); + PageUtils selectCashOutList(Integer page, Integer limit, CashOut cashOut, boolean isApp); ExcelData excelPayDetails(CashOut cashOut); @@ -65,4 +65,5 @@ public interface CashOutService { Map alipayTransferSummaryQuery(String alipayAccountName); Result batchCashOutOrder(Double maxMoney, Integer count); + } diff --git a/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java b/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java index 89efbc72..e123e71a 100644 --- a/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java +++ b/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java @@ -4,25 +4,22 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.map.MapProxy; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.exception.SqxException; -import com.sqx.common.utils.Constant; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.app.dao.MsgDao; import com.sqx.modules.app.dao.UserDao; -import com.sqx.modules.app.entity.Msg; -import com.sqx.modules.app.entity.UserEntity; -import com.sqx.modules.app.entity.UserMoney; -import com.sqx.modules.app.entity.UserMoneyDetails; +import com.sqx.modules.app.entity.*; +import com.sqx.modules.app.service.UserInfoService; import com.sqx.modules.app.service.UserMoneyDetailsService; import com.sqx.modules.app.service.UserMoneyService; import com.sqx.modules.app.service.UserService; @@ -42,9 +39,11 @@ import com.sqx.modules.sys.entity.SysUserEntity; import com.sqx.modules.sys.service.SysUserService; import com.sqx.modules.utils.AliPayOrderUtil; import com.sqx.modules.utils.AmountCalUtils; +import com.sqx.modules.utils.ParamPageUtils; import com.sqx.modules.utils.excel.ExcelData; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; +import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -93,6 +92,7 @@ public class CashOutServiceImpl extends ServiceImpl impleme private InviteMoneyService inviteMoneyService; @Autowired private SysUserService sysUserService; + private final UserInfoService userInfoService; @Autowired private MsgDao msgDao; @@ -102,11 +102,61 @@ public class CashOutServiceImpl extends ServiceImpl impleme @Autowired private WuyouPay wuyouPay; - @Override - public PageUtils selectCashOutList(Integer page, Integer limit, CashOut cashOut) { - return new PageUtils(baseMapper.selectCashOutPage(new Page<>(page, limit), cashOut)); + public CashOutServiceImpl(UserInfoService userInfoService) { + this.userInfoService = userInfoService; } + @Override + public PageUtils selectCashOutList(Integer page, Integer limit, CashOut cashOut,@Param("isApp") boolean isApp) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (isApp) { + queryWrapper.eq(CashOut::getUserId, cashOut.getUserId()); + } + + if (!isApp && cashOut.getUserId() != null) { + queryWrapper.eq(CashOut::getUserId, cashOut.getUserId()); + } + + PageHelper.startPage(page, limit); + List cashOutList = list(queryWrapper); + + if (!isApp) { + ArrayList userIdList = new ArrayList<>(); + for (CashOut out : cashOutList) { + userIdList.add(out.getUserId()); + } + + // 查询用户提现总数和总金额 + Map cashoutSumMap = new HashMap<>(); + Map cashoutVerifySumMap = new HashMap<>(); + Map userinfoMap = new HashMap<>(); + if (!userIdList.isEmpty()) { + cashoutSumMap = cashOutDao.selectSumByUserIdList(userIdList, 1).stream().collect(Collectors.toMap(CashOut::getUserId, item -> item)); + cashoutVerifySumMap = cashOutDao.selectSumByUserIdList(userIdList, 3).stream().collect(Collectors.toMap(CashOut::getUserId, item -> item)); + userinfoMap = userDao.selectList(new LambdaQueryWrapper().in(UserEntity::getUserId, userIdList).select(UserEntity::getUserId, UserEntity::getUserName)) + .stream().collect(Collectors.toMap(UserEntity::getUserId, UserEntity::getUserName)); + } + + for (CashOut item : cashOutList) { + CashOut info = cashoutSumMap.get(item.getUserId()); + CashOut info2 = cashoutVerifySumMap.get(item.getUserId()); + item.setUserName(userinfoMap.get(item.getUserId())); + + if (info != null) { + item.setCount(info.getCount()); + item.setTotal(info.getTotal()); + } + + if (info2 != null) { + item.setVerifyCount(info2.getCount()); + item.setVerifyTotal(info2.getTotal()); + } + + } + } + + return PageUtils.page(new PageInfo<>(cashOutList)); + } @Override public ExcelData excelPayDetails(CashOut cashOut1) { @@ -454,6 +504,15 @@ public class CashOutServiceImpl extends ServiceImpl impleme if (StringUtils.isBlank(userInfo.getZhiFuBao()) || StringUtils.isBlank(userInfo.getZhiFuBaoName())) { return Result.error(9999, "请先绑定支付宝账号!"); } + + UserInfo userDetailInfo = userInfoService.getByUserId(userId); + if (StrUtil.isBlank(userDetailInfo.getCertName())) { + return Result.error(9991, "请先实名认证!"); + } + + if (!userInfo.getZhiFuBaoName().equals(userDetailInfo.getCertName())) { + return Result.error(500, "支付宝和实名姓名不太无法提现!"); + } alipayAccount = userInfo.getZhiFuBao(); alipayName = userInfo.getZhiFuBaoName(); } @@ -533,13 +592,11 @@ public class CashOutServiceImpl extends ServiceImpl impleme @Override public PageUtils auditPage(Map params) { - MapProxy proxy = MapProxy.create(params); + PageHelper.startPage(ParamPageUtils.getPageNum(params), ParamPageUtils.getPageSize(params)); CashOut cashOut = BeanUtil.toBean(params, CashOut.class); - //cashOut.setState(3); - long pageNum = proxy.getLong(Constant.PAGE, 1L); - long pageSize = proxy.getLong(Constant.LIMIT, 10L); - IPage page = baseMapper.selectCashOutPage(new Page<>(pageNum, pageSize), cashOut); - return new PageUtils(page); + List page = baseMapper.selectCashOutPage(cashOut, false); + PageInfo pageInfo = new PageInfo<>(page); + return PageUtils.page(pageInfo); } @Override @@ -615,7 +672,7 @@ public class CashOutServiceImpl extends ServiceImpl impleme baseMapper.updateById(entity); UserMoneyDetails userMoneyDetails = new UserMoneyDetails( entity.getUserId(), entity.getSysUserId(), null, "[提现退款]", 4, 1, 2, - new BigDecimal(entity.getMoney()), "提现失败,自动退款" + entity.getMoney() + "元", 1,entity.getId()); + new BigDecimal(entity.getMoney()), "提现失败,自动退款" + entity.getMoney() + "元", 1, entity.getId()); userMoneyDetailsService.save(userMoneyDetails); //归还余额 钱 userMoneyService.updateAmount(1, entity.getUserId(), Convert.toDouble(entity.getMoney())); @@ -660,7 +717,7 @@ public class CashOutServiceImpl extends ServiceImpl impleme @Override public Map alipayTransferSummaryQuery(String alipayAccountName) { - if(StrUtil.isBlank(alipayAccountName)){ + if (StrUtil.isBlank(alipayAccountName)) { throw new SqxException("支付宝账号不能为空!"); } BigDecimal sum = BigDecimal.ZERO; @@ -725,6 +782,7 @@ public class CashOutServiceImpl extends ServiceImpl impleme return Result.success(); } + private void batchSendCashMoney(List userIds, Double maxMoney, Integer count, int len) { if (CollUtil.isEmpty(userIds)) { return; diff --git a/src/main/java/com/sqx/modules/pay/service/impl/PayDetailsServiceImpl.java b/src/main/java/com/sqx/modules/pay/service/impl/PayDetailsServiceImpl.java index 47d120f9..f8cfc4c9 100644 --- a/src/main/java/com/sqx/modules/pay/service/impl/PayDetailsServiceImpl.java +++ b/src/main/java/com/sqx/modules/pay/service/impl/PayDetailsServiceImpl.java @@ -2,6 +2,8 @@ package com.sqx.modules.pay.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.PageUtils; import com.sqx.modules.pay.dao.PayDetailsDao; import com.sqx.modules.pay.entity.PayDetails; @@ -10,6 +12,7 @@ import com.sqx.modules.utils.TimeCompleteUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; import java.util.Map; /** @@ -27,11 +30,13 @@ public class PayDetailsServiceImpl extends ServiceImpl> pages = new Page<>(page, limit); + PageHelper.startPage(page, limit); if (state != null && state == -1) { state = null; } - return new PageUtils(payDetailsDao.selectPayDetails(pages, TimeCompleteUtils.completeStartTime(startTime), TimeCompleteUtils.completeEndTime(endTime), userId, state,userName,orderId)); + List> payDetails = payDetailsDao.selectPayDetails(TimeCompleteUtils.completeStartTime(startTime), TimeCompleteUtils.completeEndTime(endTime), userId, state, userName, orderId); + PageInfo> pageInfo = new PageInfo<>(payDetails); + return PageUtils.page(pageInfo); } @Override @@ -44,14 +49,18 @@ public class PayDetailsServiceImpl extends ServiceImpl> pages = new Page<>(page, limit); - return new PageUtils(payDetailsDao.payMemberAnalysis(pages, time, flag)); + PageHelper.startPage(page, limit); + List> list = payDetailsDao.payMemberAnalysis(time, flag); + PageInfo> pageInfo = new PageInfo<>(list); + return PageUtils.page(pageInfo); } @Override public PageUtils selectUserMemberList(int page, int limit, String phone) { - Page> pages = new Page<>(page, limit); - return new PageUtils(payDetailsDao.selectUserMemberList(pages, phone)); + PageHelper.startPage(page, limit); + List> list = payDetailsDao.selectUserMemberList(phone); + PageInfo> pageInfo = new PageInfo<>(list); + return PageUtils.page(pageInfo); } @Override @@ -65,8 +74,8 @@ public class PayDetailsServiceImpl extends ServiceImpl { - IPage getSdkPage(@Param("pages") Page pages, @Param("sdkInfo") SdkInfo sdkInfo); + List getSdkPage(@Param("sdkInfo") SdkInfo sdkInfo); List getSdkList(@Param("sdkInfo") SdkInfo sdkInfo); diff --git a/src/main/java/com/sqx/modules/sdk/entity/SdkInfo.java b/src/main/java/com/sqx/modules/sdk/entity/SdkInfo.java index 89d9d5d6..4df1283f 100644 --- a/src/main/java/com/sqx/modules/sdk/entity/SdkInfo.java +++ b/src/main/java/com/sqx/modules/sdk/entity/SdkInfo.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.SqlCondition; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -25,6 +27,7 @@ public class SdkInfo implements Serializable { * 卡密id */ @TableId(value = "sdk_id", type = IdType.AUTO) + @JsonSerialize(using = ToStringSerializer.class) private Long sdkId; /** @@ -35,6 +38,7 @@ public class SdkInfo implements Serializable { /** * 卡密类型id */ + @JsonSerialize(using = ToStringSerializer.class) private Long typeId; /** @@ -49,6 +53,7 @@ public class SdkInfo implements Serializable { /** * 用户id */ + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** @@ -68,6 +73,7 @@ public class SdkInfo implements Serializable { /** * 渠道商 */ + @JsonSerialize(using = ToStringSerializer.class) private Long sysUserId; @TableField(exist = false) diff --git a/src/main/java/com/sqx/modules/sdk/entity/SdkType.java b/src/main/java/com/sqx/modules/sdk/entity/SdkType.java index 61deb24f..9149568a 100644 --- a/src/main/java/com/sqx/modules/sdk/entity/SdkType.java +++ b/src/main/java/com/sqx/modules/sdk/entity/SdkType.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.SqlCondition; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -26,6 +28,7 @@ public class SdkType implements Serializable { * sdk类型 */ @TableId(value = "type_id", type = IdType.AUTO) + @JsonSerialize(using = ToStringSerializer.class) private Long typeId; /** diff --git a/src/main/java/com/sqx/modules/sdk/service/SdkInfoService.java b/src/main/java/com/sqx/modules/sdk/service/SdkInfoService.java index b7dc158f..d426a4b5 100644 --- a/src/main/java/com/sqx/modules/sdk/service/SdkInfoService.java +++ b/src/main/java/com/sqx/modules/sdk/service/SdkInfoService.java @@ -1,7 +1,7 @@ package com.sqx.modules.sdk.service; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.sdk.entity.SdkInfo; import com.sqx.modules.utils.excel.ExcelData; @@ -18,7 +18,7 @@ public interface SdkInfoService extends IService { Result saveSdkInfo(Long typeId, Integer num,Long sysUserId); - IPage getSdkList(Integer page, Integer limit, SdkInfo sdkInfo); + PageUtils getSdkList(Integer page, Integer limit, SdkInfo sdkInfo); Result sdkExchange(Long userId, String sdkContent); diff --git a/src/main/java/com/sqx/modules/sdk/service/SdkTypeService.java b/src/main/java/com/sqx/modules/sdk/service/SdkTypeService.java index 850f1c6a..ba00b591 100644 --- a/src/main/java/com/sqx/modules/sdk/service/SdkTypeService.java +++ b/src/main/java/com/sqx/modules/sdk/service/SdkTypeService.java @@ -1,7 +1,7 @@ package com.sqx.modules.sdk.service; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.sdk.entity.SdkType; @@ -17,5 +17,5 @@ public interface SdkTypeService extends IService { Result saveSdkType(SdkType sdkType); - IPage getSdkTypeList(Integer page, Integer limit, SdkType sdkType); + PageUtils getSdkTypeList(Integer page, Integer limit, SdkType sdkType); } diff --git a/src/main/java/com/sqx/modules/sdk/service/impl/SdkInfoServiceImpl.java b/src/main/java/com/sqx/modules/sdk/service/impl/SdkInfoServiceImpl.java index 1c6c0298..7f1c4280 100644 --- a/src/main/java/com/sqx/modules/sdk/service/impl/SdkInfoServiceImpl.java +++ b/src/main/java/com/sqx/modules/sdk/service/impl/SdkInfoServiceImpl.java @@ -1,10 +1,11 @@ package com.sqx.modules.sdk.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.DateUtils; +import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.app.entity.UserVip; import com.sqx.modules.app.service.UserService; @@ -65,15 +66,14 @@ public class SdkInfoServiceImpl extends ServiceImpl impleme } @Override - public IPage getSdkList(Integer page, Integer limit, SdkInfo sdkInfo) { - Page pages; - if (page != null && limit != null) { - pages = new Page<>(page, limit); - } else { - pages = new Page<>(); - pages.setSize(-1); + public PageUtils getSdkList(Integer page, Integer limit, SdkInfo sdkInfo) { + if (page == null || limit == null) { + page = 1; + limit = -1; } - return baseMapper.getSdkPage(pages, sdkInfo); + PageHelper.startPage(page, limit); + List sdkList = baseMapper.getSdkList(sdkInfo); + return PageUtils.page(new PageInfo<>(sdkList), true); } @Override diff --git a/src/main/java/com/sqx/modules/sdk/service/impl/SdkTypeServiceImpl.java b/src/main/java/com/sqx/modules/sdk/service/impl/SdkTypeServiceImpl.java index 4ba6869e..0eada177 100644 --- a/src/main/java/com/sqx/modules/sdk/service/impl/SdkTypeServiceImpl.java +++ b/src/main/java/com/sqx/modules/sdk/service/impl/SdkTypeServiceImpl.java @@ -1,10 +1,11 @@ package com.sqx.modules.sdk.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.DateUtils; +import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.sdk.dao.SdkTypeDao; import com.sqx.modules.sdk.entity.SdkType; @@ -39,15 +40,14 @@ public class SdkTypeServiceImpl extends ServiceImpl impleme } @Override - public IPage getSdkTypeList(Integer page, Integer limit, SdkType sdkType) { - Page pages; - if (page != null && limit != null) { - pages = new Page<>(page, limit); - } else { - pages = new Page<>(); - pages.setSize(-1); + public PageUtils getSdkTypeList(Integer page, Integer limit, SdkType sdkType) { + + if (page == null || limit == null) { + page = 1; + limit = 10; } - return baseMapper.selectPage(pages, new QueryWrapper<>(sdkType).orderByDesc("create_time")); + PageHelper.startPage(page,limit); + return PageUtils.page(new PageInfo<>(baseMapper.selectList(new QueryWrapper<>(sdkType).orderByDesc("create_time"))),true); } diff --git a/src/main/java/com/sqx/modules/search/controller/app/AppSearchController.java b/src/main/java/com/sqx/modules/search/controller/app/AppSearchController.java index 87faa53e..664e9144 100644 --- a/src/main/java/com/sqx/modules/search/controller/app/AppSearchController.java +++ b/src/main/java/com/sqx/modules/search/controller/app/AppSearchController.java @@ -1,16 +1,14 @@ package com.sqx.modules.search.controller.app; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sqx.common.utils.Result; import com.sqx.modules.app.annotation.Login; -import com.sqx.modules.app.entity.App; -import com.sqx.modules.search.entity.Search; import com.sqx.modules.search.service.AppSearchService; -import com.sqx.modules.search.service.SearchService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.RequestAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; /** * 搜索记录 diff --git a/src/main/java/com/sqx/modules/search/entity/Search.java b/src/main/java/com/sqx/modules/search/entity/Search.java index f3348e0e..7875ead0 100644 --- a/src/main/java/com/sqx/modules/search/entity/Search.java +++ b/src/main/java/com/sqx/modules/search/entity/Search.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -14,7 +16,8 @@ public class Search implements Serializable { /** * 搜索id */ - @TableId(type = IdType.AUTO) + @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long searchId; /** * 搜索名称 @@ -23,6 +26,7 @@ public class Search implements Serializable { /** * 用户 */ + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** diff --git a/src/main/java/com/sqx/modules/search/service/impl/AppSearchServiceImpl.java b/src/main/java/com/sqx/modules/search/service/impl/AppSearchServiceImpl.java index f09092b3..ff534376 100644 --- a/src/main/java/com/sqx/modules/search/service/impl/AppSearchServiceImpl.java +++ b/src/main/java/com/sqx/modules/search/service/impl/AppSearchServiceImpl.java @@ -1,9 +1,6 @@ package com.sqx.modules.search.service.impl; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.sqx.common.utils.Result; import com.sqx.modules.search.Response.SearchResponse; @@ -17,7 +14,6 @@ import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; -import java.util.Map; @Service diff --git a/src/main/java/com/sqx/modules/sys/controller/SysConfigController.java b/src/main/java/com/sqx/modules/sys/controller/SysConfigController.java index 5fe42ad2..0fa140c4 100644 --- a/src/main/java/com/sqx/modules/sys/controller/SysConfigController.java +++ b/src/main/java/com/sqx/modules/sys/controller/SysConfigController.java @@ -1,16 +1,20 @@ package com.sqx.modules.sys.controller; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.annotation.SysLog; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.common.validator.ValidatorUtils; import com.sqx.modules.sys.entity.SysConfigEntity; import com.sqx.modules.sys.service.SysConfigService; +import com.sqx.modules.utils.ParamPageUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; import java.util.Map; /** @@ -29,9 +33,10 @@ public class SysConfigController extends AbstractController { @GetMapping("/list") @RequiresPermissions("sys:config:list") public Result list(@RequestParam Map params){ - PageUtils page = sysConfigService.queryPage(params); - - return Result.success().put("page", page); + PageHelper.startPage(ParamPageUtils.getPageNum(params), ParamPageUtils.getPageSize(params)); + List list = sysConfigService.list(); + PageInfo pageInfo = new PageInfo<>(list); + return Result.success().put("page", PageUtils.page(pageInfo)); } diff --git a/src/main/java/com/sqx/modules/sys/controller/SysDictController.java b/src/main/java/com/sqx/modules/sys/controller/SysDictController.java index 5f2213ed..a537a946 100644 --- a/src/main/java/com/sqx/modules/sys/controller/SysDictController.java +++ b/src/main/java/com/sqx/modules/sys/controller/SysDictController.java @@ -1,20 +1,23 @@ package com.sqx.modules.sys.controller; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.common.validator.ValidatorUtils; import com.sqx.modules.sys.entity.SysDictEntity; import com.sqx.modules.sys.service.SysDictService; +import com.sqx.modules.utils.ParamPageUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.Arrays; +import java.util.List; import java.util.Map; /** * 数据字典 - * */ @RestController @RequestMapping("sys/dict") @@ -27,10 +30,12 @@ public class SysDictController { */ @RequestMapping("/list") @RequiresPermissions("sys:dict:list") - public Result list(@RequestParam Map params){ - PageUtils page = sysDictService.queryPage(params); + public Result list(@RequestParam Map params) { + PageHelper.startPage(ParamPageUtils.getPageNum(params), ParamPageUtils.getPageSize(params)); + List list = sysDictService.list(); + PageInfo pageInfo = new PageInfo<>(list); - return Result.success().put("page", page); + return Result.success().put("page", PageUtils.page(pageInfo)); } @@ -39,7 +44,7 @@ public class SysDictController { */ @RequestMapping("/info/{id}") @RequiresPermissions("sys:dict:info") - public Result info(@PathVariable("id") Long id){ + public Result info(@PathVariable("id") Long id) { SysDictEntity dict = sysDictService.getById(id); return Result.success().put("dict", dict); @@ -50,7 +55,7 @@ public class SysDictController { */ @RequestMapping("/save") @RequiresPermissions("sys:dict:save") - public Result save(@RequestBody SysDictEntity dict){ + public Result save(@RequestBody SysDictEntity dict) { //校验类型 ValidatorUtils.validateEntity(dict); @@ -64,7 +69,7 @@ public class SysDictController { */ @RequestMapping("/update") @RequiresPermissions("sys:dict:update") - public Result update(@RequestBody SysDictEntity dict){ + public Result update(@RequestBody SysDictEntity dict) { //校验类型 ValidatorUtils.validateEntity(dict); @@ -78,7 +83,7 @@ public class SysDictController { */ @RequestMapping("/delete") @RequiresPermissions("sys:dict:delete") - public Result delete(@RequestBody Long[] ids){ + public Result delete(@RequestBody Long[] ids) { sysDictService.removeByIds(Arrays.asList(ids)); return Result.success(); diff --git a/src/main/java/com/sqx/modules/sys/controller/SysLogController.java b/src/main/java/com/sqx/modules/sys/controller/SysLogController.java index d7a08df1..55b3c92f 100644 --- a/src/main/java/com/sqx/modules/sys/controller/SysLogController.java +++ b/src/main/java/com/sqx/modules/sys/controller/SysLogController.java @@ -1,8 +1,12 @@ package com.sqx.modules.sys.controller; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; +import com.sqx.modules.sys.entity.SysLogEntity; import com.sqx.modules.sys.service.SysLogService; +import com.sqx.modules.utils.ParamPageUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -11,29 +15,31 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import java.util.List; import java.util.Map; /** * 系统日志 - * */ @Controller @RequestMapping("/sys/log") public class SysLogController { - @Autowired - private SysLogService sysLogService; - - /** - * 列表 - */ - @ResponseBody - @GetMapping("/list") - @RequiresPermissions("sys:log:list") - public Result list(@RequestParam Map params){ - PageUtils page = sysLogService.queryPage(params); + @Autowired + private SysLogService sysLogService; + + /** + * 列表 + */ + @ResponseBody + @GetMapping("/list") + @RequiresPermissions("sys:log:list") + public Result list(@RequestParam Map params) { + PageHelper.startPage(ParamPageUtils.getPageNum(params), ParamPageUtils.getPageSize(params)); + List entities = sysLogService.list(); + PageInfo pageInfo = new PageInfo<>(entities); + + return Result.success().put("page", PageUtils.page(pageInfo)); + } - return Result.success().put("page", page); - } - } diff --git a/src/main/java/com/sqx/modules/sys/controller/SysLoginController.java b/src/main/java/com/sqx/modules/sys/controller/SysLoginController.java index cb451f64..31a91e78 100644 --- a/src/main/java/com/sqx/modules/sys/controller/SysLoginController.java +++ b/src/main/java/com/sqx/modules/sys/controller/SysLoginController.java @@ -10,6 +10,7 @@ import com.sqx.modules.sys.form.SysLoginForm; import com.sqx.modules.sys.service.SysCaptchaService; import com.sqx.modules.sys.service.SysUserService; import com.sqx.modules.sys.service.SysUserTokenService; +import com.sqx.modules.utils.InvitationCodeUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -85,8 +86,9 @@ public class SysLoginController extends AbstractController { user.setIsChannel(1); user.setQdRate(new BigDecimal("0.01")); user.setStatus(1); - user.setRoleIdList(Collections.singletonList(4L)); + user.setRoleIdList(Collections.singletonList("4")); ValidatorUtils.validateEntity(user, AddGroup.class); + user.setUserId(InvitationCodeUtil.getSnowFlakeId()); sysUserService.saveUser(user); return Result.success(); } diff --git a/src/main/java/com/sqx/modules/sys/controller/SysRoleController.java b/src/main/java/com/sqx/modules/sys/controller/SysRoleController.java index 88db4656..8c423a23 100644 --- a/src/main/java/com/sqx/modules/sys/controller/SysRoleController.java +++ b/src/main/java/com/sqx/modules/sys/controller/SysRoleController.java @@ -1,5 +1,7 @@ package com.sqx.modules.sys.controller; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.annotation.SysLog; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; @@ -7,6 +9,7 @@ import com.sqx.common.validator.ValidatorUtils; import com.sqx.modules.sys.entity.SysRoleEntity; import com.sqx.modules.sys.service.SysRoleMenuService; import com.sqx.modules.sys.service.SysRoleService; +import com.sqx.modules.utils.ParamPageUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -17,101 +20,102 @@ import java.util.Map; /** * 角色管理 - * */ @RestController @RequestMapping("/sys/role") public class SysRoleController extends AbstractController { - @Autowired - private SysRoleService sysRoleService; - @Autowired - private SysRoleMenuService sysRoleMenuService; + @Autowired + private SysRoleService sysRoleService; + @Autowired + private SysRoleMenuService sysRoleMenuService; - /** - * 角色列表 - */ - @GetMapping("/list") - @RequiresPermissions("sys:role:list") - public Result list(@RequestParam Map params){ - //如果不是超级管理员,则只查询自己创建的角色列表 + /** + * 角色列表 + */ + @GetMapping("/list") + @RequiresPermissions("sys:role:list") + public Result list(@RequestParam Map params) { + //如果不是超级管理员,则只查询自己创建的角色列表 /*if(getUserId() != Constant.SUPER_ADMIN){ params.put("createUserId", getUserId()); }*/ - PageUtils page = sysRoleService.queryPage(params); - return Result.success().put("page", page); - } + PageHelper.startPage(ParamPageUtils.getPageNum(params), ParamPageUtils.getPageSize(params)); + List list = sysRoleService.list(); + PageInfo pageInfo = new PageInfo<>(list); + return Result.success().put("page", PageUtils.page(pageInfo)); + } - /** - * 角色列表 - */ - @GetMapping("/select") - @RequiresPermissions("sys:role:select") - public Result select(){ - Map map = new HashMap<>(); + /** + * 角色列表 + */ + @GetMapping("/select") + @RequiresPermissions("sys:role:select") + public Result select() { + Map map = new HashMap<>(); - //如果不是超级管理员,则只查询自己所拥有的角色列表 + //如果不是超级管理员,则只查询自己所拥有的角色列表 /*if(getUserId() != Constant.SUPER_ADMIN){ map.put("create_user_id", getUserId()); }*/ - List list = (List) sysRoleService.listByMap(map); + List list = (List) sysRoleService.listByMap(map); - return Result.success().put("list", list); - } + return Result.success().put("list", list); + } - /** - * 角色信息 - */ - @GetMapping("/info/{roleId}") - @RequiresPermissions("sys:role:info") - public Result info(@PathVariable("roleId") Long roleId){ - SysRoleEntity role = sysRoleService.getById(roleId); + /** + * 角色信息 + */ + @GetMapping("/info/{roleId}") + @RequiresPermissions("sys:role:info") + public Result info(@PathVariable("roleId") Long roleId) { + SysRoleEntity role = sysRoleService.getById(roleId); - //查询角色对应的菜单 - List menuIdList = sysRoleMenuService.queryMenuIdList(roleId); - role.setMenuIdList(menuIdList); + //查询角色对应的菜单 + List menuIdList = sysRoleMenuService.queryMenuIdList(roleId); + role.setMenuIdList(menuIdList); - return Result.success().put("role", role); - } + return Result.success().put("role", role); + } - /** - * 保存角色 - */ - @SysLog("保存角色") - @PostMapping("/save") - @RequiresPermissions("sys:role:save") - public Result save(@RequestBody SysRoleEntity role){ - ValidatorUtils.validateEntity(role); + /** + * 保存角色 + */ + @SysLog("保存角色") + @PostMapping("/save") + @RequiresPermissions("sys:role:save") + public Result save(@RequestBody SysRoleEntity role) { + ValidatorUtils.validateEntity(role); - role.setCreateUserId(getUserId()); - sysRoleService.saveRole(role); + role.setCreateUserId(getUserId()); + sysRoleService.saveRole(role); - return Result.success(); - } + return Result.success(); + } - /** - * 修改角色 - */ - @SysLog("修改角色") - @PostMapping("/update") - @RequiresPermissions("sys:role:update") - public Result update(@RequestBody SysRoleEntity role){ - ValidatorUtils.validateEntity(role); + /** + * 修改角色 + */ + @SysLog("修改角色") + @PostMapping("/update") + @RequiresPermissions("sys:role:update") + public Result update(@RequestBody SysRoleEntity role) { + ValidatorUtils.validateEntity(role); - role.setCreateUserId(getUserId()); - sysRoleService.update(role); + role.setCreateUserId(getUserId()); + sysRoleService.update(role); - return Result.success(); - } + return Result.success(); + } - /** - * 删除角色 - */ - @SysLog("删除角色") - @PostMapping("/delete") - @RequiresPermissions("sys:role:delete") - public Result delete(@RequestBody Long[] roleIds){ - sysRoleService.deleteBatch(roleIds); + /** + * 删除角色 + */ + @SysLog("删除角色") + @PostMapping("/delete") + @RequiresPermissions("sys:role:delete") + public Result delete(@RequestBody Long[] roleIds) { + sysRoleService.deleteBatch(roleIds); - return Result.success(); - } + return Result.success(); + } } diff --git a/src/main/java/com/sqx/modules/sys/controller/SysUserController.java b/src/main/java/com/sqx/modules/sys/controller/SysUserController.java index 06ee5c18..3ed65381 100644 --- a/src/main/java/com/sqx/modules/sys/controller/SysUserController.java +++ b/src/main/java/com/sqx/modules/sys/controller/SysUserController.java @@ -1,5 +1,7 @@ package com.sqx.modules.sys.controller; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.annotation.SysLog; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; @@ -11,6 +13,8 @@ import com.sqx.modules.sys.entity.SysUserEntity; import com.sqx.modules.sys.form.PasswordForm; import com.sqx.modules.sys.service.SysUserRoleService; import com.sqx.modules.sys.service.SysUserService; +import com.sqx.modules.utils.InvitationCodeUtil; +import com.sqx.modules.utils.ParamPageUtils; import org.apache.commons.lang.ArrayUtils; import org.apache.shiro.crypto.hash.Sha256Hash; import org.springframework.beans.factory.annotation.Autowired; @@ -41,11 +45,12 @@ public class SysUserController extends AbstractController { /*if(getUserId() != Constant.SUPER_ADMIN){ params.put("createUserId", getUserId()); }*/ - PageUtils page = sysUserService.queryPage(params); - - return Result.success().put("page", page); + PageHelper.startPage(ParamPageUtils.getPageNum(params), ParamPageUtils.getPageSize(params)); + List list = sysUserService.list(); + PageInfo pageInfo = new PageInfo<>(list); + return Result.success().put("page", PageUtils.page(pageInfo)); } - + /** * 获取登录的用户信息 */ @@ -53,42 +58,42 @@ public class SysUserController extends AbstractController { public Result info(){ return Result.success().put("user", getUser()); } - + /** * 修改登录用户密码 */ @SysLog("修改密码") public Result password(@RequestBody PasswordForm form){ Assert.isBlank(form.getNewPassword(), "新密码不为能空"); - + //sha256加密 String password = new Sha256Hash(form.getPassword(), getUser().getSalt()).toHex(); //sha256加密 String newPassword = new Sha256Hash(form.getNewPassword(), getUser().getSalt()).toHex(); - + //更新密码 boolean flag = sysUserService.updatePassword(getUserId(), password, newPassword); if(!flag){ return Result.error("原密码不正确"); } - + return Result.success(); } - + /** * 用户信息 */ @GetMapping("/info/{userId}") public Result info(@PathVariable("userId") Long userId){ SysUserEntity user = sysUserService.getById(userId); - + //获取用户所属的角色列表 - List roleIdList = sysUserRoleService.queryRoleIdList(userId); + List roleIdList = sysUserRoleService.queryRoleIdList(userId); user.setRoleIdList(roleIdList); - + return Result.success().put("user", user); } - + /** * 保存用户 */ @@ -96,13 +101,14 @@ public class SysUserController extends AbstractController { @PostMapping("/save") public Result save(@RequestBody SysUserEntity user){ ValidatorUtils.validateEntity(user, AddGroup.class); - + user.setCreateUserId(getUserId()); + user.setUserId(InvitationCodeUtil.getSnowFlakeId()); sysUserService.saveUser(user); - + return Result.success(); } - + /** * 修改用户 */ @@ -113,10 +119,10 @@ public class SysUserController extends AbstractController { user.setCreateUserId(getUserId()); sysUserService.update(user); - + return Result.success(); } - + /** * 删除用户 */ @@ -126,13 +132,13 @@ public class SysUserController extends AbstractController { if(ArrayUtils.contains(userIds, 1L)){ return Result.error("系统管理员不能删除"); } - + if(ArrayUtils.contains(userIds, getUserId())){ return Result.error("当前用户不能删除"); } - + sysUserService.deleteBatch(userIds); - + return Result.success(); } } diff --git a/src/main/java/com/sqx/modules/sys/dao/SysUserRoleDao.java b/src/main/java/com/sqx/modules/sys/dao/SysUserRoleDao.java index b0d82b7b..5c71317b 100644 --- a/src/main/java/com/sqx/modules/sys/dao/SysUserRoleDao.java +++ b/src/main/java/com/sqx/modules/sys/dao/SysUserRoleDao.java @@ -12,11 +12,11 @@ import java.util.List; */ @Mapper public interface SysUserRoleDao extends BaseMapper { - + /** * 根据用户ID,获取角色ID列表 */ - List queryRoleIdList(Long userId); + List queryRoleIdList(Long userId); /** diff --git a/src/main/java/com/sqx/modules/sys/entity/SysConfigEntity.java b/src/main/java/com/sqx/modules/sys/entity/SysConfigEntity.java index 6ca6d530..6cdeadc8 100644 --- a/src/main/java/com/sqx/modules/sys/entity/SysConfigEntity.java +++ b/src/main/java/com/sqx/modules/sys/entity/SysConfigEntity.java @@ -2,6 +2,8 @@ package com.sqx.modules.sys.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -14,6 +16,7 @@ import javax.validation.constraints.NotBlank; @TableName("sys_config") public class SysConfigEntity { @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long id; @NotBlank(message="参数名不能为空") private String paramKey; diff --git a/src/main/java/com/sqx/modules/sys/entity/SysDictEntity.java b/src/main/java/com/sqx/modules/sys/entity/SysDictEntity.java index 3cc548a5..97bb29be 100644 --- a/src/main/java/com/sqx/modules/sys/entity/SysDictEntity.java +++ b/src/main/java/com/sqx/modules/sys/entity/SysDictEntity.java @@ -3,6 +3,8 @@ package com.sqx.modules.sys.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -18,6 +20,7 @@ public class SysDictEntity implements Serializable { private static final long serialVersionUID = 1L; @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** * 字典名称 diff --git a/src/main/java/com/sqx/modules/sys/entity/SysLogEntity.java b/src/main/java/com/sqx/modules/sys/entity/SysLogEntity.java index 1239aff4..1f6e1a8b 100644 --- a/src/main/java/com/sqx/modules/sys/entity/SysLogEntity.java +++ b/src/main/java/com/sqx/modules/sys/entity/SysLogEntity.java @@ -2,6 +2,8 @@ package com.sqx.modules.sys.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -17,6 +19,7 @@ import java.util.Date; public class SysLogEntity implements Serializable { private static final long serialVersionUID = 1L; @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long id; //用户名 private String username; diff --git a/src/main/java/com/sqx/modules/sys/entity/SysMenuEntity.java b/src/main/java/com/sqx/modules/sys/entity/SysMenuEntity.java index 410cbdb8..e547967b 100644 --- a/src/main/java/com/sqx/modules/sys/entity/SysMenuEntity.java +++ b/src/main/java/com/sqx/modules/sys/entity/SysMenuEntity.java @@ -3,6 +3,8 @@ package com.sqx.modules.sys.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -21,11 +23,13 @@ public class SysMenuEntity implements Serializable { * 菜单ID */ @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long menuId; /** * 父菜单ID,一级菜单为0 */ + @JsonSerialize(using = ToStringSerializer.class) private Long parentId; /** diff --git a/src/main/java/com/sqx/modules/sys/entity/SysRoleEntity.java b/src/main/java/com/sqx/modules/sys/entity/SysRoleEntity.java index bd5f074d..47338d15 100644 --- a/src/main/java/com/sqx/modules/sys/entity/SysRoleEntity.java +++ b/src/main/java/com/sqx/modules/sys/entity/SysRoleEntity.java @@ -3,6 +3,8 @@ package com.sqx.modules.sys.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -23,6 +25,7 @@ public class SysRoleEntity implements Serializable { * 角色ID */ @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long roleId; /** @@ -39,6 +42,7 @@ public class SysRoleEntity implements Serializable { /** * 创建者ID */ + @JsonSerialize(using = ToStringSerializer.class) private Long createUserId; @TableField(exist=false) diff --git a/src/main/java/com/sqx/modules/sys/entity/SysRoleMenuEntity.java b/src/main/java/com/sqx/modules/sys/entity/SysRoleMenuEntity.java index dcdce806..c3aa4642 100644 --- a/src/main/java/com/sqx/modules/sys/entity/SysRoleMenuEntity.java +++ b/src/main/java/com/sqx/modules/sys/entity/SysRoleMenuEntity.java @@ -2,6 +2,8 @@ package com.sqx.modules.sys.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -16,16 +18,19 @@ public class SysRoleMenuEntity implements Serializable { private static final long serialVersionUID = 1L; @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** * 角色ID */ + @JsonSerialize(using = ToStringSerializer.class) private Long roleId; /** * 菜单ID */ + @JsonSerialize(using = ToStringSerializer.class) private Long menuId; } diff --git a/src/main/java/com/sqx/modules/sys/entity/SysUserEntity.java b/src/main/java/com/sqx/modules/sys/entity/SysUserEntity.java index 6b3def70..c7c36565 100644 --- a/src/main/java/com/sqx/modules/sys/entity/SysUserEntity.java +++ b/src/main/java/com/sqx/modules/sys/entity/SysUserEntity.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.sqx.common.validator.group.AddGroup; import com.sqx.common.validator.group.UpdateGroup; import lombok.Data; @@ -28,6 +30,7 @@ public class SysUserEntity implements Serializable { * 用户ID */ @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** @@ -69,11 +72,12 @@ public class SysUserEntity implements Serializable { * 角色ID列表 */ @TableField(exist=false) - private List roleIdList; + private List roleIdList; /** * 创建者ID */ + @JsonSerialize(using = ToStringSerializer.class) private Long createUserId; /** @@ -99,6 +103,7 @@ public class SysUserEntity implements Serializable { /** * 员工 */ + @JsonSerialize(using = ToStringSerializer.class) private Long sysUserId; /** diff --git a/src/main/java/com/sqx/modules/sys/entity/SysUserMoneyDetails.java b/src/main/java/com/sqx/modules/sys/entity/SysUserMoneyDetails.java new file mode 100644 index 00000000..3376e58c --- /dev/null +++ b/src/main/java/com/sqx/modules/sys/entity/SysUserMoneyDetails.java @@ -0,0 +1,188 @@ +package com.sqx.modules.sys.entity; + +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.math.BigDecimal; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 钱包记录表 + * @TableName sys_user_money_details + */ +@TableName(value ="sys_user_money_details") +@Data +@AllArgsConstructor +@NoArgsConstructor +public class SysUserMoneyDetails implements Serializable { + + public SysUserMoneyDetails(Long userId, Long sysUserId, Long byUserId, String title, Integer classify, Integer type, + Integer state, BigDecimal money, String content, Integer moneyType) { + this.userId = userId; + this.sysUserId = sysUserId; + this.byUserId = byUserId; + this.title = title; + this.classify = classify; + this.type = type; + this.state = state; + this.money = money; + this.content = content; + this.createTime = DateUtil.now(); + this.moneyType = moneyType; + } + /** + * 钱包详情id + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 用户id + */ + private Long userId; + + /** + * 渠道用户id + */ + private Long sysUserId; + + /** + * 对应用户id + */ + private Long byUserId; + + /** + * 标题 + */ + private String title; + + /** + * /*** + * 1 注册 (上级) + * 2 充值 + * 3 购买 + * 4 提现 + * 5 现金大转盘 + * 6 分享达标 + * 7 任务领取 + * 8 平台操作 + * 9 订单退款 + * 10 渠道推广 + */ + private Integer classify; + + /** + * 类别(1充值2支出) + */ + private Integer type; + + /** + * 状态 1待支付 2已到账 3取消 + */ + private Integer state; + + /** + * 金额 + */ + private BigDecimal money; + + /** + * 内容 + */ + private String content; + + /** + * 金额类型: 1 红包,2金豆 + */ + private Integer moneyType; + + /** + * 创建时间 + */ + private String createTime; + + /** + * 源id + */ + private Long sourceId; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; + + @Override + public boolean equals(Object that) { + if (this == that) { + return true; + } + if (that == null) { + return false; + } + if (getClass() != that.getClass()) { + return false; + } + SysUserMoneyDetails other = (SysUserMoneyDetails) that; + return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId())) + && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId())) + && (this.getSysUserId() == null ? other.getSysUserId() == null : this.getSysUserId().equals(other.getSysUserId())) + && (this.getByUserId() == null ? other.getByUserId() == null : this.getByUserId().equals(other.getByUserId())) + && (this.getTitle() == null ? other.getTitle() == null : this.getTitle().equals(other.getTitle())) + && (this.getClassify() == null ? other.getClassify() == null : this.getClassify().equals(other.getClassify())) + && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType())) + && (this.getState() == null ? other.getState() == null : this.getState().equals(other.getState())) + && (this.getMoney() == null ? other.getMoney() == null : this.getMoney().equals(other.getMoney())) + && (this.getContent() == null ? other.getContent() == null : this.getContent().equals(other.getContent())) + && (this.getMoneyType() == null ? other.getMoneyType() == null : this.getMoneyType().equals(other.getMoneyType())) + && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime())) + && (this.getSourceId() == null ? other.getSourceId() == null : this.getSourceId().equals(other.getSourceId())); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((getId() == null) ? 0 : getId().hashCode()); + result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode()); + result = prime * result + ((getSysUserId() == null) ? 0 : getSysUserId().hashCode()); + result = prime * result + ((getByUserId() == null) ? 0 : getByUserId().hashCode()); + result = prime * result + ((getTitle() == null) ? 0 : getTitle().hashCode()); + result = prime * result + ((getClassify() == null) ? 0 : getClassify().hashCode()); + result = prime * result + ((getType() == null) ? 0 : getType().hashCode()); + result = prime * result + ((getState() == null) ? 0 : getState().hashCode()); + result = prime * result + ((getMoney() == null) ? 0 : getMoney().hashCode()); + result = prime * result + ((getContent() == null) ? 0 : getContent().hashCode()); + result = prime * result + ((getMoneyType() == null) ? 0 : getMoneyType().hashCode()); + result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode()); + result = prime * result + ((getSourceId() == null) ? 0 : getSourceId().hashCode()); + return result; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", id=").append(id); + sb.append(", userId=").append(userId); + sb.append(", sysUserId=").append(sysUserId); + sb.append(", byUserId=").append(byUserId); + sb.append(", title=").append(title); + sb.append(", classify=").append(classify); + sb.append(", type=").append(type); + sb.append(", state=").append(state); + sb.append(", money=").append(money); + sb.append(", content=").append(content); + sb.append(", moneyType=").append(moneyType); + sb.append(", createTime=").append(createTime); + sb.append(", sourceId=").append(sourceId); + sb.append(", serialVersionUID=").append(serialVersionUID); + sb.append("]"); + return sb.toString(); + } +} diff --git a/src/main/java/com/sqx/modules/sys/entity/SysUserRoleEntity.java b/src/main/java/com/sqx/modules/sys/entity/SysUserRoleEntity.java index ba913a6c..9e679f58 100644 --- a/src/main/java/com/sqx/modules/sys/entity/SysUserRoleEntity.java +++ b/src/main/java/com/sqx/modules/sys/entity/SysUserRoleEntity.java @@ -2,6 +2,8 @@ package com.sqx.modules.sys.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -15,11 +17,13 @@ import java.io.Serializable; public class SysUserRoleEntity implements Serializable { private static final long serialVersionUID = 1L; @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** * 用户ID */ + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** diff --git a/src/main/java/com/sqx/modules/sys/entity/SysUserTokenEntity.java b/src/main/java/com/sqx/modules/sys/entity/SysUserTokenEntity.java index d5e9ffd3..b2fa741d 100644 --- a/src/main/java/com/sqx/modules/sys/entity/SysUserTokenEntity.java +++ b/src/main/java/com/sqx/modules/sys/entity/SysUserTokenEntity.java @@ -3,6 +3,8 @@ package com.sqx.modules.sys.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -20,6 +22,7 @@ public class SysUserTokenEntity implements Serializable { //用户ID @TableId(type = IdType.INPUT) + @JsonSerialize(using = ToStringSerializer.class) private Long userId; //token private String token; diff --git a/src/main/java/com/sqx/modules/sys/mapper/SysUserMoneyDetailsMapper.java b/src/main/java/com/sqx/modules/sys/mapper/SysUserMoneyDetailsMapper.java new file mode 100644 index 00000000..87a69776 --- /dev/null +++ b/src/main/java/com/sqx/modules/sys/mapper/SysUserMoneyDetailsMapper.java @@ -0,0 +1,20 @@ +package com.sqx.modules.sys.mapper; + +import com.sqx.modules.sys.entity.SysUserMoneyDetails; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** +* @author Administrator +* @description 针对表【sys_user_money_details(钱包记录表)】的数据库操作Mapper +* @createDate 2025-01-04 19:02:19 +* @Entity com.sqx.modules.sys.entity.SysUserMoneyDetails +*/ +@Mapper +public interface SysUserMoneyDetailsMapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/com/sqx/modules/sys/service/SysUserMoneyDetailsService.java b/src/main/java/com/sqx/modules/sys/service/SysUserMoneyDetailsService.java new file mode 100644 index 00000000..1645dc58 --- /dev/null +++ b/src/main/java/com/sqx/modules/sys/service/SysUserMoneyDetailsService.java @@ -0,0 +1,13 @@ +package com.sqx.modules.sys.service; + +import com.sqx.modules.sys.entity.SysUserMoneyDetails; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author Administrator +* @description 针对表【sys_user_money_details(钱包记录表)】的数据库操作Service +* @createDate 2025-01-04 19:02:19 +*/ +public interface SysUserMoneyDetailsService extends IService { + +} diff --git a/src/main/java/com/sqx/modules/sys/service/SysUserRoleService.java b/src/main/java/com/sqx/modules/sys/service/SysUserRoleService.java index 66abf8c2..91080574 100644 --- a/src/main/java/com/sqx/modules/sys/service/SysUserRoleService.java +++ b/src/main/java/com/sqx/modules/sys/service/SysUserRoleService.java @@ -12,13 +12,13 @@ import java.util.List; * */ public interface SysUserRoleService extends IService { - - void saveOrUpdate(Long userId, List roleIdList); - + + void saveOrUpdate(Long userId, List roleIdList); + /** * 根据用户ID,获取角色ID列表 */ - List queryRoleIdList(Long userId); + List queryRoleIdList(Long userId); /** * 根据角色ID数组,批量删除 diff --git a/src/main/java/com/sqx/modules/sys/service/impl/SysConfigServiceImpl.java b/src/main/java/com/sqx/modules/sys/service/impl/SysConfigServiceImpl.java index 4a694eaf..a23610f5 100644 --- a/src/main/java/com/sqx/modules/sys/service/impl/SysConfigServiceImpl.java +++ b/src/main/java/com/sqx/modules/sys/service/impl/SysConfigServiceImpl.java @@ -1,96 +1,97 @@ package com.sqx.modules.sys.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.google.gson.Gson; import com.sqx.common.exception.SqxException; import com.sqx.common.utils.PageUtils; -import com.sqx.common.utils.Query; import com.sqx.modules.sys.dao.SysConfigDao; import com.sqx.modules.sys.entity.SysConfigEntity; import com.sqx.modules.sys.redis.SysConfigRedis; import com.sqx.modules.sys.service.SysConfigService; +import com.sqx.modules.utils.ParamPageUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; +import java.util.List; import java.util.Map; @Service("sysConfigService") public class SysConfigServiceImpl extends ServiceImpl implements SysConfigService { - @Autowired - private SysConfigRedis sysConfigRedis; + @Autowired + private SysConfigRedis sysConfigRedis; - @Override - public PageUtils queryPage(Map params) { - String paramKey = (String)params.get("paramKey"); + @Override + public PageUtils queryPage(Map params) { + String paramKey = (String) params.get("paramKey"); - IPage page = this.page( - new Query().getPage(params), - new QueryWrapper() - .like(StringUtils.isNotBlank(paramKey),"param_key", paramKey) - .eq("status", 1) - ); + PageHelper.startPage(ParamPageUtils.getPageNum(params), ParamPageUtils.getPageSize(params)); + List entityList = baseMapper.selectList(new QueryWrapper() + .like(StringUtils.isNotBlank(paramKey), "param_key", paramKey) + .eq("status", 1) + ); + PageInfo pageInfo = new PageInfo<>(entityList); + return PageUtils.page(pageInfo); + } - return new PageUtils(page); - } + @Override + public void saveConfig(SysConfigEntity config) { + this.save(config); + sysConfigRedis.saveOrUpdate(config); + } - @Override - public void saveConfig(SysConfigEntity config) { - this.save(config); - sysConfigRedis.saveOrUpdate(config); - } + @Override + @Transactional(rollbackFor = Exception.class) + public void update(SysConfigEntity config) { + this.updateById(config); + sysConfigRedis.saveOrUpdate(config); + } - @Override - @Transactional(rollbackFor = Exception.class) - public void update(SysConfigEntity config) { - this.updateById(config); - sysConfigRedis.saveOrUpdate(config); - } + @Override + @Transactional(rollbackFor = Exception.class) + public void updateValueByKey(String key, String value) { + baseMapper.updateValueByKey(key, value); + sysConfigRedis.delete(key); + } - @Override - @Transactional(rollbackFor = Exception.class) - public void updateValueByKey(String key, String value) { - baseMapper.updateValueByKey(key, value); - sysConfigRedis.delete(key); - } + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteBatch(Long[] ids) { + for (Long id : ids) { + SysConfigEntity config = this.getById(id); + sysConfigRedis.delete(config.getParamKey()); + } - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteBatch(Long[] ids) { - for(Long id : ids){ - SysConfigEntity config = this.getById(id); - sysConfigRedis.delete(config.getParamKey()); - } + this.removeByIds(Arrays.asList(ids)); + } - this.removeByIds(Arrays.asList(ids)); - } + @Override + public String getValue(String key) { + SysConfigEntity config = sysConfigRedis.get(key); + if (config == null) { + config = baseMapper.queryByKey(key); + sysConfigRedis.saveOrUpdate(config); + } - @Override - public String getValue(String key) { - SysConfigEntity config = sysConfigRedis.get(key); - if(config == null){ - config = baseMapper.queryByKey(key); - sysConfigRedis.saveOrUpdate(config); - } + return config == null ? null : config.getParamValue(); + } - return config == null ? null : config.getParamValue(); - } - - @Override - public T getConfigObject(String key, Class clazz) { - String value = getValue(key); - if(StringUtils.isNotBlank(value)){ - return new Gson().fromJson(value, clazz); - } + @Override + public T getConfigObject(String key, Class clazz) { + String value = getValue(key); + if (StringUtils.isNotBlank(value)) { + return new Gson().fromJson(value, clazz); + } - try { - return clazz.newInstance(); - } catch (Exception e) { - throw new SqxException("获取参数失败"); - } - } + try { + return clazz.newInstance(); + } catch (Exception e) { + throw new SqxException("获取参数失败"); + } + } } diff --git a/src/main/java/com/sqx/modules/sys/service/impl/SysDictServiceImpl.java b/src/main/java/com/sqx/modules/sys/service/impl/SysDictServiceImpl.java index 15cf3464..a6f3b527 100644 --- a/src/main/java/com/sqx/modules/sys/service/impl/SysDictServiceImpl.java +++ b/src/main/java/com/sqx/modules/sys/service/impl/SysDictServiceImpl.java @@ -1,16 +1,18 @@ package com.sqx.modules.sys.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.PageUtils; -import com.sqx.common.utils.Query; import com.sqx.modules.sys.dao.SysDictDao; import com.sqx.modules.sys.entity.SysDictEntity; import com.sqx.modules.sys.service.SysDictService; +import com.sqx.modules.utils.ParamPageUtils; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; +import java.util.List; import java.util.Map; @@ -19,15 +21,14 @@ public class SysDictServiceImpl extends ServiceImpl i @Override public PageUtils queryPage(Map params) { - String name = (String)params.get("name"); + String name = (String) params.get("name"); - IPage page = this.page( - new Query().getPage(params), - new QueryWrapper() - .like(StringUtils.isNotBlank(name),"name", name) + PageHelper.startPage(ParamPageUtils.getPageNum(params), ParamPageUtils.getPageSize(params)); + List entityList = baseMapper.selectList(new QueryWrapper() + .like(StringUtils.isNotBlank(name), "name", name) ); - - return new PageUtils(page); + PageInfo pageInfo = new PageInfo<>(entityList); + return PageUtils.page(pageInfo); } } diff --git a/src/main/java/com/sqx/modules/sys/service/impl/SysLogServiceImpl.java b/src/main/java/com/sqx/modules/sys/service/impl/SysLogServiceImpl.java index fe77587e..96240245 100644 --- a/src/main/java/com/sqx/modules/sys/service/impl/SysLogServiceImpl.java +++ b/src/main/java/com/sqx/modules/sys/service/impl/SysLogServiceImpl.java @@ -1,16 +1,18 @@ package com.sqx.modules.sys.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.PageUtils; -import com.sqx.common.utils.Query; import com.sqx.modules.sys.dao.SysLogDao; import com.sqx.modules.sys.entity.SysLogEntity; import com.sqx.modules.sys.service.SysLogService; +import com.sqx.modules.utils.ParamPageUtils; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; +import java.util.List; import java.util.Map; @@ -19,13 +21,11 @@ public class SysLogServiceImpl extends ServiceImpl impl @Override public PageUtils queryPage(Map params) { - String key = (String)params.get("key"); + String key = (String) params.get("key"); - IPage page = this.page( - new Query().getPage(params), - new QueryWrapper().like(StringUtils.isNotBlank(key),"username", key) - ); - - return new PageUtils(page); + PageHelper.startPage(ParamPageUtils.getPageNum(params), ParamPageUtils.getPageSize(params)); + List list = baseMapper.selectList(new QueryWrapper().like(StringUtils.isNotBlank(key), "username", key)); + PageInfo pageInfo = new PageInfo<>(list); + return PageUtils.page(pageInfo); } } diff --git a/src/main/java/com/sqx/modules/sys/service/impl/SysRoleServiceImpl.java b/src/main/java/com/sqx/modules/sys/service/impl/SysRoleServiceImpl.java index 74169715..ad8e347e 100644 --- a/src/main/java/com/sqx/modules/sys/service/impl/SysRoleServiceImpl.java +++ b/src/main/java/com/sqx/modules/sys/service/impl/SysRoleServiceImpl.java @@ -1,16 +1,16 @@ package com.sqx.modules.sys.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.PageUtils; -import com.sqx.common.utils.Query; import com.sqx.modules.sys.dao.SysRoleDao; import com.sqx.modules.sys.entity.SysRoleEntity; import com.sqx.modules.sys.service.SysRoleMenuService; import com.sqx.modules.sys.service.SysRoleService; import com.sqx.modules.sys.service.SysUserRoleService; -import com.sqx.modules.sys.service.SysUserService; +import com.sqx.modules.utils.ParamPageUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -29,8 +29,6 @@ import java.util.Map; public class SysRoleServiceImpl extends ServiceImpl implements SysRoleService { @Autowired private SysRoleMenuService sysRoleMenuService; - @Autowired - private SysUserService sysUserService; @Autowired private SysUserRoleService sysUserRoleService; @@ -39,14 +37,12 @@ public class SysRoleServiceImpl extends ServiceImpl i String roleName = (String)params.get("roleName"); Long createUserId = (Long)params.get("createUserId"); - IPage page = this.page( - new Query().getPage(params), - new QueryWrapper() - .like(StringUtils.isNotBlank(roleName),"role_name", roleName) - .eq(createUserId != null,"create_user_id", createUserId) - ); - - return new PageUtils(page); + PageHelper.startPage(ParamPageUtils.getPageNum(params), ParamPageUtils.getPageSize(params)); + List sysRoleEntities = baseMapper.selectList(new QueryWrapper() + .like(StringUtils.isNotBlank(roleName), "role_name", roleName) + .eq(createUserId != null, "create_user_id", createUserId)); + PageInfo pageInfo = new PageInfo<>(sysRoleEntities); + return PageUtils.page(pageInfo); } @Override @@ -101,10 +97,10 @@ public class SysRoleServiceImpl extends ServiceImpl i if(role.getCreateUserId() == Constant.SUPER_ADMIN){ return ; } - + //查询用户所拥有的菜单列表 List menuIdList = sysUserService.queryAllMenuId(role.getCreateUserId()); - + //判断是否越权 if(!menuIdList.containsAll(role.getMenuIdList())){ throw new SqxException("新增角色的权限,已超出你的权限范围"); diff --git a/src/main/java/com/sqx/modules/sys/service/impl/SysUserMoneyDetailsServiceImpl.java b/src/main/java/com/sqx/modules/sys/service/impl/SysUserMoneyDetailsServiceImpl.java new file mode 100644 index 00000000..2d3735cc --- /dev/null +++ b/src/main/java/com/sqx/modules/sys/service/impl/SysUserMoneyDetailsServiceImpl.java @@ -0,0 +1,22 @@ +package com.sqx.modules.sys.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.sqx.modules.sys.entity.SysUserMoneyDetails; +import com.sqx.modules.sys.service.SysUserMoneyDetailsService; +import com.sqx.modules.sys.mapper.SysUserMoneyDetailsMapper; +import org.springframework.stereotype.Service; + +/** +* @author Administrator +* @description 针对表【sys_user_money_details(钱包记录表)】的数据库操作Service实现 +* @createDate 2025-01-04 19:02:19 +*/ +@Service +public class SysUserMoneyDetailsServiceImpl extends ServiceImpl + implements SysUserMoneyDetailsService{ + +} + + + + diff --git a/src/main/java/com/sqx/modules/sys/service/impl/SysUserRoleServiceImpl.java b/src/main/java/com/sqx/modules/sys/service/impl/SysUserRoleServiceImpl.java index 3945616b..d8f30068 100644 --- a/src/main/java/com/sqx/modules/sys/service/impl/SysUserRoleServiceImpl.java +++ b/src/main/java/com/sqx/modules/sys/service/impl/SysUserRoleServiceImpl.java @@ -18,7 +18,7 @@ import java.util.List; public class SysUserRoleServiceImpl extends ServiceImpl implements SysUserRoleService { @Override - public void saveOrUpdate(Long userId, List roleIdList) { + public void saveOrUpdate(Long userId, List roleIdList) { if (roleIdList == null || roleIdList.isEmpty()) { return; } @@ -27,17 +27,17 @@ public class SysUserRoleServiceImpl extends ServiceImpl queryRoleIdList(Long userId) { + public List queryRoleIdList(Long userId) { return baseMapper.queryRoleIdList(userId); } diff --git a/src/main/java/com/sqx/modules/sys/service/impl/SysUserServiceImpl.java b/src/main/java/com/sqx/modules/sys/service/impl/SysUserServiceImpl.java index a0b0c868..284c3410 100644 --- a/src/main/java/com/sqx/modules/sys/service/impl/SysUserServiceImpl.java +++ b/src/main/java/com/sqx/modules/sys/service/impl/SysUserServiceImpl.java @@ -1,16 +1,17 @@ package com.sqx.modules.sys.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.utils.PageUtils; -import com.sqx.common.utils.Query; import com.sqx.modules.sys.dao.SysUserDao; import com.sqx.modules.sys.entity.SysUserEntity; import com.sqx.modules.sys.service.SysRoleService; import com.sqx.modules.sys.service.SysUserRoleService; import com.sqx.modules.sys.service.SysUserService; import com.sqx.modules.utils.InvitationCodeUtil; +import com.sqx.modules.utils.ParamPageUtils; import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.lang.StringUtils; import org.apache.shiro.crypto.hash.Sha256Hash; @@ -41,18 +42,16 @@ public class SysUserServiceImpl extends ServiceImpl i Long createUserId = (Long) params.get("createUserId"); Object isChannel = params.get("isChannel"); Object sysUserId = params.get("sysUserId"); - IPage page = this.page( - new Query().getPage(params), - new QueryWrapper() - .like(StringUtils.isNotBlank(username), "username", username) - .eq(createUserId != null, "create_user_id", createUserId) - .eq(isChannel != null, "is_channel", isChannel) - .eq(sysUserId != null, "sys_user_id", sysUserId) - .isNull(sysUserId == null, "sys_user_id") - .isNull(isChannel == null, "is_channel") - ); - - return new PageUtils(page); + PageHelper.startPage(ParamPageUtils.getPageNum(params), ParamPageUtils.getPageSize(params)); + List sysUserEntities = baseMapper.selectList(new QueryWrapper() + .like(StringUtils.isNotBlank(username), "username", username) + .eq(createUserId != null, "create_user_id", createUserId) + .eq(isChannel != null, "is_channel", isChannel) + .eq(sysUserId != null, "sys_user_id", sysUserId) + .isNull(sysUserId == null, "sys_user_id") + .isNull(isChannel == null, "is_channel")); + PageInfo pageInfo = new PageInfo<>(sysUserEntities); + return PageUtils.page(pageInfo); } @Override @@ -132,7 +131,7 @@ public class SysUserServiceImpl extends ServiceImpl i if(user.getCreateUserId() == Constant.SUPER_ADMIN){ return ; } - + //查询用户创建的角色列表 List roleIdList = sysRoleService.queryRoleIdList(user.getCreateUserId()); @@ -147,4 +146,4 @@ public class SysUserServiceImpl extends ServiceImpl i return baseMapper.selectOne(new QueryWrapper().isNull("sys_user_id").eq("qd_code", qdCode)); } -} \ No newline at end of file +} diff --git a/src/main/java/com/sqx/modules/taskCenter/controller/TaskCenterController.java b/src/main/java/com/sqx/modules/taskCenter/controller/TaskCenterController.java index 8c5bee0a..32be8744 100644 --- a/src/main/java/com/sqx/modules/taskCenter/controller/TaskCenterController.java +++ b/src/main/java/com/sqx/modules/taskCenter/controller/TaskCenterController.java @@ -3,8 +3,10 @@ package com.sqx.modules.taskCenter.controller; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sqx.common.annotation.Debounce; +import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.app.annotation.Login; import com.sqx.modules.taskCenter.entity.TaskCenter; @@ -13,7 +15,6 @@ import com.sqx.modules.taskCenter.entity.TaskCenterReward; import com.sqx.modules.taskCenter.service.TaskCenterRecordService; import com.sqx.modules.taskCenter.service.TaskCenterRewardService; import com.sqx.modules.taskCenter.service.TaskCenterService; -import com.sqx.modules.userSign.entity.UserSignRecord; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -74,7 +75,8 @@ public class TaskCenterController { @GetMapping("/taskCenter/selectTaskCenter") @ApiOperation("查询任务中心") public Result selectTaskCenter(Integer page, Integer limit) { - return Result.success().put("data", taskCenterService.page(new Page<>(page, limit), new QueryWrapper().orderByAsc("sort", "type"))); + PageHelper.startPage(page,limit); + return Result.success().put("data", PageUtils.page(new PageInfo<>(taskCenterService.list(new QueryWrapper().orderByAsc("sort", "type"))),true)); } diff --git a/src/main/java/com/sqx/modules/taskCenter/service/impl/TaskCenterServiceImpl.java b/src/main/java/com/sqx/modules/taskCenter/service/impl/TaskCenterServiceImpl.java index 638bf400..63ef09fb 100644 --- a/src/main/java/com/sqx/modules/taskCenter/service/impl/TaskCenterServiceImpl.java +++ b/src/main/java/com/sqx/modules/taskCenter/service/impl/TaskCenterServiceImpl.java @@ -3,8 +3,6 @@ package com.sqx.modules.taskCenter.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.sqx.common.utils.DateUtils; import com.sqx.common.utils.RedisKeys; @@ -81,7 +79,12 @@ public class TaskCenterServiceImpl extends ServiceImpl(page,limit), - new QueryWrapper().like(StringUtils.isNotEmpty(urlAddress),"url_address",urlAddress) - .eq(status!=null && status!=0,"status",status)))); + PageHelper.startPage(page,limit); + List list = urlAddressService.list(new QueryWrapper().like(StringUtils.isNotEmpty(urlAddress), "url_address", urlAddress) + .eq(status != null && status != 0, "status", status)); + PageInfo pageInfo = new PageInfo<>(list); + return Result.success().put("data", PageUtils.page(pageInfo)); } @GetMapping("/selectUrlAddress") diff --git a/src/main/java/com/sqx/modules/urlAddress/entity/UrlAddress.java b/src/main/java/com/sqx/modules/urlAddress/entity/UrlAddress.java index cecc57ae..95eb66e2 100644 --- a/src/main/java/com/sqx/modules/urlAddress/entity/UrlAddress.java +++ b/src/main/java/com/sqx/modules/urlAddress/entity/UrlAddress.java @@ -16,7 +16,7 @@ public class UrlAddress implements Serializable { private static final long serialVersionUID = 1L; - @TableId(type = IdType.AUTO) + @TableId /** * 域名池id */ diff --git a/src/main/java/com/sqx/modules/utils/AliPayOrderUtil.java b/src/main/java/com/sqx/modules/utils/AliPayOrderUtil.java index b9126954..f23c95e0 100644 --- a/src/main/java/com/sqx/modules/utils/AliPayOrderUtil.java +++ b/src/main/java/com/sqx/modules/utils/AliPayOrderUtil.java @@ -1,5 +1,7 @@ package com.sqx.modules.utils; +import cn.hutool.core.util.IdUtil; + import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; import java.util.*; @@ -58,7 +60,7 @@ public class AliPayOrderUtil { * @return */ public static String createOrderId() { - int machineId = 1;//最大支持1-9个集群机器部署 + /*int machineId = 1;//最大支持1-9个集群机器部署 int hashCodeV = UUID.randomUUID().toString().hashCode(); if(hashCodeV < 0) {//有可能是负数 hashCodeV = - hashCodeV; @@ -66,7 +68,8 @@ public class AliPayOrderUtil { // 0 代表前面补充0 // 4 代表长度为4 // d 代表参数为正数型 - return machineId+String.format("%015d", hashCodeV); + return machineId+String.format("%015d", hashCodeV);*/ + return IdUtil.getSnowflake(1, 1).nextIdStr(); } diff --git a/src/main/java/com/sqx/modules/utils/InvitationCodeUtil.java b/src/main/java/com/sqx/modules/utils/InvitationCodeUtil.java index aa71722b..d1790996 100644 --- a/src/main/java/com/sqx/modules/utils/InvitationCodeUtil.java +++ b/src/main/java/com/sqx/modules/utils/InvitationCodeUtil.java @@ -1,5 +1,10 @@ package com.sqx.modules.utils; +import com.sqx.common.utils.SpringContextUtils; +import com.sqx.config.SnowFlake; + +import java.util.Objects; + /** * 邀请码生成解密工具类 * @@ -122,5 +127,9 @@ public class InvitationCodeUtil { return res; } + public static Long getSnowFlakeId() { + String id = String.valueOf(((SnowFlake) Objects.requireNonNull(SpringContextUtils.getSpringBean(SnowFlake.class))).nextId(false)); + return Long.parseLong(id); + } -} \ No newline at end of file +} diff --git a/src/main/java/com/sqx/modules/utils/ParamPageUtils.java b/src/main/java/com/sqx/modules/utils/ParamPageUtils.java new file mode 100644 index 00000000..68e3a65e --- /dev/null +++ b/src/main/java/com/sqx/modules/utils/ParamPageUtils.java @@ -0,0 +1,24 @@ +package com.sqx.modules.utils; + +import java.util.Map; + +/** + * @author GYJoker + */ +public class ParamPageUtils { + public static int getPageNum(Map params) { + Object page = params.get("page"); + if (page == null) { + return 1; + } + return Integer.parseInt(page.toString()); + } + + public static int getPageSize(Map params) { + Object limit = params.get("limit"); + if (limit == null) { + return 10; + } + return Integer.parseInt(limit.toString()); + } +} diff --git a/src/main/java/com/sqx/sharding/StandardShardingStrategyConf.java b/src/main/java/com/sqx/sharding/StandardShardingStrategyConf.java new file mode 100644 index 00000000..659edb5b --- /dev/null +++ b/src/main/java/com/sqx/sharding/StandardShardingStrategyConf.java @@ -0,0 +1,19 @@ +package com.sqx.sharding; + +import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm; +import org.apache.shardingsphere.api.sharding.standard.PreciseShardingValue; +import java.util.Collection; + +public class StandardShardingStrategyConf implements PreciseShardingAlgorithm { + @Override + public String doSharding(Collection availableTargetNames, PreciseShardingValue shardingValue) { + // 根据ID对5取模来确定表名 + long tableIndex = shardingValue.getValue() % 5; + for (String tableName : availableTargetNames) { + if (tableName.endsWith(String.valueOf(tableIndex))) { + return tableName; + } + } + throw new IllegalArgumentException(); + } +} \ No newline at end of file diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index cdee1a59..cd56d1e0 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -12,7 +12,7 @@ minimum-idle: 5 # 最大连接数,小于等于0会被重置为默认值10;大于零小于1会被重置为minimum-idle的值 maximum-pool-size: 15 # 空闲连接超时时间,默认值600000(10分钟),大于等于max-lifetime且max-lifetime>0,会被重置为0;不等于0且小于10秒,会被重置为10秒。 -idle-timeout: 30000 +idle-timeout: 20000 # 连接最大存活时间.不等于0且小于30秒,会被重置为默认值30分钟.设置应该比mysql设置的超时时间短 max-lifetime: 30000 # 连接超时时间:毫秒,小于250毫秒,否则被重置为默认值30秒 @@ -21,13 +21,23 @@ connection-timeout: 30000 spring: # sharding-jdbc 配置 shardingsphere: - center-tables-data-node: duanju.%s # 显示sharding-jdbc改写的sql语句 - show-sql: false + show-sql: true + + center-tables-data-node: duanju.%s + # 区域表的数据源节点 + region-tables-data-node: duanju-$->{0..4}.%s + # 区域分库策略的计算字段 + region-tables-sharding-database-column: user_id + # 分库的计算方法 + region-tables-sharding-database-algorithm: duanju-$->{user_id % 5} + + # 短剧集表 拆分 + course_details-sharding-database-column: course_id + course_details-sharding-database-algorithm: duanju-$->{course_id % 5} # 数据源名称 datasource: - # 数据源配置begin - master-0: + duanju: driver-class-name: ${driver-class-name} jdbc-url: jdbc:mysql://rm-gc712o11yndj78x6a6o.mysql.cn-chengdu.rds.aliyuncs.com/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT username: video_user @@ -37,7 +47,59 @@ spring: idle-timeout: ${idle-timeout} max-lifetime: ${max-lifetime} connection-timeout: ${connection-timeout} - slave-0: + # 数据源配置begin + duanju-0: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://rm-gc712o11yndj78x6a6o.mysql.cn-chengdu.rds.aliyuncs.com/duanju-0?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: video_user + password: VideoUser@1 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-1: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://rm-gc712o11yndj78x6a6o.mysql.cn-chengdu.rds.aliyuncs.com/duanju-1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: video_user + password: VideoUser@1 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-2: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://rm-gc712o11yndj78x6a6o.mysql.cn-chengdu.rds.aliyuncs.com/duanju-2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: video_user + password: VideoUser@1 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-3: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://rm-gc712o11yndj78x6a6o.mysql.cn-chengdu.rds.aliyuncs.com/duanju-3?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: video_user + password: VideoUser@1 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-4: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://rm-gc712o11yndj78x6a6o.mysql.cn-chengdu.rds.aliyuncs.com/duanju-4?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: video_user + password: VideoUser@1 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + + duanju-slave: driver-class-name: ${driver-class-name} jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT username: root @@ -47,13 +109,88 @@ spring: idle-timeout: ${idle-timeout} max-lifetime: ${max-lifetime} connection-timeout: ${connection-timeout} + duanju-slave-0: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju-0?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: root + password: 0fd6497c308ccfa8 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-slave-1: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju-1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: root + password: 0fd6497c308ccfa8 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-slave-2: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju-2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: root + password: 0fd6497c308ccfa8 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-slave-3: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju-3?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: root + password: 0fd6497c308ccfa8 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-slave-4: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju-4?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: root + password: 0fd6497c308ccfa8 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} # 数据源配置end # 读写分离配置begin master-slave-rules: #数据源 duanju: - master-data-source-name: master-0 - slave-data-source-names: slave-0 -# - master-0 -# - slave-0 + masterDataSourceName: duanju + slaveDataSourceNames: +# - duanju + - duanju-slave + duanju-0: + masterDataSourceName: duanju-0 + slaveDataSourceNames: +# - duanju-0 + - duanju-slave-0 + duanju-1: + masterDataSourceName: duanju-1 + slaveDataSourceNames: +# - duanju-1 + - duanju-slave-1 + duanju-2: + masterDataSourceName: duanju-2 + slaveDataSourceNames: +# - duanju-2 + - duanju-slave-2 + duanju-3: + masterDataSourceName: duanju-3 + slaveDataSourceNames: +# - duanju-3 + - duanju-slave-3 + duanju-4: + masterDataSourceName: duanju-4 + slaveDataSourceNames: +# - duanju-4 + - duanju-slave-4 diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml deleted file mode 100644 index 0ab4e7de..00000000 --- a/src/main/resources/application-local.yml +++ /dev/null @@ -1,58 +0,0 @@ -swagger: - enabled: true -pay: - h5BaseUrl: https://video-h5.hnsiyao.cn/me/detail/detail?allId= - orderNotifyUrl: https://video.hnsiyao.cn/czg/app/wuyou/notify - extractNotifyUrl: https://video.hnsiyao.cn/czg/app/wuyou/extractNotify - -# 数据源的一些配置 -driver-class-name: com.mysql.cj.jdbc.Driver -# 最小空闲连接,默认值10,小于0或大于maximum-pool-size,都会重置为maximum-pool-size -minimum-idle: 5 -# 最大连接数,小于等于0会被重置为默认值10;大于零小于1会被重置为minimum-idle的值 -maximum-pool-size: 15 -# 空闲连接超时时间,默认值600000(10分钟),大于等于max-lifetime且max-lifetime>0,会被重置为0;不等于0且小于10秒,会被重置为10秒。 -idle-timeout: 30000 -# 连接最大存活时间.不等于0且小于30秒,会被重置为默认值30分钟.设置应该比mysql设置的超时时间短 -max-lifetime: 30000 -# 连接超时时间:毫秒,小于250毫秒,否则被重置为默认值30秒 -connection-timeout: 30000 - -spring: - # sharding-jdbc 配置 - shardingsphere: - center-tables-data-node: duanju.%s - # 显示sharding-jdbc改写的sql语句 - show-sql: false - # 数据源名称 - datasource: - # 数据源配置begin - master-0: - driver-class-name: ${driver-class-name} - jdbc-url: jdbc:mysql://rm-gc712o11yndj78x6a6o.mysql.cn-chengdu.rds.aliyuncs.com/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT - username: video_user - password: VideoUser@1 - minimum-idle: ${minimum-idle} - maximum-pool-size: ${maximum-pool-size} - idle-timeout: ${idle-timeout} - max-lifetime: ${max-lifetime} - connection-timeout: ${connection-timeout} - slave-0: - driver-class-name: ${driver-class-name} - jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT - username: root - password: 0fd6497c308ccfa8 - minimum-idle: ${minimum-idle} - maximum-pool-size: ${maximum-pool-size} - idle-timeout: ${idle-timeout} - max-lifetime: ${max-lifetime} - connection-timeout: ${connection-timeout} - # 数据源配置end - - # 读写分离配置begin - master-slave-rules: - #数据源 - duanju: - master-data-source-name: master-0 - slave-data-source-names: - - slave-0 \ No newline at end of file diff --git a/src/main/resources/application-pay.yml b/src/main/resources/application-pay.yml index 0d94a784..75cd1d9c 100644 --- a/src/main/resources/application-pay.yml +++ b/src/main/resources/application-pay.yml @@ -1,3 +1,10 @@ +swagger: + enabled: true +pay: + h5BaseUrl: https://video-h5.hnsiyao.cn/me/detail/detail?allId= + orderNotifyUrl: https://video.hnsiyao.cn/czg/app/wuyou/notify + extractNotifyUrl: https://video.hnsiyao.cn/czg/app/wuyou/extractNotify + # 数据源的一些配置 driver-class-name: com.mysql.cj.jdbc.Driver # 最小空闲连接,默认值10,小于0或大于maximum-pool-size,都会重置为maximum-pool-size @@ -5,7 +12,7 @@ minimum-idle: 5 # 最大连接数,小于等于0会被重置为默认值10;大于零小于1会被重置为minimum-idle的值 maximum-pool-size: 15 # 空闲连接超时时间,默认值600000(10分钟),大于等于max-lifetime且max-lifetime>0,会被重置为0;不等于0且小于10秒,会被重置为10秒。 -idle-timeout: 30000 +idle-timeout: 20000 # 连接最大存活时间.不等于0且小于30秒,会被重置为默认值30分钟.设置应该比mysql设置的超时时间短 max-lifetime: 30000 # 连接超时时间:毫秒,小于250毫秒,否则被重置为默认值30秒 @@ -14,33 +21,139 @@ connection-timeout: 30000 spring: # sharding-jdbc 配置 shardingsphere: - center-tables-data-node: duanju.%s # 显示sharding-jdbc改写的sql语句 - show-sql: false + show-sql: true + + center-tables-data-node: duanju.%s + # 区域表的数据源节点 + region-tables-data-node: duanju-$->{0..4}.%s + # 区域分库策略的计算字段 + region-tables-sharding-database-column: user_id + # 分库的计算方法 + region-tables-sharding-database-algorithm: duanju-$->{user_id % 5} + + # 短剧集表 拆分 + course_details-sharding-database-column: course_id + course_details-sharding-database-algorithm: duanju-$->{course_id % 5} # 数据源名称 datasource: - # 数据源配置begin - master-0: + duanju: driver-class-name: ${driver-class-name} jdbc-url: jdbc:mysql://rm-gc7xx913734hv5w5qxo.mysql.cn-chengdu.rds.aliyuncs.com/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT username: video_user password: VideoUser@1 -# jdbc-url: jdbc:mysql://rm-gc712o11yndj78x6a6o.mysql.cn-chengdu.rds.aliyuncs.com/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT -# username: video_user -# password: VideoUser@1 minimum-idle: ${minimum-idle} maximum-pool-size: ${maximum-pool-size} idle-timeout: ${idle-timeout} max-lifetime: ${max-lifetime} connection-timeout: ${connection-timeout} - slave-0: + # 数据源配置begin + duanju-0: driver-class-name: ${driver-class-name} - jdbc-url: jdbc:mysql://rm-gc7xx913734hv5w5qxo.mysql.cn-chengdu.rds.aliyuncs.com/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + jdbc-url: jdbc:mysql://rm-gc7xx913734hv5w5qxo.mysql.cn-chengdu.rds.aliyuncs.com/duanju-0?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT username: video_user password: VideoUser@1 -# jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT -# username: root -# password: 0fd6497c308ccfa8 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-1: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://rm-gc7xx913734hv5w5qxo.mysql.cn-chengdu.rds.aliyuncs.com/duanju-1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: video_user + password: VideoUser@1 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-2: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://rm-gc7xx913734hv5w5qxo.mysql.cn-chengdu.rds.aliyuncs.com/duanju-2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: video_user + password: VideoUser@1 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-3: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://rm-gc7xx913734hv5w5qxo.mysql.cn-chengdu.rds.aliyuncs.com/duanju-3?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: video_user + password: VideoUser@1 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-4: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://rm-gc7xx913734hv5w5qxo.mysql.cn-chengdu.rds.aliyuncs.com/duanju-4?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: video_user + password: VideoUser@1 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + + duanju-slave: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://47.122.30.120:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: root + password: VideoUser1@ + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-slave-0: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://47.122.30.120:3306/duanju-0?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: root + password: VideoUser1@ + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-slave-1: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://47.122.30.120:3306/duanju-1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: root + password: VideoUser1@ + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-slave-2: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://47.122.30.120:3306/duanju-2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: root + password: VideoUser1@ + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-slave-3: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://47.122.30.120:3306/duanju-3?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: root + password: VideoUser1@ + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-slave-4: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://47.122.30.120:3306/duanju-4?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: root + password: VideoUser1@ minimum-idle: ${minimum-idle} maximum-pool-size: ${maximum-pool-size} idle-timeout: ${idle-timeout} @@ -52,14 +165,32 @@ spring: master-slave-rules: #数据源 duanju: - master-data-source-name: master-0 - slave-data-source-names: slave-0 -# - master-0 -# - slave-0 - -swagger: - enabled: true -pay: - h5BaseUrl: https://video-h5.hnsiyao.cn/me/detail/detail?allId= - orderNotifyUrl: https://video.hnsiyao.cn/czg/app/wuyou/notify - extractNotifyUrl: https://video.hnsiyao.cn/czg/app/wuyou/extractNotify + masterDataSourceName: duanju + slaveDataSourceNames: + # - duanju + - duanju-slave + duanju-0: + masterDataSourceName: duanju-0 + slaveDataSourceNames: + # - duanju-0 + - duanju-slave-0 + duanju-1: + masterDataSourceName: duanju-1 + slaveDataSourceNames: + # - duanju-1 + - duanju-slave-1 + duanju-2: + masterDataSourceName: duanju-2 + slaveDataSourceNames: + # - duanju-2 + - duanju-slave-2 + duanju-3: + masterDataSourceName: duanju-3 + slaveDataSourceNames: + # - duanju-3 + - duanju-slave-3 + duanju-4: + masterDataSourceName: duanju-4 + slaveDataSourceNames: + # - duanju-4 + - duanju-slave-4 diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 3842933f..77b2ee4d 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -1,9 +1,9 @@ swagger: - enabled: false + enabled: true pay: - h5BaseUrl: https://dj-h5.hnsiyao.cn/me/detail/detail?allId= - orderNotifyUrl: https://pay.hnsiyao.cn/czg/app/wuyou/notify - extractNotifyUrl: https://pay.hnsiyao.cn/czg/app/wuyou/extractNotify + h5BaseUrl: https://video-h5.hnsiyao.cn/me/detail/detail?allId= + orderNotifyUrl: https://video.hnsiyao.cn/czg/app/wuyou/notify + extractNotifyUrl: https://video.hnsiyao.cn/czg/app/wuyou/extractNotify # 数据源的一些配置 driver-class-name: com.mysql.cj.jdbc.Driver @@ -12,70 +12,185 @@ minimum-idle: 5 # 最大连接数,小于等于0会被重置为默认值10;大于零小于1会被重置为minimum-idle的值 maximum-pool-size: 15 # 空闲连接超时时间,默认值600000(10分钟),大于等于max-lifetime且max-lifetime>0,会被重置为0;不等于0且小于10秒,会被重置为10秒。 -idle-timeout: 30000 +idle-timeout: 20000 # 连接最大存活时间.不等于0且小于30秒,会被重置为默认值30分钟.设置应该比mysql设置的超时时间短 max-lifetime: 30000 # 连接超时时间:毫秒,小于250毫秒,否则被重置为默认值30秒 connection-timeout: 30000 spring: - # sharding-jdbc 配置 - shardingsphere: - center-tables-data-node: duanju.%s - # 显示sharding-jdbc改写的sql语句 - show-sql: false - # 数据源名称 - datasource: - # 数据源配置begin - master-0: - driver-class-name: ${driver-class-name} - jdbc-url: jdbc:mysql://rm-gc7xx913734hv5w5q.mysql.cn-chengdu.rds.aliyuncs.com/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT - username: video_user - password: VideoUser@1 - minimum-idle: ${minimum-idle} - maximum-pool-size: ${maximum-pool-size} - idle-timeout: ${idle-timeout} - max-lifetime: ${max-lifetime} - connection-timeout: ${connection-timeout} -# slave-0: -# driver-class-name: ${driver-class-name} -# jdbc-url: jdbc:mysql://localhost:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT -# username: root -# password: acddb0c84a192ada -# minimum-idle: ${minimum-idle} -# maximum-pool-size: ${maximum-pool-size} -# idle-timeout: ${idle-timeout} -# max-lifetime: ${max-lifetime} -# connection-timeout: ${connection-timeout} -# slave-1: -# driver-class-name: ${driver-class-name} -# jdbc-url: jdbc:mysql://172.18.96.9:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT -# username: root -# password: VideoUser1@ -# minimum-idle: ${minimum-idle} -# maximum-pool-size: ${maximum-pool-size} -# idle-timeout: ${idle-timeout} -# max-lifetime: ${max-lifetime} -# connection-timeout: ${connection-timeout} - slave-2: - driver-class-name: ${driver-class-name} - jdbc-url: jdbc:mysql://172.18.96.8:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT - username: root - password: VideoUser1@ - minimum-idle: ${minimum-idle} - maximum-pool-size: ${maximum-pool-size} - idle-timeout: ${idle-timeout} - max-lifetime: ${max-lifetime} - connection-timeout: ${connection-timeout} - # 数据源配置end + # sharding-jdbc 配置 + shardingsphere: + # 显示sharding-jdbc改写的sql语句 + show-sql: true - # 读写分离配置begin - master-slave-rules: - #数据源 - duanju: - master-data-source-name: master-0 -# slave-data-source-names: slave-0,slave-1,slave-2 - slave-data-source-names: slave-2 -# - slave-0 -# - slave-1 -# - slave-2 + center-tables-data-node: duanju.%s + # 区域表的数据源节点 + region-tables-data-node: duanju-$->{0..4}.%s + # 区域分库策略的计算字段 + region-tables-sharding-database-column: user_id + # 分库的计算方法 + region-tables-sharding-database-algorithm: duanju-$->{user_id % 5} + + # 短剧集表 拆分 + course_details-sharding-database-column: course_id + course_details-sharding-database-algorithm: duanju-$->{course_id % 5} + # 数据源名称 + datasource: + duanju: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://rm-gc7xx913734hv5w5q.mysql.cn-chengdu.rds.aliyuncs.com/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: video_user + password: VideoUser@1 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + # 数据源配置begin + duanju-0: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://rm-gc7xx913734hv5w5q.mysql.cn-chengdu.rds.aliyuncs.com/duanju-0?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: video_user + password: VideoUser@1 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-1: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://rm-gc7xx913734hv5w5q.mysql.cn-chengdu.rds.aliyuncs.com/duanju-1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: video_user + password: VideoUser@1 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-2: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://rm-gc7xx913734hv5w5q.mysql.cn-chengdu.rds.aliyuncs.com/duanju-2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: video_user + password: VideoUser@1 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-3: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://rm-gc7xx913734hv5w5q.mysql.cn-chengdu.rds.aliyuncs.com/duanju-3?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: video_user + password: VideoUser@1 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-4: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://rm-gc7xx913734hv5w5q.mysql.cn-chengdu.rds.aliyuncs.com/duanju-4?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: video_user + password: VideoUser@1 + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + + duanju-slave: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://172.18.96.8:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: root + password: VideoUser1@ + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-slave-0: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://172.18.96.8:3306/duanju-0?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: root + password: VideoUser1@ + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-slave-1: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://172.18.96.8:3306/duanju-1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: root + password: VideoUser1@ + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-slave-2: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://172.18.96.8:3306/duanju-2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: root + password: VideoUser1@ + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-slave-3: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://172.18.96.8:3306/duanju-3?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: root + password: VideoUser1@ + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + duanju-slave-4: + driver-class-name: ${driver-class-name} + jdbc-url: jdbc:mysql://172.18.96.8:3306/duanju-4?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT + username: root + password: VideoUser1@ + minimum-idle: ${minimum-idle} + maximum-pool-size: ${maximum-pool-size} + idle-timeout: ${idle-timeout} + max-lifetime: ${max-lifetime} + connection-timeout: ${connection-timeout} + # 数据源配置end + + # 读写分离配置begin + master-slave-rules: + #数据源 + duanju: + masterDataSourceName: duanju + slaveDataSourceNames: + # - duanju + - duanju-slave + duanju-0: + masterDataSourceName: duanju-0 + slaveDataSourceNames: + # - duanju-0 + - duanju-slave-0 + duanju-1: + masterDataSourceName: duanju-1 + slaveDataSourceNames: + # - duanju-1 + - duanju-slave-1 + duanju-2: + masterDataSourceName: duanju-2 + slaveDataSourceNames: + # - duanju-2 + - duanju-slave-2 + duanju-3: + masterDataSourceName: duanju-3 + slaveDataSourceNames: + # - duanju-3 + - duanju-slave-3 + duanju-4: + masterDataSourceName: duanju-4 + slaveDataSourceNames: + # - duanju-4 + - duanju-slave-4 diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 8ba8123c..a41f1bc6 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,6 +1,9 @@ +#logging: +# file: +# name: logs/duanju.log +# 日志配置 logging: - file: - name: logs/duanju.log + config: classpath:logback.xml # Tomcat server: @@ -19,25 +22,14 @@ management: db: enabled: false #关闭数据库健康检查isV #mybatis -mybatis-plus: - mapper-locations: classpath*:/mapper/**/*.xml - #实体扫描,多个package用逗号或者分号分隔 - typeAliasesPackage: com.sqx.modules.*.entity - global-config: - #数据库相关配置 - db-config: - #主键类型 AUTO:"数据库ID自增", INPUT:"用户输入ID", ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID"; - id-type: AUTO - logic-delete-value: -1 - logic-not-delete-value: 0 - banner: false - #原生配置 - configuration: - map-underscore-to-camel-case: true - cache-enabled: false - call-setters-on-nulls: true - jdbc-type-for-null: 'null' -# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl +pagehelper: + offsetAsPageNum: true + rowBoundsWithCount: true + helperDialect: mysql + reasonable: true + supportMethodsArguments: true + params: + count: countSql sqx: redis: @@ -59,13 +51,18 @@ limit: urlRate: 10 # 同一用户单url每秒限制次数 ipJumpLimit: 4 # 同一ip每分钟跳动次数 +# 指定sharding-jdbc雪花算法的工作机器ID +snowflake: + datacenterId: 1 + machineId: 3 + spring: main: allow-circular-references: true allow-bean-definition-overriding: true # 环境 dev|test|prod profiles: - active: local + active: dev # jackson时间格式化 jackson: time-zone: GMT+8 @@ -93,74 +90,85 @@ spring: # pathmatch: # matching-strategy: ant_path_matcher shardingsphere: - center-tables: - - activity - - app - - banner - - cash_out - - comment_good - - common_info - - complet_award - - coupon - - coupon_user - - course - - course_classification - - course_collect - - course_comment + #广播表 +# broadcast-tables: +# - course + # 短剧集表 通过course_id 分 + course-details: - course_details - - course_user - - disc_spinning - - disc_spinning_amount - - disc_spinning_record - - help_classify - - help_word - - invite - - invite_award - - invite_money - - message_info - - msg + #分库表 通过user_Id分 + region-tables: + - user_money_details + - sys_user_money_details - orders - - pay_classify + - course_collect - pay_details - - qrtz_blob_triggers - - qrtz_calendars - - qrtz_cron_triggers - - qrtz_fired_triggers - - qrtz_job_details - - qrtz_locks - - qrtz_paused_trigger_grps - - qrtz_scheduler_state - - qrtz_simple_triggers - - qrtz_simprop_triggers - - qrtz_triggers - - schedule_job + - disc_spinning_record + - cash_out + - course_user + - tb_user + - task_center_record + - user_money + - user_sign_record + - invite_achievement + - invite_money + - user_info + - sys_user + #中心表 + center-tables: + - course + - message_info + - announcement - schedule_job_log + - invite + - msg + - sys_role_menu - sdk_info + - user_integral_details + - common_info + - sys_log + - user_vip + - uni_ad_callback_record + - sys_user_role + - sys_menu + - comment_good + - course_comment + - banner + - disc_spinning + - course_classification + - task_center - sdk_type - - search - - sys_captcha + - task_center_reward + - schedule_job + - help_word + - help_classify + - disc_spinning_amount + - activity + - vip_details + - sys_role + - pay_classify + - app + - invite_award + - complet_award + - url_address - sys_config - sys_dict - - sys_log - - sys_menu - sys_oss - - sys_role - - sys_role_menu - - sys_user - - sys_user_role - - sys_user_token - - task_center - - task_center_record - - task_center_reward - - tb_user - - uni_ad_callback_record - - url_address - - user_integral - - user_integral_details - - user_money - - user_money_details + - search + - coupon_user + - coupon - user_prize_exchange - - user_sign_record - - user_vip - - vip_details - - invite_achievement \ No newline at end of file + - user_integral + - sys_user_token + - sys_captcha + - qrtz_triggers + - qrtz_simprop_triggers + - qrtz_simple_triggers + - qrtz_scheduler_state + - qrtz_paused_trigger_grps + - qrtz_locks + - qrtz_job_details + - qrtz_fired_triggers + - qrtz_cron_triggers + - qrtz_calendars + - qrtz_blob_triggers diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml new file mode 100644 index 00000000..417330bb --- /dev/null +++ b/src/main/resources/logback.xml @@ -0,0 +1,46 @@ + + + logback + + + + + + + + + ${p_console} + + + + + logs/duanju.log + + + logs/duanju.%d{yyyy-MM-dd}.%i.log.gz + + 30 + 100MB + + + + ${p_file} + UTF-8 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/AnnouncementMapper.xml b/src/main/resources/mapper/AnnouncementMapper.xml new file mode 100644 index 00000000..2609a97f --- /dev/null +++ b/src/main/resources/mapper/AnnouncementMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + id,title,content, + state,create_time,update_time + + diff --git a/src/main/resources/mapper/SysUserMoneyDetailsMapper.xml b/src/main/resources/mapper/SysUserMoneyDetailsMapper.xml new file mode 100644 index 00000000..55ab903f --- /dev/null +++ b/src/main/resources/mapper/SysUserMoneyDetailsMapper.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + id,user_id,sys_user_id, + by_user_id,title,classify, + type,state,money, + content,money_type,create_time, + source_id + + diff --git a/src/main/resources/mapper/UserInfoMapper.xml b/src/main/resources/mapper/UserInfoMapper.xml new file mode 100644 index 00000000..42f6e7d9 --- /dev/null +++ b/src/main/resources/mapper/UserInfoMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + id,user_id,cert_name, + cert_no,update_time + + diff --git a/src/main/resources/mapper/app/UserDao.xml b/src/main/resources/mapper/app/UserDao.xml index 6a2e79b7..fa3f38a6 100644 --- a/src/main/resources/mapper/app/UserDao.xml +++ b/src/main/resources/mapper/app/UserDao.xml @@ -298,10 +298,15 @@ - select * from banner where classify=#{classify} order by `sort` desc diff --git a/src/main/resources/mapper/course/CourseClassificationDao.xml b/src/main/resources/mapper/course/CourseClassificationDao.xml index 73885d05..c8cd42be 100644 --- a/src/main/resources/mapper/course/CourseClassificationDao.xml +++ b/src/main/resources/mapper/course/CourseClassificationDao.xml @@ -1,14 +1,6 @@ - - select classification_id ,classification_name from course_classification where is_delete=0; - \ No newline at end of file + diff --git a/src/main/resources/mapper/course/CourseCollectDao.xml b/src/main/resources/mapper/course/CourseCollectDao.xml index 4661aa1a..81baf2d5 100644 --- a/src/main/resources/mapper/course/CourseCollectDao.xml +++ b/src/main/resources/mapper/course/CourseCollectDao.xml @@ -5,71 +5,30 @@ + diff --git a/src/main/resources/mapper/course/CourseDao.xml b/src/main/resources/mapper/course/CourseDao.xml index 18297be8..4154d796 100644 --- a/src/main/resources/mapper/course/CourseDao.xml +++ b/src/main/resources/mapper/course/CourseDao.xml @@ -8,58 +8,32 @@ @@ -139,7 +113,6 @@ c.course_type as courseType, c.banner_id as bannerId, b.name as bannerName, - ifnull(d.viewCounts,0) as viewCounts, c.dy_img_id as dyImgId, c.dy_course_id as dyCourseId, c.dy_status as dyStatus, @@ -168,20 +141,14 @@ c.`cost_of_production` as costOfProduction, c.`cost_commitment_letter_material_id` as costCommitmentLetterMaterialId, c.`wx_course_status` as wxCourseStatus, - t.dyUrlStatus, - o.payMoney, - ifnull(d.goodNum,0) as goodNum, - ifnull(d.courseDetailsCount, 0) as courseDetailsCount, - 0 as weekGoodNum, - ifnull(tt.isRecommend,0) as isRecommend +-- t.dyUrlStatus, + 0 as weekGoodNum + FROM course AS c LEFT JOIN course_classification AS cc ON c.classify_id = cc.classification_id left join banner as b on b.id=c.banner_id - left join (select 1 as id,count(*) as dyUrlStatus from course_details where dy_url_status in (1,3) or dy_url_status=null group by course_id) t on t.id = 1 - left join (select course_id,sum(pay_money) as payMoney from orders where status=1 group by course_id) o on o.course_id = c.course_id - left join (select course_id,sum(view_count) as viewCounts,sum(good_num) as goodNum,count(*) as courseDetailsCount from course_details group by course_id) d on d.course_id = c.course_id - left join (select course_id,count(*) as isRecommend from course_details where good=1 group by course_id) tt on tt.course_id = c.course_id +-- left join (select 1 as id,count(*) as dyUrlStatus from course_details where dy_url_status in (1,3) or dy_url_status=null group by course_id) t on t.id = 1 WHERE 1 = 1 AND c.is_delete = 0 @@ -215,9 +182,9 @@ and (c.is_over is null or c.is_over=2) - - and c.course_id in (select course_id from course_details where good=1) - + + + and c.status=#{status} @@ -265,7 +232,7 @@ WHERE c.is_delete = 0 and c.status=1 - and c.title LIKE #{title} + and c.title LIKE concat("%",#{title},"%") order by create_time desc diff --git a/src/main/resources/mapper/course/CourseDetailsDao.xml b/src/main/resources/mapper/course/CourseDetailsDao.xml index 6d3512fb..9acb74de 100644 --- a/src/main/resources/mapper/course/CourseDetailsDao.xml +++ b/src/main/resources/mapper/course/CourseDetailsDao.xml @@ -2,6 +2,36 @@ + + + + + select + count(1) + from course_details + where course_id = #{courseId} + - + select + ifnull(sum(view_count),0) as viewCounts, + ifnull(sum(good_num),0) as goodNum, + ifnull(count(*),0) as courseDetailsCount + from course_details + where course_id = #{courseId} + + diff --git a/src/main/resources/mapper/course/CourseUserDao.xml b/src/main/resources/mapper/course/CourseUserDao.xml index 70c86e24..75c78935 100644 --- a/src/main/resources/mapper/course/CourseUserDao.xml +++ b/src/main/resources/mapper/course/CourseUserDao.xml @@ -36,6 +36,10 @@ select * from course_user u where u.user_id=#{userId} and u.course_id=#{id} and u.classify=2 + + update course_user set update_time =#{courseUser.updateTime} diff --git a/src/main/resources/mapper/discSpinning/DiscSpinningRecordDao.xml b/src/main/resources/mapper/discSpinning/DiscSpinningRecordDao.xml index 0234cda0..8585c34c 100644 --- a/src/main/resources/mapper/discSpinning/DiscSpinningRecordDao.xml +++ b/src/main/resources/mapper/discSpinning/DiscSpinningRecordDao.xml @@ -4,6 +4,6 @@ \ No newline at end of file diff --git a/src/main/resources/mapper/orders/OrdersDao.xml b/src/main/resources/mapper/orders/OrdersDao.xml index 118e1901..6237cad6 100644 --- a/src/main/resources/mapper/orders/OrdersDao.xml +++ b/src/main/resources/mapper/orders/OrdersDao.xml @@ -323,4 +323,13 @@ AND orders.`pay_way` = 9 AND orders.create_time > DATE_FORMAT(CURDATE(), '%Y-%m-%d 00:00:00') + + + diff --git a/src/main/resources/mapper/pay/CashDao.xml b/src/main/resources/mapper/pay/CashDao.xml index 794fe236..140f2b9e 100644 --- a/src/main/resources/mapper/pay/CashDao.xml +++ b/src/main/resources/mapper/pay/CashDao.xml @@ -45,19 +45,39 @@ select money from user_money where user_id=#{userId} + + diff --git a/src/main/resources/mapper/sys/SysUserRoleDao.xml b/src/main/resources/mapper/sys/SysUserRoleDao.xml index 0ab42808..f08a6fff 100644 --- a/src/main/resources/mapper/sys/SysUserRoleDao.xml +++ b/src/main/resources/mapper/sys/SysUserRoleDao.xml @@ -10,7 +10,7 @@ - select role_id from sys_user_role where user_id = #{value} - \ No newline at end of file + diff --git a/src/test/java/com/sqx/Tets.java b/src/test/java/com/sqx/Tets.java index 001f5575..f53d1a82 100644 --- a/src/test/java/com/sqx/Tets.java +++ b/src/test/java/com/sqx/Tets.java @@ -2,15 +2,39 @@ package com.sqx; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelWriter; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.aliyun.credentials.provider.StaticCredentialsProvider; +import com.aliyun.tea.TeaException; +import com.aliyun.teaopenapi.models.Config; +import com.aliyun.dytnsapi20200217.Client; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.sqx.modules.app.dao.UserDao; +import com.sqx.modules.app.dao.UserMoneyDao; +import com.sqx.modules.app.dao.UserMoneyDetailsDao; +import com.sqx.modules.app.entity.InviteAchievement; import com.sqx.modules.app.entity.UserEntity; +import com.sqx.modules.app.entity.UserMoney; +import com.sqx.modules.app.entity.UserMoneyDetails; +import com.sqx.modules.app.service.InviteAchievementService; import com.sqx.modules.app.service.UserService; +import com.sqx.modules.job.task.TempOrdersTask; +import com.sqx.modules.orders.service.OrdersService; import com.sqx.modules.pay.controller.app.WuyouController; +import com.sqx.modules.pay.dao.PayDetailsDao; +import com.sqx.modules.pay.entity.PayDetails; +import com.sqx.modules.pay.service.PayDetailsService; +import com.sqx.modules.pay.wuyou.BaseResp; +import com.sqx.modules.sys.service.SysUserService; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.ApplicationContext; @@ -20,29 +44,144 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; -@ActiveProfiles("dev") +@ActiveProfiles("pay") @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class Tets { + private static final Logger log = LoggerFactory.getLogger(Tets.class); @Autowired ApplicationContext applicationContext; @Autowired UserService userService; + @Autowired + TempOrdersTask tempOrdersTask; + @Autowired + InviteAchievementService inviteAchievementService; + @Autowired + PayDetailsService payDetailsService; + @Autowired + PayDetailsDao payDetailsDao; + @Autowired + UserMoneyDetailsDao userMoneyDetailsDao; + @Autowired + UserMoneyDao userMoneyDao; + @Autowired + private UserDao userDao; + + @Autowired + private SysUserService sysUserService; + + @Autowired + private OrdersService ordersService; + @Test + public void test4() { + UserEntity userEntity = userDao.selectById(1072962203591784209L); + UserEntity userEntity2 = userDao.selectById(1072640875319932689L); + tempOrdersTask.activities(userEntity, userEntity2); + } + + @Test + public void test3() { + List userMoneyDetails = userMoneyDetailsDao.selectList(new LambdaQueryWrapper().in(UserMoneyDetails::getClassify, 6, 1).isNotNull(UserMoneyDetails::getUserId).groupBy(UserMoneyDetails::getUserId).select(UserMoneyDetails::getUserId)); + Set useridList = userMoneyDetails.stream().map(UserMoneyDetails::getUserId).collect(Collectors.toSet()); + List userMoneyDetailsList = userMoneyDao.selectList(new LambdaQueryWrapper().in(UserMoney::getUserId, useridList)); + userMoneyDetailsList.parallelStream().forEach(userMoney -> { + BigDecimal coin = userMoneyDao.sumMoney(userMoney.getUserId()); + BigDecimal money = userMoneyDao.sumMoney2(userMoney.getUserId()); + log.info("用户: {}, 金币: {}, 金额: {}", userMoney.getUserId(), coin, money); + userMoney.setInviteIncomeCoin(coin); + userMoney.setInviteIncomeMoney(money); + userMoneyDao.update(userMoney, new LambdaQueryWrapper().eq(UserMoney::getUserId, userMoney.getUserId()) + .eq(UserMoney::getId, userMoney.getId())); + }); + + } + + @Test + public void test2() { + inviteAchievementService.remove(new LambdaQueryWrapper<>()); + + List userinfoList = userService.list(); + + userinfoList.parallelStream().forEach((userEntity -> { + if (StrUtil.isBlank(userEntity.getInviterCode())) return; + + UserEntity byUser = userService.queryByInvitationCode(userEntity.getInviterCode()); + + if (byUser == null) return; + + Integer count = payDetailsDao.selectCount(new LambdaQueryWrapper() + .eq(PayDetails::getState, 1) + .eq(PayDetails::getUserId, userEntity.getUserId()) + .eq(PayDetails::getClassify, 9)); + + Integer count1 = userMoneyDetailsDao.selectCount(new LambdaQueryWrapper() + .eq(UserMoneyDetails::getClassify, 6) + .eq(UserMoneyDetails::getByUserId, userEntity.getUserId()) + .eq(UserMoneyDetails::getUserId, byUser.getUserId()) + .eq(UserMoneyDetails::getTitle, "分享达标奖励")); + + InviteAchievement inviteAchievement = inviteAchievementService.getByUserId(userEntity.getUserId()); + if (inviteAchievement == null) { + inviteAchievement = new InviteAchievement(); + inviteAchievement.setState(count1 > 0 ? 1 : 0); + inviteAchievement.setCount(count); + inviteAchievement.setCreateTime(DateUtil.date()); + inviteAchievement.setTargetUserId(userEntity.getUserId()); + inviteAchievement.setUserId(byUser.getUserId()); + inviteAchievementService.save(inviteAchievement); + } else { + inviteAchievement.setState(count1 > 0 ? 1 : 0); + inviteAchievement.setCount(count); + inviteAchievement.setCreateTime(DateUtil.date()); + inviteAchievement.setTargetUserId(userEntity.getUserId()); + inviteAchievement.setUserId(byUser.getUserId()); + inviteAchievementService.update(inviteAchievement, new LambdaQueryWrapper() + .eq(InviteAchievement::getUserId, inviteAchievement.getUserId()) + .eq(InviteAchievement::getId, inviteAchievement.getId())); + } + })); + + } + @Test public void test() { // } - WuyouController proxy = applicationContext.getBean(WuyouController.class); - UserEntity userEntity = userService.selectUserById(26972L); - UserEntity byUser = userService.queryByInvitationCode(userEntity.getInviterCode()); - +// WuyouController proxy = applicationContext.getBean(WuyouController.class); +// UserEntity userEntity = userService.selectUserById(26972L); +// UserEntity byUser = userService.queryByInvitationCode(userEntity.getInviterCode()); +// // proxy.activities(userEntity, byUser); - System.out.println(proxy); +// System.out.println(proxy); +// BaseResp baseResp = JSONObject.parseObject("{\"msg\":\"查询成功\",\"code\":200,\"payStatus\":\"NOTPAY\",\"status\":99999}", BaseResp.class); +// tempOrdersTask.order(); +// List payDetailsList = payDetailsDao.selectList(new LambdaQueryWrapper() +// .eq(PayDetails::getState, 0) +// .lt(PayDetails::getCreateTime, DateUtil.offsetMinute(DateUtil.date(), -15))); + } + public static com.aliyun.dytnsapi20200217.Client createClient() throws Exception { + // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 + // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。 + com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() + // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 + .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")) + // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 + .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); + // Endpoint 请参考 https://api.aliyun.com/product/Dytnsapi + config.endpoint = "dytnsapi.aliyuncs.com"; + return new com.aliyun.dytnsapi20200217.Client(config); + } + + public static void main(String[] args) { - + assert false : "asdasfqwerq3rqwr"; } + + + + }