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;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gogirl.domain.order.mall.MallOrder;
import com.gogirl.shared.market.ListMallOrderRequest;
import com.gogirl.shared.market.SubmitMallOrderCommand;
import com.gogirl.shared.market.UpdateMallOrderTechnicianRequest;
import com.gogirl.shared.member.ImmediatePurchaseCommand;
import com.gogirl.shared.order.CancelMallOrderCommand;
import com.gogirl.shared.order.MallOrderDTO;
......@@ -17,11 +18,10 @@ public interface MallOrderService extends IService<MallOrder> {
/**
* 查询订单聚合列表
*
* @param page 分页参数
* @param mallOrder 订单查询参数
* @param request 订单查询参数
* @return
*/
IPage<MallOrder> listMallOrderAggregate(Page<MallOrder> page, MallOrder mallOrder);
IPage<MallOrder> listMallOrderAggregate(ListMallOrderRequest request);
/**
......@@ -75,4 +75,19 @@ public interface MallOrderService extends IService<MallOrder> {
* @return
*/
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;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.gogirl.domain.store.store.StoreTechnician;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -23,10 +24,12 @@ public class MallOrder {
public static final Integer STATUS_SHIPPED = 3;
//订单已签收
public static final Integer STATUS_SIGNED = 4;
//订单已签收
//订单已关闭
public static final Integer STATUS_TRADE_CLOSE = 5;
//订单退款中
public static final Integer STATUS_REFUNDING = 6;
public static final Integer PAYMENT_TYPE_WX = 1;
public static final Integer PAYMENT_TYPE_BALANCE = 2;
public static final Integer PAYMENT_TYPE_BALANCE_WX = 3;
......@@ -36,6 +39,8 @@ public class MallOrder {
public static final Integer CLOSE_REFUND = 2;
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)
@JsonSerialize(using = ToStringSerializer.class)
......@@ -121,5 +126,8 @@ public class MallOrder {
@ApiModelProperty(value = "配送地址id", required = true)
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;
*/
public class SessionUtils {
public static final String technician="technician";
public static final String customer="techncustomerician";
/*美甲师会话线程变量*/
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;
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.domain.order.mall.MallOrder;
import com.gogirl.infrastructure.common.base.JsonResult;
import com.gogirl.infrastructure.util.SessionUtils;
import com.gogirl.infrastructure.util.lock.MallOrderIdLock;
import com.gogirl.shared.market.ListMallOrderRequest;
import com.gogirl.shared.market.SubmitMallOrderCommand;
import com.gogirl.shared.market.UpdateMallOrderTechnicianRequest;
import com.gogirl.shared.member.ImmediatePurchaseCommand;
import com.gogirl.shared.order.CancelMallOrderCommand;
import io.swagger.annotations.Api;
......@@ -30,8 +31,7 @@ public class MallOrderController {
@ApiOperation("提交订单")
@PostMapping("/customer/mallOrder/submitMallOrder")
public JsonResult<MallOrder> submitMallOrder(@RequestHeader String token,
@RequestBody SubmitMallOrderCommand cmd) {
public JsonResult<MallOrder> submitMallOrder(@RequestBody SubmitMallOrderCommand cmd) {
log.info("token:{}", SessionUtils.getCustomerToken().toString());
Integer currentCustomerId = SessionUtils.getCustomerId();
......@@ -43,9 +43,7 @@ public class MallOrderController {
@ApiOperation("立即购买")
@PostMapping("/customer/mallOrder/immediatePurchase")
public JsonResult<MallOrder> immediatePurchase(@RequestHeader String token,
@RequestBody ImmediatePurchaseCommand cmd) {
log.info("token:{}", token);
public JsonResult<MallOrder> immediatePurchase(@RequestBody ImmediatePurchaseCommand cmd) {
log.info("token:{}", SessionUtils.getCustomerToken().toString());
Integer currentCustomerId = SessionUtils.getCustomerId();
cmd.setCustomerId(currentCustomerId);
......@@ -64,33 +62,23 @@ public class MallOrderController {
return JsonResult.success();
}
@ApiOperation("我的订单列表")
@ApiOperation("用户端查看我的订单列表")
@PostMapping("/customer/mallOrder/listMallOrderAggregate")
public JsonResult<IPage<MallOrder>> listMallOrderAggregate(@RequestHeader String token,
@RequestBody ListMallOrderRequest reqDTO) {
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);
public JsonResult<IPage<MallOrder>> listMallOrderAggregate(@RequestBody ListMallOrderRequest request) {
IPage<MallOrder> data = mallOrderService.listMallOrderAggregate(request);
return JsonResult.success(data);
}
@ApiOperation("查看订单详情")
@ApiOperation("用户端查看查看订单详情")
@GetMapping("/customer/mallOrder/getMallOrderAggregate/{mallOrderId}")
public JsonResult<MallOrder> getMallOrderAggregate(@RequestHeader String token,
@PathVariable Long mallOrderId) {
public JsonResult<MallOrder> getMallOrderAggregate(@PathVariable Long mallOrderId) {
MallOrder mallOrder = mallOrderService.getMallOrderAggregate(mallOrderId);
return JsonResult.success(mallOrder);
}
@ApiOperation(("/用户取消订单"))
@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();
cmd.setCurrentCustomerId(currentCustomerId);
mallOrderService.cancelMallOrder(cmd);
......@@ -105,4 +93,40 @@ public class MallOrderController {
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 {
@ApiModelProperty("购物车id")
private List<Long> mallShoppingCartIdList;
private List<Integer> technicianIdList;
/**
* 命令执行结果 订单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;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.List;
@Data
@AllArgsConstructor
......@@ -48,4 +49,6 @@ public class ImmediatePurchaseCommand {
*/
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;
import com.gogirl.application.market.coupon.MarketService;
import com.gogirl.application.market.timescard.TimesCardCustomerRelevanceService;
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.store.store.StoreTechnicianService;
import com.gogirl.application.xcx.GogirlTokenService;
......@@ -57,6 +58,7 @@ 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.infrastructure.util.SessionUtils;
import com.gogirl.shared.product.excel.ImportMallProductExcel;
import com.gogirl.shared.product.excel.ImportPurchaseSkuExcel;
import lombok.extern.slf4j.Slf4j;
......@@ -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