20 changed files with 653 additions and 5 deletions
@ -0,0 +1,24 @@ |
|||||
|
package cc.hiver.core.config.jpush; |
||||
|
|
||||
|
import org.springframework.beans.factory.annotation.Value; |
||||
|
import org.springframework.context.annotation.Bean; |
||||
|
import org.springframework.context.annotation.Configuration; |
||||
|
|
||||
|
import cn.jiguang.common.ClientConfig; |
||||
|
import cn.jpush.api.JPushClient; |
||||
|
|
||||
|
@Configuration |
||||
|
public class JPushConfig { |
||||
|
|
||||
|
@Value("${jpush.appKey}") |
||||
|
private String appKey; |
||||
|
|
||||
|
@Value("${jpush.masterSecret}") |
||||
|
private String masterSecret; |
||||
|
|
||||
|
@Bean |
||||
|
public JPushClient jPushClient() { |
||||
|
ClientConfig clientConfig = ClientConfig.getInstance(); |
||||
|
return new JPushClient(masterSecret, appKey, null, clientConfig); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,36 @@ |
|||||
|
package cc.hiver.core.service; |
||||
|
|
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
import cn.jpush.api.JPushClient; |
||||
|
import cn.jpush.api.push.PushResult; |
||||
|
import cn.jpush.api.push.model.Message; |
||||
|
import cn.jpush.api.push.model.PushPayload; |
||||
|
import cn.jpush.api.push.model.notification.Notification; |
||||
|
|
||||
|
@Service |
||||
|
public class JPushService { |
||||
|
|
||||
|
private final JPushClient jPushClient; |
||||
|
|
||||
|
@Autowired |
||||
|
public JPushService(JPushClient jPushClient) { |
||||
|
this.jPushClient = jPushClient; |
||||
|
} |
||||
|
|
||||
|
public void sendPushNotification(String registrationId, String message) { |
||||
|
PushPayload payload = PushPayload.newBuilder() |
||||
|
.setPlatform(cn.jpush.api.push.model.Platform.all()) |
||||
|
.setAudience(cn.jpush.api.push.model.audience.Audience.registrationId(registrationId)) |
||||
|
.setNotification(Notification.alert(message)) |
||||
|
.build(); |
||||
|
|
||||
|
try { |
||||
|
PushResult result = jPushClient.sendPush(payload); |
||||
|
System.out.println("Push result: " + result); |
||||
|
} catch (Exception e) { |
||||
|
e.printStackTrace(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,24 @@ |
|||||
|
package cc.hiver.mall.controller; |
||||
|
|
||||
|
import cc.hiver.core.service.JPushService; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||
|
import org.springframework.web.bind.annotation.RequestParam; |
||||
|
import org.springframework.web.bind.annotation.RestController; |
||||
|
|
||||
|
@RestController |
||||
|
public class PushController { |
||||
|
|
||||
|
private final JPushService jPushService; |
||||
|
|
||||
|
@Autowired |
||||
|
public PushController(JPushService jPushService) { |
||||
|
this.jPushService = jPushService; |
||||
|
} |
||||
|
|
||||
|
@GetMapping("/push") |
||||
|
public String pushNotification(@RequestParam String registrationId, @RequestParam String message) { |
||||
|
jPushService.sendPushNotification(registrationId, message); |
||||
|
return "Push request sent!"; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,136 @@ |
|||||
|
package cc.hiver.mall.controller; |
||||
|
|
||||
|
import cc.hiver.core.common.utils.ResultUtil; |
||||
|
import cc.hiver.core.common.utils.SecurityUtil; |
||||
|
import cc.hiver.core.common.utils.StringUtils; |
||||
|
import cc.hiver.core.common.vo.Result; |
||||
|
import cc.hiver.mall.entity.*; |
||||
|
|
||||
|
|
||||
|
import cc.hiver.mall.pojo.dto.SaleDTO; |
||||
|
import cc.hiver.mall.pojo.vo.SaleQueryVO; |
||||
|
import cc.hiver.mall.pojo.vo.SaleVO; |
||||
|
import cc.hiver.mall.service.*; |
||||
|
import cc.hiver.mall.service.mybatis.SaleDetailService; |
||||
|
import cc.hiver.mall.service.mybatis.SaleService; |
||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||
|
import io.swagger.annotations.Api; |
||||
|
import io.swagger.annotations.ApiOperation; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.transaction.annotation.Transactional; |
||||
|
import org.springframework.util.ObjectUtils; |
||||
|
import org.springframework.web.bind.annotation.*; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
@Slf4j |
||||
|
@RestController |
||||
|
@Api(tags = "销售订单接口") |
||||
|
@RequestMapping(value = "/hiver/app/sale/") |
||||
|
@Transactional |
||||
|
public class SaleController { |
||||
|
@Autowired |
||||
|
private SalesAndDetailsService salesAndDetailsService; |
||||
|
|
||||
|
@Autowired |
||||
|
private StockAndLogService stockAndLogService; |
||||
|
|
||||
|
@Autowired |
||||
|
private RushOrderService rushOrderService; |
||||
|
|
||||
|
@Autowired |
||||
|
private SendMessageService sendMessageService; |
||||
|
|
||||
|
@Autowired |
||||
|
private SaleService saleService; |
||||
|
|
||||
|
@Autowired |
||||
|
private SaleDetailService saleDetailService; |
||||
|
|
||||
|
@Autowired |
||||
|
private SecurityUtil securityUtil; |
||||
|
|
||||
|
|
||||
|
@RequestMapping(value = "/buy", method = RequestMethod.POST) |
||||
|
@ApiOperation(value = "下单操作") |
||||
|
@Transactional |
||||
|
public Result buy(@RequestBody SaleDTO saleDTO) { |
||||
|
|
||||
|
/** |
||||
|
* 订单中是物流且包含扛包工人员的话,直接进入抢单表 |
||||
|
* */ |
||||
|
//1.处理订单表模块
|
||||
|
Sale sale = salesAndDetailsService.handleSalesAndDetails(saleDTO); |
||||
|
//更新sale
|
||||
|
saleDTO.setSale(sale); |
||||
|
//2.处理库存模块
|
||||
|
stockAndLogService.handleSubStockAndLog(saleDTO.getSaleDetailList()); |
||||
|
//3.处理抢单模块
|
||||
|
rushOrderService.handleRushOrder(saleDTO); |
||||
|
//4.消息推送模块
|
||||
|
sendMessageService.handleSendAppMessage(); |
||||
|
|
||||
|
return ResultUtil.success("下单成功"); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@RequestMapping(value = "/edit", method = RequestMethod.POST) |
||||
|
@ApiOperation(value = "根据id修改货品属性") |
||||
|
public Result edit(SaleQueryVO saleQueryVO) { |
||||
|
Sale sale = saleQueryVO.getSale(); |
||||
|
List<SaleDetail> saleDetailList = saleQueryVO.getSaleDetailList(); |
||||
|
boolean result = saleService.updateById(sale); |
||||
|
if(result) { |
||||
|
QueryWrapper<SaleDetail> deleteWrapper = new QueryWrapper<>(); |
||||
|
deleteWrapper.eq("sale_id",sale.getId()); |
||||
|
boolean removeBatchByIds = saleDetailService.remove(deleteWrapper); |
||||
|
if (removeBatchByIds){ |
||||
|
return saleDetailService.saveBatch(saleDetailList)?ResultUtil.success("修改成功"):ResultUtil.error("修改失败"); |
||||
|
} |
||||
|
} |
||||
|
return ResultUtil.error("修改失败"); |
||||
|
} |
||||
|
|
||||
|
@RequestMapping(value = "/delById", method = RequestMethod.POST) |
||||
|
@ApiOperation(value = "根据id删除订单") |
||||
|
public Result delete(Sale sale) { |
||||
|
boolean result = saleService.removeById(sale); |
||||
|
if(result) { |
||||
|
QueryWrapper<SaleDetail> deleteWrapper = new QueryWrapper<>(); |
||||
|
deleteWrapper.eq("sale_id",sale.getId()); |
||||
|
boolean removeBatchByIds = saleDetailService.remove(deleteWrapper); |
||||
|
if (removeBatchByIds){ |
||||
|
return ResultUtil.success("删除成功"); |
||||
|
} |
||||
|
} |
||||
|
return ResultUtil.error("删除失败"); |
||||
|
} |
||||
|
|
||||
|
@RequestMapping(value = "/list", method = RequestMethod.POST) |
||||
|
@ApiOperation(value = "根据条件获得分页") |
||||
|
public Result<List<Sale>> queryAll(SaleVO saleVO) { |
||||
|
QueryWrapper<Sale> queryWrapper = new QueryWrapper<>(); |
||||
|
if (!ObjectUtils.isEmpty(saleVO)){ |
||||
|
if (ObjectUtils.isEmpty(saleVO.getPayStatus())) queryWrapper.eq("pay_status",saleVO.getPayStatus()); |
||||
|
if (StringUtils.isEmpty(saleVO.getStatus())) queryWrapper.eq("status",saleVO.getStatus()); |
||||
|
if (StringUtils.isEmpty(saleVO.getTransportType())) queryWrapper.eq("transport_type",saleVO.getTransportType()); |
||||
|
} |
||||
|
List<Sale> saleList = saleService.list(queryWrapper); |
||||
|
return new ResultUtil<List<Sale>>().setData(saleList); |
||||
|
} |
||||
|
|
||||
|
@RequestMapping(value = "/get/{id}", method = RequestMethod.GET) |
||||
|
@ApiOperation(value = "获得订单详情") |
||||
|
public Result<SaleQueryVO> get(@PathVariable String id) { |
||||
|
SaleQueryVO saleQueryVO = new SaleQueryVO(); |
||||
|
Sale sale = saleService.getById(id); |
||||
|
saleQueryVO.setSale(sale); |
||||
|
QueryWrapper<SaleDetail> queryWrapper = new QueryWrapper<>(); |
||||
|
queryWrapper.eq("sale_id",id); |
||||
|
List<SaleDetail> saleDetailList = saleDetailService.list(queryWrapper); |
||||
|
saleQueryVO.setSaleDetailList(saleDetailList); |
||||
|
return new ResultUtil<SaleQueryVO>().setData(saleQueryVO); |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,29 @@ |
|||||
|
package cc.hiver.mall.pojo.dto; |
||||
|
|
||||
|
import cc.hiver.mall.entity.Sale; |
||||
|
import cc.hiver.mall.entity.SaleDetail; |
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@ApiModel(value = "销售单主表") |
||||
|
@Data |
||||
|
public class SaleDTO implements Serializable { |
||||
|
|
||||
|
@ApiModelProperty(value = "订单") |
||||
|
private Sale sale; |
||||
|
|
||||
|
@ApiModelProperty(value = "订单明细") |
||||
|
private List<SaleDetail> saleDetailList; |
||||
|
|
||||
|
|
||||
|
@ApiModelProperty(value = "扛包工编号") |
||||
|
private String orderByWorker; |
||||
|
|
||||
|
@ApiModelProperty(value = "物流公司编号") |
||||
|
private String transCompany; |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,15 @@ |
|||||
|
package cc.hiver.mall.pojo.vo; |
||||
|
|
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
|
||||
|
@ApiModel(value = "消息推送实体") |
||||
|
public class MessageVO implements Serializable { |
||||
|
@ApiModelProperty(value = "客户端标识") |
||||
|
private String registrationId; |
||||
|
|
||||
|
@ApiModelProperty(value = "消息内容") |
||||
|
private String message; |
||||
|
} |
||||
@ -0,0 +1,22 @@ |
|||||
|
package cc.hiver.mall.pojo.vo; |
||||
|
|
||||
|
import cc.hiver.mall.entity.Sale; |
||||
|
import cc.hiver.mall.entity.SaleDetail; |
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@ApiModel(value = "销售单主表") |
||||
|
@Data |
||||
|
public class SaleQueryVO implements Serializable { |
||||
|
|
||||
|
@ApiModelProperty(value = "订单") |
||||
|
private Sale sale; |
||||
|
|
||||
|
@ApiModelProperty(value = "订单明细") |
||||
|
private List<SaleDetail> saleDetailList; |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,28 @@ |
|||||
|
package cc.hiver.mall.pojo.vo; |
||||
|
|
||||
|
import cc.hiver.mall.entity.SaleDetail; |
||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
import java.math.BigDecimal; |
||||
|
import java.util.List; |
||||
|
@Data |
||||
|
@ApiModel(value = "销售单主表") |
||||
|
public class SaleVO implements Serializable { |
||||
|
|
||||
|
@ApiModelProperty(value = "收款状态 0-未收款 1-已收款 2-部分收款") |
||||
|
private String payStatus; |
||||
|
|
||||
|
@ApiModelProperty(value = "订单状态 1-未预定 2-已预定 3-待自提 4-已取货 5-已送达") |
||||
|
private String status; |
||||
|
|
||||
|
@ApiModelProperty(value = "物流类别 1-物流 2-快递 3-自提 4-拼单") |
||||
|
private String transportType; |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
package cc.hiver.mall.service; |
||||
|
|
||||
|
import cc.hiver.mall.pojo.dto.SaleDTO; |
||||
|
|
||||
|
public interface RushOrderService { |
||||
|
|
||||
|
void handleRushOrder(SaleDTO saleDTO); |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,13 @@ |
|||||
|
package cc.hiver.mall.service; |
||||
|
|
||||
|
import cc.hiver.mall.entity.Sale; |
||||
|
import cc.hiver.mall.pojo.dto.SaleDTO; |
||||
|
import cc.hiver.mall.pojo.vo.SaleVO; |
||||
|
|
||||
|
public interface SalesAndDetailsService { |
||||
|
|
||||
|
public Sale handleSalesAndDetails(SaleDTO saleDTO); |
||||
|
|
||||
|
public Sale handleBackSalesAndDetails(SaleDTO saleDTO); |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
package cc.hiver.mall.service; |
||||
|
|
||||
|
public interface SendMessageService { |
||||
|
|
||||
|
void handleSendAppMessage(); |
||||
|
|
||||
|
void handleSendWXMessage(); |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,15 @@ |
|||||
|
package cc.hiver.mall.service; |
||||
|
|
||||
|
import cc.hiver.mall.entity.SaleDetail; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
public interface StockAndLogService { |
||||
|
|
||||
|
//出
|
||||
|
void handleSubStockAndLog(List<SaleDetail> saleDetailList); |
||||
|
|
||||
|
//入
|
||||
|
void handleIncStockAndLog(List<SaleDetail> saleDetailList); |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,10 @@ |
|||||
|
package cc.hiver.mall.service.mybatis; |
||||
|
|
||||
|
import cc.hiver.mall.entity.SaleDetail; |
||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||
|
|
||||
|
public interface SaleDetailService extends IService<SaleDetail> { |
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
||||
@ -0,0 +1,41 @@ |
|||||
|
package cc.hiver.mall.serviceimpl; |
||||
|
|
||||
|
import cc.hiver.mall.entity.OrderXd; |
||||
|
import cc.hiver.mall.entity.Sale; |
||||
|
import cc.hiver.mall.pojo.dto.SaleDTO; |
||||
|
import cc.hiver.mall.service.OrderService; |
||||
|
import cc.hiver.mall.service.RushOrderService; |
||||
|
import cn.hutool.core.util.StrUtil; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
@Service |
||||
|
public class RushOrderServiceImpl implements RushOrderService { |
||||
|
|
||||
|
@Autowired |
||||
|
OrderService orderService; |
||||
|
|
||||
|
@Override |
||||
|
public void handleRushOrder(SaleDTO saleDTO) { |
||||
|
/** |
||||
|
* 根据销售单推入至抢单表 |
||||
|
* */ |
||||
|
Sale sale = saleDTO.getSale(); |
||||
|
OrderXd orderXd = new OrderXd(); |
||||
|
orderXd.setOrderId(sale.getId()); |
||||
|
orderXd.setOrderLogistics(sale.getTransportType()); |
||||
|
orderXd.setOrderAddress(sale.getProvince()+","+sale.getCity()+","+sale.getArea()); |
||||
|
if("4".equals(sale.getTransportType())) |
||||
|
orderXd.setOrderStreet(sale.getShareAddress()); |
||||
|
else |
||||
|
orderXd.setOrderStreet(sale.getReceiveAddress()); |
||||
|
orderXd.setOrderStatus(Integer.valueOf(sale.getStatus())); |
||||
|
orderXd.setOrderByWorker(StrUtil.isNotEmpty(saleDTO.getOrderByWorker())? saleDTO.getOrderByWorker() : null); |
||||
|
orderXd.setTransCompany(saleDTO.getTransCompany()); |
||||
|
orderXd.setOrderByWorkertime(sale.getCreateTime()); |
||||
|
orderXd.setTimeout(2); |
||||
|
|
||||
|
orderService.save(orderXd); |
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,103 @@ |
|||||
|
package cc.hiver.mall.serviceimpl; |
||||
|
|
||||
|
import cc.hiver.mall.entity.Sale; |
||||
|
import cc.hiver.mall.entity.SaleDetail; |
||||
|
import cc.hiver.mall.pojo.dto.SaleDTO; |
||||
|
import cc.hiver.mall.service.SalesAndDetailsService; |
||||
|
import cc.hiver.mall.service.mybatis.SaleDetailService; |
||||
|
import cc.hiver.mall.service.mybatis.SaleService; |
||||
|
import cn.hutool.core.util.StrUtil; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@Service |
||||
|
public class SalesAndDetailsServiceImpl implements SalesAndDetailsService { |
||||
|
|
||||
|
|
||||
|
@Autowired |
||||
|
SaleService saleService; |
||||
|
|
||||
|
@Autowired |
||||
|
SaleDetailService saleDetailService; |
||||
|
|
||||
|
@Override |
||||
|
public Sale handleSalesAndDetails(SaleDTO saleDTO) { |
||||
|
|
||||
|
/** |
||||
|
* 1.处理Sale总订单 |
||||
|
* 处理订单状态/收款状态 |
||||
|
* */ |
||||
|
Sale sale = saleDTO.getSale(); |
||||
|
|
||||
|
BigDecimal realAmount = sale.getRealAmount(); |
||||
|
BigDecimal alreadyEarn = sale.getAlreadyEarn(); |
||||
|
if(realAmount.subtract(alreadyEarn).compareTo(BigDecimal.ZERO)>0 && alreadyEarn.compareTo(BigDecimal.ZERO)>0){ |
||||
|
sale.setPayStatus("2"); |
||||
|
} else if (realAmount.subtract(alreadyEarn).compareTo(BigDecimal.ZERO)==0){ |
||||
|
sale.setPayStatus("1"); |
||||
|
} else { |
||||
|
sale.setPayStatus("0"); |
||||
|
} |
||||
|
|
||||
|
if (StrUtil.isNotBlank(saleDTO.getOrderByWorker())) { |
||||
|
sale.setStatus("2"); |
||||
|
} else { |
||||
|
sale.setStatus("1"); |
||||
|
} |
||||
|
saleService.save(sale); |
||||
|
|
||||
|
String saleId = sale.getId(); |
||||
|
/** |
||||
|
* 2.处理SaleDetail明细单 |
||||
|
* */ |
||||
|
|
||||
|
List<SaleDetail> saleDetailList = saleDTO.getSaleDetailList(); |
||||
|
for(SaleDetail saleDetail : saleDetailList) |
||||
|
saleDetail.setSaleId(saleId); |
||||
|
saleDetailService.saveBatch(saleDetailList); |
||||
|
|
||||
|
return sale; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public Sale handleBackSalesAndDetails(SaleDTO saleDTO) { |
||||
|
|
||||
|
/** |
||||
|
* 1.处理Sale总订单 |
||||
|
* 处理订单状态/收款状态 |
||||
|
* */ |
||||
|
Sale sale = saleDTO.getSale(); |
||||
|
|
||||
|
BigDecimal realAmount = sale.getRealAmount(); |
||||
|
BigDecimal alreadyEarn = sale.getAlreadyEarn(); |
||||
|
if(realAmount.subtract(alreadyEarn).compareTo(BigDecimal.ZERO)>0 && alreadyEarn.compareTo(BigDecimal.ZERO)>0){ |
||||
|
sale.setPayStatus("2"); |
||||
|
} else if (realAmount.subtract(alreadyEarn).compareTo(BigDecimal.ZERO)==0){ |
||||
|
sale.setPayStatus("1"); |
||||
|
} else { |
||||
|
sale.setPayStatus("0"); |
||||
|
} |
||||
|
|
||||
|
if (StrUtil.isNotBlank(saleDTO.getOrderByWorker())) { |
||||
|
sale.setStatus("2"); |
||||
|
} else { |
||||
|
sale.setStatus("1"); |
||||
|
} |
||||
|
saleService.save(sale); |
||||
|
|
||||
|
String saleId = sale.getId(); |
||||
|
/** |
||||
|
* 2.处理SaleDetail明细单 |
||||
|
* */ |
||||
|
|
||||
|
List<SaleDetail> saleDetailList = saleDTO.getSaleDetailList(); |
||||
|
for(SaleDetail saleDetail : saleDetailList) |
||||
|
saleDetail.setSaleId(saleId); |
||||
|
saleDetailService.saveBatch(saleDetailList); |
||||
|
|
||||
|
return sale; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,25 @@ |
|||||
|
package cc.hiver.mall.serviceimpl; |
||||
|
|
||||
|
import cc.hiver.core.service.JPushService; |
||||
|
import cc.hiver.mall.service.SendMessageService; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
@Service |
||||
|
public class SendMessageServiceImpl implements SendMessageService { |
||||
|
|
||||
|
@Autowired |
||||
|
JPushService jPushService; |
||||
|
|
||||
|
@Override |
||||
|
public void handleSendAppMessage() { |
||||
|
String registrationId = ""; |
||||
|
String message = "宝贝儿,来订单了"; |
||||
|
jPushService.sendPushNotification(registrationId, message); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void handleSendWXMessage() { |
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,95 @@ |
|||||
|
package cc.hiver.mall.serviceimpl; |
||||
|
|
||||
|
import cc.hiver.core.common.utils.BeanUtils; |
||||
|
import cc.hiver.mall.entity.SaleDetail; |
||||
|
import cc.hiver.mall.entity.Stock; |
||||
|
import cc.hiver.mall.entity.StockLog; |
||||
|
import cc.hiver.mall.service.StockAndLogService; |
||||
|
import cc.hiver.mall.service.mybatis.SaleDetailService; |
||||
|
import cc.hiver.mall.service.mybatis.StockLogService; |
||||
|
import cc.hiver.mall.service.mybatis.StockService; |
||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
@Service |
||||
|
public class StockAndLogServiceImpl implements StockAndLogService { |
||||
|
|
||||
|
@Autowired |
||||
|
StockService stockService; |
||||
|
|
||||
|
@Autowired |
||||
|
StockLogService stockLogService; |
||||
|
|
||||
|
@Autowired |
||||
|
SaleDetailService saleDetailService; |
||||
|
|
||||
|
@Override |
||||
|
public void handleSubStockAndLog(List<SaleDetail> saleDetailList) { |
||||
|
|
||||
|
//根据销售单明细进行库存消减
|
||||
|
for(SaleDetail saleDetail : saleDetailList){ |
||||
|
String productId = saleDetail.getProductId(); |
||||
|
String attributeList = saleDetail.getAttributeList(); |
||||
|
QueryWrapper<Stock> stockQueryWrapper = new QueryWrapper<>(); |
||||
|
stockQueryWrapper.eq("product_id",productId); |
||||
|
stockQueryWrapper.eq("attribute_list",attributeList); |
||||
|
//存在库存则修改库存数量
|
||||
|
Stock origin = stockService.getOne(stockQueryWrapper); |
||||
|
Integer stockCount = origin.getStockCount(); |
||||
|
UpdateWrapper<Stock> updateWrapper = new UpdateWrapper<>(); |
||||
|
updateWrapper.eq("id",origin.getId()); |
||||
|
updateWrapper.set("stock_count",stockCount - saleDetail.getProductCount()); |
||||
|
stockService.update(updateWrapper); |
||||
|
|
||||
|
//2.记录库存履历
|
||||
|
StockLog stockLog = new StockLog(); |
||||
|
stockLog.setChangeType("1");//出库
|
||||
|
stockLog.setProductId(saleDetail.getProductId()); |
||||
|
stockLog.setProductSpecs(saleDetail.getAttributeList()); |
||||
|
stockLog.setStock(stockCount);//出库前数量
|
||||
|
stockLog.setChangeStock(saleDetail.getProductCount());//出库数量
|
||||
|
stockLog.setPrice(saleDetail.getPrice()); |
||||
|
stockLog.setPurchasePrice(saleDetail.getPurchasePrice()); |
||||
|
stockLog.setWholesalePrice(saleDetail.getWholesalePrice()); |
||||
|
stockLog.setShopId(saleDetail.getShopId()); |
||||
|
stockLogService.save(stockLog); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void handleIncStockAndLog(List<SaleDetail> saleDetailList) { |
||||
|
//根据销售单明细进行库存消减
|
||||
|
for(SaleDetail saleDetail : saleDetailList){ |
||||
|
String productId = saleDetail.getProductId(); |
||||
|
String attributeList = saleDetail.getAttributeList(); |
||||
|
QueryWrapper<Stock> stockQueryWrapper = new QueryWrapper<>(); |
||||
|
stockQueryWrapper.eq("product_id",productId); |
||||
|
stockQueryWrapper.eq("attribute_list",attributeList); |
||||
|
//存在库存则修改库存数量
|
||||
|
Stock origin = stockService.getOne(stockQueryWrapper); |
||||
|
Integer stockCount = origin.getStockCount(); |
||||
|
UpdateWrapper<Stock> updateWrapper = new UpdateWrapper<>(); |
||||
|
updateWrapper.eq("id",origin.getId()); |
||||
|
updateWrapper.set("stock_count",stockCount + saleDetail.getProductCount()); |
||||
|
stockService.update(updateWrapper); |
||||
|
|
||||
|
//2.记录库存履历
|
||||
|
StockLog stockLog = new StockLog(); |
||||
|
stockLog.setChangeType("0");//退货-入库
|
||||
|
stockLog.setProductId(saleDetail.getProductId()); |
||||
|
stockLog.setProductSpecs(saleDetail.getAttributeList()); |
||||
|
stockLog.setStock(stockCount);//退货-入库前数量
|
||||
|
stockLog.setChangeStock(saleDetail.getProductCount());//退货-入库数量
|
||||
|
stockLog.setPrice(saleDetail.getPrice()); |
||||
|
stockLog.setPurchasePrice(saleDetail.getPurchasePrice()); |
||||
|
stockLog.setWholesalePrice(saleDetail.getWholesalePrice()); |
||||
|
stockLog.setShopId(saleDetail.getShopId()); |
||||
|
stockLogService.save(stockLog); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue