Commit bcc4b899 by huluobin

bug fix

parent 7b0c78b9
...@@ -31,4 +31,15 @@ public interface IChargeOrderService extends IService<ChargeOrder> { ...@@ -31,4 +31,15 @@ public interface IChargeOrderService extends IService<ChargeOrder> {
* @return * @return
*/ */
WxPayMpOrderResult customerChargeBalance(Integer chargeId) throws UnknownHostException, WxPayException; WxPayMpOrderResult customerChargeBalance(Integer chargeId) throws UnknownHostException, WxPayException;
/**
* 美甲师充值会员卡
* @param name
* @param phone
* @param amount
* @param source
* @param refereeId
* @param remark
*/
void chargeCustomerCard(String name, String phone, Double amount, Integer source, String refereeId, String remark);
} }
...@@ -7,7 +7,11 @@ import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; ...@@ -7,7 +7,11 @@ import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult; import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.exception.WxPayException;
import com.gogirl.application.market.CouponService;
import com.gogirl.application.market.DiscountConfigService;
import com.gogirl.application.order.member.IChargeOrderService; import com.gogirl.application.order.member.IChargeOrderService;
import com.gogirl.application.store.store.CustomerDepartmentRelevanceService;
import com.gogirl.application.user.customer.CustomerService;
import com.gogirl.domain.market.discount.DiscountConfig; import com.gogirl.domain.market.discount.DiscountConfig;
import com.gogirl.domain.order.member.ChargeOrder; import com.gogirl.domain.order.member.ChargeOrder;
import com.gogirl.domain.user.customer.Customer; import com.gogirl.domain.user.customer.Customer;
...@@ -24,7 +28,9 @@ import com.gogirl.infrastructure.mapper.user.customer.CustomerBalanceRecordMappe ...@@ -24,7 +28,9 @@ import com.gogirl.infrastructure.mapper.user.customer.CustomerBalanceRecordMappe
import com.gogirl.infrastructure.mapper.user.customer.CustomerMapper; import com.gogirl.infrastructure.mapper.user.customer.CustomerMapper;
import com.gogirl.infrastructure.util.SessionUtils; import com.gogirl.infrastructure.util.SessionUtils;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
...@@ -42,6 +48,8 @@ import java.util.Date; ...@@ -42,6 +48,8 @@ import java.util.Date;
*/ */
@Service @Service
@AllArgsConstructor @AllArgsConstructor
@Transactional
@Slf4j
public class ChargeOrderServiceImpl extends ServiceImpl<ChargeOrderMapper, ChargeOrder> implements IChargeOrderService { public class ChargeOrderServiceImpl extends ServiceImpl<ChargeOrderMapper, ChargeOrder> implements IChargeOrderService {
private final CustomerMapper customerMapper; private final CustomerMapper customerMapper;
...@@ -49,6 +57,7 @@ public class ChargeOrderServiceImpl extends ServiceImpl<ChargeOrderMapper, Charg ...@@ -49,6 +57,7 @@ public class ChargeOrderServiceImpl extends ServiceImpl<ChargeOrderMapper, Charg
private final CustomerBalanceMapper customerBalanceMapper; private final CustomerBalanceMapper customerBalanceMapper;
private final CustomerBalanceRecordMapper customerBalanceRecordMapper; private final CustomerBalanceRecordMapper customerBalanceRecordMapper;
private final CouponService couponService;
@Override @Override
public void notifyChargeOrder(WxPayOrderNotifyResult result) { public void notifyChargeOrder(WxPayOrderNotifyResult result) {
...@@ -57,6 +66,7 @@ public class ChargeOrderServiceImpl extends ServiceImpl<ChargeOrderMapper, Charg ...@@ -57,6 +66,7 @@ public class ChargeOrderServiceImpl extends ServiceImpl<ChargeOrderMapper, Charg
throw new RRException(); throw new RRException();
} }
Customer customer = customerMapper.selectOne(new LambdaQueryWrapper<Customer>().eq(Customer::getOpenid1, result.getOpenid())); Customer customer = customerMapper.selectOne(new LambdaQueryWrapper<Customer>().eq(Customer::getOpenid1, result.getOpenid()));
CustomerBalance customerBalance = customerBalanceMapper.selectOne(new LambdaQueryWrapper<CustomerBalance>().eq(CustomerBalance::getCustomerId, customer.getId())); CustomerBalance customerBalance = customerBalanceMapper.selectOne(new LambdaQueryWrapper<CustomerBalance>().eq(CustomerBalance::getCustomerId, customer.getId()));
...@@ -65,6 +75,9 @@ public class ChargeOrderServiceImpl extends ServiceImpl<ChargeOrderMapper, Charg ...@@ -65,6 +75,9 @@ public class ChargeOrderServiceImpl extends ServiceImpl<ChargeOrderMapper, Charg
.stream().filter(config -> config.getChargeAmount() <= result.getTotalFee()) .stream().filter(config -> config.getChargeAmount() <= result.getTotalFee())
.max(Comparator.comparing(DiscountConfig::getChargeAmount)).orElseThrow(RRException::new); .max(Comparator.comparing(DiscountConfig::getChargeAmount)).orElseThrow(RRException::new);
couponService.sendCoupon(discountConfig.getCouponId(), customer.getId());
//首次充值 //首次充值
if (customerBalance == null || customerBalance.getBalance() == 0) { if (customerBalance == null || customerBalance.getBalance() == 0) {
customerBalance = CustomerBalance.builder() customerBalance = CustomerBalance.builder()
...@@ -175,4 +188,84 @@ public class ChargeOrderServiceImpl extends ServiceImpl<ChargeOrderMapper, Charg ...@@ -175,4 +188,84 @@ public class ChargeOrderServiceImpl extends ServiceImpl<ChargeOrderMapper, Charg
WxPayMpOrderResult result = wxPayControllerFeign.createJsapiOrder(request); WxPayMpOrderResult result = wxPayControllerFeign.createJsapiOrder(request);
return result; return result;
} }
private final CustomerService customerService;
private final CustomerDepartmentRelevanceService customerDepartmentRelevanceService;
private final DiscountConfigService discountConfigService;
@Override
public void chargeCustomerCard(String name, String phone, Double amount, Integer source, String refereeId, String remark) {
Customer customer = customerService.selectByPhone(phone);
GogirlToken gogirlToken = SessionUtils.getTechnicianToken();
Integer departmentId = gogirlToken.getDepartmentId();
log.info("{} 充值给 {}", gogirlToken.getTechnicianId(), phone);
//新建会员
if (customer == null) {
customer = new Customer();
customer.setStoreRecordRealName(name);
customer.setPhone(phone);
customerService.save(customer);
}
//更新会员的店员记录名字
else if (name != null && !name.isEmpty()) {
customer.setStoreRecordRealName(name);
customerService.updateById(customer);
}
//店铺会员关联
customerDepartmentRelevanceService.insertDepartmentRelevanceIfNotExist(customer.getId(), departmentId, 4, new Date());
//折扣信息
DiscountConfig discountConfig = discountConfigService.selectByCharge((int) (amount * 100));
//会员卡
CustomerBalance customerBalance = customerBalanceMapper.selectOne(new LambdaQueryWrapper<CustomerBalance>()
.eq(CustomerBalance::getCustomerId, customer.getId()));
//充值类型
Integer type = customerBalance == null ? 2 : 1;
//如果会员卡不存在就新增会员卡
if (customerBalance == null) {
customerBalance = CustomerBalance.getInstance(customer.getId());
customerBalanceMapper.insert(customerBalance);
}
int chargeAmount = (int) (amount * 100);
//充值订单id
String orderId = IdWorker.getIdStr();
//更新余额
customerBalance.setBalance(customerBalance.getBalance() + chargeAmount);
customerBalance.setTotalCharge(customerBalance.getTotalCharge() + chargeAmount);
customerBalance.setUpdateTime(new Date());
//会员等级
customerBalance.setLevel(discountConfig.getLevel());
customerBalanceMapper.updateById(customerBalance);
//充值流水
CustomerBalanceRecord customerBalanceRecord = CustomerBalanceRecord.builder()
.currentBalance(customerBalance.getBalance())
.customerId(customer.getId())
//充送金额由定时任务计算
.bestowAmount(0)
.departmentId(gogirlToken.getDepartmentId())
.departmentName(gogirlToken.getDepartmentName())
.discount(1d)
.orderAmount(chargeAmount)
.orderId(orderId)
//支付方式
.source(source)
.refereeId(refereeId)
.remark(remark)
//订单类型
.type(type)
.time(new Date())
.build();
customerBalanceRecordMapper.insert(customerBalanceRecord);
}
} }
...@@ -13,7 +13,7 @@ import com.gogirl.shared.order.serve.command.schedule.CancelScheduleCommand; ...@@ -13,7 +13,7 @@ import com.gogirl.shared.order.serve.command.schedule.CancelScheduleCommand;
import com.gogirl.shared.order.serve.command.schedule.SubmitScheduleCommand; import com.gogirl.shared.order.serve.command.schedule.SubmitScheduleCommand;
import com.gogirl.shared.order.serve.command.schedule.UpdateScheduleCommand; import com.gogirl.shared.order.serve.command.schedule.UpdateScheduleCommand;
import com.gogirl.shared.order.serve.query.dto.IdleTimeDTO; import com.gogirl.shared.order.serve.query.dto.IdleTimeDTO;
import com.gogirl.shared.order.serve.query.qry.StoreTechnicianQuery; import com.gogirl.shared.order.serve.query.qry.StoreTechnicianPeriod;
import com.gogirl.shared.order.serve.query.qry.schedule.ScheduleManagePageQuery; import com.gogirl.shared.order.serve.query.qry.schedule.ScheduleManagePageQuery;
import java.text.ParseException; import java.text.ParseException;
...@@ -151,7 +151,17 @@ public interface ScheduleManageService extends IService<ScheduleManage> { ...@@ -151,7 +151,17 @@ public interface ScheduleManageService extends IService<ScheduleManage> {
*/ */
IPage<LeisureScheduleServe> queryPageLeisureScheduleServe(LeisureScheduleServeQuery query); IPage<LeisureScheduleServe> queryPageLeisureScheduleServe(LeisureScheduleServeQuery query);
List<StoreTechnicianQuery> storeTechnicianQueryList(Integer scheduledId, /**
* 查询美甲师不可用时间段
*
* @param scheduledId 是否必传 否
* @param departmentId 店铺id
* @param scheduleDate localData
* @param serveIdList 预约的服务id
* @return
* @throws ParseException
*/
List<StoreTechnicianPeriod> queryStoreTechnicianPeriod(Integer scheduledId,
Integer departmentId, Integer departmentId,
String scheduleDate, String scheduleDate,
List<Integer> serveIdList) throws ParseException; List<Integer> serveIdList) throws ParseException;
......
...@@ -8,6 +8,7 @@ import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; ...@@ -8,6 +8,7 @@ import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.gogirl.application.market.CouponCustomerRelevanceService; import com.gogirl.application.market.CouponCustomerRelevanceService;
import com.gogirl.application.market.CouponService;
import com.gogirl.application.market.MarketService; import com.gogirl.application.market.MarketService;
import com.gogirl.application.market.TimesCardUsedRecordService; import com.gogirl.application.market.TimesCardUsedRecordService;
import com.gogirl.application.order.serve.OrderManageService; import com.gogirl.application.order.serve.OrderManageService;
...@@ -16,6 +17,7 @@ import com.gogirl.application.order.serve.OrderServeSkuService; ...@@ -16,6 +17,7 @@ import com.gogirl.application.order.serve.OrderServeSkuService;
import com.gogirl.application.user.customer.CustomerBalanceService; import com.gogirl.application.user.customer.CustomerBalanceService;
import com.gogirl.application.user.customer.CustomerService; import com.gogirl.application.user.customer.CustomerService;
import com.gogirl.application.xcx.GogirlTokenService; import com.gogirl.application.xcx.GogirlTokenService;
import com.gogirl.domain.market.coupon.Coupon;
import com.gogirl.domain.market.coupon.CouponCustomerRelevance; import com.gogirl.domain.market.coupon.CouponCustomerRelevance;
import com.gogirl.domain.market.timescard.TimesCardUsedRecord; import com.gogirl.domain.market.timescard.TimesCardUsedRecord;
import com.gogirl.domain.order.serve.*; import com.gogirl.domain.order.serve.*;
...@@ -316,8 +318,10 @@ public class OrderManageServiceImpl extends ServiceImpl<OrderManageMapper, Order ...@@ -316,8 +318,10 @@ public class OrderManageServiceImpl extends ServiceImpl<OrderManageMapper, Order
orderManage.setScheduleManage(list.stream().findAny().orElse(null)); orderManage.setScheduleManage(list.stream().findAny().orElse(null));
} }
orderManage.getListOrderServer().forEach(orderServe -> { orderManage.getListOrderServer().forEach(orderServe -> {
if(orderServe.getEndTime()!=null && orderServe.getStartTime()!=null){
orderServe.setActualServeDuration((int) (orderServe.getEndTime().getTime() - orderServe.setActualServeDuration((int) (orderServe.getEndTime().getTime() -
orderServe.getStartTime().getTime()) / 1000 / 60); orderServe.getStartTime().getTime()) / 1000 / 60);
}
}); });
}); });
...@@ -435,6 +439,8 @@ public class OrderManageServiceImpl extends ServiceImpl<OrderManageMapper, Order ...@@ -435,6 +439,8 @@ public class OrderManageServiceImpl extends ServiceImpl<OrderManageMapper, Order
} }
private final CouponService couponService;
@Override @Override
public void recordOrderData(Integer orderId, String remark, String userFeedback, String picturePath, String afterSaleIsBuyCard, String afterSaleBuyCardReason) { public void recordOrderData(Integer orderId, String remark, String userFeedback, String picturePath, String afterSaleIsBuyCard, String afterSaleBuyCardReason) {
...@@ -606,6 +612,17 @@ public class OrderManageServiceImpl extends ServiceImpl<OrderManageMapper, Order ...@@ -606,6 +612,17 @@ public class OrderManageServiceImpl extends ServiceImpl<OrderManageMapper, Order
orderManage.setStatus(OrderManage.STATUS_FINISHED); orderManage.setStatus(OrderManage.STATUS_FINISHED);
//订单已完成 //订单已完成
orderManageMapper.updateById(orderManage); orderManageMapper.updateById(orderManage);
//如果全部项评论了
if (orderServeList.stream().noneMatch(orderServe -> orderServe.getCommentStatus().equals(OrderServe.COMMENT_STATUS_NO))) {
orderManage.setStatus(OrderManage.STATUS_FINISHED);
Coupon coupon = couponService.getOne(new LambdaQueryWrapper<Coupon>().eq(Coupon::getName, "评价礼券"));
if (coupon != null) {
couponService.sendCoupon(coupon.getId(), orderManage.getOrderUser());
}
orderManageMapper.updateById(orderManage);
}
return orderServeList; return orderServeList;
} }
......
...@@ -90,11 +90,6 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -90,11 +90,6 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
/** /**
* rpc service * rpc service
*/ */
// private final ScheduleManageControllerFeign scheduleManageControllerFeign;
// private final PurchaseSkuControllerFeign purchaseSkuControllerFeign;
// private final ServeControllerFeign serveControllerFeign;
// private final StoreManageControllerFeign storeManageControllerFeign;
// private final StoreTechnicianControllerFeign storeTechnicianControllerFeign;
private final GogirlProperties gogirlProperties; private final GogirlProperties gogirlProperties;
private final ScheduleManageMapper scheduleManageMapper; private final ScheduleManageMapper scheduleManageMapper;
...@@ -103,7 +98,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -103,7 +98,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
private final BaseProduceMapper baseProduceMapper; private final BaseProduceMapper baseProduceMapper;
@Override @Override
public List<StoreTechnicianQuery> storeTechnicianQueryList(Integer scheduledId, public List<StoreTechnicianPeriod> queryStoreTechnicianPeriod(Integer scheduledId,
Integer departmentId, Integer departmentId,
String scheduleDate, String scheduleDate,
List<Integer> serveIdList) throws ParseException { List<Integer> serveIdList) throws ParseException {
...@@ -123,30 +118,18 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -123,30 +118,18 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
// List<StoreTechnicianPeriod> storeTechnicianPeriodList = new ArrayList<>();
List<StoreTechnicianQuery> storeTechnicianDTOList = new ArrayList<>();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//遍历美甲师排班 获取每个美甲师的不可用时间段 //遍历美甲师排班 获取每个美甲师的不可用时间段
for (StoreClassesTechnician storeClassesTechnician : storeClassesTechnicianList) { for (StoreClassesTechnician storeClassesTechnician : storeClassesTechnicianList) {
//美甲师正在服务的时间为不可用时间
List<ScheduleServe> scheduleServeList = storeClassesTechnician.getListScheduleServe();
List<Period> periodList = scheduleServeList.stream()
.map(scheduleServe -> new Period(scheduleServe.getStartTime().getTime(), scheduleServe.getEndTime().getTime()))
.collect(Collectors.toList());
//一天开始的时间 //一天开始的时间
long dayStartTime = simpleDateFormat.parse(scheduleDate + " 00:00:00").getTime(); long dayStartTime = simpleDateFormat.parse(scheduleDate + " 00:00:00").getTime();
//一天结束的时间 //一天结束的时间
long dayEndTime = simpleDateFormat.parse(scheduleDate + " 23:59:59").getTime(); long dayEndTime = simpleDateFormat.parse(scheduleDate + " 23:59:59").getTime();
//当前时间之前不可用
Period period2 = new Period(dayStartTime, System.currentTimeMillis());
periodList.add(period2);
//上班开始时间str //上班开始时间str
String startTime = storeClassesTechnician.getClassesManage().getStartTime().toString(); String startTime = storeClassesTechnician.getClassesManage().getStartTime().toString();
//上班结束时间str //上班结束时间str
...@@ -157,9 +140,25 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -157,9 +140,25 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
//上班结束时间 //上班结束时间
long workEndTime = simpleDateFormat.parse(scheduleDate + " " + endTime).getTime(); long workEndTime = simpleDateFormat.parse(scheduleDate + " " + endTime).getTime();
//最晚可预约时间
String latestScheduledTime = storeClassesTechnician.getClassesManage().getLatestScheduledTime().toString(); String latestScheduledTime = storeClassesTechnician.getClassesManage().getLatestScheduledTime().toString();
//美甲师正在服务的时间为不可用时间
List<ScheduleServe> scheduleServeList = storeClassesTechnician.getListScheduleServe();
//正在服务时间不可用
List<Period> periodList = scheduleServeList.stream()
.map(scheduleServe -> new Period(scheduleServe.getStartTime().getTime(), scheduleServe.getEndTime().getTime()))
.collect(Collectors.toList());
//当前时间之前不可用
Period period2 = new Period(dayStartTime, System.currentTimeMillis());
periodList.add(period2);
//最晚可预约时间
if (StringUtils.isNotEmpty(latestScheduledTime) if (StringUtils.isNotEmpty(latestScheduledTime)
&& storeClassesTechnician.getClassesManage().getLatestScheduledTimeEnable() == 1) { && storeClassesTechnician.getClassesManage().getLatestScheduledTimeEnable() == 1) {
long latestScheduledTimeMills = simpleDateFormat.parse(scheduleDate + " " + latestScheduledTime).getTime(); long latestScheduledTimeMills = simpleDateFormat.parse(scheduleDate + " " + latestScheduledTime).getTime();
...@@ -191,27 +190,31 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -191,27 +190,31 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
} }
StoreTechnician storeTechnician = storeClassesTechnician.getTechnicianManage(); StoreTechnician storeTechnician = storeClassesTechnician.getTechnicianManage();
StoreTechnicianQuery storeTechnicianDTO = new StoreTechnicianQuery( StoreTechnicianPeriod storeTechnicianDTO = new StoreTechnicianPeriod(
periodList, periodList,
storeTechnician.getId(), storeTechnician.getId(),
storeTechnician.getName(), storeTechnician.getName(),
storeTechnician.getPicturePath(), storeTechnician.getPicturePath(),
storeTechnician.getGrade() storeTechnician.getGrade()
); );
storeTechnicianDTOList.add(storeTechnicianDTO); storeTechnicianPeriodList.add(storeTechnicianDTO);
} }
return storeTechnicianDTOList;
return storeTechnicianPeriodList;
} }
@Override @Override
public List<StoreTechnician> queryLeisureTechnician(Integer departmentId, Integer serveId, LocalDateTime serveStartTime, LocalDateTime serveEndTime) throws ParseException { public List<StoreTechnician> queryLeisureTechnician(Integer departmentId,
List<StoreTechnicianQuery> storeTechnicianQueryList = this.storeTechnicianQueryList(null, departmentId, serveStartTime.toLocalDate().toString(), Lists.newArrayList(serveId)); Integer serveId,
LocalDateTime serveStartTime,
LocalDateTime serveEndTime) throws ParseException {
List<StoreTechnicianPeriod> storeTechnicianPeriodList = this.queryStoreTechnicianPeriod(null, departmentId, serveStartTime.toLocalDate().toString(), Lists.newArrayList(serveId));
Period servePeriod = new Period(serveStartTime.toInstant(ZoneOffset.of("+8")).toEpochMilli(), Period servePeriod = new Period(serveStartTime.toInstant(ZoneOffset.of("+8")).toEpochMilli(),
serveEndTime.toInstant(ZoneOffset.of("+8")).toEpochMilli()); serveEndTime.toInstant(ZoneOffset.of("+8")).toEpochMilli());
List<Integer> technicianIds = storeTechnicianQueryList.stream().filter(storeTechnicianQuery -> List<Integer> technicianIds = storeTechnicianPeriodList.stream().filter(storeTechnicianPeriod ->
!storeTechnicianQuery.getPeriodList().stream().map(period -> period.conflict(servePeriod)) !storeTechnicianPeriod.getPeriodList().stream().map(period -> period.conflict(servePeriod))
.collect(Collectors.toList()).contains(true)) .collect(Collectors.toList()).contains(true))
.map(StoreTechnicianQuery::getTechnicianId) .map(StoreTechnicianPeriod::getTechnicianId)
.collect(Collectors.toList()); .collect(Collectors.toList());
if (ListUtil.isNotEmpty(technicianIds)) { if (ListUtil.isNotEmpty(technicianIds)) {
return storeTechnicianMapper.selectBatchIds(technicianIds); return storeTechnicianMapper.selectBatchIds(technicianIds);
...@@ -227,7 +230,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -227,7 +230,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<StoreTechnicianQuery> storeTechnicianDTOList = this.storeTechnicianQueryList(qry.getId(), qry.getDepartmentId(), qry.getScheduleDate(), qry.getListScheduleServer().stream().map(ScheduleServe::getServeId).collect(Collectors.toList())); List<StoreTechnicianPeriod> storeTechnicianDTOList = this.queryStoreTechnicianPeriod(qry.getId(), qry.getDepartmentId(), qry.getScheduleDate(), qry.getListScheduleServer().stream().map(ScheduleServe::getServeId).collect(Collectors.toList()));
idleTimeQuery.setStoreTechnicianDTOList(storeTechnicianDTOList); idleTimeQuery.setStoreTechnicianDTOList(storeTechnicianDTOList);
...@@ -302,7 +305,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -302,7 +305,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
List<ScheduleServeQuery> cloneMainServeDTOList = mainServeDTOList.stream().map(CloneUtil::deepClone).collect(Collectors.toList()); List<ScheduleServeQuery> cloneMainServeDTOList = mainServeDTOList.stream().map(CloneUtil::deepClone).collect(Collectors.toList());
//美甲师深度克隆 //美甲师深度克隆
List<StoreTechnicianQuery> cloneStoreTechnicianDTOList = idleTimeQuery.getStoreTechnicianDTOList().stream().map(CloneUtil::deepClone).collect(Collectors.toList()); List<StoreTechnicianPeriod> cloneStoreTechnicianDTOList = idleTimeQuery.getStoreTechnicianDTOList().stream().map(CloneUtil::deepClone).collect(Collectors.toList());
//构造预约方案树🌲 //构造预约方案树🌲
TreeProgram treeProgram = this.rec(new LinkedList<>(cloneMainServeDTOList), cloneStoreTechnicianDTOList, TreeProgram.root()); TreeProgram treeProgram = this.rec(new LinkedList<>(cloneMainServeDTOList), cloneStoreTechnicianDTOList, TreeProgram.root());
...@@ -362,7 +365,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -362,7 +365,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
} }
private TreeProgram rec(Queue<ScheduleServeQuery> scheduleServeQueryList, private TreeProgram rec(Queue<ScheduleServeQuery> scheduleServeQueryList,
List<StoreTechnicianQuery> storeTechnicians, List<StoreTechnicianPeriod> storeTechnicians,
TreeProgram parent) { TreeProgram parent) {
long time = System.currentTimeMillis(); long time = System.currentTimeMillis();
...@@ -387,7 +390,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -387,7 +390,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
TreeProgram t = CloneUtil.deepClone(parent); TreeProgram t = CloneUtil.deepClone(parent);
List<StoreTechnicianQuery> treeProgramList = Lists.newArrayList(); List<StoreTechnicianPeriod> treeProgramList = Lists.newArrayList();
while (t != null && t.getParent() != null) { while (t != null && t.getParent() != null) {
if (t.getStoreTechnicianDTO() != null) { if (t.getStoreTechnicianDTO() != null) {
...@@ -395,7 +398,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -395,7 +398,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
} }
t = t.getParent(); t = t.getParent();
} }
List<Integer> technicianIds = treeProgramList.stream().map(StoreTechnicianQuery::getTechnicianId).collect(Collectors.toList()); List<Integer> technicianIds = treeProgramList.stream().map(StoreTechnicianPeriod::getTechnicianId).collect(Collectors.toList());
Integer technicianId = storeTechnician.getTechnicianId(); Integer technicianId = storeTechnician.getTechnicianId();
log.info("technicianIds:{},technicianId:{}", technicianIds, technicianId); log.info("technicianIds:{},technicianId:{}", technicianIds, technicianId);
...@@ -447,7 +450,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -447,7 +450,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
private boolean test(List<TreeProgram> path) { private boolean test(List<TreeProgram> path) {
Map<StoreTechnicianQuery, List<TreeProgram>> map = path.stream() Map<StoreTechnicianPeriod, List<TreeProgram>> map = path.stream()
.collect(Collectors.groupingBy(TreeProgram::getStoreTechnicianDTO)); .collect(Collectors.groupingBy(TreeProgram::getStoreTechnicianDTO));
List<TreeProgram> treePrograms = map.values().stream() List<TreeProgram> treePrograms = map.values().stream()
...@@ -471,7 +474,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -471,7 +474,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
boolean bool = true; boolean bool = true;
for (TreeProgram treeProgram : treePrograms) { for (TreeProgram treeProgram : treePrograms) {
StoreTechnicianQuery storeTechnician = treeProgram.getStoreTechnicianDTO(); StoreTechnicianPeriod storeTechnician = treeProgram.getStoreTechnicianDTO();
ScheduleServeQuery scheduleServeQuery = treeProgram.getScheduleServeQuery(); ScheduleServeQuery scheduleServeQuery = treeProgram.getScheduleServeQuery();
for (Period period : storeTechnician.getPeriodList()) { for (Period period : storeTechnician.getPeriodList()) {
...@@ -526,7 +529,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -526,7 +529,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
return Lists.newArrayList(); return Lists.newArrayList();
} }
List<StoreTechnicianQuery> storeTechnicianQueryList = this.storeTechnicianQueryList(null, departmentId, scheduleDate, null); List<StoreTechnicianPeriod> storeTechnicianPeriodList = this.queryStoreTechnicianPeriod(null, departmentId, scheduleDate, null);
int finalWeekday = weekday; int finalWeekday = weekday;
List<IdleTimeDTO> result = dateTimeList.stream() List<IdleTimeDTO> result = dateTimeList.stream()
...@@ -537,17 +540,17 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -537,17 +540,17 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
List<LeisureTechServe> leisureTechServeList = new ArrayList<>(); List<LeisureTechServe> leisureTechServeList = new ArrayList<>();
List<BaseServe> list = leisureDiscountConfigMapper.selectByDepartmentIdAndWeekAndDateTime(departmentId, finalWeekday, idleTimeDTO.getTime()); List<BaseServe> list = leisureDiscountConfigMapper.selectByDepartmentIdAndWeekAndDateTime(departmentId, finalWeekday, idleTimeDTO.getTime());
storeTechnicianQueryList.forEach(storeTechnicianQuery -> { storeTechnicianPeriodList.forEach(storeTechnicianPeriod -> {
List<BaseServe> canScheduledServeList = list.stream() List<BaseServe> canScheduledServeList = list.stream()
.filter(baseServe -> { .filter(baseServe -> {
Period servePeriod = new Period(dateTime, dateTime + baseServe.getServiceDuration() * 60L * 1000); Period servePeriod = new Period(dateTime, dateTime + baseServe.getServiceDuration() * 60L * 1000);
//如果和美甲师空闲列表冲突 返回false过滤 //如果和美甲师空闲列表冲突 返回false过滤
boolean b = storeTechnicianQuery.getPeriodList().stream().map(period -> period.conflict(servePeriod)).collect(Collectors.toList()).contains(true); boolean b = storeTechnicianPeriod.getPeriodList().stream().map(period -> period.conflict(servePeriod)).collect(Collectors.toList()).contains(true);
return !b; return !b;
}) })
.collect(Collectors.toList()); .collect(Collectors.toList());
canScheduledServeList.forEach(canScheduledServe -> { canScheduledServeList.forEach(canScheduledServe -> {
this.addLeisureTechServe(leisureTechServeList, storeTechnicianQuery.getTechnicianId(), canScheduledServe.getId()); this.addLeisureTechServe(leisureTechServeList, storeTechnicianPeriod.getTechnicianId(), canScheduledServe.getId());
}); });
}); });
idleTimeDTO.setIsLeisureDiscount(1); idleTimeDTO.setIsLeisureDiscount(1);
...@@ -617,7 +620,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -617,7 +620,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
if (!scheduleServeSet.stream().map(ScheduleServe::getStatus).map(stats -> stats == 3).collect(Collectors.toList()).contains(false)) { if (!scheduleServeSet.stream().map(ScheduleServe::getStatus).map(stats -> stats == 3).collect(Collectors.toList()).contains(false)) {
if (!scheduleManage.getStatus().equals(8) || scheduleManage.getStatus() != 3) { if (!scheduleManage.getStatus().equals(8) && scheduleManage.getStatus() != 3) {
throw new RRException("重复请求"); throw new RRException("重复请求");
} }
...@@ -902,14 +905,10 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -902,14 +905,10 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
latestOfDayString; latestOfDayString;
} }
@Override private void validSubmit(SubmitScheduleCommand cmd) {
public void submitSchedule(SubmitScheduleCommand cmd) {
ScheduleManageCommand scheduleManageDTO = cmd.getScheduleManageDTO(); ScheduleManageCommand scheduleManageDTO = cmd.getScheduleManageDTO();
cmd.getScheduleManageDTO().getScheduleServeDTOList().forEach(scheduleServeCommand -> { cmd.getScheduleManageDTO().getScheduleServeDTOList().forEach(scheduleServeCommand -> {
if (scheduleServeCommand.getMainServeId() == null) { if (scheduleServeCommand.getMainServeId() == null) {
BaseServe baseServe = baseServeMapper.selectById(scheduleServeCommand.getServeId()); BaseServe baseServe = baseServeMapper.selectById(scheduleServeCommand.getServeId());
List<ScheduleServe> typeConflictScheduleServe = scheduleServeMapper.selectConflictType( List<ScheduleServe> typeConflictScheduleServe = scheduleServeMapper.selectConflictType(
...@@ -919,14 +918,12 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -919,14 +918,12 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
} }
} }
}); });
}
this.setScheduleServe(cmd.getScheduleManageDTO(), cmd.getDefaultNodeList()); private String getScheduleNo(Integer deparmentId) {
ScheduleManageCommand scheduleManageCommand = cmd.getScheduleManageDTO();
//调用店铺服务根据id查询店铺 //调用店铺服务根据id查询店铺
StoreManage storeManage = storeManageMapper.selectById(deparmentId);
StoreManage storeManage = storeManageMapper.selectById(scheduleManageCommand.getDepartmentId());
//生成预约单号 //生成预约单号
String shortCode = storeManage.getShortCode(); String shortCode = storeManage.getShortCode();
...@@ -943,8 +940,23 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -943,8 +940,23 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
else { else {
lastOfDayString = String.format("%04d", (Integer.parseInt(lastOfDay.getScheduledNo().substring(lastOfDay.getScheduledNo().length() - 4)) + 1)); lastOfDayString = String.format("%04d", (Integer.parseInt(lastOfDay.getScheduledNo().substring(lastOfDay.getScheduledNo().length() - 4)) + 1));
} }
return shortCode + day + lastOfDayString;
}
scheduleManageCommand.setScheduledNo(shortCode + day + lastOfDayString); @Override
public void submitSchedule(SubmitScheduleCommand cmd) {
this.validSubmit(cmd);
//预约服务补充
this.setScheduleServe(cmd.getScheduleManageDTO(), cmd.getDefaultNodeList());
ScheduleManageCommand scheduleManageCommand = cmd.getScheduleManageDTO();
StoreManage storeManage = storeManageMapper.selectById(scheduleManageCommand.getDepartmentId());
//获取预约号
String scheduleNo = this.getScheduleNo(storeManage.getId());
scheduleManageCommand.setScheduledNo(scheduleNo);
Customer customer = customerService.getById(scheduleManageCommand.getScheduledUser()); Customer customer = customerService.getById(scheduleManageCommand.getScheduledUser());
...@@ -966,8 +978,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -966,8 +978,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
//设置服务店铺名称 //设置服务店铺名称
scheduleManageCommand.setDepartmentName(storeManage.getName()); scheduleManageCommand.setDepartmentName(storeManage.getName());
//预约服务
this.setSeverProduce(scheduleManageCommand);
scheduleManageCommand.getScheduleServeDTOList().forEach(scheduleServeCommand -> { scheduleManageCommand.getScheduleServeDTOList().forEach(scheduleServeCommand -> {
scheduleServeCommand.setTechnicianIds(String.valueOf(scheduleServeCommand.getTechnicianId())); scheduleServeCommand.setTechnicianIds(String.valueOf(scheduleServeCommand.getTechnicianId()));
scheduleServeCommand.setTechnicianNames(scheduleServeCommand.getTechnicianName()); scheduleServeCommand.setTechnicianNames(scheduleServeCommand.getTechnicianName());
...@@ -1496,7 +1507,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -1496,7 +1507,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
wrapper.orderByDesc(ScheduleManage::getArriveTime); wrapper.orderByDesc(ScheduleManage::getArriveTime);
} }
IPage<ScheduleManage> page = new Page<>(); IPage<ScheduleManage> page = new Page<>(qry.getPageNum(), qry.getPageSize());
page = scheduleManageMapper.selectPage(page, wrapper); page = scheduleManageMapper.selectPage(page, wrapper);
if (ListUtil.isEmpty(page.getRecords())) { if (ListUtil.isEmpty(page.getRecords())) {
...@@ -1597,12 +1608,12 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -1597,12 +1608,12 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
|| defaultNode.getScheduleServeQuery().getServeId().equals(scheduleServe.getMainServeId())) || defaultNode.getScheduleServeQuery().getServeId().equals(scheduleServe.getMainServeId()))
.forEach(scheduleServeCommand -> { .forEach(scheduleServeCommand -> {
ScheduleServeQuery scheduleServeQuery = defaultNode.getScheduleServeQuery(); ScheduleServeQuery scheduleServeQuery = defaultNode.getScheduleServeQuery();
StoreTechnicianQuery storeTechnicianQuery = defaultNode.getStoreTechnicianDTO(); StoreTechnicianPeriod storeTechnicianPeriod = defaultNode.getStoreTechnicianDTO();
Period schedulePeriod = scheduleServeQuery.getPeriod(); Period schedulePeriod = scheduleServeQuery.getPeriod();
scheduleServeCommand.setStartTime(new Date(schedulePeriod.getStartTime())); scheduleServeCommand.setStartTime(new Date(schedulePeriod.getStartTime()));
scheduleServeCommand.setEndTime(new Date(schedulePeriod.getEndTime())); scheduleServeCommand.setEndTime(new Date(schedulePeriod.getEndTime()));
scheduleServeCommand.setTechnicianId(storeTechnicianQuery.getTechnicianId()); scheduleServeCommand.setTechnicianId(storeTechnicianPeriod.getTechnicianId());
scheduleServeCommand.setServeNumber(1); scheduleServeCommand.setServeNumber(1);
}); });
}); });
......
...@@ -10,6 +10,7 @@ import com.gogirl.domain.product.serve.BaseFeatures; ...@@ -10,6 +10,7 @@ import com.gogirl.domain.product.serve.BaseFeatures;
import com.gogirl.domain.product.serve.BaseProduce; import com.gogirl.domain.product.serve.BaseProduce;
import com.gogirl.domain.product.serve.PraiseRecord; import com.gogirl.domain.product.serve.PraiseRecord;
import com.gogirl.infrastructure.common.exception.RRException; import com.gogirl.infrastructure.common.exception.RRException;
import com.gogirl.infrastructure.common.util.ListUtil;
import com.gogirl.infrastructure.mapper.product.serve.BaseFeaturesMapper; import com.gogirl.infrastructure.mapper.product.serve.BaseFeaturesMapper;
import com.gogirl.infrastructure.mapper.product.serve.BaseProduceMapper; import com.gogirl.infrastructure.mapper.product.serve.BaseProduceMapper;
import com.gogirl.infrastructure.mapper.product.serve.PraiseRecordMapper; import com.gogirl.infrastructure.mapper.product.serve.PraiseRecordMapper;
...@@ -19,6 +20,8 @@ import org.springframework.stereotype.Service; ...@@ -19,6 +20,8 @@ import org.springframework.stereotype.Service;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service @Service
...@@ -52,6 +55,21 @@ public class BaseProduceServiceImpl extends ServiceImpl<BaseProduceMapper, BaseP ...@@ -52,6 +55,21 @@ public class BaseProduceServiceImpl extends ServiceImpl<BaseProduceMapper, BaseP
//排序条件 1-saleNum 2-index_sort //排序条件 1-saleNum 2-index_sort
Integer sort = baseFeatures != null && baseFeatures.getName().equals("热销款") ? 1 : 2; Integer sort = baseFeatures != null && baseFeatures.getName().equals("热销款") ? 1 : 2;
page = baseProduceMapper.queryProducePage(page, featuresId, serveTypeId, sort); page = baseProduceMapper.queryProducePage(page, featuresId, serveTypeId, sort);
List<Integer> produceIds = page.getRecords().stream().map(BaseProduce::getId).collect(Collectors.toList());
List<PraiseRecord> praiseRecordList = praiseRecordMapper.selectList(new LambdaQueryWrapper<PraiseRecord>()
.in(PraiseRecord::getServeId, produceIds)
.eq(PraiseRecord::getType, 2));
Map<Integer, List<PraiseRecord>> map = praiseRecordList.stream().collect(Collectors.groupingBy(PraiseRecord::getServeId));
page.getRecords().forEach(baseProduce -> {
List<PraiseRecord> mapPraiseRecordList = map.get(baseProduce.getId());
if (ListUtil.isNotEmpty(mapPraiseRecordList)) {
baseProduce.setPraiseRecord(mapPraiseRecordList.stream().findAny().orElse(null));
} else {
baseProduce.setPraiseRecord(new PraiseRecord());
}
});
return page; return page;
} }
......
...@@ -25,7 +25,7 @@ public interface StoreClassesTechnicianService extends IService<StoreClassesTech ...@@ -25,7 +25,7 @@ public interface StoreClassesTechnicianService extends IService<StoreClassesTech
/** /**
* 查询美甲师排班详 * 查询美甲师排班详和美甲师当前正在做的服务
* *
* @param userId * @param userId
* @param days * @param days
...@@ -33,6 +33,14 @@ public interface StoreClassesTechnicianService extends IService<StoreClassesTech ...@@ -33,6 +33,14 @@ public interface StoreClassesTechnicianService extends IService<StoreClassesTech
*/ */
List<StoreClassesTechnician> listClassesTechnicianDetail(Integer userId, String days); List<StoreClassesTechnician> listClassesTechnicianDetail(Integer userId, String days);
/**
* 店铺端查询美甲师可用时间
*
* @param startDate
* @param startTime
* @param departmentId
* @return
*/
List<StoreClassesTechnician> getReservableTime(String startDate, String startTime, Integer departmentId); List<StoreClassesTechnician> getReservableTime(String startDate, String startTime, Integer departmentId);
/** /**
...@@ -51,6 +59,4 @@ public interface StoreClassesTechnicianService extends IService<StoreClassesTech ...@@ -51,6 +59,4 @@ public interface StoreClassesTechnicianService extends IService<StoreClassesTech
*/ */
void updateDayTechnicianClasses(ParmTechnicianClasses parmTechnicianClasses) throws ParseException; void updateDayTechnicianClasses(ParmTechnicianClasses parmTechnicianClasses) throws ParseException;
List<StoreTechnician> queryDayTechnicianClassesList(Integer departmentId, Date day);
} }
...@@ -46,7 +46,6 @@ public class StoreClassesTechnicianServiceImpl extends ServiceImpl<StoreClassesT ...@@ -46,7 +46,6 @@ public class StoreClassesTechnicianServiceImpl extends ServiceImpl<StoreClassesT
@Override @Override
public List<StoreClassesTechnician> listClassesTechnician(Integer scheduledId, Integer departmentId, String days) { public List<StoreClassesTechnician> listClassesTechnician(Integer scheduledId, Integer departmentId, String days) {
return storeClassesTechnicianMapper.listClassesTechnician(scheduledId, departmentId, days); return storeClassesTechnicianMapper.listClassesTechnician(scheduledId, departmentId, days);
} }
...@@ -59,7 +58,7 @@ public class StoreClassesTechnicianServiceImpl extends ServiceImpl<StoreClassesT ...@@ -59,7 +58,7 @@ public class StoreClassesTechnicianServiceImpl extends ServiceImpl<StoreClassesT
public List<StoreTechnician> queryDayTechnicianClasses(Integer departmentId, Date day) { public List<StoreTechnician> queryDayTechnicianClasses(Integer departmentId, Date day) {
//查询店铺下的美甲师 //查询店铺下的美甲师
List<StoreTechnician> list = this.queryDayTechnicianClassesList(departmentId, day); List<StoreTechnician> list = storeTechnicianMapper.queryDayTechnicianClasses(departmentId, day);
list.forEach(storeTechnician -> { list.forEach(storeTechnician -> {
StoreClassesTechnician storeClassesTechnician = storeClassesTechnicianMapper.selectOneClassTech(departmentId, day, storeTechnician.getTechnicianId()); StoreClassesTechnician storeClassesTechnician = storeClassesTechnicianMapper.selectOneClassTech(departmentId, day, storeTechnician.getTechnicianId());
...@@ -166,9 +165,9 @@ public class StoreClassesTechnicianServiceImpl extends ServiceImpl<StoreClassesT ...@@ -166,9 +165,9 @@ public class StoreClassesTechnicianServiceImpl extends ServiceImpl<StoreClassesT
private final StoreTechnicianMapper storeTechnicianMapper; private final StoreTechnicianMapper storeTechnicianMapper;
@Override // @Override
public List<StoreTechnician> queryDayTechnicianClassesList(Integer departmentId, Date day) { // public List<StoreTechnician> queryDayTechnicianClassesList(Integer departmentId, Date day) {
return storeTechnicianMapper.queryDayTechnicianClasses(departmentId, day); // return ;
} // }
} }
package com.gogirl.application.user.investigation.impl; package com.gogirl.application.user.investigation.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gogirl.application.market.CouponService;
import com.gogirl.application.store.complaint.ComplaintMainService; import com.gogirl.application.store.complaint.ComplaintMainService;
import com.gogirl.application.user.investigation.BaseQuestionService; import com.gogirl.application.user.investigation.BaseQuestionService;
import com.gogirl.application.user.investigation.OrderQuestionOptionService; import com.gogirl.application.user.investigation.OrderQuestionOptionService;
import com.gogirl.application.user.investigation.TestPaperQuestionService; import com.gogirl.application.user.investigation.TestPaperQuestionService;
import com.gogirl.domain.market.coupon.Coupon;
import com.gogirl.domain.user.investigation.*; import com.gogirl.domain.user.investigation.*;
import com.gogirl.infrastructure.mapper.user.investigation.BaseQuestionMapper; import com.gogirl.infrastructure.mapper.user.investigation.BaseQuestionMapper;
import com.gogirl.infrastructure.mapper.user.investigation.TestPaperCustomerMapMapper; import com.gogirl.infrastructure.mapper.user.investigation.TestPaperCustomerMapMapper;
...@@ -29,6 +32,8 @@ public class BaseQuestionServiceImpl extends ServiceImpl<BaseQuestionMapper, Bas ...@@ -29,6 +32,8 @@ public class BaseQuestionServiceImpl extends ServiceImpl<BaseQuestionMapper, Bas
private final OrderQuestionOptionService orderQuestionOptionService; private final OrderQuestionOptionService orderQuestionOptionService;
private final ComplaintMainService complaintMainService; private final ComplaintMainService complaintMainService;
private final CouponService couponService;
@Override @Override
public List<BaseQuestion> getTestPaper(Integer currentCustomerId) { public List<BaseQuestion> getTestPaper(Integer currentCustomerId) {
return baseQuestionMapper.getTestPaper(currentCustomerId); return baseQuestionMapper.getTestPaper(currentCustomerId);
...@@ -69,6 +74,12 @@ public class BaseQuestionServiceImpl extends ServiceImpl<BaseQuestionMapper, Bas ...@@ -69,6 +74,12 @@ public class BaseQuestionServiceImpl extends ServiceImpl<BaseQuestionMapper, Bas
orderQuestionOptionService.saveBatch(list); orderQuestionOptionService.saveBatch(list);
complaintMainService.saveComplainsByOrderQuestion(list); complaintMainService.saveComplainsByOrderQuestion(list);
Coupon coupon = couponService.getOne(new LambdaQueryWrapper<Coupon>().eq(Coupon::getName, "问卷调查礼券"));
if (coupon != null) {
couponService.sendCoupon(coupon.getId(), currentCustomerId);
}
} }
......
...@@ -34,4 +34,5 @@ public class DiscountConfig { ...@@ -34,4 +34,5 @@ public class DiscountConfig {
@ApiModelProperty("备注") @ApiModelProperty("备注")
private String remark; private String remark;
private Integer couponId;
} }
...@@ -3,19 +3,22 @@ package com.gogirl.infrastructure.mapper.store.store; ...@@ -3,19 +3,22 @@ package com.gogirl.infrastructure.mapper.store.store;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gogirl.domain.store.store.StoreClassesTechnician; import com.gogirl.domain.store.store.StoreClassesTechnician;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
/**
* Created by yinyong on 2018/9/20.
*/
@Repository
public interface StoreClassesTechnicianMapper extends BaseMapper<StoreClassesTechnician> { public interface StoreClassesTechnicianMapper extends BaseMapper<StoreClassesTechnician> {
/**
* 查询美甲师排班和美甲师正在做的服务
*
* @param scheduleId 如果传id正在做的服务要排除这个预约
* @param departmentId 店铺id
* @param days 日志 localDate
* @return
*/
List<StoreClassesTechnician> listClassesTechnician(@Param("scheduleId") Integer scheduleId, List<StoreClassesTechnician> listClassesTechnician(@Param("scheduleId") Integer scheduleId,
@Param("departmentId") Integer departmentId, @Param("departmentId") Integer departmentId,
@Param("days") String days); @Param("days") String days);
......
...@@ -74,9 +74,7 @@ public class ScheduleManageController { ...@@ -74,9 +74,7 @@ public class ScheduleManageController {
@PostMapping("/customer/schedule/submitSchedule") @PostMapping("/customer/schedule/submitSchedule")
public JsonResult<Void> submitSchedule(@RequestHeader String token, public JsonResult<Void> submitSchedule(@RequestHeader String token,
@RequestBody SubmitScheduleCommand cmd) { @RequestBody SubmitScheduleCommand cmd) {
Integer currentCustomerId = Optional.ofNullable(gogirlTokenService.getByToken(token).getCustomerId()) cmd.getScheduleManageDTO().setScheduledUser(SessionUtils.getCustomerId());
.orElseThrow(() -> new RRException(500, "token不存在"));
cmd.getScheduleManageDTO().setScheduledUser(currentCustomerId);
scheduleManageService.submitSchedule(cmd); scheduleManageService.submitSchedule(cmd);
return JsonResult.success(); return JsonResult.success();
} }
......
...@@ -268,79 +268,7 @@ public class PayController { ...@@ -268,79 +268,7 @@ public class PayController {
String refereeId, String refereeId,
String remark) { String remark) {
Customer customer = customerService.selectByPhone(phone); chargeOrderService.chargeCustomerCard(name, phone, amount, source, refereeId, remark);
GogirlToken gogirlToken = gogirlTokenService.getByToken(token);
Integer departmentId = gogirlToken.getDepartmentId();
log.info("{} 充值给 {}", gogirlToken.getTechnicianId(), phone);
//新建会员
if (customer == null) {
customer = new Customer();
customer.setStoreRecordRealName(name);
customer.setPhone(phone);
customerService.save(customer);
}
//更新会员的店员记录名字
else if (name != null && !name.isEmpty()) {
customer.setStoreRecordRealName(name);
customerService.updateById(customer);
}
//店铺会员关联
customerDepartmentRelevanceService.insertDepartmentRelevanceIfNotExist(customer.getId(), departmentId, 4, new Date());
//折扣信息
DiscountConfig discountConfig = discountConfigService.selectByCharge((int) (amount * 100));
//会员卡
CustomerBalance customerBalance = customerBalanceMapper.selectOne(new LambdaQueryWrapper<CustomerBalance>()
.eq(CustomerBalance::getCustomerId, customer.getId()));
//充值类型
Integer type = customerBalance == null ? 2 : 1;
//如果会员卡不存在就新增会员卡
if (customerBalance == null) {
customerBalance = CustomerBalance.getInstance(customer.getId());
customerBalanceMapper.insert(customerBalance);
}
int chargeAmount = (int) (amount * 100);
//充值订单id
String orderId = IdWorker.getIdStr();
//更新余额
customerBalance.setBalance(customerBalance.getBalance() + chargeAmount);
customerBalance.setTotalCharge(customerBalance.getTotalCharge() + chargeAmount);
customerBalance.setUpdateTime(new Date());
//会员等级
customerBalance.setLevel(discountConfig.getLevel());
customerBalanceMapper.updateById(customerBalance);
//充值流水
CustomerBalanceRecord customerBalanceRecord = CustomerBalanceRecord.builder()
.currentBalance(customerBalance.getBalance())
.customerId(customer.getId())
//充送金额由定时任务计算
.bestowAmount(0)
.departmentId(gogirlToken.getDepartmentId())
.departmentName(gogirlToken.getDepartmentName())
.discount(1d)
.orderAmount(chargeAmount)
.orderId(orderId)
//支付方式
.source(source)
.refereeId(refereeId)
.remark(remark)
//订单类型
.type(type)
.time(new Date())
.build();
customerBalanceRecordMapper.insert(customerBalanceRecord);
return JsonResult.success(); return JsonResult.success();
} }
} }
...@@ -9,7 +9,7 @@ import java.util.List; ...@@ -9,7 +9,7 @@ import java.util.List;
public class IdleTimeQuery { public class IdleTimeQuery {
@ApiModelProperty("所有美甲师") @ApiModelProperty("所有美甲师")
List<StoreTechnicianQuery> storeTechnicianDTOList; List<StoreTechnicianPeriod> storeTechnicianDTOList;
@ApiModelProperty("时间节点") @ApiModelProperty("时间节点")
List<Long> dateTimeList; List<Long> dateTimeList;
......
...@@ -10,7 +10,7 @@ import java.util.List; ...@@ -10,7 +10,7 @@ import java.util.List;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class StoreTechnicianQuery implements Serializable { public class StoreTechnicianPeriod implements Serializable {
/** /**
* 美甲师的不可用时间段 * 美甲师的不可用时间段
...@@ -20,7 +20,11 @@ public class StoreTechnicianQuery implements Serializable { ...@@ -20,7 +20,11 @@ public class StoreTechnicianQuery implements Serializable {
* 美甲师id * 美甲师id
*/ */
private Integer technicianId; private Integer technicianId;
//美甲师姓名
private String name; private String name;
private String picturePath; private String picturePath;
private String grade; private String grade;
} }
...@@ -16,7 +16,7 @@ public class TreeProgram implements Serializable { ...@@ -16,7 +16,7 @@ public class TreeProgram implements Serializable {
/** /**
* 节点的美甲师 * 节点的美甲师
*/ */
StoreTechnicianQuery storeTechnicianDTO; StoreTechnicianPeriod storeTechnicianDTO;
/** /**
* 节点的服务 * 节点的服务
...@@ -50,7 +50,7 @@ public class TreeProgram implements Serializable { ...@@ -50,7 +50,7 @@ public class TreeProgram implements Serializable {
* @param scheduleServeQuery 节点服务 * @param scheduleServeQuery 节点服务
* @param parent 父节点 * @param parent 父节点
*/ */
public TreeProgram(StoreTechnicianQuery storeTechnicianDTO, ScheduleServeQuery scheduleServeQuery, TreeProgram parent) { public TreeProgram(StoreTechnicianPeriod storeTechnicianDTO, ScheduleServeQuery scheduleServeQuery, TreeProgram parent) {
this.storeTechnicianDTO = storeTechnicianDTO; this.storeTechnicianDTO = storeTechnicianDTO;
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
left join mall_category mc on mcpr.mall_category_id = mc.id left join mall_category mc on mcpr.mall_category_id = mc.id
where true where true
<if test="param.mallCategoryId!=null"> <if test="param.mallCategoryId!=null">
and t3.id=#{param.mallCategoryId} and mc.id=#{param.mallCategoryId}
</if> </if>
<if test="param.isHot!=null"> <if test="param.isHot!=null">
and t1.is_hot=#{param.isHot} and t1.is_hot=#{param.isHot}
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
and t1.name like concat('%',#{param.searchWord},'%') and t1.name like concat('%',#{param.searchWord},'%')
</if> </if>
<if test="param.status!=null"> <if test="param.status!=null">
and t1.`status` =param.status and t1.`status` =#{param.status}
</if> </if>
</select> </select>
</mapper> </mapper>
\ No newline at end of file
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