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

Commit 998e0350 authored by 胡佳晨's avatar 胡佳晨

提交 名单相关的除列表外方法,暂未完成 上传xls文件并添加 名单

parent 6f4248ff
......@@ -243,7 +243,7 @@ public class GoblinRedisConst {
public static final String NFT_PAY_TYPE = PREFIX.concat("nft:payType");
public static final String LIST_DETAILS = PREFIX.concat("list:");//名单列表详情 $key:$listId
/* ----------------------------------------------------------------- */
/* ----------------------------------------------------------------- */
......
......@@ -3,8 +3,10 @@ package com.liquidnet.service.goblin.dto.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class GoblinListDetailsItemVo {
public class GoblinListDetailsItemVo implements Serializable, Cloneable{
@ApiModelProperty(value = "spuId")
private String spuId;
@ApiModelProperty(value = "skuId")
......@@ -12,7 +14,18 @@ public class GoblinListDetailsItemVo {
@ApiModelProperty(value = "sku名称")
private String skuName;
@ApiModelProperty(value = "线上库存")
private String stock;
private Integer stock;
@ApiModelProperty(value = "剩余库存")
private String restStock;
private Integer surplusStock;
private static final GoblinListDetailsItemVo obj = new GoblinListDetailsItemVo();
public static GoblinListDetailsItemVo getNew() {
try {
return (GoblinListDetailsItemVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new GoblinListDetailsItemVo();
}
}
......@@ -3,22 +3,36 @@ package com.liquidnet.service.goblin.dto.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class GoblinListDetailsVo {
public class GoblinListDetailsVo implements Serializable, Cloneable {
@ApiModelProperty(value = "名单id")
private String listId;
@ApiModelProperty(value = "用户id")
private String uid;
@ApiModelProperty(value = "优先购名称")
private String name;
@ApiModelProperty(value = "优先购类型[0-会员|1-指定用户]")
private String whiteType;
private Integer whiteType;
@ApiModelProperty(value = "优先购文件地址")
private String whiteUrl;
@ApiModelProperty(value = "优先购提前时间")
private String advanceMin;
private Integer advanceMin;
@ApiModelProperty(value = "黑名单文件地址")
private String blackUrl;
@ApiModelProperty(value = "商品数据")
private List<GoblinListDetailsItemVo> itemVo;
private static final GoblinListDetailsVo obj = new GoblinListDetailsVo();
public static GoblinListDetailsVo getNew() {
try {
return (GoblinListDetailsVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new GoblinListDetailsVo();
}
}
......@@ -13,12 +13,12 @@ public class GoblinListCreateParam {
private String name;
@ApiModelProperty(value = "优先购类型[0-会员|1-指定用户]")
@NotNull(message = "优先购类型不能为空")
private String whiteType;
private Integer whiteType;
@ApiModelProperty(value = "优先购文件地址")
private String whiteUrl;
@ApiModelProperty(value = "优先购提前时间")
@NotNull(message = "优先购提前时间不能为空")
private String advanceMin;
private Integer advanceMin;
@ApiModelProperty(value = "黑名单文件地址")
private String blackUrl;
@ApiModelProperty(value = "商品数据")
......
......@@ -8,9 +8,12 @@ import java.util.List;
@Data
public class GoblinListUpdateParam {
@ApiModelProperty(value = "名单id")
@NotNull(message = "名单id不能为空")
private String listId;
@ApiModelProperty(value = "优先购类型[0-会员|1-指定用户]")
@NotNull(message = "优先购类型不能为空")
private String whiteType;
private Integer whiteType;
@ApiModelProperty(value = "优先购文件地址")
private String whiteUrl;
@ApiModelProperty(value = "黑名单文件地址")
......
package com.liquidnet.service.goblin.service.manage;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.vo.GoblinListDetailsVo;
import com.liquidnet.service.goblin.param.GoblinListCreateParam;
import com.liquidnet.service.goblin.param.GoblinListUpdateParam;
......@@ -17,9 +18,9 @@ public interface IGoblinListService {
void getList();
GoblinListDetailsVo getDetails(String listId);
ResponseDto<GoblinListDetailsVo> getDetails(String listId);
Boolean create(GoblinListCreateParam param);
ResponseDto<Boolean> create(GoblinListCreateParam param);
Boolean update(GoblinListUpdateParam param);
ResponseDto<Boolean> update(GoblinListUpdateParam param);
}
......@@ -29,6 +29,11 @@ public class GoblinList implements Serializable {
*/
private String listId;
/**
* 用户id
*/
private String uid;
/**
* 名单名称
*/
......
......@@ -3,6 +3,7 @@ CREATE TABLE `goblin_list`
(
`mid` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
`list_id` varchar(64) DEFAULT '' COMMENT '名单id',
`uid` varchar(64) DEFAULT '' COMMENT '用户id',
`name` varchar(64) DEFAULT '' COMMENT '名单名称',
`white_type` int DEFAULT 1 COMMENT '白名单类型[0-会员|1-指定用户]',
`white_url` varchar(512) DEFAULT '' COMMENT '白名单xls地址',
......
package com.liquidnet.service.goblin.controller.manage;
import com.github.pagehelper.PageInfo;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.manage.GoblinStoreZhengzaiCommonParam;
import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.param.GoblinListCreateParam;
import com.liquidnet.service.goblin.param.GoblinListUpdateParam;
import com.liquidnet.service.goblin.service.manage.IGoblinListService;
import com.liquidnet.service.goblin.service.manage.IGoblinZhengzaiService;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**
* 正在下单活动管理
*/
@ApiSupport(order = 149201)
@Slf4j
@RestController
@Api(tags = "活动-名单")
@RequestMapping("store/list")
public class GoblinListController {
@Autowired
IGoblinListService goblinListService;
// @ApiOperationSupport(order = 1)
// @ApiOperation(value = "列表")
// @ApiImplicitParams({
// @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "storeId", value = "店铺ID[64]"),
// })
// @GetMapping("list")
// public ResponseDto<List<GoblinStoreGoodsCategoryVo>> list(@NotBlank(message = "店铺ID不能为空") @RequestParam String storeId) {
// return ResponseDto.success(goblinListService.getList(storeId););
// }
@ApiOperation(value = "详情")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "listId", value = "名单id"),
})
@GetMapping("details")
public ResponseDto<GoblinListDetailsVo> details(@NotBlank(message = "店铺ID不能为空") @RequestParam String listId) {
return goblinListService.getDetails(listId);
}
@ApiOperation(value = "创建")
@PostMapping("create")
public ResponseDto<Boolean> create(@RequestBody GoblinListCreateParam para) {
return goblinListService.create(para);
}
@ApiOperationSupport(order = 1)
@ApiOperation(value = "修改")
@PutMapping("change")
public ResponseDto<Boolean> update(@RequestBody GoblinListUpdateParam param) {
return goblinListService.update(param);
}
}
package com.liquidnet.service.goblin.service.impl.manage;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo;
import com.liquidnet.service.goblin.dto.vo.GoblinListDetailsItemVo;
import com.liquidnet.service.goblin.dto.vo.GoblinListDetailsVo;
import com.liquidnet.service.goblin.param.GoblinListCreateItemParam;
import com.liquidnet.service.goblin.param.GoblinListCreateParam;
import com.liquidnet.service.goblin.param.GoblinListUpdateParam;
import com.liquidnet.service.goblin.service.manage.IGoblinListService;
import com.liquidnet.service.goblin.util.GoblinMongoUtils;
import com.liquidnet.service.goblin.util.GoblinRedisUtils;
import com.liquidnet.service.goblin.util.ObjectUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 商城-名单表 服务实现类
......@@ -17,23 +29,103 @@ import org.springframework.stereotype.Service;
@Service
public class GoblinListServiceImpl implements IGoblinListService {
@Autowired
GoblinRedisUtils redisUtils;
@Autowired
GoblinMongoUtils mongoUtils;
@Override
public void getList() {
}
@Override
public GoblinListDetailsVo getDetails(String listId) {
return null;
public ResponseDto<GoblinListDetailsVo> getDetails(String listId) {
GoblinListDetailsVo vo = redisUtils.getGoblinListDetailsVo(listId);
if (vo == null || !vo.getUid().equals(CurrentUtil.getCurrentUid())) {
return ResponseDto.failure("信息错误");
}
for (GoblinListDetailsItemVo item:vo.getItemVo()) {
GoblinGoodsSkuInfoVo skuVo = redisUtils.getGoodsSkuInfoVo(item.getSkuId());
item.setSkuName(skuVo.getName());
if (skuVo.getUnbox().equals("0")) {
item.setSurplusStock(redisUtils.getSkuStock(null, item.getSkuId()));
item.setStock(skuVo.getSkuStock());
} else {
List<String> skuIdList = redisUtils.getGoodsInfoVo(item.getSpuId()).getSkuIdList();
int surplusStock = 0;
int stock = 0;
for (String skuIdItem : skuIdList) {// 盲盒计算所有sku库存总数
if (skuIdItem.equals(item.getSkuId())) {// 过滤自己
stock+=skuVo.getSkuStock();
continue;
}
GoblinGoodsSkuInfoVo itemVo = redisUtils.getGoodsSkuInfoVo(skuIdItem);
surplusStock += redisUtils.getSkuAllStatusStock(itemVo);
stock+=itemVo.getSkuStock();
}
item.setSurplusStock(surplusStock);
item.setStock(stock);
}
}
return ResponseDto.success(vo);
}
@Override
public Boolean create(GoblinListCreateParam param) {
return null;
public ResponseDto<Boolean> create(GoblinListCreateParam param) {
GoblinListDetailsVo vo = GoblinListDetailsVo.getNew();
List<GoblinListDetailsItemVo> voItemList = ObjectUtil.goblinListDetailsItemVoArrayList();
vo.setListId(IDGenerator.nextTimeId2());
vo.setUid(CurrentUtil.getCurrentUid());
vo.setName(param.getName());
vo.setAdvanceMin(param.getAdvanceMin());
vo.setWhiteType(param.getWhiteType());
//判断 白名单类型
if (param.getWhiteType().equals(1)) {//需要xls文件
if (param.getWhiteUrl() == null || param.getWhiteUrl().equals("")) {
return ResponseDto.failure("未上传指定用户文件");
}
vo.setWhiteUrl(param.getWhiteUrl());
} else {//不需要xls文件
vo.setWhiteUrl("");
}
vo.setBlackUrl(param.getBlackUrl() == null ? "" : param.getBlackUrl());
for (GoblinListCreateItemParam item : param.getItemParams()) {
GoblinListDetailsItemVo itemVo = GoblinListDetailsItemVo.getNew();
itemVo.setSkuId(item.getSkuId());
itemVo.setSpuId(item.getSpuId());
}
vo.setItemVo(voItemList);
redisUtils.setGoblinListDetailsVo(vo);
mongoUtils.insertGoblinListDetailsVo(vo);
//todo sql入库/添加白名单/添加黑名单
return ResponseDto.success();
}
@Override
public Boolean update(GoblinListUpdateParam param) {
return null;
public ResponseDto<Boolean> update(GoblinListUpdateParam param) {
String whiteUrl = "";
String blackUrl = "";
GoblinListDetailsVo vo = redisUtils.getGoblinListDetailsVo(param.getListId());
if (vo == null || !vo.getUid().equals(CurrentUtil.getCurrentUid())) {
return ResponseDto.failure("信息错误");
}
whiteUrl = vo.getWhiteUrl();
blackUrl = vo.getBlackUrl();
//判断 白名单类型
vo.setWhiteType(param.getWhiteType());
if (param.getWhiteType().equals(1)) {//需要xls文件
if (param.getWhiteUrl() == null || param.getWhiteUrl().equals("")) {
return ResponseDto.failure("未上传指定用户文件");
}
vo.setWhiteUrl(param.getWhiteUrl());
} else {//不需要xls文件
vo.setWhiteUrl("");
}
vo.setBlackUrl(param.getBlackUrl() == null ? "" : param.getBlackUrl());
redisUtils.setGoblinListDetailsVo(vo);
mongoUtils.changeGoblinListDetailsVo(param.getListId(), vo);
//todo sql入库/添加白名单/添加黑名单
return ResponseDto.success();
}
}
......@@ -1528,6 +1528,20 @@ public class GoblinMongoUtils {
mongoTemplate.insert(vo, GoblinUserDigitalArtworkVo.class.getSimpleName());
}
/**
* 新增名单数据
*/
public void insertGoblinListDetailsVo(GoblinListDetailsVo vo) {
mongoTemplate.insert(vo, GoblinListDetailsVo.class.getSimpleName());
}
public Boolean changeGoblinListDetailsVo(String ucouponId, GoblinListDetailsVo vo) {
return mongoTemplate.getCollection(GoblinListDetailsVo.class.getSimpleName())
.updateOne(Query.query(Criteria.where("ucouponId").is(ucouponId)).getQueryObject(),
ObjectUtil.cloneBasicDBObject().append("$set", mongoConverter.convertToMongoType(vo))
).getModifiedCount() > 0;
}
/* ---------------------------------------- ---------------------------------------- */
/* ---------------------------------------- ---------------------------------------- */
}
......@@ -1720,6 +1720,22 @@ public class GoblinRedisUtils {
}
}
/**
* 设置 名单详情
*/
public void setGoblinListDetailsVo(GoblinListDetailsVo vo) {
redisUtil.set(GoblinRedisConst.LIST_DETAILS.concat(vo.getListId()), vo);
}
public GoblinListDetailsVo getGoblinListDetailsVo(String listId) {
Object obj = redisUtil.get(GoblinRedisConst.LIST_DETAILS.concat(listId));
if (obj == null) {
return null;
} else {
return (GoblinListDetailsVo) obj;
}
}
/* ---------------------------------------- ---------------------------------------- */
/* ---------------------------------------- ---------------------------------------- */
}
......@@ -12,6 +12,7 @@ import com.liquidnet.service.goblin.entity.GoblinOrderAttr;
import com.liquidnet.service.goblin.entity.GoblinOrderSku;
import com.liquidnet.service.goblin.entity.GoblinStoreOrder;
import com.liquidnet.service.goblin.param.BackCouponParam;
import com.liquidnet.service.goblin.param.GoblinListCreateItemParam;
import com.liquidnet.service.goblin.param.GoblinOrderSqlParam;
import com.mongodb.BasicDBObject;
import com.mongodb.client.model.WriteModel;
......@@ -85,6 +86,7 @@ public class ObjectUtil {
private static final PagedResult<GoblinStoreMgtGoodsSkuListVo> goblinStoreMgtGoodsSkuListVo = new PagedResult<>();
private static final ArrayList<GoblinStoreMgtGoodsSkuListVo> goblinStoreMgtGoodsSkuListVoArrayList = new ArrayList<>();
private static final ArrayList<GoblinNftGoodsSkuListJobVo> goblinNftGoodsSkuListJobVoArrayList = new ArrayList<>();
private static final ArrayList<GoblinListDetailsItemVo> goblinListDetailsItemVoArrayList = new ArrayList<>();
private static final BasicDBObject basicDBObject = new BasicDBObject();
private static final ArrayList<WriteModel<Document>> writeModelDocumentArrayList = new ArrayList<>();
......@@ -101,6 +103,10 @@ public class ObjectUtil {
return goblinStoreMgtGoodsSkuListVo.clone();
}
public static ArrayList<GoblinListDetailsItemVo> goblinListDetailsItemVoArrayList() {
return (ArrayList<GoblinListDetailsItemVo>) goblinListDetailsItemVoArrayList.clone();
}
public static ArrayList<GoblinStoreMgtGoodsSkuListVo> getGoblinStoreMgtGoodsSkuListVoArrayList() {
return (ArrayList<GoblinStoreMgtGoodsSkuListVo>) goblinStoreMgtGoodsSkuListVoArrayList.clone();
}
......
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