Commit 878f3d46 by huluobin

update

parent e9f673e9
package com.gogirl.application.order.mall;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gogirl.domain.order.mall.MallOrderTechnician;
/**
* <p>
* 商城订单 - 美甲师 服务类
* </p>
*
* @author robbendev
* @since 2020-06-22
*/
public interface IMallOrderTechnicianService extends IService<MallOrderTechnician> {
}
package com.gogirl.application.order.mall; package com.gogirl.application.order.mall;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.gogirl.domain.order.mall.MallOrder; import com.gogirl.domain.order.mall.MallOrder;
import com.gogirl.shared.market.ListMallOrderRequest;
import com.gogirl.shared.market.SubmitMallOrderCommand; import com.gogirl.shared.market.SubmitMallOrderCommand;
import com.gogirl.shared.market.UpdateMallOrderTechnicianRequest;
import com.gogirl.shared.member.ImmediatePurchaseCommand; import com.gogirl.shared.member.ImmediatePurchaseCommand;
import com.gogirl.shared.order.CancelMallOrderCommand; import com.gogirl.shared.order.CancelMallOrderCommand;
import com.gogirl.shared.order.MallOrderDTO; import com.gogirl.shared.order.MallOrderDTO;
...@@ -17,11 +18,10 @@ public interface MallOrderService extends IService<MallOrder> { ...@@ -17,11 +18,10 @@ public interface MallOrderService extends IService<MallOrder> {
/** /**
* 查询订单聚合列表 * 查询订单聚合列表
* *
* @param page 分页参数 * @param request 订单查询参数
* @param mallOrder 订单查询参数
* @return * @return
*/ */
IPage<MallOrder> listMallOrderAggregate(Page<MallOrder> page, MallOrder mallOrder); IPage<MallOrder> listMallOrderAggregate(ListMallOrderRequest request);
/** /**
...@@ -75,4 +75,19 @@ public interface MallOrderService extends IService<MallOrder> { ...@@ -75,4 +75,19 @@ public interface MallOrderService extends IService<MallOrder> {
* @return * @return
*/ */
MallOrderDTO querySettleMalOrder(SettleMallOrderQuery qry); MallOrderDTO querySettleMalOrder(SettleMallOrderQuery qry);
/**
* 美甲师确认收货
*
* @param mallOrderId
*/
void confirmOrderShip(Long mallOrderId);
/**
* 美甲师跟更新商城订单推荐人
*
* @param request
*/
void updateMallOrderTechnician(UpdateMallOrderTechnicianRequest request);
} }
package com.gogirl.application.order.mall.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gogirl.application.order.mall.IMallOrderTechnicianService;
import com.gogirl.domain.order.mall.MallOrderTechnician;
import com.gogirl.infrastructure.mapper.order.mall.MallOrderTechnicianMapper;
import org.springframework.stereotype.Service;
/**
* <p>
* 商城订单 - 美甲师 服务实现类
* </p>
*
* @author robbendev
* @since 2020-06-22
*/
@Service
public class MallOrderTechnicianServiceImpl extends ServiceImpl<MallOrderTechnicianMapper, MallOrderTechnician> implements IMallOrderTechnicianService {
}
...@@ -3,6 +3,7 @@ package com.gogirl.domain.order.mall; ...@@ -3,6 +3,7 @@ package com.gogirl.domain.order.mall;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.gogirl.domain.store.store.StoreTechnician;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -23,10 +24,12 @@ public class MallOrder { ...@@ -23,10 +24,12 @@ public class MallOrder {
public static final Integer STATUS_SHIPPED = 3; public static final Integer STATUS_SHIPPED = 3;
//订单已签收 //订单已签收
public static final Integer STATUS_SIGNED = 4; public static final Integer STATUS_SIGNED = 4;
//订单已签收 //订单已关闭
public static final Integer STATUS_TRADE_CLOSE = 5; public static final Integer STATUS_TRADE_CLOSE = 5;
//订单退款中 //订单退款中
public static final Integer STATUS_REFUNDING = 6; public static final Integer STATUS_REFUNDING = 6;
public static final Integer PAYMENT_TYPE_WX = 1; public static final Integer PAYMENT_TYPE_WX = 1;
public static final Integer PAYMENT_TYPE_BALANCE = 2; public static final Integer PAYMENT_TYPE_BALANCE = 2;
public static final Integer PAYMENT_TYPE_BALANCE_WX = 3; public static final Integer PAYMENT_TYPE_BALANCE_WX = 3;
...@@ -36,6 +39,8 @@ public class MallOrder { ...@@ -36,6 +39,8 @@ public class MallOrder {
public static final Integer CLOSE_REFUND = 2; public static final Integer CLOSE_REFUND = 2;
public static final Integer CLOSE_CUSTOMER_CANCEL = 3; public static final Integer CLOSE_CUSTOMER_CANCEL = 3;
public static final Integer TRANSPORT_MODE_MAIL = 1;
public static final Integer TRANSPORT_MODE_SELF_TAKE = 2;
@TableId(type = IdType.ID_WORKER) @TableId(type = IdType.ID_WORKER)
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
...@@ -121,5 +126,8 @@ public class MallOrder { ...@@ -121,5 +126,8 @@ public class MallOrder {
@ApiModelProperty(value = "配送地址id", required = true) @ApiModelProperty(value = "配送地址id", required = true)
private Long mallOrderAddressId; private Long mallOrderAddressId;
@TableField(exist = false)
private List<StoreTechnician> storeTechnicianList;
} }
package com.gogirl.domain.order.mall;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* <p>
* 商城订单 - 美甲师
* </p>
*
* @author robbendev
* @since 2020-06-22
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "MallOrderTechnician对象", description = "商城订单 - 美甲师")
public class MallOrderTechnician implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "订单id :mall_order.id")
private Long mallOrderId;
@ApiModelProperty(value = "美甲师id : store_technician.id")
private Integer technicianId;
@ApiModelProperty(value = "美甲师订单业绩")
private BigDecimal achievement;
}
package com.gogirl.infrastructure.mapper.order.mall;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gogirl.domain.order.mall.MallOrderTechnician;
import com.gogirl.domain.store.store.StoreTechnician;
import java.util.List;
/**
* <p>
* 商城订单 - 美甲师 Mapper 接口
* </p>
*
* @author robbendev
* @since 2020-06-22
*/
public interface MallOrderTechnicianMapper extends BaseMapper<MallOrderTechnician> {
/**
* 根据订单id获取订单推荐美甲师
*
* @param mallOrderId
* @return
*/
List<StoreTechnician> selectTechnicianList(Long mallOrderId);
}
...@@ -8,6 +8,9 @@ import com.gogirl.infrastructure.common.exception.RRException; ...@@ -8,6 +8,9 @@ import com.gogirl.infrastructure.common.exception.RRException;
*/ */
public class SessionUtils { public class SessionUtils {
public static final String technician="technician";
public static final String customer="techncustomerician";
/*美甲师会话线程变量*/ /*美甲师会话线程变量*/
private static final ThreadLocal<GogirlToken> technicianTokenThreadLocal = new ThreadLocal<>(); private static final ThreadLocal<GogirlToken> technicianTokenThreadLocal = new ThreadLocal<>();
/*用户会员线程变量*/ /*用户会员线程变量*/
......
package com.gogirl.infrastructure.util.lock;
import java.util.HashMap;
import java.util.concurrent.locks.ReentrantLock;
/**
*  * 分段锁,系统提供一定数量的原始锁,根据传入用户id值获取对应的锁并加锁  * 注意:要锁的用户id值如果发生改变,有可能导致锁无法成功释放!!!
*/
public class MallOrderIdLock {
private final static HashMap<Long, ReentrantLock> lockMap = new HashMap<>();
private long segments = 1;// 默认分段数量
private MallOrderIdLock() {
init(null, false);
}
private MallOrderIdLock(Integer counts, boolean fair) {
init(counts, fair);
}
/*静态内部类实现单例*/
public static MallOrderIdLock getInstance() {
return SingletonHolder.instance;
}
private void init(Integer counts, boolean fair) {
if (counts != null) {
segments = counts;
}
for (long i = 0; i < segments; i++) {
lockMap.put(i, new ReentrantLock(fair));
}
}
public void lock(long key) {
ReentrantLock lock = lockMap.get(key % segments);
lock.lock();
}
public void unlock(long key) {
ReentrantLock lock = lockMap.get(key % segments);
lock.unlock();
}
@Override
public String toString() {
return "SegmentLock [segments=" + segments + ", lockMap=" + lockMap
+ "]";
}
/*静态内部类实现单例*/
private static class SingletonHolder {
private static final MallOrderIdLock instance = new MallOrderIdLock(null, true);
}
}
package com.gogirl.interfaces.order.mall; package com.gogirl.interfaces.order.mall;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gogirl.application.order.mall.MallOrderService; import com.gogirl.application.order.mall.MallOrderService;
import com.gogirl.domain.order.mall.MallOrder; import com.gogirl.domain.order.mall.MallOrder;
import com.gogirl.infrastructure.common.base.JsonResult; import com.gogirl.infrastructure.common.base.JsonResult;
import com.gogirl.infrastructure.util.SessionUtils; import com.gogirl.infrastructure.util.SessionUtils;
import com.gogirl.infrastructure.util.lock.MallOrderIdLock;
import com.gogirl.shared.market.ListMallOrderRequest; import com.gogirl.shared.market.ListMallOrderRequest;
import com.gogirl.shared.market.SubmitMallOrderCommand; import com.gogirl.shared.market.SubmitMallOrderCommand;
import com.gogirl.shared.market.UpdateMallOrderTechnicianRequest;
import com.gogirl.shared.member.ImmediatePurchaseCommand; import com.gogirl.shared.member.ImmediatePurchaseCommand;
import com.gogirl.shared.order.CancelMallOrderCommand; import com.gogirl.shared.order.CancelMallOrderCommand;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -30,8 +31,7 @@ public class MallOrderController { ...@@ -30,8 +31,7 @@ public class MallOrderController {
@ApiOperation("提交订单") @ApiOperation("提交订单")
@PostMapping("/customer/mallOrder/submitMallOrder") @PostMapping("/customer/mallOrder/submitMallOrder")
public JsonResult<MallOrder> submitMallOrder(@RequestHeader String token, public JsonResult<MallOrder> submitMallOrder(@RequestBody SubmitMallOrderCommand cmd) {
@RequestBody SubmitMallOrderCommand cmd) {
log.info("token:{}", SessionUtils.getCustomerToken().toString()); log.info("token:{}", SessionUtils.getCustomerToken().toString());
Integer currentCustomerId = SessionUtils.getCustomerId(); Integer currentCustomerId = SessionUtils.getCustomerId();
...@@ -43,9 +43,7 @@ public class MallOrderController { ...@@ -43,9 +43,7 @@ public class MallOrderController {
@ApiOperation("立即购买") @ApiOperation("立即购买")
@PostMapping("/customer/mallOrder/immediatePurchase") @PostMapping("/customer/mallOrder/immediatePurchase")
public JsonResult<MallOrder> immediatePurchase(@RequestHeader String token, public JsonResult<MallOrder> immediatePurchase(@RequestBody ImmediatePurchaseCommand cmd) {
@RequestBody ImmediatePurchaseCommand cmd) {
log.info("token:{}", token);
log.info("token:{}", SessionUtils.getCustomerToken().toString()); log.info("token:{}", SessionUtils.getCustomerToken().toString());
Integer currentCustomerId = SessionUtils.getCustomerId(); Integer currentCustomerId = SessionUtils.getCustomerId();
cmd.setCustomerId(currentCustomerId); cmd.setCustomerId(currentCustomerId);
...@@ -64,33 +62,23 @@ public class MallOrderController { ...@@ -64,33 +62,23 @@ public class MallOrderController {
return JsonResult.success(); return JsonResult.success();
} }
@ApiOperation("我的订单列表") @ApiOperation("用户端查看我的订单列表")
@PostMapping("/customer/mallOrder/listMallOrderAggregate") @PostMapping("/customer/mallOrder/listMallOrderAggregate")
public JsonResult<IPage<MallOrder>> listMallOrderAggregate(@RequestHeader String token, public JsonResult<IPage<MallOrder>> listMallOrderAggregate(@RequestBody ListMallOrderRequest request) {
@RequestBody ListMallOrderRequest reqDTO) { IPage<MallOrder> data = mallOrderService.listMallOrderAggregate(request);
Integer currentCustomerId = SessionUtils.getCustomerId();
Page<MallOrder> page = new Page<>();
page.setCurrent(reqDTO.getPageIndex());
page.setSize(reqDTO.getPageSize());
MallOrder mallOrder = ListMallOrderRequest.convertToMallOrder(reqDTO);
mallOrder.setCustomerId(currentCustomerId);
IPage<MallOrder> data = mallOrderService.listMallOrderAggregate(page, mallOrder);
return JsonResult.success(data); return JsonResult.success(data);
} }
@ApiOperation("查看订单详情") @ApiOperation("用户端查看查看订单详情")
@GetMapping("/customer/mallOrder/getMallOrderAggregate/{mallOrderId}") @GetMapping("/customer/mallOrder/getMallOrderAggregate/{mallOrderId}")
public JsonResult<MallOrder> getMallOrderAggregate(@RequestHeader String token, public JsonResult<MallOrder> getMallOrderAggregate(@PathVariable Long mallOrderId) {
@PathVariable Long mallOrderId) {
MallOrder mallOrder = mallOrderService.getMallOrderAggregate(mallOrderId); MallOrder mallOrder = mallOrderService.getMallOrderAggregate(mallOrderId);
return JsonResult.success(mallOrder); return JsonResult.success(mallOrder);
} }
@ApiOperation(("/用户取消订单")) @ApiOperation(("/用户取消订单"))
@PostMapping("/customer/mallOrder/cancelMallOrder") @PostMapping("/customer/mallOrder/cancelMallOrder")
public JsonResult<Void> cancelMallOrder(@RequestHeader String token, @RequestBody CancelMallOrderCommand cmd) { public JsonResult<Void> cancelMallOrder(@RequestBody CancelMallOrderCommand cmd) {
Integer currentCustomerId = SessionUtils.getCustomerId(); Integer currentCustomerId = SessionUtils.getCustomerId();
cmd.setCurrentCustomerId(currentCustomerId); cmd.setCurrentCustomerId(currentCustomerId);
mallOrderService.cancelMallOrder(cmd); mallOrderService.cancelMallOrder(cmd);
...@@ -105,4 +93,40 @@ public class MallOrderController { ...@@ -105,4 +93,40 @@ public class MallOrderController {
return JsonResult.success(freight); return JsonResult.success(freight);
} }
@ApiOperation("美甲师端口查看订单列表")
@PostMapping("/technician/mallOrder/listMallOrderAggregate")
public JsonResult<IPage<MallOrder>> techListMallOrderAggregate(@RequestBody ListMallOrderRequest request) {
IPage<MallOrder> data = mallOrderService.listMallOrderAggregate(request);
return JsonResult.success(data);
}
@ApiOperation("美甲师端口查看查看订单详情")
@GetMapping("/technician/mallOrder/getMallOrderAggregate/{mallOrderId}")
public JsonResult<MallOrder> techGetMallOrderAggregate(@PathVariable Long mallOrderId) {
MallOrder mallOrder = mallOrderService.getMallOrderAggregate(mallOrderId);
return JsonResult.success(mallOrder);
}
@ApiOperation("美甲师确认收货")
@GetMapping("/technician/mallOrder/confirmOrderShip")
public JsonResult<Void> confirmOrderShip(@RequestParam Long mallOrderId) {
MallOrderIdLock lock = MallOrderIdLock.getInstance();
try {
lock.lock(mallOrderId);
mallOrderService.confirmOrderShip(mallOrderId);
return JsonResult.success();
} finally {
lock.unlock(mallOrderId);
}
}
@ApiOperation("更新商城推荐人")
@PostMapping("/technician/mallOrder/updateMallOrderTechnician")
public JsonResult<Void> updateMallOrderTechnician(@RequestBody UpdateMallOrderTechnicianRequest request) {
mallOrderService.updateMallOrderTechnician(request);
return JsonResult.success();
}
} }
package com.gogirl.interfaces.order.mall;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 商城订单 - 美甲师 前端控制器
* </p>
*
* @author robbendev
* @since 2020-06-22
*/
@RestController
@RequestMapping("/mall-order-technician")
public class MallOrderTechnicianController {
}
package com.gogirl.shared.market;
import lombok.Data;
import java.math.BigDecimal;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/6/22 3:03 下午
*/
@Data
public class MallOrderAchievement {
private BigDecimal achievement;
}
...@@ -46,6 +46,7 @@ public class SubmitMallOrderCommand { ...@@ -46,6 +46,7 @@ public class SubmitMallOrderCommand {
@ApiModelProperty("购物车id") @ApiModelProperty("购物车id")
private List<Long> mallShoppingCartIdList; private List<Long> mallShoppingCartIdList;
private List<Integer> technicianIdList;
/** /**
* 命令执行结果 订单id * 命令执行结果 订单id
*/ */
......
package com.gogirl.shared.market;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/6/22 2:36 下午
*/
@Data
public class UpdateMallOrderTechnicianRequest {
@ApiModelProperty("商城订单id")
private Long mallOrderId;
@ApiModelProperty("推荐人id列表")
private List<Integer> technicianIdList;
}
...@@ -7,6 +7,7 @@ import lombok.Data; ...@@ -7,6 +7,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
...@@ -48,4 +49,6 @@ public class ImmediatePurchaseCommand { ...@@ -48,4 +49,6 @@ public class ImmediatePurchaseCommand {
*/ */
private Long executionResult; private Long executionResult;
private List<Integer> technicianIdList;
} }
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gogirl.infrastructure.mapper.order.mall.MallOrderTechnicianMapper">
<select id="selectTechnicianList" resultType="com.gogirl.domain.store.store.StoreTechnician">
select t2.*
from mall_order_technician t1
left join store_technician t2 on t1.technician_id = t2.id
where t1.mall_order_id = #{mallOrderId}
</select>
</mapper>
...@@ -8,6 +8,7 @@ import com.gogirl.application.market.coupon.CouponService; ...@@ -8,6 +8,7 @@ import com.gogirl.application.market.coupon.CouponService;
import com.gogirl.application.market.coupon.MarketService; import com.gogirl.application.market.coupon.MarketService;
import com.gogirl.application.market.timescard.TimesCardCustomerRelevanceService; import com.gogirl.application.market.timescard.TimesCardCustomerRelevanceService;
import com.gogirl.application.market.timescard.TimesCardUsedRecordService; import com.gogirl.application.market.timescard.TimesCardUsedRecordService;
import com.gogirl.application.order.member.impl.ChargeOrderServiceImpl;
import com.gogirl.application.order.serve.OrderManageService; import com.gogirl.application.order.serve.OrderManageService;
import com.gogirl.application.store.store.StoreTechnicianService; import com.gogirl.application.store.store.StoreTechnicianService;
import com.gogirl.application.xcx.GogirlTokenService; import com.gogirl.application.xcx.GogirlTokenService;
...@@ -57,6 +58,7 @@ import com.gogirl.infrastructure.mapper.xcx.TimeNodeMapper; ...@@ -57,6 +58,7 @@ import com.gogirl.infrastructure.mapper.xcx.TimeNodeMapper;
import com.gogirl.infrastructure.mapper.xcx.WeekConfigMapper; import com.gogirl.infrastructure.mapper.xcx.WeekConfigMapper;
import com.gogirl.infrastructure.schedule.Schedule; import com.gogirl.infrastructure.schedule.Schedule;
import com.gogirl.infrastructure.service.mail.MailService; import com.gogirl.infrastructure.service.mail.MailService;
import com.gogirl.infrastructure.util.SessionUtils;
import com.gogirl.shared.product.excel.ImportMallProductExcel; import com.gogirl.shared.product.excel.ImportMallProductExcel;
import com.gogirl.shared.product.excel.ImportPurchaseSkuExcel; import com.gogirl.shared.product.excel.ImportPurchaseSkuExcel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -731,4 +733,21 @@ public class Test { ...@@ -731,4 +733,21 @@ public class Test {
} }
}); });
} }
@Resource
ChargeOrderServiceImpl chargeOrderService;
@org.junit.Test
public void chargeCustomerCard() {
GogirlToken gogirlToken =new GogirlToken();
gogirlToken.setDepartmentId(18);
gogirlToken.setDepartmentName("太阳新天地店");
gogirlToken.setTechnicianId(101);
SessionUtils.putTechnicianToken(gogirlToken);
chargeOrderService.chargeCustomerCard("","97008305",3000d,5,"101","");
}
} }
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