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

Commit b7904d4d authored by 胡佳晨's avatar 胡佳晨

暂时提交

parent ba038a89
...@@ -2,6 +2,7 @@ drop table if exists stone_score_logs; ...@@ -2,6 +2,7 @@ drop table if exists stone_score_logs;
create table stone_score_logs create table stone_score_logs
( (
mid bigint unsigned auto_increment primary key, mid bigint unsigned auto_increment primary key,
logs_id varchar(64) default '' comment 'id',
uid varchar(64) default '' comment '用户id', uid varchar(64) default '' comment '用户id',
score decimal(8, 2) default 0 comment '积分', score decimal(8, 2) default 0 comment '积分',
content varchar(255) default '' comment '积分动态明细', content varchar(255) default '' comment '积分动态明细',
...@@ -15,6 +16,7 @@ drop table if exists stone_score_items; ...@@ -15,6 +16,7 @@ drop table if exists stone_score_items;
create table stone_score_items create table stone_score_items
( (
mid bigint unsigned auto_increment primary key, mid bigint unsigned auto_increment primary key,
item_id varchar(64) default '' comment 'id',
target_id varchar(64) default '' comment '目标id', target_id varchar(64) default '' comment '目标id',
target_title varchar(64) default '' comment '目标名称', target_title varchar(64) default '' comment '目标名称',
type integer default 0 comment '目标类型[1-券|1x-商品维度|2x-演出维度]', type integer default 0 comment '目标类型[1-券|1x-商品维度|2x-演出维度]',
...@@ -38,6 +40,7 @@ drop table if exists stone_score_user; ...@@ -38,6 +40,7 @@ drop table if exists stone_score_user;
create table stone_score_user create table stone_score_user
( (
mid bigint unsigned auto_increment primary key, mid bigint unsigned auto_increment primary key,
score_id varchar(64) default '' comment 'id',
uid varchar(64) default '' comment '用户id', uid varchar(64) default '' comment '用户id',
status int default 1 comment '状态[0-冻结|1-正常]', status int default 1 comment '状态[0-冻结|1-正常]',
created_at datetime , created_at datetime ,
...@@ -49,6 +52,7 @@ drop table if exists stone_score_order; ...@@ -49,6 +52,7 @@ drop table if exists stone_score_order;
create table stone_score_order create table stone_score_order
( (
mid bigint unsigned auto_increment primary key, mid bigint unsigned auto_increment primary key,
order_id varchar(64) default '' comment 'id',
uid varchar(64) default '' comment '用户id', uid varchar(64) default '' comment '用户id',
user_name varchar(255) NOT NULL DEFAULT '' COMMENT '用户昵称', user_name varchar(255) NOT NULL DEFAULT '' COMMENT '用户昵称',
user_mobile varchar(255) NOT NULL DEFAULT '' COMMENT '用户手机号', user_mobile varchar(255) NOT NULL DEFAULT '' COMMENT '用户手机号',
......
package com.liquidnet.service.stone.constant; package com.liquidnet.service.stone.constant;
public class StoneConstant { public class StoneConstant {
//ctx
private static final String CTX="stone:";
//user
public static final String USER=CTX.concat("user:");
//item
public static final String ITEM=CTX.concat("item:");
//剩余库存
public static final String SURPLUS_GENERAL = "surplusGeneral";
//剩余积分
public static final String SURPLUS_SCORE = "surplusScore";
//已用积分
public static final String USE_SCORE = "useScore";
} }
package com.liquidnet.service.stone.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@ApiModel(value = "StoneItemBuildParam", description = "新建积分物品")
@Data
public class StoneItemBuildParam {
@ApiModelProperty(required = false, value = "积分物品id[创建不传]", example = "1")
private String itemId;
@NotBlank(message = "目标物品不能为空")
@ApiModelProperty(required = true, value = "目标物品id", example = "1")
private String targetId;
@NotBlank(message = "目标物品不能为空")
@ApiModelProperty(required = true, value = "目标物品标题", example = "测试券1")
private String targetTitle;
@NotBlank(message = "展示图不能为空")
@ApiModelProperty(required = true, value = "展示图", example = "https://image.baidu.com/search/albumsdetail?tn=albumsdetail&word=%E7%8C%AB&album_tab=%E5%8A%A8%E7%89%A9&album_id=692&rn=30&fr=searchresult&dyTabStr=MCwzLDYsMSw0LDUsOCw3LDIsOQ%3D%3D")
private String img;
@NotBlank(message = "所需积分不能为空")
@ApiModelProperty(required = true, value = "所需积分", example = "10")
private BigDecimal score;
@NotBlank(message = "总库存不能为空")
@ApiModelProperty(required = true, value = "总库存[-999-不限]", example = "100")
private Integer generalTotal;
@NotBlank(message = "限购数量为空")
@ApiModelProperty(required = true, value = "限购数量[0-不限]", example = "1")
private Integer limitCount;
@NotBlank(message = "商品详情不能为空")
@ApiModelProperty(required = true, value = "商品详情", example = "商品详情")
private String details;
@NotBlank(message = "注意事项不能为空")
@ApiModelProperty(required = true, value = "注意事项", example = "注意事项")
private String notice;
@NotBlank(message = "上架状态不能为空")
@ApiModelProperty(required = true, value = "上架状态[1-不限|2-定时|7-下线]", example = "1")
private Integer status;
@ApiModelProperty(required = false, value = "上架时间", example = "2021-10-20 12-52-42")
private LocalDateTime startTime;
@ApiModelProperty(required = false, value = "下架时间", example = "2021-10-21 12-52-42")
private LocalDateTime updatedAt;
}
package com.liquidnet.service.stone.param;
import lombok.Data;
@Data
public class StoneListParam {
/**
* 名称
*/
private String title;
/**
* 状态[-999-全部|1-上架中|2-待上架|7-已下架]
*/
private Integer state;
/**
* 状态[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.page.TableDataInfo;
import com.liquidnet.client.admin.common.enums.BusinessType;
import com.liquidnet.client.admin.zhengzai.stone.service.IItemService;
import com.liquidnet.service.stone.entity.StoneScoreItems;
import com.liquidnet.service.stone.param.StoneListParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("stone/item")
public class StoneItemController extends BaseController {
private String prefix = "zhengzai/stone/item";
@Autowired
private IItemService iItemService;
@Log(title = "积分商品:列表", businessType = BusinessType.LIST)
@PostMapping("list")
@ResponseBody
public TableDataInfo list(StoneListParam listParam) {
PageInfo<StoneScoreItems> result = iItemService.itemList(listParam.getTitle(), listParam.getState(), listParam.getType());
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(0);
rspData.setRows(result.getList());
rspData.setTotal(result.getTotal());
return rspData;
}
}
...@@ -3,19 +3,40 @@ package com.liquidnet.client.admin.zhengzai.stone.service; ...@@ -3,19 +3,40 @@ package com.liquidnet.client.admin.zhengzai.stone.service;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.service.kylin.entity.KylinOrderTicketEntities; import com.liquidnet.service.kylin.entity.KylinOrderTicketEntities;
import com.liquidnet.service.stone.entity.StoneScoreItems; import com.liquidnet.service.stone.entity.StoneScoreItems;
import com.liquidnet.service.stone.param.StoneItemBuildParam;
import java.util.List; import java.util.List;
public interface IItemService { public interface IItemService {
/** /**
* 积分商品列表 * 获取 积分商品 列表
* *
* @param title 名称 * @param title 名称
* @param status 状态[-999-全部|1-上架中|2-待上架|7-已下架] * @param status 状态[-999-全部|1-上架中|2-待上架|7-已下架]
* @param type 类型[1-券] * @param type 类型[1-券]
* @return * @return
*/ */
PageInfo<StoneScoreItems> ItemList(String title, Integer status, Integer type); PageInfo<StoneScoreItems> itemList(String title, Integer status, Integer type);
/**
* 修改 积分物品 状态
*
* @param itemId ID
* @param status 状态[-1-删除|1-上架|7-下架]
* @return
*/
String changeStatus(String itemId, Integer status);
/**
* 获取 积分物品 详情
*
* @param itemId ID
* @return
*/
StoneScoreItems itemDetails(String itemId);
String createItem(StoneItemBuildParam param);
String updateItem(StoneItemBuildParam param);
} }
...@@ -4,14 +4,17 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; ...@@ -4,14 +4,17 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.stone.service.IItemService; import com.liquidnet.client.admin.zhengzai.stone.service.IItemService;
import com.liquidnet.commons.lang.util.DateUtil; import com.liquidnet.client.admin.zhengzai.stone.service.utils.StoneMongoUtils;
import com.liquidnet.service.kylin.dao.PerformanceAdminListDao; import com.liquidnet.client.admin.zhengzai.stone.service.utils.StoneRedisUtils;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.stone.entity.StoneScoreItems; import com.liquidnet.service.stone.entity.StoneScoreItems;
import com.liquidnet.service.stone.mapper.StoneScoreItemsMapper; import com.liquidnet.service.stone.mapper.StoneScoreItemsMapper;
import com.liquidnet.service.stone.param.StoneItemBuildParam;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; 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.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -23,6 +26,10 @@ public class ItemServiceImpl implements IItemService { ...@@ -23,6 +26,10 @@ public class ItemServiceImpl implements IItemService {
@Autowired @Autowired
StoneScoreItemsMapper stoneScoreItemsMapper; StoneScoreItemsMapper stoneScoreItemsMapper;
@Autowired
StoneRedisUtils redisUtils;
@Autowired
StoneMongoUtils mongoUtils;
@Override @Override
/** /**
...@@ -33,7 +40,7 @@ public class ItemServiceImpl implements IItemService { ...@@ -33,7 +40,7 @@ public class ItemServiceImpl implements IItemService {
* @param type 类型[1-券] * @param type 类型[1-券]
* @return * @return
*/ */
public PageInfo<StoneScoreItems> ItemList(String title, Integer status, Integer type) { public PageInfo<StoneScoreItems> itemList(String title, Integer status, Integer type) {
PageInfo<StoneScoreItems> pageInfo; PageInfo<StoneScoreItems> pageInfo;
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
List<StoneScoreItems> newList = new ArrayList(); List<StoneScoreItems> newList = new ArrayList();
...@@ -45,7 +52,7 @@ public class ItemServiceImpl implements IItemService { ...@@ -45,7 +52,7 @@ public class ItemServiceImpl implements IItemService {
if (status == 2) {//待上架 if (status == 2) {//待上架
queryWrapper.eq(StoneScoreItems::getStatus, 2).gt(StoneScoreItems::getStartTime, now); queryWrapper.eq(StoneScoreItems::getStatus, 2).gt(StoneScoreItems::getStartTime, now);
} else if (status == 7) {//已下架 } else if (status == 7) {//已下架
queryWrapper.eq(StoneScoreItems::getStatus, 2).lt(StoneScoreItems::getEndTime, now); queryWrapper.eq(StoneScoreItems::getStatus, 7).or().eq(StoneScoreItems::getStatus, 2).lt(StoneScoreItems::getEndTime, now);
} else if (status == 1) { } else if (status == 1) {
queryWrapper.eq(StoneScoreItems::getStatus, 1).or().lt(StoneScoreItems::getStartTime, now).gt(StoneScoreItems::getEndTime, now); queryWrapper.eq(StoneScoreItems::getStatus, 1).or().lt(StoneScoreItems::getStartTime, now).gt(StoneScoreItems::getEndTime, now);
} }
...@@ -69,4 +76,101 @@ public class ItemServiceImpl implements IItemService { ...@@ -69,4 +76,101 @@ public class ItemServiceImpl implements IItemService {
pageInfo = new PageInfo(newList); pageInfo = new PageInfo(newList);
return pageInfo; return pageInfo;
} }
@Override
/**
* 修改 积分物品 状态
*
* @param itemId ID
* @param status 状态[-1-删除|1-上架|7-下架]
* @return
*/
public String changeStatus(String itemId, Integer status) {
if (status != 1 && status != 7 && status != -1) {
return "状态异常";
}
StoneScoreItems data = new StoneScoreItems();
data.setStatus(status);
int result = stoneScoreItemsMapper.update(data, Wrappers.lambdaQuery(StoneScoreItems.class).eq(StoneScoreItems::getItemId, itemId));
if (result <= 0) {
return "修改失败";
}
return "修改成功";
}
@Override
/**
* 获取 积分物品 详情
*
* @param itemId ID
* @return
*/
public StoneScoreItems itemDetails(String itemId) {
StoneScoreItems data = stoneScoreItemsMapper.selectOne(Wrappers.lambdaQuery(StoneScoreItems.class).eq(StoneScoreItems::getItemId, itemId));
return data;
}
@Override
public String createItem(StoneItemBuildParam param) {
LocalDateTime now = LocalDateTime.now();
StoneScoreItems data = BaseData(param);
int generalPoor = param.getGeneralTotal() - 0;
data.setItemId(IDGenerator.nextTimeId2());
data.setGeneralSurplus(redisUtils.changeStoneGeneralSurplus(param.getItemId(), generalPoor));
data.setCreatedAt(now);
//redis
redisUtils.setItemData(data.getItemId(),data);
//mongo
mongoUtils.itemCreate(data);
//mysql
int count = stoneScoreItemsMapper.insert(data);
if(count <=0){
return "创建失败";
}
return "创建成功";
}
@Override
public String updateItem(StoneItemBuildParam param) {
LocalDateTime now = LocalDateTime.now();
StoneScoreItems data = BaseData(param);
StoneScoreItems dataSingle = stoneScoreItemsMapper.selectOne(Wrappers.lambdaQuery(StoneScoreItems.class).eq(StoneScoreItems::getItemId, param.getItemId()));
int generalPoor = param.getGeneralTotal() - dataSingle.getGeneralTotal();
data.setItemId(param.getItemId());
data.setGeneralSurplus(redisUtils.changeStoneGeneralSurplus(param.getItemId(), generalPoor));
data.setUpdatedAt(now);
//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 "修改失败";
}
return "修改成功";
}
/**
* 构建 基础 积分商品数据
* @param param
* @return
*/
private StoneScoreItems BaseData(StoneItemBuildParam param) {
StoneScoreItems data = new StoneScoreItems();
data.setTargetId(param.getTargetId());
data.setTargetTitle(param.getTargetTitle());
data.setType(1);
data.setImg(param.getImg());
data.setScore(param.getScore());
data.setPrice(BigDecimal.ZERO);
data.setGeneralTotal(param.getGeneralTotal());
data.setLimitCount(param.getLimitCount());
data.setDetails(param.getDetails());
data.setNotice(param.getNotice());
data.setStatus(param.getStatus());
data.setStartTime(param.getStartTime());
data.setEndTime(param.getStartTime());
return data;
}
} }
package com.liquidnet.client.admin.zhengzai.stone.service.utils;
import com.liquidnet.client.admin.zhengzai.kylin.utils.MongoVoUtils;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.stone.constant.StoneConstant;
import com.liquidnet.service.stone.entity.StoneScoreItems;
import com.mongodb.client.result.UpdateResult;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
@Component
public class StoneMongoUtils {
@Autowired
private MongoTemplate mongoTemplate;
/**
* 创建 积分物品
* @param data
* @return
*/
public Object itemCreate(StoneScoreItems data) {
return mongoTemplate.insert(data, StoneScoreItems.class.getSimpleName());
}
/**
* 根据积分物品id修改
* @param data
* @return
*/
public Object itemUpdateById(StoneScoreItems data) {
Query query = Query.query(Criteria.where("itemId").is(data.getItemId()));
Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(data)));
UpdateResult result = mongoTemplate.updateFirst(query, update, StoneScoreItems.class, StoneScoreItems.class.getSimpleName());
return result;
}
}
package com.liquidnet.client.admin.zhengzai.stone.service.utils;
import com.liquidnet.client.admin.zhengzai.kylin.utils.MongoVoUtils;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.stone.constant.StoneConstant;
import com.liquidnet.service.stone.entity.StoneScoreItems;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Component;
@Component
public class StoneRedisUtils {
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
private MongoVoUtils mongoVoUtils;
@Autowired
private RedisUtil redisUtil;
/**
* 获取 积分物品 剩余库存
*
* @param itemId ID
* @return
*/
public Integer getStoneGeneralSurplus(String itemId) {
String redisKey = StoneConstant.ITEM.concat(itemId).concat(StoneConstant.SURPLUS_GENERAL);
Object obj = redisUtil.get(redisKey);
if (obj == null) {
return 0;
} else {
return (Integer) obj;
}
}
/**
* 修改 积分物品 库存
*
* @param itemId ID
* @param general 改变量
* @return
*/
public Integer changeStoneGeneralSurplus(String itemId, Integer general) {
String redisKey = StoneConstant.ITEM.concat(itemId).concat(StoneConstant.SURPLUS_GENERAL);
long result;
if (general > 0) {
result = redisUtil.incr(redisKey, general);
} else {
result = redisUtil.decr(redisKey, Math.abs(general));
}
return (int) result;
}
public void setItemData(String itemId, StoneScoreItems data) {
String redisKey = StoneConstant.ITEM.concat(itemId);
redisUtil.set(redisKey, data);
}
}
...@@ -25,6 +25,11 @@ public class StoneScoreItems implements Serializable { ...@@ -25,6 +25,11 @@ public class StoneScoreItems implements Serializable {
@TableId(value = "mid", type = IdType.AUTO) @TableId(value = "mid", type = IdType.AUTO)
private Long mid; private Long mid;
/**
* id
*/
private String itemId;
/** /**
* 目标id * 目标id
*/ */
...@@ -81,7 +86,7 @@ public class StoneScoreItems implements Serializable { ...@@ -81,7 +86,7 @@ public class StoneScoreItems implements Serializable {
private String notice; private String notice;
/** /**
* 状态[-999-全部|-1-删除|0-未上架|1-已上架|2-定时上架] * 状态[-999-全部|-1-删除|0-未上架|1-已上架|2-定时上架|7-已下架]
*/ */
private Integer status; private Integer status;
......
...@@ -25,6 +25,11 @@ public class StoneScoreLogs implements Serializable { ...@@ -25,6 +25,11 @@ public class StoneScoreLogs implements Serializable {
@TableId(value = "mid", type = IdType.AUTO) @TableId(value = "mid", type = IdType.AUTO)
private Long mid; private Long mid;
/**
* id
*/
private String logsId;
/** /**
* 用户id * 用户id
*/ */
......
...@@ -25,6 +25,11 @@ public class StoneScoreOrder implements Serializable { ...@@ -25,6 +25,11 @@ public class StoneScoreOrder implements Serializable {
@TableId(value = "mid", type = IdType.AUTO) @TableId(value = "mid", type = IdType.AUTO)
private Long mid; private Long mid;
/**
* id
*/
private String orderId;
/** /**
* 用户id * 用户id
*/ */
......
...@@ -24,6 +24,11 @@ public class StoneScoreUser implements Serializable { ...@@ -24,6 +24,11 @@ public class StoneScoreUser implements Serializable {
@TableId(value = "mid", type = IdType.AUTO) @TableId(value = "mid", type = IdType.AUTO)
private Long mid; private Long mid;
/**
* id
*/
private String scoreId;
/** /**
* 用户id * 用户id
*/ */
......
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