first commit

This commit is contained in:
GYJ
2024-12-02 10:29:28 +08:00
commit 03cd33b658
485 changed files with 63600 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
package com.sqx.modules.integral.controller;
import com.sqx.common.utils.DateUtils;
import com.sqx.common.utils.Result;
import com.sqx.modules.integral.entity.UserIntegralDetails;
import com.sqx.modules.integral.service.UserIntegralDetailsService;
import com.sqx.modules.integral.service.UserIntegralService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
@RestController
@Api(value = "用户积分", tags = {"用户积分"})
@RequestMapping(value = "/integral")
public class UserIntegralController {
@Autowired
private UserIntegralService userIntegralService;
@Autowired
private UserIntegralDetailsService userIntegralDetailsService;
@RequestMapping(value = "/selectByUserId", method = RequestMethod.GET)
@ApiOperation("查看用户积分")
@ResponseBody
public Result selectByUserId(Long userId) {
return Result.success().put("data", userIntegralService.selectById(userId));
}
@RequestMapping(value = "/details", method = RequestMethod.GET)
@ApiOperation("查看用户积分详细列表信息")
@ResponseBody
public Result selectUserIntegralDetailsByUserId(int page, int limit,Long userId) {
return Result.success().put("data", userIntegralDetailsService.selectUserIntegralDetailsByUserId(page, limit, userId));
}
@PostMapping("/updateUserIntegral")
@ApiOperation("修改积分")
public Result updateUserIntegral(Long userId, Integer integral,Integer type) {
userIntegralService.updateIntegral(type,userId,integral);
UserIntegralDetails userIntegralDetails = new UserIntegralDetails();
userIntegralDetails.setClassify(2);
if(type==1){
userIntegralDetails.setContent("系统增加积分:"+integral);
}else{
userIntegralDetails.setContent("系统减少积分:"+integral);
}
userIntegralDetails.setCreateTime(DateUtils.format(new Date()));
userIntegralDetails.setNum(integral);
userIntegralDetails.setType(type);
userIntegralDetails.setUserId(userId);
userIntegralDetailsService.save(userIntegralDetails);
return Result.success();
}
}

View File

@@ -0,0 +1,62 @@
package com.sqx.modules.integral.controller.app;
import com.sqx.common.utils.Result;
import com.sqx.modules.app.annotation.Login;
import com.sqx.modules.integral.service.UserIntegralDetailsService;
import com.sqx.modules.integral.service.UserIntegralService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@Api(value = "用户积分", tags = {"用户积分"})
@RequestMapping(value = "/app/integral")
public class AppUserIntegralController {
@Autowired
private UserIntegralService userIntegralService;
@Autowired
private UserIntegralDetailsService userIntegralDetailsService;
@Login
@RequestMapping(value = "/selectByUserId", method = RequestMethod.GET)
@ApiOperation("查看用户积分")
@ResponseBody
public Result selectByUserId(@RequestAttribute Long userId) {
return Result.success().put("data", userIntegralService.selectById(userId));
}
@Login
@RequestMapping(value = "/details", method = RequestMethod.GET)
@ApiOperation("查看用户积分详细列表信息")
@ResponseBody
public Result selectUserIntegralDetailsByUserId(int page, int limit, @RequestAttribute Long userId) {
return Result.success().put("data", userIntegralDetailsService.selectUserIntegralDetailsByUserId(page, limit, userId));
}
@Login
@RequestMapping(value = "/signIn", method = RequestMethod.GET)
@ApiOperation("签到")
@ResponseBody
public Result signIn(@RequestAttribute Long userId) {
return userIntegralDetailsService.signIn(userId);
}
@Login
@RequestMapping(value = "/selectIntegralDay", method = RequestMethod.GET)
@ApiOperation("获取签到记录")
@ResponseBody
public Result selectIntegralDay(@RequestAttribute Long userId) {
return userIntegralDetailsService.selectIntegralDay(userId);
}
@Login
@RequestMapping(value = "/creditsExchange", method = RequestMethod.POST)
@ApiOperation("积分兑换")
@ResponseBody
public Result creditsExchange(@RequestAttribute Long userId,Integer integral) {
return userIntegralDetailsService.creditsExchange(userId,integral);
}
}

View File

@@ -0,0 +1,13 @@
package com.sqx.modules.integral.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sqx.modules.integral.entity.UserIntegral;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface UserIntegralDao extends BaseMapper<UserIntegral> {
int updateIntegral(@Param("type") int type, @Param("userId") Long userId, @Param("num") Integer num);
}

View File

@@ -0,0 +1,14 @@
package com.sqx.modules.integral.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sqx.modules.integral.entity.UserIntegralDetails;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
@Mapper
public interface UserIntegralDetailsDao extends BaseMapper<UserIntegralDetails> {
UserIntegralDetails selectUserIntegralDetailsByUserId(@Param("userId") Long userId, @Param("time") Date time);
}

View File

@@ -0,0 +1,23 @@
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 lombok.Data;
@Data
@TableName("user_integral")
public class UserIntegral {
/**
* 用户id
*/
@TableId(type = IdType.INPUT)
private Long userId;
/**
* 积分数量
*/
private Integer integralNum;
}

View File

@@ -0,0 +1,52 @@
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 lombok.Data;
@Data
@TableName("user_integral_details")
public class UserIntegralDetails {
/**
* 积分详情id
*/
@TableId(type = IdType.INPUT)
private Long id;
/**
* 内容
*/
private String content;
/**
* 获取类型 1签到
*/
private Integer classify;
/**
* 分类 1增加 2减少
*/
private Integer type;
/**
* 数量
*/
private Integer num;
/**
* 连续第几天
*/
private Integer day;
/**
* 用户id
*/
private Long userId;
/**
* 创建时间
*/
private String createTime;
}

View File

@@ -0,0 +1,139 @@
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.sqx.common.utils.Result;
import com.sqx.modules.app.entity.UserMoneyDetails;
import com.sqx.modules.app.service.UserMoneyDetailsService;
import com.sqx.modules.app.service.UserMoneyService;
import com.sqx.modules.common.entity.CommonInfo;
import com.sqx.modules.common.service.CommonInfoService;
import com.sqx.modules.integral.dao.UserIntegralDetailsDao;
import com.sqx.modules.integral.entity.UserIntegral;
import com.sqx.modules.integral.entity.UserIntegralDetails;
import com.sqx.modules.integral.service.UserIntegralDetailsService;
import com.sqx.modules.integral.service.UserIntegralService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Service
public class UserIntegralDetailsServiceImpl extends ServiceImpl<UserIntegralDetailsDao, UserIntegralDetails> implements UserIntegralDetailsService {
@Autowired
private UserIntegralDetailsDao userIntegralDetailsDao;
@Autowired
private UserIntegralService userIntegralService;
@Autowired
private CommonInfoService commonInfoService;
@Autowired
private UserMoneyService userMoneyService;
@Autowired
private UserMoneyDetailsService userMoneyDetailsService;
@Override
public IPage selectUserIntegralDetailsByUserId(int page, int limit, Long userId) {
IPage<UserIntegralDetails> page1 = userIntegralDetailsDao.selectPage(new Page<>(page, limit), new QueryWrapper<UserIntegralDetails>().eq(userId != null, "user_id", userId).orderByDesc("create_time"));
return page1;
}
@Override
public Result signIn(Long userId){
//先判断今天是否签过到
UserIntegralDetails userIntegralDetails1 = userIntegralDetailsDao.selectUserIntegralDetailsByUserId(userId, new Date());
if(userIntegralDetails1!=null){
return Result.error("今天已经签到过了,请明天再来吧!");
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
userIntegralService.selectById(userId);
//每周初始积分
CommonInfo one = commonInfoService.findOne(102);
//累计签到叠加积分
CommonInfo two = commonInfoService.findOne(103);
Calendar cal=Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, -1);
//获取当前日期时第几天 第一天则重新开始计时
int num=0;
int day=1;
UserIntegralDetails userIntegralDetails2 = userIntegralDetailsDao.selectUserIntegralDetailsByUserId(userId, cal.getTime());
if(userIntegralDetails2==null){
num=Integer.parseInt(one.getValue());
}else{
if(userIntegralDetails2.getDay()==7){
num=Integer.parseInt(one.getValue());
}else{
num=userIntegralDetails2.getNum()+Integer.parseInt(two.getValue());
day=userIntegralDetails2.getDay()+1;
}
}
userIntegralService.updateIntegral(1,userId,num);
UserIntegralDetails userIntegralDetails=new UserIntegralDetails();
userIntegralDetails.setClassify(1);
userIntegralDetails.setContent("签到获得:"+num+"积分");
userIntegralDetails.setCreateTime(sdf.format(new Date()));
userIntegralDetails.setNum(num);
userIntegralDetails.setType(1);
userIntegralDetails.setUserId(userId);
userIntegralDetails.setDay(day);
userIntegralDetailsDao.insert(userIntegralDetails);
return Result.success("签到成功,获得"+num+"积分");
}
@Override
public Result selectIntegralDay(Long userId){
Calendar cal=Calendar.getInstance();
UserIntegralDetails nowIntegral = userIntegralDetailsDao.selectUserIntegralDetailsByUserId(userId, cal.getTime());
cal.add(Calendar.DAY_OF_MONTH, -1);
UserIntegralDetails yesterdayIntegral = userIntegralDetailsDao.selectUserIntegralDetailsByUserId(userId, cal.getTime());
Map<String,Object> result=new HashMap<>();
result.put("nowIntegral",nowIntegral);
result.put("yesterdayIntegral",yesterdayIntegral);
return Result.success().put("data",result);
}
@Override
public Result creditsExchange(Long userId,Integer integral){
UserIntegral userIntegral = userIntegralService.selectById(userId);
CommonInfo one = commonInfoService.findOne(104);
if(userIntegral.getIntegralNum()>=integral){
BigDecimal money = BigDecimal.valueOf(integral).divide(new BigDecimal(one.getValue())).setScale(2,BigDecimal.ROUND_DOWN);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
userIntegralService.updateIntegral(2,userId,integral);
UserIntegralDetails userIntegralDetails=new UserIntegralDetails();
userIntegralDetails.setClassify(0);
userIntegralDetails.setContent("积分兑换金豆,消耗积分:"+integral+",兑换金豆:"+money);
userIntegralDetails.setCreateTime(sdf.format(new Date()));
userIntegralDetails.setNum(integral);
userIntegralDetails.setType(2);
userIntegralDetails.setUserId(userId);
userIntegralDetailsDao.insert(userIntegralDetails);
double v = Double.parseDouble(String.valueOf(money));
userMoneyService.updateMoney(1,userId,v);
UserMoneyDetails userMoneyDetails=new UserMoneyDetails();
userMoneyDetails.setUserId(userId);
userMoneyDetails.setTitle("[积分]积分兑换");
userMoneyDetails.setContent("增加金豆:"+money);
userMoneyDetails.setType(1);
userMoneyDetails.setClassify(1);
userMoneyDetails.setMoney(BigDecimal.valueOf(v));
userMoneyDetails.setCreateTime(sdf.format(new Date()));
userMoneyDetailsService.save(userMoneyDetails);
return Result.success("积分兑换成功!");
}else{
return Result.error("积分数量不足!");
}
}
}

View File

@@ -0,0 +1,39 @@
package com.sqx.modules.integral.service.Impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sqx.modules.integral.dao.UserIntegralDao;
import com.sqx.modules.integral.entity.UserIntegral;
import com.sqx.modules.integral.service.UserIntegralService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.concurrent.locks.ReentrantReadWriteLock;
@Service
public class UserIntegralServiceImpl extends ServiceImpl<UserIntegralDao, UserIntegral> implements UserIntegralService {
@Autowired
private UserIntegralDao userIntegralDao;
private static ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock();
@Override
public UserIntegral selectById(Long id) {
UserIntegral userIntegral = userIntegralDao.selectById(id);
if (userIntegral == null) {
userIntegral = new UserIntegral();
userIntegral.setUserId(id);
userIntegral.setIntegralNum(0);
userIntegralDao.insert(userIntegral);
}
return userIntegral;
}
@Override
public int updateIntegral(int type, Long userId, Integer num) {
return userIntegralDao.updateIntegral(type,userId,num);
}
}

View File

@@ -0,0 +1,17 @@
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.Result;
import com.sqx.modules.integral.entity.UserIntegralDetails;
public interface UserIntegralDetailsService extends IService<UserIntegralDetails> {
IPage selectUserIntegralDetailsByUserId(int page, int limit, Long userId);
Result signIn(Long userId);
Result selectIntegralDay(Long userId);
Result creditsExchange(Long userId,Integer integral);
}

View File

@@ -0,0 +1,11 @@
package com.sqx.modules.integral.service;
import com.sqx.modules.integral.entity.UserIntegral;
public interface UserIntegralService {
UserIntegral selectById(Long id);
int updateIntegral(int type, Long userId, Integer num);
}