记得上下班打卡 | git大法好,push需谨慎

Commit 66f61300 authored by jiangxiulong's avatar jiangxiulong

Merge remote-tracking branch 'origin/dev_stone' into dev_stone

parents f3b69670 60b0cc2f
...@@ -7,8 +7,8 @@ public class StoneConstant { ...@@ -7,8 +7,8 @@ public class StoneConstant {
public static final String USER=CTX.concat("user:"); public static final String USER=CTX.concat("user:");
//item //item
public static final String ITEM=CTX.concat("item:"); public static final String ITEM=CTX.concat("item:");
//itemList 积分商品列表 //logsList 积分日志列表
public static final String ITEM_LIST=ITEM.concat("list"); public static final String LOGS_LIST=ITEM.concat("logs:list:");
//剩余库存 //剩余库存
public static final String SURPLUS_GENERAL = "surplusGeneral"; public static final String SURPLUS_GENERAL = "surplusGeneral";
......
...@@ -2,7 +2,10 @@ package com.liquidnet.service.stone.service; ...@@ -2,7 +2,10 @@ package com.liquidnet.service.stone.service;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.stone.entity.StoneScoreItems;
import com.liquidnet.service.stone.vo.StoneItemListVo; import com.liquidnet.service.stone.vo.StoneItemListVo;
import com.liquidnet.service.stone.vo.StoneScoreItemVo;
import java.util.List; import java.util.List;
...@@ -18,4 +21,6 @@ public interface IStoneScoreItemsService { ...@@ -18,4 +21,6 @@ public interface IStoneScoreItemsService {
PageInfo<List<StoneItemListVo>> itemList(Integer page, Integer size); PageInfo<List<StoneItemListVo>> itemList(Integer page, Integer size);
ResponseDto<StoneScoreItemVo> itemDetails(String itemId);
} }
package com.liquidnet.service.stone.service; package com.liquidnet.service.stone.service;
import com.github.pagehelper.PageInfo;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.stone.entity.StoneScoreLogs;
import com.liquidnet.service.stone.vo.StoneLogsListVo;
import com.liquidnet.service.stone.vo.StoneUserVo;
import java.util.List;
/** /**
* <p> * <p>
* 积分日志表 服务类 * 积分日志表 服务类
...@@ -10,4 +18,55 @@ package com.liquidnet.service.stone.service; ...@@ -10,4 +18,55 @@ package com.liquidnet.service.stone.service;
*/ */
public interface IStoneScoreLogsService { public interface IStoneScoreLogsService {
/**
* 减少积分
*
* @param uid 用户ID
* @param score 变更积分 正数
* @param taskId [2111-admin访问]
* @param content 变更原因
* @return
*/
String deScore(String uid, Integer score, Integer taskId, String content);
/**
* 增加积分
*
* @param uid 用户ID
* @param score 变更积分 正数
* @param taskId [2111-admin访问]
* @param content 变更原因
* @return
*/
String inScore(String uid, Integer score, Integer taskId, String content);
/**
* 做任务
*
* @param taskId [
* taskId 0 每日任务:签到
* taskId 1 每日任务:购买演出
* taskId 2 每日任务:购买商品
* taskId 3 每日任务:划卡
* taskId 4 一次性任务:关注公众号
* taskId 5 一次性任务:完善信息
* taskId 6 一次性任务:完善头像
* taskId 7 一次性任务:打开消息推送
* taskId 8 一次性任务:体验在场
* ]
* @return
*/
ResponseDto<String> doTask(Integer taskId);
ResponseDto<StoneUserVo> taskDetail();
/**
* 积分详情
* @param page
* @return
*/
PageInfo<List<StoneLogsListVo>> logList(Integer page);
} }
package com.liquidnet.service.stone.vo;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.stone.entity.StoneScoreItems;
import com.liquidnet.service.stone.entity.StoneScoreLogs;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@ApiModel
public class StoneLogsListVo implements Serializable, Cloneable {
/**
* id
*/
@ApiModelProperty(value = "id", example = "1")
private String logsId;
/**
* 积分物品封面图
*/
@ApiModelProperty(value = "积分物品封面图", example = "http://xxxxx.png")
private Integer score;
/**
* 积分物品名称
*/
@ApiModelProperty(value = "积分物品名称", example = "测试券")
private String content;
/**
* 目标类型[1-券|1x-商品维度|2x-演出维度]
*/
@ApiModelProperty(value = "目标类型[1-券|1x-商品维度|2x-演出维度]", example = "1")
private String createdAt;
private static final StoneLogsListVo obj = new StoneLogsListVo();
public static StoneLogsListVo getNew() {
try {
return (StoneLogsListVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new StoneLogsListVo();
}
}
public StoneLogsListVo copy(StoneScoreLogs source) {
if (null == source) return this;
this.setLogsId(source.getLogsId());
this.setScore(source.getScore().intValue());
this.setContent(source.getContent());
this.setCreatedAt(DateUtil.Formatter.yyyyMMddHHmmss.format(source.getCreatedAt()));
return this;
}
}
package com.liquidnet.service.stone.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.stone.entity.StoneScoreItems;
import com.liquidnet.service.stone.entity.StoneScoreLogs;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* <p>
* 积分物品表
* </p>
*
* @author liquidnet
* @since 2021-10-19
*/
@Data
@ApiModel
public class StoneScoreItemVo implements Serializable, Cloneable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(position = 0, value = "积分物品id")
private String itemId;
@ApiModelProperty(position = 1, value = "积分物品名称")
private String targetTitle;
@ApiModelProperty(position = 2, value = "目标类型[1-券|1x-商品维度|2x-演出维度]")
private Integer type;
@ApiModelProperty(position = 3, value = "展示图")
private String img;
@ApiModelProperty(position = 4, value = "所需积分")
private Integer score;
@ApiModelProperty(position = 5, value = "所需金额")
private BigDecimal price;
@ApiModelProperty(position = 6, value = "限购数量[0-不限]")
private Integer limitCount;
@ApiModelProperty(position = 7, value = "商品详情")
private String details;
@ApiModelProperty(position = 8, value = "注意事项")
private String notice;
@ApiModelProperty(position = 9, value = "状态[-999-全部|-1-删除|0-未上架|1-已上架|2-定时上架|7-已下架|8-售罄]")
private Integer status;
private static final StoneScoreItemVo obj = new StoneScoreItemVo();
public static StoneScoreItemVo getNew() {
try {
return (StoneScoreItemVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new StoneScoreItemVo();
}
}
public StoneScoreItemVo copy(StoneScoreItems source) {
if (null == source) return this;
this.setItemId(source.getItemId());
this.setTargetTitle(source.getTargetTitle());
this.setType(source.getType());
this.setImg(source.getImg());
this.setScore(source.getScore().intValue());
this.setPrice(source.getPrice());
this.setLimitCount(source.getLimitCount());
this.setDetails(source.getDetails());
this.setNotice(source.getNotice());
this.setStatus(source.getStatus());
return this;
}
}
...@@ -5,8 +5,11 @@ import com.liquidnet.client.admin.common.annotation.Log; ...@@ -5,8 +5,11 @@ import com.liquidnet.client.admin.common.annotation.Log;
import com.liquidnet.client.admin.common.core.controller.BaseController; import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.AjaxResult; import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.core.page.TableDataInfo; import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.utils.poi.ExcelUtil;
import com.liquidnet.client.admin.zhengzai.kylin.dto.OrderExportVo;
import com.liquidnet.client.admin.zhengzai.stone.service.IItemService; import com.liquidnet.client.admin.zhengzai.stone.service.IItemService;
import com.liquidnet.client.admin.zhengzai.stone.service.IScoreService; import com.liquidnet.client.admin.zhengzai.stone.service.IScoreService;
import com.liquidnet.client.admin.zhengzai.stone.service.dto.StoneScoreListExportDto;
import com.liquidnet.client.admin.zhengzai.stone.service.vo.StoneUserScoreDetailVo; import com.liquidnet.client.admin.zhengzai.stone.service.vo.StoneUserScoreDetailVo;
import com.liquidnet.service.stone.dto.StoneScoreListDto; import com.liquidnet.service.stone.dto.StoneScoreListDto;
import com.liquidnet.service.stone.entity.StoneScoreItems; import com.liquidnet.service.stone.entity.StoneScoreItems;
...@@ -22,6 +25,10 @@ import org.springframework.stereotype.Controller; ...@@ -22,6 +25,10 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@Api(tags = "积分明细") @Api(tags = "积分明细")
@Controller @Controller
@RequestMapping("stone/logs") @RequestMapping("stone/logs")
...@@ -32,19 +39,19 @@ public class StoneLogsController extends BaseController { ...@@ -32,19 +39,19 @@ public class StoneLogsController extends BaseController {
private IScoreService iScoreService; private IScoreService iScoreService;
@GetMapping("integralStore") @GetMapping("integralStore")
@ApiOperation(value = "积分明细:列表View",position = 0) @ApiOperation(value = "积分明细:列表View", position = 0)
public String integralStore(ModelMap mmap) { public String integralStore(ModelMap mmap) {
return prefix + "/integralList"; return prefix + "/integralList";
} }
@GetMapping("integralStoreEdit") @GetMapping("integralStoreEdit")
@ApiOperation(value = "积分明细:详情View",position = 1) @ApiOperation(value = "积分明细:详情View", position = 1)
public String integralStoreEdit (ModelMap mmap) { public String integralStoreEdit(ModelMap mmap) {
return prefix + "/integralDetail"; return prefix + "/integralDetail";
} }
@Log(title = "积分明细:列表") @Log(title = "积分明细:列表")
@ApiOperation(value = "积分明细:列表",position = 2) @ApiOperation(value = "积分明细:列表", position = 2)
@PostMapping("list") @PostMapping("list")
@ResponseBody @ResponseBody
public TableDataInfo list(StoneScoreListParam listParam) { public TableDataInfo list(StoneScoreListParam listParam) {
...@@ -58,7 +65,7 @@ public class StoneLogsController extends BaseController { ...@@ -58,7 +65,7 @@ public class StoneLogsController extends BaseController {
@Log(title = "积分明细:修改状态") @Log(title = "积分明细:修改状态")
@PutMapping("change/status") @PutMapping("change/status")
@ApiOperation(value = "积分明细:修改状态",position = 3) @ApiOperation(value = "积分明细:修改状态", position = 3)
@ResponseBody @ResponseBody
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "uid", value = "用户id"), @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "uid", value = "用户id"),
...@@ -71,7 +78,7 @@ public class StoneLogsController extends BaseController { ...@@ -71,7 +78,7 @@ public class StoneLogsController extends BaseController {
@Log(title = "积分明细:详情") @Log(title = "积分明细:详情")
@GetMapping("details") @GetMapping("details")
@ApiOperation(value = "积分明细:详情",position = 4) @ApiOperation(value = "积分明细:详情", position = 4)
@ResponseBody @ResponseBody
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "uid", value = "用户id"), @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "uid", value = "用户id"),
...@@ -80,4 +87,13 @@ public class StoneLogsController extends BaseController { ...@@ -80,4 +87,13 @@ public class StoneLogsController extends BaseController {
StoneUserScoreDetailVo result = iScoreService.userScoreDetail(uid); StoneUserScoreDetailVo result = iScoreService.userScoreDetail(uid);
return AjaxResult.success(result); return AjaxResult.success(result);
} }
@Log(title = "积分明细:导出列表[根据uid]")
@PostMapping("list/export")
@ResponseBody
public AjaxResult export(String uidString) {
List<StoneScoreListExportDto> list = iScoreService.listExport(uidString.split(","));
ExcelUtil<StoneScoreListExportDto> util = new ExcelUtil(StoneScoreListExportDto.class);
return util.exportExcel(list, "积分导出");
}
} }
package com.liquidnet.client.admin.zhengzai.stone.service; package com.liquidnet.client.admin.zhengzai.stone.service;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.client.admin.zhengzai.stone.service.dto.StoneScoreListExportDto;
import com.liquidnet.client.admin.zhengzai.stone.service.vo.StoneUserScoreDetailVo; import com.liquidnet.client.admin.zhengzai.stone.service.vo.StoneUserScoreDetailVo;
import com.liquidnet.service.stone.dto.StoneScoreListDto; import com.liquidnet.service.stone.dto.StoneScoreListDto;
import com.liquidnet.service.stone.param.StoneScoreListParam; import com.liquidnet.service.stone.param.StoneScoreListParam;
import java.util.ArrayList;
import java.util.List;
public interface IScoreService { public interface IScoreService {
PageInfo<StoneScoreListDto> list(StoneScoreListParam param); PageInfo<StoneScoreListDto> list(StoneScoreListParam param);
List<StoneScoreListExportDto> listExport(String[] uidList);
/** /**
* 修改 用户积分状态 * 修改 用户积分状态
*
* @param uid 用户ID * @param uid 用户ID
* @param status 状态[-999-全部|1-正常|2-冻结] * @param status 状态[-999-全部|1-正常|2-冻结]
* @return * @return
...@@ -19,6 +26,7 @@ public interface IScoreService { ...@@ -19,6 +26,7 @@ public interface IScoreService {
/** /**
* 获取 用户积分 详情 * 获取 用户积分 详情
*
* @param uid 用户ID * @param uid 用户ID
* @return * @return
*/ */
......
package com.liquidnet.client.admin.zhengzai.stone.service.dto;
import com.liquidnet.client.admin.common.annotation.Excel;
import com.liquidnet.client.admin.zhengzai.kylin.dto.OrderExportVo;
import com.liquidnet.service.kylin.dao.OrderExportDao;
import com.liquidnet.service.stone.dto.StoneScoreListDto;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class StoneScoreListExportDto implements Cloneable {
/**
* 昵称
*/
@Excel(name = "昵称", cellType = Excel.ColumnType.STRING)
private String nickName;
/**
* 头像
*/
@Excel(name = "头像", cellType = Excel.ColumnType.STRING)
private String avatar;
/**
* 手机号
*/
@Excel(name = "手机号", cellType = Excel.ColumnType.STRING)
private String mobile;
/**
* 用户id
*/
@Excel(name = "用户id", cellType = Excel.ColumnType.STRING)
private String uid;
/**
* 状态[-999-全部|1-正常|2-冻结]
*/
@Excel(name = "状态[-999-全部|1-正常|2-冻结]", cellType = Excel.ColumnType.NUMERIC)
private Integer status;
/**
* 总积分
*/
@Excel(name = "总积分", cellType = Excel.ColumnType.NUMERIC)
private BigDecimal scoreAll;
/**
* 已用积分
*/
@Excel(name = "已用积分", cellType = Excel.ColumnType.NUMERIC)
private BigDecimal scoreUse;
/**
* 剩余积分
*/
@Excel(name = "剩余积分", cellType = Excel.ColumnType.NUMERIC)
private BigDecimal scoreRest;
/**
* 今日是否签到
*/
@Excel(name = "今日是否签到", cellType = Excel.ColumnType.NUMERIC)
private Integer signIn;
private static final StoneScoreListExportDto obj = new StoneScoreListExportDto();
public static StoneScoreListExportDto getNew() {
try {
return (StoneScoreListExportDto) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new StoneScoreListExportDto();
}
public StoneScoreListExportDto copyExportVo(StoneScoreListDto source) {
this.setAvatar(source.getAvatar());
this.setMobile(source.getMobile());
this.setNickName(source.getNickName());
this.setScoreAll(source.getScoreAll());
this.setScoreRest(source.getScoreRest());
this.setScoreUse(source.getScoreUse());
this.setSignIn(source.getSignIn());
this.setUid(source.getUid());
this.setStatus(source.getStatus());
return this;
}
}
...@@ -2,11 +2,14 @@ package com.liquidnet.client.admin.zhengzai.stone.service.impl; ...@@ -2,11 +2,14 @@ package com.liquidnet.client.admin.zhengzai.stone.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.client.admin.zhengzai.kylin.dto.OrderExportVo;
import com.liquidnet.client.admin.zhengzai.stone.service.IScoreService; import com.liquidnet.client.admin.zhengzai.stone.service.IScoreService;
import com.liquidnet.client.admin.zhengzai.stone.service.dto.StoneScoreListExportDto;
import com.liquidnet.client.admin.zhengzai.stone.service.utils.StoneMongoUtils; import com.liquidnet.client.admin.zhengzai.stone.service.utils.StoneMongoUtils;
import com.liquidnet.client.admin.zhengzai.stone.service.utils.StoneRedisUtils; import com.liquidnet.client.admin.zhengzai.stone.service.utils.StoneRedisUtils;
import com.liquidnet.client.admin.zhengzai.stone.service.vo.StoneUserScoreDetailVo; import com.liquidnet.client.admin.zhengzai.stone.service.vo.StoneUserScoreDetailVo;
import com.liquidnet.commons.lang.util.IDGenerator; import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.kylin.dao.OrderExportDao;
import com.liquidnet.service.stone.dto.StoneScoreListDto; import com.liquidnet.service.stone.dto.StoneScoreListDto;
import com.liquidnet.service.stone.entity.StoneScoreLogs; import com.liquidnet.service.stone.entity.StoneScoreLogs;
import com.liquidnet.service.stone.entity.StoneScoreUser; import com.liquidnet.service.stone.entity.StoneScoreUser;
...@@ -19,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -19,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -44,6 +48,16 @@ public class ScoreServiceImpl implements IScoreService { ...@@ -44,6 +48,16 @@ public class ScoreServiceImpl implements IScoreService {
return pageInfo; return pageInfo;
} }
@Override
public List<StoneScoreListExportDto> listExport(String[] uidList) {
List<StoneScoreListDto> list = stoneScoreUserMapper.listExport(uidList);
List<StoneScoreListExportDto> voList = new ArrayList();
for (StoneScoreListDto item :list){
voList.add(StoneScoreListExportDto.getNew().copyExportVo(item));
}
return voList;
}
@Override @Override
public String changeStatus(String uid, Integer status) { public String changeStatus(String uid, Integer status) {
if (!(status == 1 || status == 2)) { if (!(status == 1 || status == 2)) {
...@@ -64,7 +78,7 @@ public class ScoreServiceImpl implements IScoreService { ...@@ -64,7 +78,7 @@ public class ScoreServiceImpl implements IScoreService {
data.setUpdatedAt(LocalDateTime.now()); data.setUpdatedAt(LocalDateTime.now());
count = stoneScoreUserMapper.update(data, Wrappers.lambdaQuery(StoneScoreUser.class).eq(StoneScoreUser::getUid, uid)); count = stoneScoreUserMapper.update(data, Wrappers.lambdaQuery(StoneScoreUser.class).eq(StoneScoreUser::getUid, uid));
//redis //redis
redisUtils.setUserData(data.getUid(), vo); redisUtils.setUserData(uid, vo);
//mongo //mongo
mongoUtils.userUpdateByUid(vo); mongoUtils.userUpdateByUid(vo);
} else { } else {
...@@ -73,7 +87,7 @@ public class ScoreServiceImpl implements IScoreService { ...@@ -73,7 +87,7 @@ public class ScoreServiceImpl implements IScoreService {
data.setCreatedAt(LocalDateTime.now()); data.setCreatedAt(LocalDateTime.now());
count = stoneScoreUserMapper.insert(data); count = stoneScoreUserMapper.insert(data);
//redis //redis
redisUtils.setUserData(data.getUid(), vo); redisUtils.setUserData(uid, vo);
//mongo //mongo
mongoUtils.userCreate(vo); mongoUtils.userCreate(vo);
} }
......
...@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.io.Serializable; import java.io.Serializable;
import com.liquidnet.service.stone.dto.StoneScoreListDto;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
...@@ -18,7 +20,7 @@ import lombok.EqualsAndHashCode; ...@@ -18,7 +20,7 @@ import lombok.EqualsAndHashCode;
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class StoneScoreLogs implements Serializable { public class StoneScoreLogs implements Serializable ,Cloneable{
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -56,5 +58,13 @@ public class StoneScoreLogs implements Serializable { ...@@ -56,5 +58,13 @@ public class StoneScoreLogs implements Serializable {
private String comment; private String comment;
private static final StoneScoreLogs obj = new StoneScoreLogs();
public static StoneScoreLogs getNew() {
try {
return (StoneScoreLogs) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new StoneScoreLogs();
}
} }
...@@ -4,6 +4,7 @@ import com.liquidnet.service.stone.dto.StoneScoreListDto; ...@@ -4,6 +4,7 @@ import com.liquidnet.service.stone.dto.StoneScoreListDto;
import com.liquidnet.service.stone.param.StoneScoreListParam; import com.liquidnet.service.stone.param.StoneScoreListParam;
import com.liquidnet.service.stone.entity.StoneScoreUser; import com.liquidnet.service.stone.entity.StoneScoreUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
...@@ -19,4 +20,6 @@ public interface StoneScoreUserMapper extends BaseMapper<StoneScoreUser> { ...@@ -19,4 +20,6 @@ public interface StoneScoreUserMapper extends BaseMapper<StoneScoreUser> {
List<StoneScoreListDto> list(StoneScoreListParam param); List<StoneScoreListDto> list(StoneScoreListParam param);
List<StoneScoreListDto> listExport(@Param("uids")String[] uids);
} }
...@@ -38,6 +38,11 @@ public class StoneTaskVo implements Serializable,Cloneable { ...@@ -38,6 +38,11 @@ public class StoneTaskVo implements Serializable,Cloneable {
*/ */
private String taskTime; private String taskTime;
/**
* 是否完成
*/
private Integer isFinish;
private static final StoneTaskVo obj = new StoneTaskVo(); private static final StoneTaskVo obj = new StoneTaskVo();
public static StoneTaskVo getNew() { public static StoneTaskVo getNew() {
try { try {
......
...@@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode; ...@@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
...@@ -30,10 +31,10 @@ public class StoneUserVo implements Serializable, Cloneable { ...@@ -30,10 +31,10 @@ public class StoneUserVo implements Serializable, Cloneable {
private Integer status; private Integer status;
/** /**
* 每日任务:签到
* 每日任务:购买演出 * 每日任务:购买演出
* 每日任务:购买商品 * 每日任务:购买商品
* 每日任务:划卡 * 每日任务:划卡
* 每日任务:签到
* 一次性任务:关注公众号 * 一次性任务:关注公众号
* 一次性任务:完善信息 * 一次性任务:完善信息
* 一次性任务:完善头像 * 一次性任务:完善头像
...@@ -50,6 +51,7 @@ public class StoneUserVo implements Serializable, Cloneable { ...@@ -50,6 +51,7 @@ public class StoneUserVo implements Serializable, Cloneable {
} }
private List<StoneTaskVo> initTask() { private List<StoneTaskVo> initTask() {
task = new ArrayList();
String[] taskName = new String[]{ String[] taskName = new String[]{
"签到", "购买演出票务", "购买商品", "在场划卡10次", "签到", "购买演出票务", "购买商品", "在场划卡10次",
"关注摩登天空服务号", "完善个人信息", "完善个人照片", "打开消息通知", "首次体验在场" "关注摩登天空服务号", "完善个人信息", "完善个人照片", "打开消息通知", "首次体验在场"
...@@ -64,7 +66,8 @@ public class StoneUserVo implements Serializable, Cloneable { ...@@ -64,7 +66,8 @@ public class StoneUserVo implements Serializable, Cloneable {
vo.setTaskType(1); vo.setTaskType(1);
} }
vo.setTaskCount(0); vo.setTaskCount(0);
vo.setTaskTime(""); vo.setTaskTime("2020-12-01");
vo.setIsFinish(0);
task.add(vo); task.add(vo);
} }
return task; return task;
......
...@@ -39,4 +39,29 @@ ...@@ -39,4 +39,29 @@
left join stone_score_logs sslog on sslog.uid = hu.uid left join stone_score_logs sslog on sslog.uid = hu.uid
group by hu.uid; group by hu.uid;
</select> </select>
<select id="listExport" parameterType="java.util.Map" resultMap="StoneScoreListDtoResult">
select hu.*,
(case when score <![CDATA[>]]> 0 then sum(score) else 0 END) as 'score_all',
(case when score <![CDATA[<]]> 0 then sum(score) else 0 END) as 'score_use',
('score_all' - 'score_use') as 'score_rest'
from (select nickname,
mobile,
au.uid,
IFNULL(ssu.status,1) as 'status'
from adam_user as au
inner join adam_user_info aui on au.uid = aui.uid
left join stone_score_user ssu on ssu.uid = aui.uid
<where>
au.uid IN
<foreach collection="uids" item="uid" index="index" open="(" close=")" separator=",">
'${uid}'
</foreach>
</where>
) as hu
left join stone_score_logs sslog on sslog.uid = hu.uid
group by hu.uid;
</select>
</mapper> </mapper>
...@@ -4,6 +4,7 @@ import com.github.pagehelper.PageInfo; ...@@ -4,6 +4,7 @@ import com.github.pagehelper.PageInfo;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.stone.service.IStoneScoreItemsService; import com.liquidnet.service.stone.service.IStoneScoreItemsService;
import com.liquidnet.service.stone.vo.StoneItemListVo; import com.liquidnet.service.stone.vo.StoneItemListVo;
import com.liquidnet.service.stone.vo.StoneScoreItemVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponse;
...@@ -29,4 +30,12 @@ public class StoneItemController { ...@@ -29,4 +30,12 @@ public class StoneItemController {
public ResponseDto<PageInfo<List<StoneItemListVo>>> itemList(@RequestParam("page") @Valid Integer page) { public ResponseDto<PageInfo<List<StoneItemListVo>>> itemList(@RequestParam("page") @Valid Integer page) {
return ResponseDto.success(stoneScoreItemsService.itemList(page, 40)); return ResponseDto.success(stoneScoreItemsService.itemList(page, 40));
} }
@GetMapping("details")
@ApiOperation("积分商品详情")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<StoneScoreItemVo> itemDetails(@RequestParam("itemId") @Valid String itemId) {
return stoneScoreItemsService.itemDetails(itemId);
}
} }
package com.liquidnet.service.stone.controller; package com.liquidnet.service.stone.controller;
import com.github.pagehelper.PageInfo;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.stone.vo.StoneItemListVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.List;
@Api(tags = "积分-订单相关") @Api(tags = "积分-订单相关")
@RestController @RestController
@RequestMapping("order") @RequestMapping("order")
@Validated @Validated
public class StoneOrderController { public class StoneOrderController {
@PostMapping("pre")
@ApiOperation("纯积分商品下单")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<String> order(@RequestParam("itemId") @Valid String itemId,
@RequestParam("number") @Valid Integer number) {
return ResponseDto.success();
}
@GetMapping("list")
@ApiOperation("积分订单列表")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<PageInfo<List<StoneItemListVo>>> orderList(@RequestParam("page") @Valid Integer page) {
return ResponseDto.success();
}
} }
package com.liquidnet.service.stone.controller; package com.liquidnet.service.stone.controller;
import com.github.pagehelper.PageInfo;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.stone.dto.StoneScoreListDto; import com.liquidnet.service.stone.dto.StoneScoreListDto;
import com.liquidnet.service.stone.service.IStoneScoreLogsService;
import com.liquidnet.service.stone.service.IStoneScoreUserService; import com.liquidnet.service.stone.service.IStoneScoreUserService;
import io.swagger.annotations.Api; import com.liquidnet.service.stone.vo.StoneLogsListVo;
import io.swagger.annotations.ApiOperation; import com.liquidnet.service.stone.vo.StoneUserVo;
import io.swagger.annotations.ApiResponse; import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.List;
@Api(tags = "积分-用户相关") @Api(tags = "积分-用户相关")
...@@ -21,12 +23,68 @@ public class StoneUserController { ...@@ -21,12 +23,68 @@ public class StoneUserController {
@Autowired @Autowired
IStoneScoreUserService stoneScoreUserService; IStoneScoreUserService stoneScoreUserService;
@Autowired
IStoneScoreLogsService stoneScoreLogsService;
@GetMapping("info") @GetMapping("info")
@ApiOperation("积分商品列表") @ApiOperation("用户信息")
@ApiResponse(code = 200, message = "接口返回对象参数") @ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<StoneScoreListDto> stoneUserInfo() { public ResponseDto<StoneScoreListDto> stoneUserInfo() {
return ResponseDto.success(stoneScoreUserService.stoneUserInfo()); return ResponseDto.success(stoneScoreUserService.stoneUserInfo());
} }
@PostMapping("doTask")
@ApiOperation("做任务")
@ApiResponse(code = 200, message = "接口返回对象参数")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "Integer", name = "taskId", value = "任务ID[0-每日任务|1-每日任务:购买演出|2-每日任务:购买商品|3-每日任务:划卡|4-一次性任务:关注公众号|5-一次性任务:完善信息|6-一次性任务:完善头像|7-一次性任务:打开消息推送|8-一次性任务:体验在场]", example = ""),
})
public ResponseDto<String> doTask(@RequestParam(value = "taskId", required = true) Integer taskId) {
return stoneScoreLogsService.doTask(taskId);
}
@GetMapping("logs/list")
@ApiOperation("积分详情列表")
@ApiResponse(code = 200, message = "接口返回对象参数")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "Integer", name = "page", value = "页数", example = ""),
})
public ResponseDto<PageInfo<List<StoneLogsListVo>>> logList(@RequestParam(value = "page", required = true) Integer page) {
return ResponseDto.success(stoneScoreLogsService.logList(page));
}
@PostMapping("logs/in2111")
@ApiOperation("增加积分")
@ApiResponse(code = 200, message = "接口返回对象参数")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "uid", value = "用户Id", example = ""),
@ApiImplicitParam(type = "form", required = true, dataType = "Integer", name = "score", value = "积分", example = ""),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "content", value = "内容", example = ""),
})
public ResponseDto<String> inScore(@RequestParam(value = "uid", required = true) String uid,
@RequestParam(value = "score", required = true) Integer score,
@RequestParam(value = "content", required = true) String content) {
return ResponseDto.success(stoneScoreLogsService.inScore(uid,score,2111,content));
}
@PostMapping("logs/de2111")
@ApiOperation("减少积分")
@ApiResponse(code = 200, message = "接口返回对象参数")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "uid", value = "用户Id", example = ""),
@ApiImplicitParam(type = "form", required = true, dataType = "Integer", name = "score", value = "积分", example = ""),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "content", value = "内容", example = ""),
})
public ResponseDto<String> deScore(@RequestParam(value = "uid", required = true) String uid,
@RequestParam(value = "score", required = true) Integer score,
@RequestParam(value = "content", required = true) String content) {
return ResponseDto.success(stoneScoreLogsService.deScore(uid,score,2111,content));
}
@GetMapping("task/detail")
@ApiOperation("用户任务详情")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<StoneUserVo> taskDetail() {
return stoneScoreLogsService.taskDetail();
}
} }
package com.liquidnet.service.stone.service.impl; package com.liquidnet.service.stone.service.impl;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.UserPathDto; import com.liquidnet.service.base.UserPathDto;
import com.liquidnet.service.stone.entity.StoneScoreItems; import com.liquidnet.service.stone.entity.StoneScoreItems;
import com.liquidnet.service.stone.service.IStoneScoreItemsService; import com.liquidnet.service.stone.service.IStoneScoreItemsService;
...@@ -8,6 +9,7 @@ import com.liquidnet.service.stone.util.ObjectUtils; ...@@ -8,6 +9,7 @@ import com.liquidnet.service.stone.util.ObjectUtils;
import com.liquidnet.service.stone.util.StoneMongoUtils; import com.liquidnet.service.stone.util.StoneMongoUtils;
import com.liquidnet.service.stone.util.StoneRedisUtils; import com.liquidnet.service.stone.util.StoneRedisUtils;
import com.liquidnet.service.stone.vo.StoneItemListVo; import com.liquidnet.service.stone.vo.StoneItemListVo;
import com.liquidnet.service.stone.vo.StoneScoreItemVo;
import io.netty.util.internal.ObjectUtil; import io.netty.util.internal.ObjectUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -66,4 +68,14 @@ public class StoneScoreItemsServiceImpl implements IStoneScoreItemsService { ...@@ -66,4 +68,14 @@ public class StoneScoreItemsServiceImpl implements IStoneScoreItemsService {
log.info(UserPathDto.setData("积分商品列表", "", voList)); log.info(UserPathDto.setData("积分商品列表", "", voList));
return mPageInfo; return mPageInfo;
} }
@Override
public ResponseDto<StoneScoreItemVo> itemDetails(String itemId) {
StoneScoreItems data = redisUtils.getItemData(itemId);
if(redisUtils.getStoneGeneralSurplus(itemId)<=0){
data.setStatus(8);
}
StoneScoreItemVo vo = StoneScoreItemVo.getNew().copy(data);
return ResponseDto.success(vo);
}
} }
package com.liquidnet.service.stone.service.impl; package com.liquidnet.service.stone.service.impl;
import com.github.pagehelper.PageInfo;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.UserPathDto;
import com.liquidnet.service.stone.entity.StoneScoreItems;
import com.liquidnet.service.stone.entity.StoneScoreLogs;
import com.liquidnet.service.stone.service.IStoneScoreLogsService; import com.liquidnet.service.stone.service.IStoneScoreLogsService;
import com.liquidnet.service.stone.util.ObjectUtils;
import com.liquidnet.service.stone.util.StoneMongoUtils;
import com.liquidnet.service.stone.util.StoneRedisUtils;
import com.liquidnet.service.stone.vo.StoneItemListVo;
import com.liquidnet.service.stone.vo.StoneLogsListVo;
import com.liquidnet.service.stone.vo.StoneTaskVo;
import com.liquidnet.service.stone.vo.StoneUserVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/** /**
* <p> * <p>
* 积分日志表 服务实现类 * 积分日志表 服务实现类
...@@ -12,6 +35,171 @@ import org.springframework.stereotype.Service; ...@@ -12,6 +35,171 @@ import org.springframework.stereotype.Service;
* @since 2021-10-19 * @since 2021-10-19
*/ */
@Service @Service
@Slf4j
public class StoneScoreLogsServiceImpl implements IStoneScoreLogsService { public class StoneScoreLogsServiceImpl implements IStoneScoreLogsService {
@Autowired
StoneRedisUtils stoneRedisUtils;
@Autowired
StoneMongoUtils stoneMongoUtils;
@Override
public String deScore(String uid, Integer score, Integer TaskId, String reason) {
if (score <= 0) {
return "积分不能小于0";
}
if (TaskId == 2111) {
changeUse(uid, score, reason, reason);
return "成功";
} else {
changeUse(uid, score, "", reason);
return "成功";
}
}
@Override
public String inScore(String uid, Integer score, Integer TaskId, String reason) {
if (score <= 0) {
return "积分不能小于0";
}
if (TaskId == 2111) {
changeRest(uid, score, reason, reason);
return "成功";
} else {
changeRest(uid, score, "", reason);
return "成功";
}
}
@Override
public ResponseDto<String> doTask(Integer taskId) {
String uid = CurrentUtil.getCurrentUid();
StoneUserVo vo = stoneRedisUtils.getUserData(uid);
List<StoneTaskVo> taskList = vo.getTask();
boolean isIn = false; //标示是否操作
for (int i = 0; i < taskList.size(); i++) {
StoneTaskVo item = taskList.get(i);
//判断任务
if (item.getTaskId().equals(taskId)) {
if (item.getTaskType().equals(1) && item.getTaskTime().equals(DateUtil.getNowTime(DateUtil.DATE_SMALL_STR))) {
return ResponseDto.failure("今日已完成");
} else if (item.getTaskType().equals(2) && item.getTaskCount() >= 1) {
return ResponseDto.failure("该任务已完成");
} else {
//记录完成任务
if (taskId == 0) { //每日签到
if (DateUtil.intervalDays(DateUtil.parse(item.getTaskTime(), "yyyy-MM-dd"),
DateUtil.parse(DateUtil.getNowTime(), "yyyy-MM-dd")
) == 1L) {//连续签到
if (item.getTaskCount() >= 7) {
item.setTaskCount(1);
} else {
item.setTaskCount(item.getTaskCount() + 1);
}
} else {//非连续签到
item.setTaskCount(1);
}
} else {//其他
item.setTaskCount(1);
}
item.setTaskTime(DateUtil.getNowTime(DateUtil.DATE_SMALL_STR));
taskList.set(i, item);
vo.setTask(taskList);
stoneMongoUtils.userUpdateByUid(vo);
//添加积分
inScore(uid, taskId, taskId, item.getTaskName());
isIn = true;
break;
}
}
}
return isIn ? ResponseDto.success("成功") : ResponseDto.failure("任务不存在");
}
@Override
public ResponseDto<StoneUserVo> taskDetail() {
String uid = CurrentUtil.getCurrentUid();
StoneUserVo vo = stoneRedisUtils.getUserData(uid);
List<StoneTaskVo> taskList = vo.getTask();
for (int i = 0; i < taskList.size(); i++) {
StoneTaskVo item = taskList.get(i);
if (item.getTaskType().equals(1) && item.getTaskTime().equals(DateUtil.getNowTime(DateUtil.DATE_SMALL_STR))) {
item.setIsFinish(1);
} else if (item.getTaskType().equals(2) && item.getTaskCount() >= 1) {
item.setIsFinish(1);
} else {
item.setIsFinish(0);
}
taskList.set(i, item);
}
vo.setTask(taskList);
return ResponseDto.success(vo);
}
@Override
public PageInfo<List<StoneLogsListVo>> logList(Integer page) {
String uid = CurrentUtil.getCurrentUid();
PageInfo<List<StoneLogsListVo>> mPageInfo;
int size = 40;
if (page == null || page == 1 || page == 0) {
page = 1;
}
List<StoneScoreLogs> voList;
long count;
if (page == 1) {
voList = stoneRedisUtils.getLogsList(uid);
count = voList.size();
} else {
HashMap<String, Object> info = stoneMongoUtils.itemListPage(page, size);
try {
voList = (List<StoneScoreLogs>) info.get("total");
count = (long) info.get("data");
} catch (Exception e) {
voList = new ArrayList();
count = 0;
}
}
List<StoneLogsListVo> returnVoList = ObjectUtils.getStoneLogsListVoArrayList();
for (int i = 0; i < voList.size(); i++) {
StoneScoreLogs vo = voList.get(i);
StoneLogsListVo returnVo = StoneLogsListVo.getNew().copy(vo);
returnVoList.add(returnVo);
}
mPageInfo = new PageInfo(returnVoList);
mPageInfo.setTotal(count);
log.info(UserPathDto.setData("积分日志列表", "", voList));
return mPageInfo;
}
private void changeRest(String uid, Integer score, String reason, String content) {
//redis
stoneRedisUtils.changeUserScoreRest(uid, score);
//mongo
StoneScoreLogs logs = new StoneScoreLogs();
logs.setLogsId(IDGenerator.nextTimeId2());
logs.setContent(content);
logs.setReason(reason);
logs.setUid(uid);
logs.setScore(BigDecimal.valueOf(score));
logs.setCreatedAt(LocalDateTime.now());
stoneMongoUtils.logCreate(logs);
//TODO mysql
}
private void changeUse(String uid, Integer score, String reason, String content) {
//redis
stoneRedisUtils.changeUserScoreUse(uid, -score);
stoneRedisUtils.changeUserScoreRest(uid, -score);
//mongo
StoneScoreLogs logs = new StoneScoreLogs();
logs.setLogsId(IDGenerator.nextTimeId2());
logs.setContent(content);
logs.setReason(reason);
logs.setUid(uid);
logs.setScore(BigDecimal.valueOf(score));
logs.setCreatedAt(LocalDateTime.now());
stoneMongoUtils.logCreate(logs);
//TODO mysql
}
} }
package com.liquidnet.service.stone.util; package com.liquidnet.service.stone.util;
import com.liquidnet.service.stone.vo.StoneItemListVo; import com.liquidnet.service.stone.vo.StoneItemListVo;
import com.liquidnet.service.stone.vo.StoneLogsListVo;
import java.util.ArrayList; import java.util.ArrayList;
public class ObjectUtils { public class ObjectUtils {
private static final ArrayList<StoneItemListVo> stoneItemListVoArrayList = new ArrayList<>(); private static final ArrayList<StoneItemListVo> stoneItemListVoArrayList = new ArrayList<>();
private static final ArrayList<StoneLogsListVo> stoneLogsListVoArrayList = new ArrayList<>();
public static ArrayList<StoneItemListVo> getStoneItemListVoArrayList() { public static ArrayList<StoneItemListVo> getStoneItemListVoArrayList() {
return (ArrayList<StoneItemListVo>) stoneItemListVoArrayList.clone(); return (ArrayList<StoneItemListVo>) stoneItemListVoArrayList.clone();
} }
public static ArrayList<StoneLogsListVo> getStoneLogsListVoArrayList() {
return (ArrayList<StoneLogsListVo>) stoneLogsListVoArrayList.clone();
}
} }
...@@ -3,6 +3,7 @@ package com.liquidnet.service.stone.util; ...@@ -3,6 +3,7 @@ package com.liquidnet.service.stone.util;
import com.liquidnet.commons.lang.util.CollectionUtil; import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.stone.entity.StoneScoreItems; import com.liquidnet.service.stone.entity.StoneScoreItems;
import com.liquidnet.service.stone.entity.StoneScoreLogs;
import com.liquidnet.service.stone.vo.StoneUserVo; import com.liquidnet.service.stone.vo.StoneUserVo;
import com.mongodb.client.result.UpdateResult; import com.mongodb.client.result.UpdateResult;
import org.bson.Document; import org.bson.Document;
...@@ -38,18 +39,18 @@ public class StoneMongoUtils { ...@@ -38,18 +39,18 @@ public class StoneMongoUtils {
StoneScoreItems.class, StoneScoreItems.class.getSimpleName()); StoneScoreItems.class, StoneScoreItems.class.getSimpleName());
} }
/** // /**
* 根据积分物品id修改 // * 根据积分物品id修改
* // *
* @param data // * @param data
* @return // * @return
*/ // */
public Object itemUpdateById(StoneScoreItems data) { // public Object itemUpdateById(StoneScoreItems data) {
Query query = Query.query(Criteria.where("itemId").is(data.getItemId())); // Query query = Query.query(Criteria.where("itemId").is(data.getItemId()));
Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(data))); // Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(data)));
UpdateResult result = mongoTemplate.updateFirst(query, update, StoneScoreItems.class, StoneScoreItems.class.getSimpleName()); // UpdateResult result = mongoTemplate.updateFirst(query, update, StoneScoreItems.class, StoneScoreItems.class.getSimpleName());
return result; // return result;
} // }
// /** // /**
// * 查询 积分物品 列表 // * 查询 积分物品 列表
...@@ -107,4 +108,37 @@ public class StoneMongoUtils { ...@@ -107,4 +108,37 @@ public class StoneMongoUtils {
return result; return result;
} }
/**
* 创建 用户积分日志
*
* @param data
* @return
*/
public Object logCreate(StoneScoreLogs data) {
return mongoTemplate.insert(data, StoneScoreLogs.class.getSimpleName());
}
/**
* 获取 用户积分日志 列表
* @param uid
* @param page
* @param size
* @return
*/
public HashMap<String, Object> logList(String uid,int page, int size) {
LocalDateTime now = LocalDateTime.now();
HashMap<String, Object> info = CollectionUtil.mapStringObject();
// 排序 分页
Pageable pageable = PageRequest.of(page - 1, size, Sort.by(Sort.Direction.DESC, "createdAt"));
//条件
Query query = Query.query(Criteria.where("uid").is(uid));
// 查询总数
long count = mongoTemplate.count(query, StoneScoreLogs.class, StoneScoreLogs.class.getSimpleName());
query.with(pageable);
List<StoneScoreLogs> voList = mongoTemplate.find(query, StoneScoreLogs.class, StoneScoreLogs.class.getSimpleName());
info.put("total", count);
info.put("data", voList);
return info;
}
} }
...@@ -3,6 +3,7 @@ package com.liquidnet.service.stone.util; ...@@ -3,6 +3,7 @@ package com.liquidnet.service.stone.util;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.stone.constant.StoneConstant; import com.liquidnet.service.stone.constant.StoneConstant;
import com.liquidnet.service.stone.entity.StoneScoreItems; import com.liquidnet.service.stone.entity.StoneScoreItems;
import com.liquidnet.service.stone.entity.StoneScoreLogs;
import com.liquidnet.service.stone.vo.StoneUserVo; import com.liquidnet.service.stone.vo.StoneUserVo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -83,6 +84,40 @@ public class StoneRedisUtils { ...@@ -83,6 +84,40 @@ public class StoneRedisUtils {
} }
} }
/**
* 修改 用户积分 使用
*
* @param uid ID
* @return
*/
public Integer changeUserScoreUse(String uid, Integer general) {
String redisKey = StoneConstant.USE_SCORE.concat(uid).concat(StoneConstant.USE_SCORE);
long result;
if (general > 0) {
result = redisUtil.incr(redisKey, general);
} else {
result = redisUtil.decr(redisKey, Math.abs(general));
}
return (int) result;
}
/**
* 修改 用户积分 剩余
*
* @param uid ID
* @return
*/
public Integer changeUserScoreRest(String uid, Integer general) {
String redisKey = StoneConstant.USE_SCORE.concat(uid).concat(StoneConstant.SURPLUS_SCORE);
long result;
if (general > 0) {
result = redisUtil.incr(redisKey, general);
} else {
result = redisUtil.decr(redisKey, Math.abs(general));
}
return (int) result;
}
/** /**
* 设置 积分物品 缓存 * 设置 积分物品 缓存
* *
...@@ -134,45 +169,45 @@ public class StoneRedisUtils { ...@@ -134,45 +169,45 @@ public class StoneRedisUtils {
// redisUtil.set(redisKey, dataList); // redisUtil.set(redisKey, dataList);
// } // }
// /** /**
// * 添加 积分物品 缓存list * 添加 积分日志 缓存list
// * *
// * @param data * @param data
// */ */
// public void addItemDataList(StoneScoreItems data) { public void addLogsList(String uid,StoneScoreLogs data) {
// String redisKey = StoneConstant.ITEM_LIST; String redisKey = StoneConstant.LOGS_LIST.concat(uid);
// Object obj = redisUtil.get(redisKey); Object obj = redisUtil.get(redisKey);
// List<StoneScoreItems> dataList; List<StoneScoreLogs> dataList;
// if (obj == null) { if (obj == null) {
// dataList = mongoUtils.itemList(); dataList = (List<StoneScoreLogs>) mongoUtils.logList(uid,1,40).get("data");
// } else { } else {
// dataList = (List<StoneScoreItems>) obj; dataList = (List<StoneScoreLogs>) obj;
// } }
// dataList.add(0, data); dataList.add(0, data);
// if (dataList.size() > 40) { if (dataList.size() > 40) {
// int size = dataList.size() - 40; int size = dataList.size() - 40;
// for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
// dataList.remove(40); dataList.remove(40);
// } }
// } }
// redisUtil.set(redisKey, dataList); redisUtil.set(redisKey, dataList);
// } }
// /** /**
// * 设置 积分物品 缓存list * 获取 积分日志 缓存list
// */ */
// public List<StoneScoreItems> getItemDataList() { public List<StoneScoreLogs> getLogsList(String uid) {
// String redisKey = StoneConstant.ITEM_LIST; String redisKey = StoneConstant.LOGS_LIST.concat(uid);
// Object obj = redisUtil.get(redisKey); Object obj = redisUtil.get(redisKey);
// if (obj == null) { if (obj == null) {
// return mongoUtils.itemList(); return (List<StoneScoreLogs>) mongoUtils.logList(uid,1,40).get("data");
// } else { } else {
// return (List<StoneScoreItems>) obj; return (List<StoneScoreLogs>) obj;
// } }
// } }
/** /**
* 设置 用户积分 缓存 * 设置 用户任务 缓存
* *
* @param uid * @param uid
* @param data * @param data
...@@ -183,7 +218,7 @@ public class StoneRedisUtils { ...@@ -183,7 +218,7 @@ public class StoneRedisUtils {
} }
/** /**
* 获取 用户积分 缓存 * 获取 用户任务 缓存
* *
* @param uid * @param uid
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment