Commit 83b3e878 authored by shiyu's avatar shiyu

小程序寄售单

parent 19c10d1f
package com.wwdz.ch.admin.controller;
import com.alibaba.fastjson.JSON;
import com.wwdz.ch.admin.service.ConsignSaleService;
import com.wwdz.ch.core.consts.ResultCode;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dto.request.ConsignSaleRecordRequestDto;
import com.wwdz.ch.db.dto.request.ConsignSaleRequestDto;
import com.xxdxxs.service.FormHandler;
import com.xxdxxs.validation.Validator;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 寄售单
*/
@RestController
@RequestMapping("/admin/consignSaleManage")
public class ConsignSaleController {
private static final Logger logger = LoggerFactory.getLogger(ConsignSaleController.class);
@Autowired
ConsignSaleService consignSaleService;
@ApiOperation(value = "查询寄售单")
@PostMapping("/findList")
public Result findList(@RequestBody ConsignSaleRequestDto dto) {
logger.info("【请求开始】用户取消寄售单,请求参数:{}", JSON.toJSONString(dto));
Validator validator = new Validator(FormHandler.ofEntity(dto));
validator.set("userId", "用户id").must().string()
.end();
if (!validator.isValid()) {
return Result.failed(ResultCode.PARAM_ERROR.getCode(), validator.getErrorInfo());
}
return consignSaleService.findList(dto);
}
@ApiOperation(value = "图文估价")
@PostMapping("/imgValuate")
public Result valuate(@RequestBody ConsignSaleRequestDto dto) {
logger.info("【请求开始】图文估价,请求参数:{}", JSON.toJSONString(dto));
Validator validator = new Validator(FormHandler.ofEntity(dto));
validator.set("saleId", "寄售单号").must().string()
.set("imgValuation", "估价").must().string()
.end();
if (!validator.isValid()) {
return Result.failed(ResultCode.PARAM_ERROR.getCode(), validator.getErrorInfo());
}
return consignSaleService.imgValuate(dto);
}
@ApiOperation(value = "实物鉴定")
@PostMapping("/identify")
public Result identify(@RequestBody ConsignSaleRequestDto dto) {
logger.info("【请求开始】实物鉴定,请求参数:{}", JSON.toJSONString(dto));
Validator validator = new Validator(FormHandler.ofEntity(dto));
validator.set("saleId", "寄售单号").must().string()
.set("valuation", "实物估价").must().string()
.end();
if (!validator.isValid()) {
return Result.failed(ResultCode.PARAM_ERROR.getCode(), validator.getErrorInfo());
}
return consignSaleService.identify(dto);
}
@ApiOperation(value = "完成寄售")
@PostMapping("/finish")
public Result finish(@RequestBody ConsignSaleRequestDto dto) {
logger.info("【请求开始】完成寄售,请求参数:{}", JSON.toJSONString(dto));
Validator validator = new Validator(FormHandler.ofEntity(dto));
validator.set("saleId", "寄售单号").must().string()
.set("dealPrice", "成交价格").must().string()
.end();
if (!validator.isValid()) {
return Result.failed(ResultCode.PARAM_ERROR.getCode(), validator.getErrorInfo());
}
return consignSaleService.finish(dto);
}
@ApiOperation(value = "取消寄售单")
@PostMapping("/cancel")
public Result cancel(@RequestBody ConsignSaleRecordRequestDto dto) {
logger.info("【请求开始】取消寄售单,请求参数:{}", JSON.toJSONString(dto));
Validator validator = new Validator(FormHandler.ofEntity(dto));
validator.set("saleId", "寄售单号").must().string()
.set("itemId", "商品id").must().number()
.end();
if (!validator.isValid()) {
return Result.failed(ResultCode.PARAM_ERROR.getCode(), validator.getErrorInfo());
}
return consignSaleService.cancel(dto);
}
}
package com.wwdz.ch.admin.impl;
import com.github.pagehelper.PageInfo;
import com.wwdz.ch.admin.service.ConsignSaleService;
import com.wwdz.ch.core.consts.ConsignSaleEnum;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.IdUtils;
import com.wwdz.ch.db.dao.ConsignSaleDao;
import com.wwdz.ch.db.dao.ConsignSaleRecordDao;
import com.wwdz.ch.db.dao.ItemDao;
import com.wwdz.ch.db.domain.ConsignSale;
import com.wwdz.ch.db.domain.ConsignSaleRecord;
import com.wwdz.ch.db.domain.Item;
import com.wwdz.ch.db.dto.request.ConsignSaleRecordRequestDto;
import com.wwdz.ch.db.dto.request.ConsignSaleRequestDto;
import com.xxdxxs.utils.EntityMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
public class ConsignSaleServiceImpl implements ConsignSaleService {
private static final Logger logger = LoggerFactory.getLogger(ConsignSaleServiceImpl.class);
@Autowired
ConsignSaleDao consignSaleDao;
@Autowired
ConsignSaleRecordDao consignSaleRecordDao;
@Autowired
ItemDao itemDao;
@Override
public Result findList(ConsignSaleRequestDto dto) {
List<ConsignSale> list = consignSaleDao.find(dto);
PageInfo<ConsignSale> pageInfo = new PageInfo<>(list);
List<Long> itemIds = list.stream().map(ConsignSale::getItemId).collect(Collectors.toList());
//查询商品的信息
List<Item> itemList = itemDao.findDetails(itemIds);
Map<Long, Item> itemMap = itemList.stream().collect(Collectors.toMap(Item::getId, Function.identity()));
return null;
}
@Override
public Result findDetail(ConsignSaleRequestDto dto) {
return null;
}
@Override
public Result imgValuate(ConsignSaleRequestDto dto) {
try {
ConsignSale consignSale = new ConsignSale();
consignSale.setImgValuation(dto.getImgValuation());
consignSale.setSaleId(dto.getSaleId());
consignSale.setSystemState(ConsignSaleEnum.SaleForSysStateEnum.IDENTIFY.getCode());
consignSaleDao.update(consignSale);
//插入操作记录
ConsignSaleRecord consignSaleRecord = new ConsignSaleRecord();
consignSaleRecord.setSaleId(dto.getSaleId());
consignSaleRecord.setCreateTime(new Date());
consignSaleRecord.setContent("估价金额: " + dto.getImgValuation());
consignSaleRecord.setRemark(dto.getRemark());
consignSaleRecord.setType(ConsignSaleEnum.OperateTypeEnum.VALUATE.getCode());
consignSaleRecordDao.insert(consignSaleRecord);
return Result.success();
} catch (Exception e) {
logger.error("图文估价error:{}", e);
}
return Result.failed();
}
@Override
public Result identify(ConsignSaleRequestDto dto) {
try {
ConsignSale consignSale = new ConsignSale();
consignSale.setValuation(dto.getValuation());
consignSale.setSaleId(dto.getSaleId());
consignSale.setSystemState(ConsignSaleEnum.SaleForSysStateEnum.CONSIGN_SALEING.getCode());
consignSaleDao.update(consignSale);
//插入操作记录
ConsignSaleRecord consignSaleRecord = new ConsignSaleRecord();
consignSaleRecord.setSaleId(dto.getSaleId());
consignSaleRecord.setCreateTime(new Date());
consignSaleRecord.setContent("实物鉴定: " + dto.getImgValuation() + " 元");
consignSaleRecord.setRemark(dto.getRemark());
consignSaleRecord.setType(ConsignSaleEnum.OperateTypeEnum.IDENTIFY.getCode());
consignSaleRecordDao.insert(consignSaleRecord);
return Result.success();
} catch (Exception e) {
logger.error("实物鉴定 error:{}", e);
}
return Result.failed();
}
@Override
public Result finish(ConsignSaleRequestDto dto) {
try {
ConsignSale consignSale = new ConsignSale();
consignSale.setDealPrice(dto.getDealPrice());
consignSale.setSaleId(dto.getSaleId());
consignSale.setSystemState(ConsignSaleEnum.SaleForSysStateEnum.FINISH.getCode());
consignSaleDao.update(consignSale);
//插入操作记录
ConsignSaleRecord consignSaleRecord = new ConsignSaleRecord();
consignSaleRecord.setSaleId(dto.getSaleId());
consignSaleRecord.setCreateTime(new Date());
consignSaleRecord.setContent("成交金额: " + dto.getImgValuation() + " 元");
consignSaleRecord.setRemark("成交平台: " + dto.getRemark());
consignSaleRecord.setType(ConsignSaleEnum.OperateTypeEnum.VALUATE.getCode());
consignSaleRecordDao.insert(consignSaleRecord);
return Result.success();
} catch (Exception e) {
logger.error("实物鉴定 error:{}", e);
}
return Result.failed();
}
@Override
public Result cancel(ConsignSaleRecordRequestDto dto) {
try {
ConsignSale consignSale = new ConsignSale();
consignSale.setSaleId(dto.getSaleId());
consignSale.setCustomState(ConsignSaleEnum.SaleForUserStateEnum.CANCEL.getCode());
consignSale.setSystemState(ConsignSaleEnum.SaleForSysStateEnum.CANCEL.getCode());
consignSaleDao.update(consignSale);
//商品下架
itemDao.updateOnSale(dto.getItemId());
//插入记录
ConsignSaleRecord consignSaleRecord = new ConsignSaleRecord();
consignSaleRecord.setSaleId(dto.getSaleId());
consignSaleRecord.setCreateTime(new Date());
consignSaleRecord.setContent("取消类型:" + dto.getContent());
consignSaleRecord.setRemark(dto.getRemark());
consignSaleRecord.setType(ConsignSaleEnum.OperateTypeEnum.CANCEL.getCode());
consignSaleRecordDao.insert(consignSaleRecord);
return Result.success();
} catch (Exception e) {
logger.error("取消寄售单error : {}", e);
}
return Result.failed();
}
}
...@@ -42,7 +42,7 @@ public class SynCategoryInfo { ...@@ -42,7 +42,7 @@ public class SynCategoryInfo {
public void importCategory() { public void importCategory() {
String FILE_NAME = "category.xlsx"; String FILE_NAME = "category_new.xlsx";
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(FILE_NAME); InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(FILE_NAME);
StringArrayExcelReadListener listener = new StringArrayExcelReadListener(); StringArrayExcelReadListener listener = new StringArrayExcelReadListener();
ExcelReader reader = EasyExcelFactory.read(inputStream, listener).build(); ExcelReader reader = EasyExcelFactory.read(inputStream, listener).build();
...@@ -53,26 +53,25 @@ public class SynCategoryInfo { ...@@ -53,26 +53,25 @@ public class SynCategoryInfo {
logger.info("excel title = {}", head); logger.info("excel title = {}", head);
List<List<String>> dataList = listener.getData(); List<List<String>> dataList = listener.getData();
logger.info(">>>>>>>>>> excel 读取数据 : {} 条", dataList.size()); logger.info(">>>>>>>>>> excel 读取数据 : {} 条", dataList.size());
dataList.parallelStream().forEach(array -> { for (List<String> array : dataList) {
if (!array.get(2).equals("1")) {
continue;
}
Category category = new Category(); Category category = new Category();
int categoryId = Integer.parseInt(array.get(0)); int categoryId = Integer.parseInt(array.get(0));
category.setId(categoryId); category.setId(categoryId);
category.setName(array.get(1)); category.setName(array.get(3));
category.setDesc(array.get(2)); category.setDesc(array.get(5));
category.setPid(Integer.parseInt(array.get(4))); category.setPid(Integer.parseInt(array.get(7)));
category.setLevel(Integer.parseInt(array.get(5))); category.setLevel(Integer.parseInt(array.get(8)));
category.setSort(Integer.parseInt(array.get(6))); category.setSort(Integer.parseInt(array.get(11)));
category.setCreated(new Date()); category.setCreated(new Date());
category.setUpdated(new Date()); category.setUpdated(new Date());
if (array.get(12).equals("0")) {
category.setIsDeleted(true);
} else {
category.setIsDeleted(false); category.setIsDeleted(false);
} category.setIsLeaf(array.get(9).equals("0")?false:true);
category.setIsLeaf(array.get(13).equals("0")?false:true); category.setIcon("https://cdn.wanwudezhi.com" + array.get(4));
category.setIcon(array.get(14));
categoryDao.add(category); categoryDao.add(category);
}); }
} }
} }
package com.wwdz.ch.admin.service;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dto.request.ConsignSaleRecordRequestDto;
import com.wwdz.ch.db.dto.request.ConsignSaleRequestDto;
public interface ConsignSaleService {
/**
* 查询寄售单
* @param dto
* @return
*/
Result findList(ConsignSaleRequestDto dto);
/**
* 查询寄售单详情
* @param dto
* @return
*/
Result findDetail(ConsignSaleRequestDto dto);
/**
* 图文估价
* @param dto
* @return
*/
Result imgValuate(ConsignSaleRequestDto dto);
/**
* 实物鉴定
* @param dto
* @return
*/
Result identify(ConsignSaleRequestDto dto);
/**
* 完成寄售
* @param dto
* @return
*/
Result finish(ConsignSaleRequestDto dto);
/**
* 取消寄售
* @param dto
* @return
*/
Result cancel(ConsignSaleRecordRequestDto dto);
}
package com.wwdz.ch.core.consts; package com.wwdz.ch.core.consts;
public class ConsignForSaleEnum { public class ConsignSaleEnum {
/** /**
* 用户端寄售单的状态 * 用户端寄售单的状态
...@@ -25,7 +25,7 @@ public class ConsignForSaleEnum { ...@@ -25,7 +25,7 @@ public class ConsignForSaleEnum {
public static String getNameByCode(int code) { public static String getNameByCode(int code) {
for (ConsignForSaleEnum.SaleForUserStateEnum saleForUserStateEnum : ConsignForSaleEnum.SaleForUserStateEnum.values()) { for (ConsignSaleEnum.SaleForUserStateEnum saleForUserStateEnum : ConsignSaleEnum.SaleForUserStateEnum.values()) {
if (code == saleForUserStateEnum.getCode()) { if (code == saleForUserStateEnum.getCode()) {
return saleForUserStateEnum.getDes(); return saleForUserStateEnum.getDes();
} }
...@@ -44,15 +44,14 @@ public class ConsignForSaleEnum { ...@@ -44,15 +44,14 @@ public class ConsignForSaleEnum {
} }
/** /**
* 后台寄售单的状态 * 后台寄售单的状态
*/ */
public enum SaleForSysStateEnum { public enum SaleForSysStateEnum {
VALUATE(1, "图文估价"), WAIT_IMG_VALUATE(1, "待图文估价"),
WAIT_CONSIGN(3, "待用户寄出"), WAIT_CONSIGN(3, "待用户寄出"),
WAIT_TAKE(6, "待收货"), WAIT_TAKE(6, "待收货"),
CHECK(8, "实物鉴定"), IDENTIFY(8, "实物鉴定"),
CONSIGN_SALEING(10, "寄售中"), CONSIGN_SALEING(10, "寄售中"),
PRE_PAY(16, "待结款"), PRE_PAY(16, "待结款"),
FINISH(20, "已完成"), FINISH(20, "已完成"),
...@@ -69,7 +68,7 @@ public class ConsignForSaleEnum { ...@@ -69,7 +68,7 @@ public class ConsignForSaleEnum {
} }
public static String getNameByCode(int code) { public static String getNameByCode(int code) {
for (ConsignForSaleEnum.SaleForSysStateEnum saleForSysStateEnum : ConsignForSaleEnum.SaleForSysStateEnum.values()) { for (ConsignSaleEnum.SaleForSysStateEnum saleForSysStateEnum : ConsignSaleEnum.SaleForSysStateEnum.values()) {
if (code == saleForSysStateEnum.getCode()) { if (code == saleForSysStateEnum.getCode()) {
return saleForSysStateEnum.getDes(); return saleForSysStateEnum.getDes();
} }
...@@ -86,4 +85,40 @@ public class ConsignForSaleEnum { ...@@ -86,4 +85,40 @@ public class ConsignForSaleEnum {
} }
} }
public enum OperateTypeEnum {
VALUATE(1, "图文估价"),
IDENTIFY(4, "实物鉴定"),
WAIT_TAKE(10, "寄售单完成"),
CANCEL(20, "寄售单取消"),
;
private int code;
private String des;
OperateTypeEnum(int code, String des) {
this.code = code;
this.des = des;
}
public static String getNameByCode(int code) {
for (ConsignSaleEnum.OperateTypeEnum operateTypeEnum : ConsignSaleEnum.OperateTypeEnum.values()) {
if (code == operateTypeEnum.getCode()) {
return operateTypeEnum.getDes();
}
}
return null;
}
public int getCode() {
return code;
}
public String getDes() {
return des;
}
}
} }
package com.wwdz.ch.core.entity;
import com.xxdxxs.entity.Entity;
import lombok.Data;
import java.util.Date;
import java.util.Map;
@Data
public class ConsignSaleVo implements Entity {
/**
* 寄售单号
*/
private String saleId;
/**
* 商品ID
*/
private Long itemId;
/**
* 商品名称
*/
private String itemName;
// 用于列表展示的图片对象
private Map<String, Object> homePageImage;
/**
* 商品图片
*/
private String itemImg;
/**
* 用户ID
*/
private Long userId;
/**
* 寄售时间
*/
private Date saleTime;
/**
* 用户报价
*/
private Integer userPrice;
/**
* 图文估价范围
*/
private String imgValuation;
/**
* 实物估价
*/
private Integer valuation;
/**
* 成交价格
*/
private Integer dealPrice;
/**
* 客户端状态
*/
private Integer customState;
/**
* 客户端状态
*/
private String customStateName;
/**
* 系统状态
*/
private Integer systemState;
/**
* 系统状态
*/
private String systemStateName;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
}
package com.wwdz.ch.core.util;
import org.apache.commons.lang3.time.DateFormatUtils;
import java.util.Date;
public class IdUtils {
// 最近的时间戳
private long lastTimestamp = 0;
//机器id 2位
// private final String machineId;
//用用户编码代替机器id
private String userCode;
// 0,并发控制
private long sequence = 0L;
// 序列号的最大值
private final int sequenceMax = 9999;
public IdUtils(String userCode) {
this.userCode = userCode;
}
/**
* 生成订单号
*/
public synchronized String nextId(String prefix, String randnum) {
Date now = new Date();
String time = DateFormatUtils.format(now, "yyMMddHHmmssSSS");
long timestamp = now.getTime();
if (this.lastTimestamp == timestamp) {
// 如果上一个timestamp与新产生的相等,则sequence加一(0-4095循环);
// 对新的timestamp,sequence从0开始
this.sequence = this.sequence + 1 % this.sequenceMax;
if (this.sequence == 0) {
// 重新生成timestamp
timestamp = this.tilNextMillis(this.lastTimestamp);
}
} else {
this.sequence = 0;
}
this.lastTimestamp = timestamp;
// StringBuilder sb = new StringBuilder(prefix).append(time).append(randnum).append(leftPad(sequence, 4));
StringBuilder sb = new StringBuilder(prefix).append(time).append(randnum);
return sb.toString();
}
/**
* 补码
*
* @param i
* @param n
* @return
*/
private String leftPad(long i, int n) {
String s = String.valueOf(i);
StringBuilder sb = new StringBuilder();
int c = n - s.length();
c = c < 0 ? 0 : c;
for (int t = 0; t < c; t++) {
sb.append("0");
}
return sb.append(s).toString();
}
/**
* 等待下一个毫秒的到来, 保证返回的毫秒数在参数lastTimestamp之后
*/
private long tilNextMillis(long lastTimestamp) {
long timestamp = System.currentTimeMillis();
while (timestamp <= lastTimestamp) {
timestamp = System.currentTimeMillis();
}
return timestamp;
}
// 这里读取的是配置文件
// 机器id(我这里是01,正式环境建议使用机器IP)
// 注意:分布式环境,注意每台机器的id要保证不同;也可以使用机器ip,映射成一个数字编号(如01:192.168.55.12)
private static String myid = "1";
// 示例
private static IdUtils instance = new IdUtils(myid);
public static IdUtils getInstance() {
return instance;
}
public static String getOrderNumber(String prefix) {
String randomNum = CharUtil.getRandomNum(4);
IdUtils orderId = IdUtils.getInstance();
String nextId = orderId.nextId(prefix, randomNum);
return nextId;
}
/**
* 调用
*/
public static void main(String[] args) {
String id = IdUtils.getOrderNumber("OT");
System.out.println(id);
}
}
...@@ -61,6 +61,9 @@ public class RegexUtil { ...@@ -61,6 +61,9 @@ public class RegexUtil {
* Regex of Chinese character. * Regex of Chinese character.
*/ */
public static final String REGEX_ZH = "^[\\u4e00-\\u9fa5]+$"; public static final String REGEX_ZH = "^[\\u4e00-\\u9fa5]+$";
public static final String REGEX_CONTAIN_CHINESE = ".*[\\u4e00-\\u9fa5]+.*";
/** /**
* Regex of username. * Regex of username.
* <p> * <p>
...@@ -236,6 +239,16 @@ public class RegexUtil { ...@@ -236,6 +239,16 @@ public class RegexUtil {
return isMatch(REGEX_ZH, input); return isMatch(REGEX_ZH, input);
} }
/**
* 是否包含中文
* @param input
* @return
*/
public static boolean isContainChinese(final CharSequence input) {
return isMatch(REGEX_CONTAIN_CHINESE, input);
}
/** /**
* Return whether input matches regex of username. * Return whether input matches regex of username.
* <p> * <p>
......
package com.wwdz.ch.db.dao;
import com.wwdz.ch.db.domain.ConsignSale;
import com.wwdz.ch.db.dto.request.ConsignSaleRequestDto;
import java.util.List;
public interface ConsignSaleDao {
/**
* 插入新记录
*
* @param consignSale
* @return
*/
int insert(ConsignSale consignSale);
/**
* 更新记录
*
* @param consignSale
* @return
*/
int update(ConsignSale consignSale);
/**
*
* @param dto
* @return
*/
List<ConsignSale> find(ConsignSaleRequestDto dto);
}
package com.wwdz.ch.db.dao;
import com.wwdz.ch.db.domain.ConsignSaleRecord;
import java.util.List;
public interface ConsignSaleRecordDao {
/**
* 插入新记录
*
* @param consignSaleRecord
* @return
*/
int insert(ConsignSaleRecord consignSaleRecord);
/**
* 查询记录
* @param saleId
* @return
*/
List<ConsignSaleRecord> find(String saleId);
}
...@@ -2,6 +2,7 @@ package com.wwdz.ch.db.dao; ...@@ -2,6 +2,7 @@ package com.wwdz.ch.db.dao;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.wwdz.ch.db.domain.Item; import com.wwdz.ch.db.domain.Item;
import com.wwdz.ch.db.domain.UserItemsRelation;
import com.wwdz.ch.db.dto.request.CoinRequestDto; import com.wwdz.ch.db.dto.request.CoinRequestDto;
import java.util.List; import java.util.List;
...@@ -44,6 +45,8 @@ public interface ItemDao { ...@@ -44,6 +45,8 @@ public interface ItemDao {
Item findDetails(Long id); Item findDetails(Long id);
List<Item> findDetails(List<Long> idList);
boolean setCoin(Item item); boolean setCoin(Item item);
int deleteUserItems(CoinRequestDto coinRequestDto); int deleteUserItems(CoinRequestDto coinRequestDto);
...@@ -125,4 +128,39 @@ public interface ItemDao { ...@@ -125,4 +128,39 @@ public interface ItemDao {
List<Item> findListWithImages(CoinRequestDto coinRequestDto); List<Item> findListWithImages(CoinRequestDto coinRequestDto);
List<Long> findOnlyOneselfItems(Long userId); List<Long> findOnlyOneselfItems(Long userId);
/**
* 商品下架
* @param itemId
* @return
*/
boolean updateOnSale(long itemId);
//--------------------------承接原来用户发布商品关联表--------------------------//
/**
* 通过用户id查询列表
*
* @param userId
* @param userIds
* @return
*/
List<UserItemsRelation> listByUserIds(Long userId, List<Long> userIds);
/**
* 判断是否已存在用户id和藏品id对应的记录
*
* @param userId
* @param itemId
* @return
*/
boolean isExisted(Long userId, Long itemId);
/**
* 通过藏品id获取单条记录
*
* @param itemId
* @return
*/
UserItemsRelation find(Long itemId);
} }
...@@ -5,37 +5,37 @@ import com.wwdz.ch.db.domain.UserItemsRelation; ...@@ -5,37 +5,37 @@ import com.wwdz.ch.db.domain.UserItemsRelation;
import java.util.List; import java.util.List;
public interface UserItemsRelationDao { public interface UserItemsRelationDao {
/** /* *//**
* 插入新记录 * 插入新记录
* *
* @param record * @param record
* @return * @return
*/ *//*
int insert(UserItemsRelation record); int insert(UserItemsRelation record);
/** *//**
* 通过用户id查询列表 * 通过用户id查询列表
* *
* @param userId * @param userId
* @param userIds * @param userIds
* @return * @return
*/ *//*
List<UserItemsRelation> listByUserIds(Long userId, List<Long> userIds); List<UserItemsRelation> listByUserIds(Long userId, List<Long> userIds);
/** *//**
* 判断是否已存在用户id和藏品id对应的记录 * 判断是否已存在用户id和藏品id对应的记录
* *
* @param userId * @param userId
* @param itemId * @param itemId
* @return * @return
*/ *//*
boolean isExisted(Long userId, Long itemId); boolean isExisted(Long userId, Long itemId);
/** *//**
* 通过藏品id获取单条记录 * 通过藏品id获取单条记录
* *
* @param itemId * @param itemId
* @return * @return
*/ *//*
UserItemsRelation find(Long itemId); UserItemsRelation find(Long itemId);*/
} }
This diff is collapsed.
package com.wwdz.ch.db.domain;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import com.xxdxxs.entity.Entity;
import lombok.Data;
import org.springframework.util.StringUtils;
/**
* @author shiyu
* @date 2023/11/28
*/
@Data
public class ConsignSaleRecord implements Entity {
private Integer id;
/**
* 寄售单
*/
private String saleId;
/**
* 操作时间
*/
private Date createTime;
/**
* 操作内容
*/
private String content;
/**
* 操作理由或成交平台
*/
private String remark;
/**
* 操作类型
*/
private Integer type;
private static final long serialVersionUID = 1L;
public void setRemark(String remark) {
if (StringUtils.isEmpty(remark) ) {
this.remark = "理由:" + remark;
} else if (StringUtils.hasLength(remark) && !remark.startsWith("理由:") && !remark.startsWith("成交平台")) {
this.remark = "理由:" + remark;
} else {
this.remark = remark;
}
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", saleId=").append(saleId);
sb.append(", createTime=").append(createTime);
sb.append(", content=").append(content);
sb.append(", remark=").append(remark);
sb.append(", type=").append(type);
sb.append(", serialVersionUID=").append(serialVersionUID);
sb.append("]");
return sb.toString();
}
@Override
public boolean equals(Object that) {
if (this == that) {
return true;
}
if (that == null) {
return false;
}
if (getClass() != that.getClass()) {
return false;
}
ConsignSaleRecord other = (ConsignSaleRecord) that;
return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
&& (this.getSaleId() == null ? other.getSaleId() == null : this.getSaleId().equals(other.getSaleId()))
&& (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
&& (this.getContent() == null ? other.getContent() == null : this.getContent().equals(other.getContent()))
&& (this.getRemark() == null ? other.getRemark() == null : this.getRemark().equals(other.getRemark()))
&& (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()));
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
result = prime * result + ((getSaleId() == null) ? 0 : getSaleId().hashCode());
result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
result = prime * result + ((getContent() == null) ? 0 : getContent().hashCode());
result = prime * result + ((getRemark() == null) ? 0 : getRemark().hashCode());
result = prime * result + ((getType() == null) ? 0 : getType().hashCode());
return result;
}
/**
* This enum was generated by MyBatis Generator.
* This enum corresponds to the database table consign_sale_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public enum Column {
id("id", "id", "INTEGER", false),
saleId("sale_id", "saleId", "VARCHAR", false),
createTime("create_time", "createTime", "TIMESTAMP", false),
content("content", "content", "VARCHAR", false),
remark("remark", "remark", "VARCHAR", false),
type("type", "type", "INTEGER", true);
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table consign_sale_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private static final String BEGINNING_DELIMITER = "`";
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table consign_sale_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private static final String ENDING_DELIMITER = "`";
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table consign_sale_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private final String column;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table consign_sale_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private final boolean isColumnNameDelimited;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table consign_sale_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private final String javaProperty;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table consign_sale_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private final String jdbcType;
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table consign_sale_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String value() {
return this.column;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table consign_sale_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String getValue() {
return this.column;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table consign_sale_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String getJavaProperty() {
return this.javaProperty;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table consign_sale_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String getJdbcType() {
return this.jdbcType;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table consign_sale_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {
this.column = column;
this.javaProperty = javaProperty;
this.jdbcType = jdbcType;
this.isColumnNameDelimited = isColumnNameDelimited;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table consign_sale_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String desc() {
return this.getEscapedColumnName() + " DESC";
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table consign_sale_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String asc() {
return this.getEscapedColumnName() + " ASC";
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table consign_sale_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public static Column[] excludes(Column ... excludes) {
ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));
if (excludes != null && excludes.length > 0) {
columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));
}
return columns.toArray(new Column[]{});
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table consign_sale_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String getEscapedColumnName() {
if (this.isColumnNameDelimited) {
return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();
} else {
return this.column;
}
}
}
}
\ No newline at end of file
...@@ -10,7 +10,7 @@ import lombok.Data; ...@@ -10,7 +10,7 @@ import lombok.Data;
/** /**
* @author shiyu * @author shiyu
* @date 2023/09/27 * @date 2023/11/30
*/ */
@Data @Data
public class Item implements Entity { public class Item implements Entity {
...@@ -103,6 +103,11 @@ public class Item implements Entity { ...@@ -103,6 +103,11 @@ public class Item implements Entity {
*/ */
private Integer kind; private Integer kind;
/**
* 商品所属用户id
*/
private Long userId;
/** /**
* 查看权限(0所有人,1仅自己可见) * 查看权限(0所有人,1仅自己可见)
*/ */
...@@ -160,6 +165,7 @@ public class Item implements Entity { ...@@ -160,6 +165,7 @@ public class Item implements Entity {
sb.append(", originalSourceUrl=").append(originalSourceUrl); sb.append(", originalSourceUrl=").append(originalSourceUrl);
sb.append(", source=").append(source); sb.append(", source=").append(source);
sb.append(", kind=").append(kind); sb.append(", kind=").append(kind);
sb.append(", userId=").append(userId);
sb.append(", viewPermission=").append(viewPermission); sb.append(", viewPermission=").append(viewPermission);
sb.append(", extra=").append(extra); sb.append(", extra=").append(extra);
sb.append(", images=").append(images); sb.append(", images=").append(images);
...@@ -202,6 +208,7 @@ public class Item implements Entity { ...@@ -202,6 +208,7 @@ public class Item implements Entity {
&& (this.getOriginalSourceUrl() == null ? other.getOriginalSourceUrl() == null : this.getOriginalSourceUrl().equals(other.getOriginalSourceUrl())) && (this.getOriginalSourceUrl() == null ? other.getOriginalSourceUrl() == null : this.getOriginalSourceUrl().equals(other.getOriginalSourceUrl()))
&& (this.getSource() == null ? other.getSource() == null : this.getSource().equals(other.getSource())) && (this.getSource() == null ? other.getSource() == null : this.getSource().equals(other.getSource()))
&& (this.getKind() == null ? other.getKind() == null : this.getKind().equals(other.getKind())) && (this.getKind() == null ? other.getKind() == null : this.getKind().equals(other.getKind()))
&& (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))
&& (this.getViewPermission() == null ? other.getViewPermission() == null : this.getViewPermission().equals(other.getViewPermission())) && (this.getViewPermission() == null ? other.getViewPermission() == null : this.getViewPermission().equals(other.getViewPermission()))
&& (this.getExtra() == null ? other.getExtra() == null : this.getExtra().equals(other.getExtra())) && (this.getExtra() == null ? other.getExtra() == null : this.getExtra().equals(other.getExtra()))
&& (this.getImages() == null ? other.getImages() == null : this.getImages().equals(other.getImages())) && (this.getImages() == null ? other.getImages() == null : this.getImages().equals(other.getImages()))
...@@ -233,6 +240,7 @@ public class Item implements Entity { ...@@ -233,6 +240,7 @@ public class Item implements Entity {
result = prime * result + ((getOriginalSourceUrl() == null) ? 0 : getOriginalSourceUrl().hashCode()); result = prime * result + ((getOriginalSourceUrl() == null) ? 0 : getOriginalSourceUrl().hashCode());
result = prime * result + ((getSource() == null) ? 0 : getSource().hashCode()); result = prime * result + ((getSource() == null) ? 0 : getSource().hashCode());
result = prime * result + ((getKind() == null) ? 0 : getKind().hashCode()); result = prime * result + ((getKind() == null) ? 0 : getKind().hashCode());
result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());
result = prime * result + ((getViewPermission() == null) ? 0 : getViewPermission().hashCode()); result = prime * result + ((getViewPermission() == null) ? 0 : getViewPermission().hashCode());
result = prime * result + ((getExtra() == null) ? 0 : getExtra().hashCode()); result = prime * result + ((getExtra() == null) ? 0 : getExtra().hashCode());
result = prime * result + ((getImages() == null) ? 0 : getImages().hashCode()); result = prime * result + ((getImages() == null) ? 0 : getImages().hashCode());
...@@ -269,6 +277,7 @@ public class Item implements Entity { ...@@ -269,6 +277,7 @@ public class Item implements Entity {
originalSourceUrl("original_source_url", "originalSourceUrl", "VARCHAR", false), originalSourceUrl("original_source_url", "originalSourceUrl", "VARCHAR", false),
source("source", "source", "INTEGER", true), source("source", "source", "INTEGER", true),
kind("kind", "kind", "INTEGER", false), kind("kind", "kind", "INTEGER", false),
userId("user_id", "userId", "BIGINT", false),
viewPermission("view_permission", "viewPermission", "INTEGER", false), viewPermission("view_permission", "viewPermission", "INTEGER", false),
extra("extra", "extra", "LONGVARCHAR", false), extra("extra", "extra", "LONGVARCHAR", false),
images("images", "images", "LONGVARCHAR", false), images("images", "images", "LONGVARCHAR", false),
......
...@@ -2706,6 +2706,138 @@ public class ItemExample { ...@@ -2706,6 +2706,138 @@ public class ItemExample {
return (Criteria) this; return (Criteria) this;
} }
public Criteria andUserIdIsNull() {
addCriterion("user_id is null");
return (Criteria) this;
}
public Criteria andUserIdIsNotNull() {
addCriterion("user_id is not null");
return (Criteria) this;
}
public Criteria andUserIdEqualTo(Long value) {
addCriterion("user_id =", value, "userId");
return (Criteria) this;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table item
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public Criteria andUserIdEqualToColumn(Item.Column column) {
addCriterion(new StringBuilder("user_id = ").append(column.getEscapedColumnName()).toString());
return (Criteria) this;
}
public Criteria andUserIdNotEqualTo(Long value) {
addCriterion("user_id <>", value, "userId");
return (Criteria) this;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table item
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public Criteria andUserIdNotEqualToColumn(Item.Column column) {
addCriterion(new StringBuilder("user_id <> ").append(column.getEscapedColumnName()).toString());
return (Criteria) this;
}
public Criteria andUserIdGreaterThan(Long value) {
addCriterion("user_id >", value, "userId");
return (Criteria) this;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table item
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public Criteria andUserIdGreaterThanColumn(Item.Column column) {
addCriterion(new StringBuilder("user_id > ").append(column.getEscapedColumnName()).toString());
return (Criteria) this;
}
public Criteria andUserIdGreaterThanOrEqualTo(Long value) {
addCriterion("user_id >=", value, "userId");
return (Criteria) this;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table item
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public Criteria andUserIdGreaterThanOrEqualToColumn(Item.Column column) {
addCriterion(new StringBuilder("user_id >= ").append(column.getEscapedColumnName()).toString());
return (Criteria) this;
}
public Criteria andUserIdLessThan(Long value) {
addCriterion("user_id <", value, "userId");
return (Criteria) this;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table item
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public Criteria andUserIdLessThanColumn(Item.Column column) {
addCriterion(new StringBuilder("user_id < ").append(column.getEscapedColumnName()).toString());
return (Criteria) this;
}
public Criteria andUserIdLessThanOrEqualTo(Long value) {
addCriterion("user_id <=", value, "userId");
return (Criteria) this;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table item
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public Criteria andUserIdLessThanOrEqualToColumn(Item.Column column) {
addCriterion(new StringBuilder("user_id <= ").append(column.getEscapedColumnName()).toString());
return (Criteria) this;
}
public Criteria andUserIdIn(List<Long> values) {
addCriterion("user_id in", values, "userId");
return (Criteria) this;
}
public Criteria andUserIdNotIn(List<Long> values) {
addCriterion("user_id not in", values, "userId");
return (Criteria) this;
}
public Criteria andUserIdBetween(Long value1, Long value2) {
addCriterion("user_id between", value1, value2, "userId");
return (Criteria) this;
}
public Criteria andUserIdNotBetween(Long value1, Long value2) {
addCriterion("user_id not between", value1, value2, "userId");
return (Criteria) this;
}
public Criteria andViewPermissionIsNull() { public Criteria andViewPermissionIsNull() {
addCriterion("view_permission is null"); addCriterion("view_permission is null");
return (Criteria) this; return (Criteria) this;
......
package com.wwdz.ch.db.dto.request;
import com.xxdxxs.entity.Entity;
import lombok.Data;
import java.util.Date;
@Data
public class ConsignSaleRecordRequestDto implements Entity {
/**
* 寄售单
*/
private String saleId;
private Long itemId;
/**
* 操作时间
*/
private Date createTime;
/**
* 操作内容
*/
private String content;
/**
* 操作理由或成交平台
*/
private String remark;
/**
* 操作类型
*/
private Integer type;
}
package com.wwdz.ch.db.dto.request;
import com.xxdxxs.entity.Entity;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class ConsignSaleRequestDto extends BaseRequestDto implements Entity {
/**
* 寄售单号
*/
private String saleId;
/**
* 商品ID
*/
private Long itemId;
private List<Long> itemIds;
/**
* 商品名称
*/
private String itemName;
/**
* 商品名称/寄售单号
* 正则判断根据哪个字段查询
*/
private String searchParam;
/**
* 用户ID
*/
private Long userId;
/**
* 寄售时间
*/
private Date saleTime;
/**
* 用户报价
*/
private Integer userPrice;
/**
* 图文估价范围
*/
private String imgValuation;
/**
* 实物估价
*/
private Integer valuation;
/**
* 成交价格
*/
private Integer dealPrice;
/**
* 客户端状态
*/
private Integer customState;
/**
* 系统状态
*/
private Integer systemState;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
private String remark;
}
...@@ -12,6 +12,7 @@ public class EsSearchRequestDto implements Entity { ...@@ -12,6 +12,7 @@ public class EsSearchRequestDto implements Entity {
private Map<String, String> paramMap; private Map<String, String> paramMap;
private String content; private String content;
private Integer cid;
private Long idStart; private Long idStart;
private Long idEnd; private Long idEnd;
private List<String> includes; private List<String> includes;
......
...@@ -103,6 +103,10 @@ public class ItemEsDao { ...@@ -103,6 +103,10 @@ public class ItemEsDao {
build.filter(wildcardQuery); build.filter(wildcardQuery);
Query isDeleteQuery = TermQuery.of(t->t.field("isDeleted").value(false))._toQuery(); Query isDeleteQuery = TermQuery.of(t->t.field("isDeleted").value(false))._toQuery();
build.filter(isDeleteQuery); build.filter(isDeleteQuery);
if (esSearchRequestDto.getCid() != null) {
Query cidQuery = TermQuery.of(t->t.field("cid").value(esSearchRequestDto.getCid()))._toQuery();
build.filter(cidQuery);
}
//只查询权限为公开的商品 //只查询权限为公开的商品
Query viewPermissionQuery = TermQuery.of(t->t.field("viewPermission").value(0))._toQuery(); Query viewPermissionQuery = TermQuery.of(t->t.field("viewPermission").value(0))._toQuery();
build.filter(viewPermissionQuery); build.filter(viewPermissionQuery);
......
package com.wwdz.ch.db.impl;
import com.github.pagehelper.PageHelper;
import com.wwdz.ch.db.dao.ConsignSaleDao;
import com.wwdz.ch.db.domain.ConsignSale;
import com.wwdz.ch.db.domain.ConsignSaleExample;
import com.wwdz.ch.db.dto.request.ConsignSaleRequestDto;
import com.wwdz.ch.db.mapper.ConsignSaleMapper;
import com.xxdxxs.db.component.JdbcHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class ConsignSaleDaoImpl implements ConsignSaleDao {
@Autowired
ConsignSaleMapper consignSaleMapper;
@Override
public int insert(ConsignSale consignSale) {
return consignSaleMapper.insert(consignSale);
}
@Override
public int update(ConsignSale consignSale) {
ConsignSaleExample example = new ConsignSaleExample();
ConsignSaleExample.Criteria criteria = example.createCriteria();
criteria.andSaleIdEqualTo(consignSale.getSaleId());
return consignSaleMapper.updateByExampleSelective(consignSale, example);
}
@Override
public List<ConsignSale> find(ConsignSaleRequestDto dto) {
ConsignSaleExample example = new ConsignSaleExample();
ConsignSaleExample.Criteria criteria = example.createCriteria();
JdbcHelper.ifPresent(dto.getSaleId(), criteria::andSaleIdEqualTo);
JdbcHelper.ifPresent(dto.getItemId(), criteria::andItemIdEqualTo);
JdbcHelper.ifPresent(dto.getItemIds(), criteria::andItemIdIn);
JdbcHelper.ifPresent(dto.getUserId(), criteria::andUserIdEqualTo);
JdbcHelper.ifPresent(dto.getCustomState(), criteria::andCustomStateEqualTo);
JdbcHelper.ifPresent(dto.getSystemState(), criteria::andSystemStateEqualTo);
example.orderBy(" sale_time desc");
PageHelper.startPage(dto.getPage(), dto.getLimit());
return consignSaleMapper.selectByExample(example);
}
}
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