Commit b52e68bd by huluobin

Merge branch '3.7.1'

# Conflicts:
#	src/main/java/com/gogirl/shared/order/StoreTechnicianPeriod.java
parents 9799c826 352aff6b
......@@ -171,6 +171,7 @@ public class OrderManageServiceImpl extends ServiceImpl<OrderManageMapper, Order
//服务价格
.price(baseServe.getPrice())
.payPrice(baseServe.getPrice())
.isOwnProduce(baseServe.getIsOwnProduce())
.achievement(baseServe.getPrice());
// .leisureDiscountPrice(BigDecimal.ZERO);
......@@ -228,6 +229,7 @@ public class OrderManageServiceImpl extends ServiceImpl<OrderManageMapper, Order
//新增服务开始时间结束时间
.endTime(new Date())
.scheduledTime(scheduleManage.getScheduledTime())
//自带款式id
.ownProduceId(orderServeParam.getOwnProduceId());
if (orderServeParam.getServeChangePrice() != null) {
......@@ -236,16 +238,17 @@ public class OrderManageServiceImpl extends ServiceImpl<OrderManageMapper, Order
OrderServe orderServe = builder.build();
//新增订单详情时校验自带款式是否设置
if (orderServe.getServeName().trim().equals(ScheduleServe.OWN_PRODUCE_KEY)) {
orderServe.setIsOwnProduce(1);
if (orderServe.getIsOwnProduce().equals(1)) {
// orderServe.setIsOwnProduce(1);
if (orderServe.getOwnProduceId() == null) {
throw new RRException("请补全自带款式");
}
orderServe.setOwnProduce(ownProduceMapper.selectById(orderServe.getOwnProduceId()));
} else {
orderServe.setIsOwnProduce(2);
orderServe.setOwnProduceId(null);
}
// else {
// orderServe.setIsOwnProduce(2);
// orderServe.setOwnProduceId(null);
// }
orderServe.calcPriceAndTimeLength();
orderServeMapper.insert(orderServe);
......@@ -277,8 +280,11 @@ public class OrderManageServiceImpl extends ServiceImpl<OrderManageMapper, Order
orderServe.setPrice(baseServe.getPrice());
//服务业绩
orderServe.setAchievement(baseServe.getPrice());
orderServe.setDiscountPrice(BigDecimal.ZERO);
orderServe.setIsOwnProduce(baseServe.getIsOwnProduce());
if (orderServeParam.getProduceId() != null) {
BaseProduce baseProduce = baseProduceMapper.selectById(orderServeParam.getProduceId());
//款式原价
......@@ -350,16 +356,17 @@ public class OrderManageServiceImpl extends ServiceImpl<OrderManageMapper, Order
orderServe.setRemark(orderServeParam.getRemark());
//更新订单详情时校验自带款式是否设置
if (orderServe.getServeName().trim().equals(ScheduleServe.OWN_PRODUCE_KEY)) {
if (orderServe.getIsOwnProduce().equals(1)) {
if (orderServe.getOwnProduceId() == null) {
throw new RRException("请补全自带款式");
}
orderServe.setIsOwnProduce(1);
orderServe.setOwnProduce(ownProduceMapper.selectById(orderServe.getOwnProduceId()));
} else {
orderServe.setIsOwnProduce(2);
orderServe.setOwnProduceId(null);
}
// else {
// orderServe.setIsOwnProduce(2);
// orderServe.setOwnProduceId(null);
// }
orderServe.calcPriceAndTimeLength();
orderServeMapper.updateById(orderServe);
......
......@@ -1303,6 +1303,9 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
scheduleServe.setServeNumber(1);
scheduleServe.setIsOwnProduce(baseServe.getIsOwnProduce());
//如果是预约款式
if (scheduleServe.getProduceId() != null) {
......@@ -1351,16 +1354,17 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
}
//自带款式
if (scheduleServe.getServeName().trim().equals(ScheduleServe.OWN_PRODUCE_KEY)) {
scheduleServe.setIsOwnProduce(1);
if (scheduleServe.getIsOwnProduce().equals(1)) {
// scheduleServe.setIsOwnProduce(1);
if (scheduleServeCommand.getOwnProduceId() != null) {
scheduleServe.setOwnProduceId(scheduleServeCommand.getOwnProduceId());
scheduleServe.setOwnProduce(ownProduceMapper.selectById(scheduleServeCommand.getOwnProduceId()));
}
} else {
scheduleServe.setIsOwnProduce(2);
scheduleServe.setOwnProduceId(null);
}
// else {
// scheduleServe.setIsOwnProduce(2);
// scheduleServe.setOwnProduceId(null);
// }
//款式做法
scheduleServe.setExplain(baseServe.getExplain());
......@@ -1516,6 +1520,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
.scheduledTime(scheduleManage.getScheduledTime())
//自带款式
.ownProduceId(scheduleServeVar.getOwnProduceId())
.isOwnProduce(scheduleServeVar.getIsOwnProduce())
.build();
......
......@@ -34,5 +34,6 @@ public interface ITechniqueSkuService extends IService<TechniqueSku> {
List<TechniqueCategory> queryTechniqueCategoryAggregate(@Null Integer scheduleServeId,
@Null Integer orderServeId);
@Null Integer orderServeId,
@Null Integer serveId);
}
package com.gogirl.application.product.serve.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gogirl.application.product.serve.BaseServeService;
import com.gogirl.domain.market.discount.LeisureDiscountConfig;
import com.gogirl.domain.product.serve.BaseProduce;
import com.gogirl.domain.product.serve.BaseServe;
import com.gogirl.infrastructure.mapper.market.discount.LeisureDiscountConfigMapper;
import com.gogirl.infrastructure.mapper.product.serve.BaseProduceMapper;
import com.gogirl.infrastructure.mapper.product.serve.BaseServeMapper;
import com.gogirl.infrastructure.mapper.product.serve.ProducePromotionTimeMapper;
import lombok.AllArgsConstructor;
......@@ -21,6 +24,7 @@ public class BaseServeServiceImpl extends ServiceImpl<BaseServeMapper, BaseServe
private final BaseServeMapper baseServeMapper;
private final LeisureDiscountConfigMapper leisureDiscountConfigMapper;
private final BaseProduceMapper baseProduceMapper;
@Override
......@@ -32,7 +36,12 @@ public class BaseServeServiceImpl extends ServiceImpl<BaseServeMapper, BaseServe
@Override
public BaseServe getAggregate(Integer id, LocalDateTime date, Integer departmentId) {
BaseServe baseServe = baseServeMapper.getAggregate(id);
BaseServe baseServe = baseServeMapper.selectById(id);
List<BaseProduce> baseProduceList = baseProduceMapper.selectList(new LambdaQueryWrapper<BaseProduce>()
.eq(BaseProduce::getServiceId, baseServe.getId()));
baseServe.setListProduce(baseProduceList);
if (date != null) {
LeisureDiscountConfig leisureDiscountConfig = leisureDiscountConfigMapper.selectLeisureDiscount(id,
date.toLocalTime().toString(),
......
......@@ -73,16 +73,23 @@ public class TechniqueSkuServiceImpl extends ServiceImpl<TechniqueSkuMapper, Tec
@Override
public List<TechniqueCategory> queryTechniqueCategoryAggregate(@Null Integer scheduleServeId,
@Null Integer orderServeId) {
@Null Integer orderServeId,
@Null Integer serveId
) {
List<TechniqueSku> techniqueSkuList = this.list();
LambdaQueryWrapper<TechniqueCategory> wrapper = new LambdaQueryWrapper<>();
if (serveId != null) {
BaseServe baseServe = baseServeMapper.selectById(serveId);
wrapper.eq(TechniqueCategory::getServiceTypeId, baseServe.getTypeId());
}
if (scheduleServeId != null) {
ScheduleServe scheduleServe = scheduleServeMapper.selectById(scheduleServeId);
BaseServe baseServe = baseServeMapper.selectById(scheduleServe.getServeId());
wrapper.eq(TechniqueCategory::getServiceTypeId, baseServe.getTypeId());
// BaseServe baseServe = baseServeMapper.selectById(scheduleServe.getServeId());
// wrapper.eq(TechniqueCategory::getServiceTypeId, baseServe.getTypeId());
//
ScheduleServe subRemoveArmor = scheduleServeMapper.subRemoveArmor(scheduleServe.getServeId(), scheduleServe.getSchId());
ScheduleServe subExtend = scheduleServeMapper.subExtend(scheduleServe.getServeId(), scheduleServe.getSchId());
......@@ -97,9 +104,9 @@ public class TechniqueSkuServiceImpl extends ServiceImpl<TechniqueSkuMapper, Tec
if (orderServeId != null) {
OrderServe orderServe = orderServeMapper.selectById(orderServeId);
BaseServe baseServe = baseServeMapper.selectById(orderServe.getServeId());
// BaseServe baseServe = baseServeMapper.selectById(orderServe.getServeId());
wrapper.eq(TechniqueCategory::getServiceTypeId, baseServe.getTypeId());
// wrapper.eq(TechniqueCategory::getServiceTypeId, baseServe.getTypeId());
OrderServe subRemoveArmor = orderServeMapper.subRemoveArmor(orderServe.getServeId(), orderServe.getOrderId());
OrderServe subExtend = orderServeMapper.subExtend(orderServe.getServeId(), orderServe.getOrderId());
......
......@@ -30,7 +30,7 @@ public class ScheduleServe implements Serializable {
*/
private static final long serialVersionUID = 1L;
public static final String OWN_PRODUCE_KEY = "自带款";
// public static final String OWN_PRODUCE_KEY = "自带款";
@TableId(type = IdType.AUTO)
@ApiModelProperty("id")
......
......@@ -20,57 +20,86 @@ public class MallProduct {
@TableId(type = IdType.AUTO)
private Long id;
private String productSku;
@ApiModelProperty("商品名称")
private String name;
@ApiModelProperty("商品副标题")
private String subTitle;
@ApiModelProperty("商品封面图")
private String coverImages;
@ApiModelProperty("商品头图,逗号分隔")
private String headImages;
@ApiModelProperty("商品详情图,逗号分隔")
private String detailImages;
@ApiModelProperty("颜色,逗号分隔")
private String color;
@ApiModelProperty("商品价格")
private BigDecimal price;
@ApiModelProperty("原产地")
private String originPlace;
@ApiModelProperty("原产地")
private String shelfLife;
@ApiModelProperty("成分")
private String ingredient;
@ApiModelProperty("商品描述")
private String description;
@ApiModelProperty("商品规格")
private String specification;
@ApiModelProperty("规格单位")
private String unit;
@ApiModelProperty("品牌")
private String brand;
@ApiModelProperty("重量")
private String weight;
@ApiModelProperty("物流说明")
private String courierInfo;
@ApiModelProperty("保障说明")
private String guaranteeInfo;
@ApiModelProperty("售后说明")
private String afterSaleInfo;
@ApiModelProperty("详情视频")
private String detailVideo;
@ApiModelProperty("是否热卖 1-是 2-否")
private Integer isHot;
@ApiModelProperty("1-已上架 ,2-已下架")
private Integer status;
private Date createTime;
private String parentId;
private String colorNo;
private Date updateTime;
@ApiModelProperty("会员价")
private BigDecimal memberPrice;
@ApiModelProperty("特价")
private BigDecimal bargainPrice;
@ApiModelProperty("是否开启特价 1-是 2否")
private Integer isBargainPrice;
......@@ -81,6 +110,9 @@ public class MallProduct {
@ApiModelProperty("首页标题")
private String indexTitle;
@ApiModelProperty("生产系统编码")
private String prodSysCode;
@TableField(exist = false)
private List<MallCategory> mallCategoryList;
......
......@@ -107,4 +107,7 @@ public class BaseServe implements Serializable {
@TableField(exist = false)
private PraiseRecord praiseRecord;
@ApiModelProperty("是否自带款式 1-是 2-否")
private Integer isOwnProduce;
}
package com.gogirl.infrastructure.common.util;
package com.gogirl.infrastructure.excel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.gogirl.domain.product.purchase.PurchaseSku;
import com.gogirl.infrastructure.common.util.StringUtils;
import com.gogirl.infrastructure.mapper.product.purchase.PurchaseSkuMapper;
import com.gogirl.shared.order.ImportPurchaseSkuExcel;
import com.gogirl.shared.product.excel.ImportPurchaseSkuExcel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......
package com.gogirl.infrastructure.excel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.gogirl.domain.product.mall.MallProduct;
import com.gogirl.infrastructure.mapper.product.mall.MallProductMapper;
import com.gogirl.shared.product.excel.ImportMallProductExcel;
import com.gogirl.shared.product.excel.ImportPurchaseSkuExcel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/6/12 5:54 下午
*/
public class MallProductExcelListener extends AnalysisEventListener<ImportMallProductExcel> {
private static final Logger LOGGER = LoggerFactory.getLogger(ImportPurchaseSkuExcel.class);
private final MallProductMapper mallProductMapper;
/**
* 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收
*/
private static final int BATCH_COUNT = 5;
List<ImportMallProductExcel> list = new ArrayList<>();
public MallProductExcelListener(MallProductMapper mallProductMapper) {
this.mallProductMapper = mallProductMapper;
}
@Override
public void invoke(ImportMallProductExcel data, AnalysisContext context) {
LOGGER.info("解析到一条数据:{}", JSON.toJSONString(data));
list.add(data);
if (list.size() >= BATCH_COUNT) {
syncData();
list.clear();
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
syncData();
LOGGER.info("所有数据解析完成!");
}
/**
* 加上存储数据库
*/
private void syncData() {
LOGGER.info("{}条数据,开始存储数据库!", list.size());
list.forEach(importMallProductExcel -> {
MallProduct mallProduct = mallProductMapper.selectOne(new LambdaQueryWrapper<MallProduct>()
.eq(MallProduct::getProdSysCode, importMallProductExcel.getProdSysCode()));
mallProduct.setPrice(importMallProductExcel.getPrice());
mallProduct.setBargainPrice(importMallProductExcel.getBargainPrice());
mallProductMapper.updateById(mallProduct);
});
LOGGER.info("存储数据库成功!");
}
}
......@@ -21,5 +21,4 @@ public interface BaseServeMapper extends BaseMapper<BaseServe> {
IPage<BaseServe> listLeisureServeForPage(@Param("page") IPage<BaseServe> page, @Param("baseServe") BaseServe baseServe, @Param("serveIdList") List<Integer> serveIdList, @Param("time") String time, @Param("week") Integer week);
BaseServe getAggregate(Integer id);
}
......@@ -57,8 +57,9 @@ public class TechniqueSkuController {
@ApiOperation("查询所有款式技法分组")
@GetMapping("/technician/techniqueSku/queryTechniqueCategoryAggregate")
public JsonResult<List<TechniqueCategory>> queryTechniqueCategoryAggregate(@RequestParam(required = false) Integer scheduleServeId,
@RequestParam(required = false) Integer orderServeId) {
List<TechniqueCategory> techniqueCategoryList = techniqueSkuService.queryTechniqueCategoryAggregate(scheduleServeId, orderServeId);
@RequestParam(required = false) Integer orderServeId,
@RequestParam(required = false) Integer serveId) {
List<TechniqueCategory> techniqueCategoryList = techniqueSkuService.queryTechniqueCategoryAggregate(scheduleServeId, orderServeId, serveId);
return JsonResult.success(techniqueCategoryList);
}
......
......@@ -5,7 +5,6 @@ import com.gogirl.application.store.store.StoreUserService;
import com.gogirl.application.xcx.GogirlTokenService;
import com.gogirl.domain.store.store.StoreTechnician;
import com.gogirl.domain.store.store.StoreUser;
import com.gogirl.domain.xcx.GogirlToken;
import com.gogirl.infrastructure.common.base.JsonResult;
import com.gogirl.infrastructure.config.property.GogirlProperties;
import com.gogirl.infrastructure.service.file.FileService;
......@@ -43,11 +42,8 @@ public class StoreTechnicianController {
@ApiOperation(value = "查询当前店铺的美甲师,选推荐人")
@GetMapping("/technician/user/queryUserForAll")
public JsonResult<List<StoreUser>> queryUserForAll(String token) {
GogirlToken gt = gogirlTokenService.getByToken(token);
if (gt == null) {
return new JsonResult<>(false, "TOKEN_NULL_CODE");
}
public JsonResult<List<StoreUser>> queryUserForAll() {
JsonResult<List<StoreUser>> jsonResult = new JsonResult<>();
StoreUser storeUser = new StoreUser();
storeUser.setDepartmentId(SessionUtils.getTechnicianToken().getDepartmentId());
......@@ -59,6 +55,19 @@ public class StoreTechnicianController {
return jsonResult;
}
@ApiOperation(value = "根据店铺查询美甲师")
@GetMapping("/customer/user/queryStoreUser")
public JsonResult<List<StoreUser>> queryStoreUser(@RequestParam(required = false) Integer departmentId) {
StoreUser storeUser = new StoreUser();
if (departmentId != null) {
storeUser.setDepartmentId(departmentId);
}
List<StoreUser> lists = storeUserService.listUserForAllNotQuit(storeUser);
return JsonResult.success(lists);
}
@ApiOperation(value = "美甲师根据code获取token")
@GetMapping(value = "/technician/xcx/login_t")
public JsonResult<String> technicianLogin(@RequestParam String code) {
......
......@@ -122,4 +122,7 @@ public class OrderServeDTO {
private BigDecimal leisurePrice;
private OwnProduce ownProduce;
@ApiModelProperty("是否自带款式 1-是 2-否")
private Integer isOwnProduce;
}
......@@ -137,4 +137,6 @@ public class ScheduleServeDTO implements Serializable {
private OwnProduce ownProduce;
@ApiModelProperty("是否自带款式 1-是 2-否")
private Integer isOwnProduce;
}
......@@ -8,6 +8,7 @@ import java.io.Serializable;
import java.util.List;
@Data
public class StoreTechnicianPeriod implements Serializable {
/**
......@@ -40,6 +41,10 @@ public class StoreTechnicianPeriod implements Serializable {
}
public StoreTechnicianPeriod() {
}
public StoreTechnicianPeriod(List<Period> periodList, StoreTechnician storeTechnician) {
this.periodList = periodList;
this.technicianId = storeTechnician.getId();
......
package com.gogirl.shared.product.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/6/12 5:55 下午
*/
@Data
public class ImportMallProductExcel {
@ExcelProperty("商品编码")
private String prodSysCode;
@ExcelProperty("售价")
private BigDecimal price;
@ExcelProperty("名称")
private String name;
@ExcelProperty("折扣价")
private BigDecimal bargainPrice;
}
package com.gogirl.shared.order;
package com.gogirl.shared.product.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
......
......@@ -31,8 +31,9 @@ import com.gogirl.domain.user.customer.CustomerBalanceRecord;
import com.gogirl.domain.xcx.GogirlToken;
import com.gogirl.domain.xcx.TimeNode;
import com.gogirl.domain.xcx.WeekConfig;
import com.gogirl.infrastructure.common.util.ExcelListener;
import com.gogirl.infrastructure.common.util.JsonUtilByFsJson;
import com.gogirl.infrastructure.excel.ExcelListener;
import com.gogirl.infrastructure.excel.MallProductExcelListener;
import com.gogirl.infrastructure.mapper.market.coupon.CouponCustomerRelevanceMapper;
import com.gogirl.infrastructure.mapper.market.discount.DiscountConfigMapper;
import com.gogirl.infrastructure.mapper.market.discount.LeisureDiscountConfigWeekMapper;
......@@ -40,6 +41,7 @@ import com.gogirl.infrastructure.mapper.market.timescard.TimesCardCustomerReleva
import com.gogirl.infrastructure.mapper.order.pay.OrderPayMapper;
import com.gogirl.infrastructure.mapper.order.serve.OrderManageMapper;
import com.gogirl.infrastructure.mapper.order.serve.OrderServeMapper;
import com.gogirl.infrastructure.mapper.product.mall.MallProductMapper;
import com.gogirl.infrastructure.mapper.product.purchase.PurchaseSkuMapper;
import com.gogirl.infrastructure.mapper.product.purchase.PurchaseStockMapper;
import com.gogirl.infrastructure.mapper.product.purchase.PurchaseStockRecordMapper;
......@@ -55,7 +57,8 @@ import com.gogirl.infrastructure.mapper.xcx.TimeNodeMapper;
import com.gogirl.infrastructure.mapper.xcx.WeekConfigMapper;
import com.gogirl.infrastructure.schedule.Schedule;
import com.gogirl.infrastructure.service.mail.MailService;
import com.gogirl.shared.order.ImportPurchaseSkuExcel;
import com.gogirl.shared.product.excel.ImportMallProductExcel;
import com.gogirl.shared.product.excel.ImportPurchaseSkuExcel;
import lombok.extern.slf4j.Slf4j;
import org.assertj.core.util.Lists;
import org.junit.runner.RunWith;
......@@ -687,6 +690,16 @@ public class Test {
EasyExcel.read(filePath, ImportPurchaseSkuExcel.class, new ExcelListener(purchaseSkuMapper)).sheet().doRead();
}
@Resource
MallProductMapper mallProductMapper;
@org.junit.Test
public void importMallProduct() {
String filePath = "/Users/huluobin/Library/Containers/com.tencent.WeWorkMac/Data/Library/Application Support/WXWork/Data/1688853793439460/Cache/File/2020-06/GOGIRL商城部分SKU价格更改2020.06.12.xlsx";
EasyExcel.read(filePath, ImportMallProductExcel.class, new MallProductExcelListener(mallProductMapper)).sheet().doRead();
}
@org.junit.Test
public void duplicateCouponFix() {
List<OrderManage> orderManageList = orderManageMapper.selectBatchIds(Lists.newArrayList("13711,13744,13766,13921".split(",")));
......
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