Merge branch 'test' into dev

This commit is contained in:
GYJ 2024-12-05 18:16:41 +08:00
commit f6d6603f8d
21 changed files with 195 additions and 54 deletions

View File

@ -1,15 +1,37 @@
package com.sqx;
import com.sqx.modules.pay.wuyou.WuyouPay;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.scheduling.annotation.EnableScheduling;
import java.util.Map;
/**
* @author GYJ
*/
@EnableScheduling
@SpringBootApplication
public class SqxApplication {
public static void main(String[] args) {
SpringApplication.run(SqxApplication.class, args);
ConfigurableApplicationContext context = SpringApplication.run(SqxApplication.class, args);
context.getEnvironment().getPropertySources().forEach(source -> {
if (source.getName().contains("application-dev.yml") || source.getName().contains("application-prod.yml")) {
if (source.getSource() instanceof Map) {
((Map<String, Object>) source.getSource()).forEach((key, value) -> {
System.out.println(key + ": " + value);
if ("pay.orderNotifyUrl".equals(key)) {
WuyouPay.setNotifyUrl(value.toString());
}
if ("pay.extractNotifyUrl".equals(key)) {
WuyouPay.setExtractNotifyUrl(value.toString());
}
});
}
}
});
System.out.println("(♥◠‿◠)ノ゙ 短剧系统启动成功 ლ(´ڡ`ლ)゙ \n"+
" _ \n" +
" | | \n" +
@ -20,4 +42,4 @@ public class SqxApplication {
}
}
}

View File

@ -0,0 +1,47 @@
package com.sqx.common.aspect;
import com.google.gson.Gson;
import com.sqx.common.utils.HttpContextUtils;
import com.sqx.common.utils.IPUtils;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
/**
* 方法调用统一切面处理
*/
@Aspect
@Component
@Slf4j
public class AppApiMethodAspect {
@Pointcut("execution(public * (" +
"com.sqx.modules.*.controller.* " +
").*(..))")
public void pkg() {
}
@Around("pkg()")
// @SuppressWarnings("unchecked")
public Object around(ProceedingJoinPoint pjp) throws Throwable {
// 执行被拦截的方法
Object result = pjp.proceed();
//请求的参数
Object[] args = pjp.getArgs();
String params = new Gson().toJson(args);
String resultJson = new Gson().toJson(result);
//获取request
HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
log.info("\n>>>>>> {} {}\n>>>>>> {}\n>>>>>> Request: {}\n>>>>>> Response: {}",
request.getMethod(), request.getRequestURL(), IPUtils.getIpAddr(request),
params,
resultJson
);
return result;
}
}

View File

@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/moneyDetails")
@AllArgsConstructor
@Api("钱包明细")
@Api(value = "钱包明细", tags = {"钱包明细"})
public class UserMoneyDetailsController {
private UserMoneyDetailsService userMoneyDetailsService;
private UserMoneyService userMoneyService;

View File

@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/app/moneyDetails")
@AllArgsConstructor
@Api("钱包明细")
@Api(value = "钱包明细app版本", tags = {"钱包明细app版本"})
public class AppUserMoneyDetailsController {
private UserMoneyDetailsService userMoneyDetailsService;

View File

@ -9,7 +9,7 @@ public interface UserMoneyDao extends BaseMapper<UserMoney> {
void updateMayMoney(@Param("type") Integer type, @Param("userId")Long userId, @Param("money") Double money);
void updateMayAmount(@Param("type") Integer type, @Param("userId")Long userId, @Param("money") Double amount);
void updateMayAmount(@Param("type") Integer type, @Param("userId")Long userId, @Param("amount") Double amount);
void updateSysMoney(@Param("type") Integer type, @Param("sysUserId")Long sysUserId, @Param("money") Double money);

View File

@ -181,6 +181,8 @@ public class AliossCourseController {
courseDetails.setTitleImg(image);
courseDetails.setContent(courseDetailsName);
courseDetails.setGoodNum(goodNum);
courseDetails.setViewCount(0L);
courseDetails.setPlayCompleteCount(0L);
if(i<=freeNum){
courseDetails.setPrice(BigDecimal.ZERO);
courseDetails.setIsPrice(2);

View File

@ -28,67 +28,77 @@ public class AppCourseController extends AbstractController {
@ApiOperation("查询短剧信息")
public Result selectCourse(@ApiParam("") Integer page, @ApiParam("") Integer limit, @ApiParam("分类id") Long classifyId,
@ApiParam("搜索内容") String title, Long bannerId, Integer sort, String token, Integer isPrice,
Integer over,Integer wxCourse,Integer dyCourse,Integer wxShow,Integer dyShow, HttpServletRequest request) {
if(StringUtils.isEmpty(token)){
Integer over, Integer wxCourse, Integer dyCourse, Integer wxShow, Integer dyShow, HttpServletRequest request) {
if (StringUtils.isEmpty(token)) {
token = request.getHeader("Token");
if(StringUtils.isBlank(token)){
if (StringUtils.isBlank(token)) {
token = request.getParameter("Token");
}
}
return courseService.selectCourse(page, limit, classifyId, title,null,1,bannerId,sort,token,isPrice,
null, over,wxCourse,dyCourse,wxShow,dyShow);
return courseService.selectCourse(page, limit, classifyId, title, null, 1, bannerId, sort, token, isPrice,
null, over, wxCourse, dyCourse, wxShow, dyShow);
}
@GetMapping("/selectCourseDetailsById")
@ApiOperation("根据id查询短剧详情")
public Result selectCourseDetailsById(Long id,String token,String courseDetailsId){
return courseDetailsService.selectCourseDetailsById(id,token,courseDetailsId);
public Result selectCourseDetailsById(Long id, String token, String courseDetailsId) {
return courseDetailsService.selectCourseDetailsById(id, token, courseDetailsId);
}
@GetMapping("/selectCourseDetailsList")
@ApiOperation("查询推荐视频")
public Result selectCourseDetailsList(Integer page,Integer limit,String token,String randomNum,Integer wxShow,Integer dyShow){
return courseDetailsService.selectCourseDetailsList(page, limit, token,randomNum,wxShow,dyShow);
public Result selectCourseDetailsList(Integer page, Integer limit, String token, String randomNum, Integer wxShow, Integer dyShow) {
return courseDetailsService.selectCourseDetailsList(page, limit, token, randomNum, wxShow, dyShow);
}
@Login
@GetMapping("/selectCourseTitle")
@ApiOperation("模糊根据短剧标题查询短剧")
public Result selectCourseTitle(@ApiParam("") Integer page, @ApiParam("") Integer limit, @ApiParam("分类id") Long classifyId,
@ApiParam("搜索内容") String title,Long bannerId,Integer sort,String token, Integer isPrice,Integer over,
Integer wxCourse,Integer dyCourse,Integer wxShow,Integer dyShow) {
return courseService.selectCourse(page, limit, classifyId, title,null,1,bannerId,sort,token,isPrice,
null, over,wxCourse,dyCourse,wxShow,dyShow);
@ApiParam("搜索内容") String title, Long bannerId, Integer sort, String token, Integer isPrice, Integer over,
Integer wxCourse, Integer dyCourse, Integer wxShow, Integer dyShow) {
return courseService.selectCourse(page, limit, classifyId, title, null, 1, bannerId, sort, token, isPrice,
null, over, wxCourse, dyCourse, wxShow, dyShow);
}
@GetMapping("/selectCourseTitles")
@ApiOperation("模糊根据短剧标题查询短剧")
public Result selectCourseTitles(@ApiParam("") Integer page, @ApiParam("") Integer limit, @ApiParam("分类id") Long classifyId,
@ApiParam("搜索内容") String title,Long bannerId,Integer sort,String token, Integer isPrice,Integer over,
Integer wxCourse,Integer dyCourse,Integer wxShow,Integer dyShow) {
return courseService.selectCourse(page, limit, classifyId, title,null,1,bannerId,sort,token,isPrice,
null, over,wxCourse,dyCourse,wxShow,dyShow);
@ApiParam("搜索内容") String title, Long bannerId, Integer sort, String token, Integer isPrice, Integer over,
Integer wxCourse, Integer dyCourse, Integer wxShow, Integer dyShow) {
return courseService.selectCourse(page, limit, classifyId, title, null, 1, bannerId, sort, token, isPrice,
null, over, wxCourse, dyCourse, wxShow, dyShow);
}
@Login
@PostMapping("/courseNotify")
@ApiOperation("看广告解锁视频")
public Result courseNotify(@RequestAttribute Long userId, Long courseId, Long courseDetailsId){
public Result courseNotify(@RequestAttribute Long userId, Long courseId, Long courseDetailsId) {
return courseService.courseNotify(userId, courseId, courseDetailsId);
}
@PostMapping("/notifyUrl")
@ApiOperation("抖音视频回调")
public JSONObject notifyUrl(@RequestBody JSONObject jsonObject){
public JSONObject notifyUrl(@RequestBody JSONObject jsonObject) {
return courseService.notifyUrl(jsonObject);
}
@PostMapping("/selectWxVideoUrl")
@ApiOperation("查询微信短剧播放链接")
public Result selectWxVideoUrl(@RequestBody JSONObject jsonObject){
public Result selectWxVideoUrl(@RequestBody JSONObject jsonObject) {
String wxCourseDetailsIds = jsonObject.getString("wxCourseDetailsIds");
return courseService.selectWxVideoUrl(wxCourseDetailsIds);
}
@Login
@GetMapping("/viewCourse")
@ApiOperation("查看短剧")
public Result viewCourse(@RequestAttribute Long userId,
@ApiParam("短剧id") Long courseId,
@ApiParam("剧集id") Long courseDetailsId,
@ApiParam("统计类型start 开始end 结束") String type) {
return courseService.viewCourse(userId, courseId, courseDetailsId, type);
}
}

View File

@ -10,8 +10,8 @@ import java.io.Serializable;
import java.math.BigDecimal;
/**
* @description course_details 短剧目录
* @author fang
* @description course_details 短剧目录
* @date 2021-03-27
*/
@Data
@ -133,6 +133,16 @@ public class CourseDetails implements Serializable {
*/
private Integer advertising;
/**
* 播放量
*/
private Long viewCount;
/**
* 完播量
*/
private Long playCompleteCount;
@TableField(exist = false)
private Integer isCollect;
@ -145,5 +155,6 @@ public class CourseDetails implements Serializable {
@TableField(exist = false)
private String wxUrl;
public CourseDetails() {}
public CourseDetails() {
}
}

View File

@ -59,4 +59,6 @@ public interface CourseService extends IService<Course> {
Result courseListExcelIn(MultipartFile file) throws IOException;
Result viewCourse(Long userId, Long courseId, Long courseDetailsId, String type);
}

View File

@ -212,6 +212,8 @@ public class CourseDetailsServiceImpl extends ServiceImpl<CourseDetailsDao, Cou
CourseDetails courseDetails = new CourseDetails();
courseDetails.setCourseId(courseId);
courseDetails.setCreateTime(DateUtils.format(new Date()));
courseDetails.setViewCount(0L);
courseDetails.setPlayCompleteCount(0L);
BeanUtils.copyProperties(courseDetailsIn, courseDetails);
int result = baseMapper.insert(courseDetails);
if (result > 0) {

View File

@ -89,6 +89,8 @@ public class CourseServiceImpl extends ServiceImpl<CourseDao, Course> implements
CourseDetails courseDetails=new CourseDetails();
courseDetails.setCourseId(course.getCourseId());
courseDetails.setVideoUrl(course.getRemark());
courseDetails.setViewCount(0L);
courseDetails.setPlayCompleteCount(0L);
courseDetailsDao.insert(courseDetails);
}else{
baseMapper.insert(course);
@ -294,6 +296,8 @@ public class CourseServiceImpl extends ServiceImpl<CourseDao, Course> implements
courseDetails.setGoodNum(0);
courseDetails.setPrice(BigDecimal.ZERO);
courseDetails.setIsPrice(2);
courseDetails.setViewCount(0L);
courseDetails.setPlayCompleteCount(0L);
courseDetailsDao.insert(courseDetails);
}else{
CourseDetails courseDetails = courseDetailsDao.selectOne(new QueryWrapper<CourseDetails>().eq("course_details_name", name).last(" limit 1"));
@ -1095,6 +1099,8 @@ public class CourseServiceImpl extends ServiceImpl<CourseDao, Course> implements
courseDetails.setTitleImg(img);
courseDetails.setContent(name);
courseDetails.setGoodNum(goodNum);
courseDetails.setViewCount(0L);
courseDetails.setPlayCompleteCount(0L);
if(i<=freeNum){
courseDetails.setPrice(BigDecimal.ZERO);
courseDetails.setIsPrice(2);
@ -1227,5 +1233,29 @@ public class CourseServiceImpl extends ServiceImpl<CourseDao, Course> implements
}
@Override
public Result viewCourse(Long userId, Long courseId, Long courseDetailsId, String type) {
Course course = baseMapper.selectById(courseId);
if(course==null){
return Result.error("短剧不存在");
}
CourseDetails details = courseDetailsDao.selectById(courseDetailsId);
if(details==null){
return Result.error("短剧集不存在");
}
if ("start".equals(type)) {
//开始播放
details.setViewCount(details.getViewCount() + 1);
courseDetailsDao.updateById(details);
baseMapper.updateById(course);
} else if ("end".equals(type)) {
//播放完成
details.setPlayCompleteCount(details.getPlayCompleteCount() + 1);
courseDetailsDao.updateById(details);
}
return null;
}
}

View File

@ -1,20 +1,17 @@
package com.sqx.modules.discSpinning.controller;
import com.sqx.modules.discSpinning.entity.DiscSpinningRecord;
import com.sqx.modules.discSpinning.service.DiscSpinningRecordService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sqx.common.utils.DateUtils;
import com.sqx.common.utils.Result;
import com.sqx.modules.discSpinning.entity.DiscSpinningRecord;
import com.sqx.modules.discSpinning.service.DiscSpinningRecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
@Slf4j
@RestController
@Api(value = "大转盘抽奖记录", tags = {"大转盘抽奖记录"})
@ -34,8 +31,8 @@ public class DiscSpinningRecordController {
@GetMapping("/selectDiscSpinningRecord")
@ApiOperation("查询大转盘抽奖记录")
public Result selectDiscSpinningRecord(Integer page, Integer limit) {
return Result.success().put("data", discSpinningRecordService.page(new Page<>(page, limit), new QueryWrapper<DiscSpinningRecord>().orderByAsc("create_time")));
public Result selectDiscSpinningRecord(Integer page, Integer limit,@RequestAttribute("userId") Long userId) {
return Result.success().put("data", discSpinningRecordService.page(new Page<>(page, limit), new QueryWrapper<DiscSpinningRecord>().eq("user_id",userId).orderByAsc("create_time")));
}
}

View File

@ -471,11 +471,4 @@ public class CashController {
}
@GetMapping(value = "/withdraw")
@ApiOperation("发起提现 余额 金钱")
public Result withdraw(Long userId,Double amount)
{
return cashOutService.withdraw(userId,amount);
}
}

View File

@ -35,12 +35,18 @@ public class AppCashController {
@Login
@GetMapping(value = "/cashMoney")
@ApiOperation("发起提现")
public Result cashMoney(@RequestAttribute("userId") Long userId, Double money)
{
@ApiOperation("发起提现 余额 金豆")
public Result cashMoney(@RequestAttribute("userId") Long userId, Double money) {
return cashOutService.cashMoney(userId,money);
}
@Login
@GetMapping(value = "/withdraw")
@ApiOperation("发起提现 余额 金钱")
public Result withdraw(@RequestAttribute("userId") Long userId,Double amount) {
return cashOutService.withdraw(userId,amount);
}
@Login
@RequestMapping(value = "/selectUserRechargeByUserId", method = RequestMethod.GET)
@ApiOperation("查询某个用户充值信息列表")

View File

@ -405,6 +405,9 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
return Result.error("请不要输入小于0的数字,请输入正确的提现金额!");
}
UserEntity userInfo = userService.queryByUserId(userId);
if(StringUtils.isBlank(userInfo.getZhiFuBao()) || StringUtils.isBlank(userInfo.getZhiFuBaoName())){
return Result.error(9999,"请先绑定支付宝账号!");
}
//最低提现金额
// CommonInfo one = commonInfoService.findOne(112);
// if(one!=null && money<Double.parseDouble(one.getValue())){

View File

@ -15,7 +15,4 @@ public class Constants {
final static String EXTRACT_URL = BASE_URL + "/api/salary";
final static String EXTRACT_QUERY_URL = BASE_URL + "/api/querySalary";
final static String NOTIFY_URL = "https://video.hnsiyao.cn/sqx_fast/app/wuyou/notify";
final static String EXTRACT_NOTIFY_URL = "https://video.hnsiyao.cn/sqx_fast/app/wuyou/notify";
}

View File

@ -13,15 +13,27 @@ import java.util.Map;
* @author GYJ
*/
public class WuyouPay {
static String NOTIFY_URL = "";
static String EXTRACT_NOTIFY_URL = "";
private static final Logger logger = LoggerFactory.getLogger(WuyouPay.class);
public static void setNotifyUrl(String notifyUrl) {
NOTIFY_URL = notifyUrl;
}
public static void setExtractNotifyUrl(String extractNotifyUrl) {
EXTRACT_NOTIFY_URL = extractNotifyUrl;
}
public static BaseResp payOrder(String orderNo, String amount, String userAgent) {
Map<String, Object> params = getBaseParams();
params.put("type", "6001");
params.put("is_code", "1");
params.put("out_trade_no", orderNo);
params.put("total", amount);
params.put("notify_url", Constants.NOTIFY_URL);
params.put("notify_url", NOTIFY_URL);
String sign = Encrypt.getParamsSign(params);
params.put("sign", sign);
@ -60,7 +72,7 @@ public class WuyouPay {
params.put("bank_branch", "1");
params.put("province", "1");
params.put("city", "1");
params.put("notify_url", Constants.EXTRACT_NOTIFY_URL);
params.put("notify_url", EXTRACT_NOTIFY_URL);
String sign = Encrypt.getParamsSign(params);
params.put("sign", sign);

View File

@ -33,3 +33,7 @@ spring:
config:
multi-statement-allow: true
pay:
orderNotifyUrl: https://video.hnsiyao.cn/sqx_fast/app/wuyou/notify
extractNotifyUrl: https://video.hnsiyao.cn/sqx_fast/app/wuyou/extractNotify

View File

@ -33,3 +33,6 @@ spring:
config:
multi-statement-allow: true
pay:
orderNotifyUrl: https://dj-api.hnsiyao.cn/sqx_fast/app/wuyou/notify
extractNotifyUrl: https://dj-api.hnsiyao.cn/sqx_fast/app/wuyou/extractNotify

View File

@ -30,7 +30,7 @@
c.course_type as courseType,
c.banner_id as bannerId,
b.name as bannerName,
c.view_counts as viewCounts,
(select sum(cd.view_count) from course_details cd where cd.course_id = c.course_id ) as viewCounts,
c.dy_img_id as dyImgId,
c.dy_course_id as dyCourseId,
c.wx_course_id as wxCourseId,
@ -148,7 +148,7 @@
c.course_type as courseType,
c.banner_id as bannerId,
b.name as bannerName,
c.view_counts as viewCounts,
(select sum(cd.view_count) from course_details cd where cd.course_id = c.course_id ) as viewCounts,
c.dy_img_id as dyImgId,
c.dy_course_id as dyCourseId,
c.dy_status as dyStatus,
@ -278,4 +278,4 @@
order by create_time desc
</select>
</mapper>
</mapper>

View File

@ -23,7 +23,7 @@
<select id="findByCourseIdNotUrl" resultType="com.sqx.modules.course.entity.CourseDetails">
select c.course_details_id as courseDetailsId,c.course_id as courseId,c.wx_course_details_id as wxCourseDetailsId,
c.course_details_name as courseDetailsName,c.create_time as createTime,
c.dy_episode_id as dyEpisodeId,c.advertising,
c.dy_episode_id as dyEpisodeId,c.advertising, c.view_count as viewCount, c.play_complete_count as playCompleteCount,
(select count(*) from course_collect cc where cc.user_id=#{userId} and cc.course_details_id=c.course_details_id and cc.classify=2) as isGood,
c.title_img as titleImg,c.content,c.good_num as goodNum,c.price,if(is_price!=1,c.video_url,'') as videoUrl
from course_details c
@ -60,4 +60,4 @@
order by SUBSTR(uid, #{randomNum}, 6)
</select>
</mapper>
</mapper>