first commit
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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("积分数量不足!");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user