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

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

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

parent 6f4248ff
...@@ -243,7 +243,7 @@ public class GoblinRedisConst { ...@@ -243,7 +243,7 @@ public class GoblinRedisConst {
public static final String NFT_PAY_TYPE = PREFIX.concat("nft:payType"); 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; ...@@ -3,8 +3,10 @@ package com.liquidnet.service.goblin.dto.vo;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
@Data @Data
public class GoblinListDetailsItemVo { public class GoblinListDetailsItemVo implements Serializable, Cloneable{
@ApiModelProperty(value = "spuId") @ApiModelProperty(value = "spuId")
private String spuId; private String spuId;
@ApiModelProperty(value = "skuId") @ApiModelProperty(value = "skuId")
...@@ -12,7 +14,18 @@ public class GoblinListDetailsItemVo { ...@@ -12,7 +14,18 @@ public class GoblinListDetailsItemVo {
@ApiModelProperty(value = "sku名称") @ApiModelProperty(value = "sku名称")
private String skuName; private String skuName;
@ApiModelProperty(value = "线上库存") @ApiModelProperty(value = "线上库存")
private String stock; private Integer stock;
@ApiModelProperty(value = "剩余库存") @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; ...@@ -3,22 +3,36 @@ package com.liquidnet.service.goblin.dto.vo;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
import java.util.List; import java.util.List;
@Data @Data
public class GoblinListDetailsVo { public class GoblinListDetailsVo implements Serializable, Cloneable {
@ApiModelProperty(value = "名单id") @ApiModelProperty(value = "名单id")
private String listId; private String listId;
@ApiModelProperty(value = "用户id")
private String uid;
@ApiModelProperty(value = "优先购名称") @ApiModelProperty(value = "优先购名称")
private String name; private String name;
@ApiModelProperty(value = "优先购类型[0-会员|1-指定用户]") @ApiModelProperty(value = "优先购类型[0-会员|1-指定用户]")
private String whiteType; private Integer whiteType;
@ApiModelProperty(value = "优先购文件地址") @ApiModelProperty(value = "优先购文件地址")
private String whiteUrl; private String whiteUrl;
@ApiModelProperty(value = "优先购提前时间") @ApiModelProperty(value = "优先购提前时间")
private String advanceMin; private Integer advanceMin;
@ApiModelProperty(value = "黑名单文件地址") @ApiModelProperty(value = "黑名单文件地址")
private String blackUrl; private String blackUrl;
@ApiModelProperty(value = "商品数据") @ApiModelProperty(value = "商品数据")
private List<GoblinListDetailsItemVo> itemVo; 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 { ...@@ -13,12 +13,12 @@ public class GoblinListCreateParam {
private String name; private String name;
@ApiModelProperty(value = "优先购类型[0-会员|1-指定用户]") @ApiModelProperty(value = "优先购类型[0-会员|1-指定用户]")
@NotNull(message = "优先购类型不能为空") @NotNull(message = "优先购类型不能为空")
private String whiteType; private Integer whiteType;
@ApiModelProperty(value = "优先购文件地址") @ApiModelProperty(value = "优先购文件地址")
private String whiteUrl; private String whiteUrl;
@ApiModelProperty(value = "优先购提前时间") @ApiModelProperty(value = "优先购提前时间")
@NotNull(message = "优先购提前时间不能为空") @NotNull(message = "优先购提前时间不能为空")
private String advanceMin; private Integer advanceMin;
@ApiModelProperty(value = "黑名单文件地址") @ApiModelProperty(value = "黑名单文件地址")
private String blackUrl; private String blackUrl;
@ApiModelProperty(value = "商品数据") @ApiModelProperty(value = "商品数据")
......
...@@ -8,9 +8,12 @@ import java.util.List; ...@@ -8,9 +8,12 @@ import java.util.List;
@Data @Data
public class GoblinListUpdateParam { public class GoblinListUpdateParam {
@ApiModelProperty(value = "名单id")
@NotNull(message = "名单id不能为空")
private String listId;
@ApiModelProperty(value = "优先购类型[0-会员|1-指定用户]") @ApiModelProperty(value = "优先购类型[0-会员|1-指定用户]")
@NotNull(message = "优先购类型不能为空") @NotNull(message = "优先购类型不能为空")
private String whiteType; private Integer whiteType;
@ApiModelProperty(value = "优先购文件地址") @ApiModelProperty(value = "优先购文件地址")
private String whiteUrl; private String whiteUrl;
@ApiModelProperty(value = "黑名单文件地址") @ApiModelProperty(value = "黑名单文件地址")
......
package com.liquidnet.service.goblin.service.manage; 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.dto.vo.GoblinListDetailsVo;
import com.liquidnet.service.goblin.param.GoblinListCreateParam; import com.liquidnet.service.goblin.param.GoblinListCreateParam;
import com.liquidnet.service.goblin.param.GoblinListUpdateParam; import com.liquidnet.service.goblin.param.GoblinListUpdateParam;
...@@ -17,9 +18,9 @@ public interface IGoblinListService { ...@@ -17,9 +18,9 @@ public interface IGoblinListService {
void getList(); 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 { ...@@ -29,6 +29,11 @@ public class GoblinList implements Serializable {
*/ */
private String listId; private String listId;
/**
* 用户id
*/
private String uid;
/** /**
* 名单名称 * 名单名称
*/ */
......
...@@ -3,6 +3,7 @@ CREATE TABLE `goblin_list` ...@@ -3,6 +3,7 @@ CREATE TABLE `goblin_list`
( (
`mid` bigint UNSIGNED NOT NULL AUTO_INCREMENT, `mid` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
`list_id` varchar(64) DEFAULT '' COMMENT '名单id', `list_id` varchar(64) DEFAULT '' COMMENT '名单id',
`uid` varchar(64) DEFAULT '' COMMENT '用户id',
`name` varchar(64) DEFAULT '' COMMENT '名单名称', `name` varchar(64) DEFAULT '' COMMENT '名单名称',
`white_type` int DEFAULT 1 COMMENT '白名单类型[0-会员|1-指定用户]', `white_type` int DEFAULT 1 COMMENT '白名单类型[0-会员|1-指定用户]',
`white_url` varchar(512) DEFAULT '' COMMENT '白名单xls地址', `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; 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.dto.vo.GoblinListDetailsVo;
import com.liquidnet.service.goblin.param.GoblinListCreateItemParam;
import com.liquidnet.service.goblin.param.GoblinListCreateParam; import com.liquidnet.service.goblin.param.GoblinListCreateParam;
import com.liquidnet.service.goblin.param.GoblinListUpdateParam; import com.liquidnet.service.goblin.param.GoblinListUpdateParam;
import com.liquidnet.service.goblin.service.manage.IGoblinListService; 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 org.springframework.stereotype.Service;
import java.util.List;
/** /**
* <p> * <p>
* 商城-名单表 服务实现类 * 商城-名单表 服务实现类
...@@ -17,23 +29,103 @@ import org.springframework.stereotype.Service; ...@@ -17,23 +29,103 @@ import org.springframework.stereotype.Service;
@Service @Service
public class GoblinListServiceImpl implements IGoblinListService { public class GoblinListServiceImpl implements IGoblinListService {
@Autowired
GoblinRedisUtils redisUtils;
@Autowired
GoblinMongoUtils mongoUtils;
@Override @Override
public void getList() { public void getList() {
} }
@Override @Override
public GoblinListDetailsVo getDetails(String listId) { public ResponseDto<GoblinListDetailsVo> getDetails(String listId) {
return null; 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 @Override
public Boolean create(GoblinListCreateParam param) { public ResponseDto<Boolean> create(GoblinListCreateParam param) {
return null; 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 @Override
public Boolean update(GoblinListUpdateParam param) { public ResponseDto<Boolean> update(GoblinListUpdateParam param) {
return null; 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 { ...@@ -1528,6 +1528,20 @@ public class GoblinMongoUtils {
mongoTemplate.insert(vo, GoblinUserDigitalArtworkVo.class.getSimpleName()); 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 { ...@@ -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; ...@@ -12,6 +12,7 @@ import com.liquidnet.service.goblin.entity.GoblinOrderAttr;
import com.liquidnet.service.goblin.entity.GoblinOrderSku; import com.liquidnet.service.goblin.entity.GoblinOrderSku;
import com.liquidnet.service.goblin.entity.GoblinStoreOrder; import com.liquidnet.service.goblin.entity.GoblinStoreOrder;
import com.liquidnet.service.goblin.param.BackCouponParam; import com.liquidnet.service.goblin.param.BackCouponParam;
import com.liquidnet.service.goblin.param.GoblinListCreateItemParam;
import com.liquidnet.service.goblin.param.GoblinOrderSqlParam; import com.liquidnet.service.goblin.param.GoblinOrderSqlParam;
import com.mongodb.BasicDBObject; import com.mongodb.BasicDBObject;
import com.mongodb.client.model.WriteModel; import com.mongodb.client.model.WriteModel;
...@@ -85,6 +86,7 @@ public class ObjectUtil { ...@@ -85,6 +86,7 @@ public class ObjectUtil {
private static final PagedResult<GoblinStoreMgtGoodsSkuListVo> goblinStoreMgtGoodsSkuListVo = new PagedResult<>(); private static final PagedResult<GoblinStoreMgtGoodsSkuListVo> goblinStoreMgtGoodsSkuListVo = new PagedResult<>();
private static final ArrayList<GoblinStoreMgtGoodsSkuListVo> goblinStoreMgtGoodsSkuListVoArrayList = new ArrayList<>(); private static final ArrayList<GoblinStoreMgtGoodsSkuListVo> goblinStoreMgtGoodsSkuListVoArrayList = new ArrayList<>();
private static final ArrayList<GoblinNftGoodsSkuListJobVo> goblinNftGoodsSkuListJobVoArrayList = 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 BasicDBObject basicDBObject = new BasicDBObject();
private static final ArrayList<WriteModel<Document>> writeModelDocumentArrayList = new ArrayList<>(); private static final ArrayList<WriteModel<Document>> writeModelDocumentArrayList = new ArrayList<>();
...@@ -101,6 +103,10 @@ public class ObjectUtil { ...@@ -101,6 +103,10 @@ public class ObjectUtil {
return goblinStoreMgtGoodsSkuListVo.clone(); return goblinStoreMgtGoodsSkuListVo.clone();
} }
public static ArrayList<GoblinListDetailsItemVo> goblinListDetailsItemVoArrayList() {
return (ArrayList<GoblinListDetailsItemVo>) goblinListDetailsItemVoArrayList.clone();
}
public static ArrayList<GoblinStoreMgtGoodsSkuListVo> getGoblinStoreMgtGoodsSkuListVoArrayList() { public static ArrayList<GoblinStoreMgtGoodsSkuListVo> getGoblinStoreMgtGoodsSkuListVoArrayList() {
return (ArrayList<GoblinStoreMgtGoodsSkuListVo>) goblinStoreMgtGoodsSkuListVoArrayList.clone(); 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