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

Commit 37e75515 authored by 胡佳晨's avatar 胡佳晨

提交 积分物品相关

parent 018be12a
......@@ -42,7 +42,7 @@ create table stone_score_user
mid bigint unsigned auto_increment primary key,
score_id varchar(64) default '' comment 'id',
uid varchar(64) default '' comment '用户id',
status int default 1 comment '状态[0-冻结|1-正常]',
status int default 1 comment '状态[1-正常|2-冻结]',
created_at datetime ,
updated_at datetime ,
comment text
......
package com.liquidnet.service.stone.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
......@@ -7,13 +8,16 @@ public class StoneListParam {
/**
* 名称
*/
@ApiModelProperty(required = false, value = "名称", example = "测试券1")
private String title;
/**
* 状态[-999-全部|1-上架中|2-待上架|7-已下架]
*/
@ApiModelProperty(required = false, value = "状态[-999-全部|1-上架中|2-待上架|7-已下架]", example = "1")
private Integer state;
/**
* 状态[1-券]
*/
@ApiModelProperty(required = false, value = "状态[1-券]", example = "1")
private Integer type;
}
package com.liquidnet.client.admin.web.controller.zhengzai.stone;
import com.github.pagehelper.PageInfo;
import com.liquidnet.client.admin.common.annotation.Log;
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.page.TableDataInfo;
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.vo.StoneUserScoreDetailVo;
import com.liquidnet.service.stone.dto.StoneScoreListDto;
import com.liquidnet.service.stone.entity.StoneScoreItems;
import com.liquidnet.service.stone.param.StoneItemBuildParam;
import com.liquidnet.service.stone.param.StoneListParam;
import com.liquidnet.service.stone.param.StoneScoreListParam;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
@Api(tags = "积分明细")
@Controller
@RequestMapping("stone/logs")
public class StoneLogsController extends BaseController {
private String prefix = "zhengzai/stone";
@Autowired
private IScoreService iScoreService;
@GetMapping("integralStore")
@ApiOperation(value = "积分明细:列表View",position = 0)
public String integralStore(ModelMap mmap) {
return prefix + "/integralList";
}
@GetMapping("integralStoreEdit")
@ApiOperation(value = "积分明细:详情View",position = 1)
public String integralStoreEdit (ModelMap mmap) {
return prefix + "/integralDetail";
}
@Log(title = "积分明细:列表")
@ApiOperation(value = "积分明细:列表",position = 2)
@GetMapping("list")
@ResponseBody
public TableDataInfo list(StoneScoreListParam listParam) {
PageInfo<StoneScoreListDto> result = iScoreService.list(listParam);
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(0);
rspData.setRows(result.getList());
rspData.setTotal(result.getTotal());
return rspData;
}
@Log(title = "积分明细:修改状态")
@PutMapping("change/status")
@ApiOperation(value = "积分明细:修改状态",position = 3)
@ResponseBody
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "uid", value = "用户id"),
@ApiImplicitParam(type = "form", required = true, dataType = "Integer", name = "status", value = "状态[1-正常|2-冻结]"),
})
public AjaxResult status(@RequestParam("uid") String uid, @RequestParam("status") Integer status) {
String result = iScoreService.changeStatus(uid, status);
return AjaxResult.success(result);
}
@Log(title = "积分明细:详情")
@GetMapping("details")
@ApiOperation(value = "积分明细:详情",position = 4)
@ResponseBody
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "uid", value = "用户id"),
})
public AjaxResult details(@RequestParam("uid") String uid) {
StoneUserScoreDetailVo result = iScoreService.userScoreDetail(uid);
return AjaxResult.success(result);
}
}
package com.liquidnet.client.admin.zhengzai.stone.service;
import com.github.pagehelper.PageInfo;
import com.liquidnet.client.admin.zhengzai.stone.service.vo.StoneUserScoreDetailVo;
import com.liquidnet.service.stone.dto.StoneScoreListDto;
import com.liquidnet.service.stone.param.StoneScoreListParam;
public interface IScoreService {
PageInfo<StoneScoreListDto> list(StoneScoreListParam param);
/**
* 修改 用户积分状态
* @param uid 用户ID
* @param status 状态[-999-全部|1-正常|2-冻结]
* @return
*/
String changeStatus(String uid, Integer status);
/**
* 获取 用户积分 详情
* @param uid 用户ID
* @return
*/
StoneUserScoreDetailVo userScoreDetail(String uid);
}
......@@ -97,7 +97,15 @@ public class ItemServiceImpl implements IItemService {
}
StoneScoreItems data = new StoneScoreItems();
data.setStatus(status);
//mysql
int result = stoneScoreItemsMapper.update(data, Wrappers.lambdaQuery(StoneScoreItems.class).eq(StoneScoreItems::getItemId, itemId));
StoneScoreItems redisData = redisUtils.getItemData(data.getItemId());
redisData.setStatus(status);
//redis
redisUtils.setItemData(data.getItemId(), redisData);
//mongo
mongoUtils.itemUpdateById(redisData);
if (result <= 0) {
return "修改失败";
}
......@@ -127,12 +135,12 @@ public class ItemServiceImpl implements IItemService {
data.setItemId(IDGenerator.nextTimeId2());
data.setGeneralSurplus(redisUtils.changeStoneGeneralSurplus(data.getItemId(), generalPoor));
data.setCreatedAt(now);
//mysql
int count = stoneScoreItemsMapper.insert(data);
//redis
redisUtils.setItemData(data.getItemId(), data);
//mongo
mongoUtils.itemCreate(data);
//mysql
int count = stoneScoreItemsMapper.insert(data);
if (count <= 0) {
return "创建失败";
}
......@@ -151,12 +159,12 @@ public class ItemServiceImpl implements IItemService {
data.setItemId(param.getItemId());
data.setGeneralSurplus(redisUtils.changeStoneGeneralSurplus(data.getItemId(), generalPoor));
data.setUpdatedAt(now);
//mysql
int count = stoneScoreItemsMapper.update(data, Wrappers.lambdaQuery(StoneScoreItems.class).eq(StoneScoreItems::getItemId, param.getItemId()));
//redis
redisUtils.setItemData(data.getItemId(), data);
//mongo
mongoUtils.itemUpdateById(data);
//mysql
int count = stoneScoreItemsMapper.update(data, Wrappers.lambdaQuery(StoneScoreItems.class).eq(StoneScoreItems::getItemId, param.getItemId()));
if (count <= 0) {
return "修改失败";
}
......
package com.liquidnet.client.admin.zhengzai.stone.service.impl;
import com.liquidnet.client.admin.zhengzai.stone.service.IItemService;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageInfo;
import com.liquidnet.client.admin.zhengzai.stone.service.IScoreService;
import com.liquidnet.client.admin.zhengzai.stone.service.vo.StoneUserScoreDetailVo;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.stone.dto.StoneScoreListDto;
import com.liquidnet.service.stone.entity.StoneScoreLogs;
import com.liquidnet.service.stone.entity.StoneScoreUser;
import com.liquidnet.service.stone.mapper.StoneScoreLogsMapper;
import com.liquidnet.service.stone.mapper.StoneScoreUserMapper;
import com.liquidnet.service.stone.param.StoneScoreListParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
@Service
@Slf4j
public class ScoreServiceImpl implements IScoreService {
@Autowired
StoneScoreUserMapper stoneScoreUserMapper;
@Autowired
StoneScoreLogsMapper stoneScoreLogsMapper;
@Override
public PageInfo<StoneScoreListDto> list(StoneScoreListParam param) {
PageInfo<StoneScoreListDto> pageInfo;
param.setUid("-999");
List<StoneScoreListDto> dto = stoneScoreUserMapper.list(param);
pageInfo = new PageInfo(dto);
return pageInfo;
}
@Override
public String changeStatus(String uid, Integer status) {
if(!(status==1 || status==2)){
return "状态错误";
}
StoneScoreUser data = new StoneScoreUser();
data.setStatus(status);
int isExists = stoneScoreUserMapper.selectCount(Wrappers.lambdaQuery(StoneScoreUser.class).eq(StoneScoreUser::getUid, uid));
int count = 0;
if (isExists > 0) {
data.setUpdatedAt(LocalDateTime.now());
count = stoneScoreUserMapper.update(data, Wrappers.lambdaQuery(StoneScoreUser.class).eq(StoneScoreUser::getUid, uid));
} else {
data.setScoreId(IDGenerator.nextTimeId2());
data.setUid(uid);
data.setCreatedAt(LocalDateTime.now());
count = stoneScoreUserMapper.insert(data);
}
if (count <= 0) {
return "修改失败";
}
return "修改成功";
}
@Override
public StoneUserScoreDetailVo userScoreDetail(String uid) {
StoneScoreListParam param = new StoneScoreListParam();
param.setMobile("");
param.setStatus(-999);
param.setUid(uid);
List<StoneScoreListDto> dto = stoneScoreUserMapper.list(param);
List<StoneScoreLogs> dataList = stoneScoreLogsMapper.selectList(Wrappers.lambdaQuery(StoneScoreLogs.class).eq(StoneScoreLogs::getUid, uid));
StoneUserScoreDetailVo vo = new StoneUserScoreDetailVo();
vo.setDto(dto.get(0));
vo.setScoreLogs(dataList);
return vo;
}
}
......@@ -52,9 +52,30 @@ public class StoneRedisUtils {
return (int) result;
}
/**
* 设置 积分物品 缓存
*
* @param itemId
* @param data
*/
public void setItemData(String itemId, StoneScoreItems data) {
String redisKey = StoneConstant.ITEM.concat(itemId);
redisUtil.set(redisKey, data);
}
/**
* 获取 积分物品 缓存
*
* @param itemId
*/
public StoneScoreItems getItemData(String itemId) {
String redisKey = StoneConstant.ITEM.concat(itemId);
Object obj = redisUtil.get(redisKey);
if (obj == null) {
return null;
} else {
return (StoneScoreItems) obj;
}
}
}
package com.liquidnet.client.admin.zhengzai.stone.service.vo;
import io.swagger.annotations.ApiModelProperty;
import com.liquidnet.service.stone.dto.StoneScoreListDto;
import com.liquidnet.service.stone.entity.StoneScoreLogs;
import lombok.Data;
import java.util.List;
@Data
public class StoneUserScoreDetailVo {
@ApiModelProperty(required = false, value = "用户积分信息")
public StoneScoreListDto dto;
@ApiModelProperty(required = false, value = "积分详情")
public List<StoneScoreLogs> scoreLogs;
}
package com.liquidnet.service.stone.dto;
//import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class StoneScoreListDto {
/**
* 昵称
*/
// @ApiModelProperty(required = false, value = "昵称", example = "宇航员Marinda")
private String nickName;
/**
* 手机号
*/
// @ApiModelProperty(required = false, value = "手机号", example = "18505123456")
private String mobile;
/**
* 用户id
*/
// @ApiModelProperty(required = false, value = "用户id", example = "310508344264376327445470")
private String uid;
/**
* 状态[-999-全部|1-正常|2-冻结]
*/
// @ApiModelProperty(required = false, value = "状态[-999-全部|1-正常|2-冻结]", example = "1")
private Integer status;
/**
* 总积分
*/
// @ApiModelProperty(required = false, value = "总积分", example = "100.00")
private BigDecimal scoreAll;
/**
* 已用积分
*/
// @ApiModelProperty(required = false, value = "已用积分", example = "50.00")
private BigDecimal scoreUse;
/**
* 剩余积分
*/
// @ApiModelProperty(required = false, value = "剩余积分", example = "50.00")
private BigDecimal scoreRest;
}
......@@ -35,7 +35,7 @@ public class StoneScoreUser implements Serializable {
private String uid;
/**
* 状态[0-冻结|1-正常]
* 状态[1-正常|2-冻结]
*/
private Integer status;
......
package com.liquidnet.service.stone.mapper;
import com.liquidnet.service.stone.dto.StoneScoreListDto;
import com.liquidnet.service.stone.param.StoneScoreListParam;
import com.liquidnet.service.stone.entity.StoneScoreUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
/**
* <p>
* 积分用户表 Mapper 接口
......@@ -13,4 +17,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface StoneScoreUserMapper extends BaseMapper<StoneScoreUser> {
List<StoneScoreListDto> list(StoneScoreListParam param);
}
package com.liquidnet.service.stone.param;
//import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class StoneScoreListParam {
/**
* 手机号
*/
// @ApiModelProperty(required = false, value = "手机号", example = "15901093014")
private String mobile;
/**
* 状态[-999-全部|1-正常|2-冻结]
*/
// @ApiModelProperty(required = false, value = "状态[-999-全部|1-正常|2-冻结]", example = "1")
private Integer status;
/**
* uid
*/
// @ApiModelProperty(required = false, value = "状态[-999-全部|1-正常|2-冻结]", example = "1")
private String uid;
}
......@@ -2,4 +2,41 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.stone.mapper.StoneScoreUserMapper">
<resultMap id="StoneScoreListDtoResult" type="com.liquidnet.service.stone.dto.StoneScoreListDto">
<result column="nickname" property="nickName"/>
<result column="mobile" property="mobile"/>
<result column="uid" property="uid"/>
<result column="status" property="status"/>
<result column="score_all" property="scoreAll"/>
<result column="score_use" property="scoreUse"/>
<result column="score_rest" property="scoreRest"/>
</resultMap>
<select id="list" 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>
<if test="mobile!=''">
AND mobile LIKE concat('%', #{mobile}, '%')
</if>
<if test="status!='-999'">
AND status = #{status} OR status is null
</if>
<if test="uid!='-999'">
AND au.uid = #{uid}
</if>
</where>
) as hu
left join stone_score_logs sslog on sslog.uid = hu.uid
group by hu.uid;
</select>
</mapper>
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