Commit 1d14efba by caiyt

修复bug及实现新增需求

parent 2b05019f
...@@ -117,8 +117,19 @@ public class AppController extends BaseController { ...@@ -117,8 +117,19 @@ public class AppController extends BaseController {
return getDataTable(couponVos); return getDataTable(couponVos);
} }
@GetMapping("/homepage/coupon-count")
@ApiOperation("小程序首页查询用户可用优惠券数量")
public AjaxResult getUserAvailableCouponCnt(HttpServletRequest request) {
LoginUser loginUser = tokenService.getLoginUser(request);
if (loginUser == null) {
throw new ServiceException("请先登录");
}
int custAvailableCouponCnt = couponUserService.getCustAvailableCouponCnt(loginUser.getOpenId());
return AjaxResult.success(custAvailableCouponCnt);
}
@PostMapping("/order/coupon/fitable-count") @PostMapping("/order/coupon/fitable-count")
@ApiOperation("查询用户可用优惠券数量") @ApiOperation("小程序下单页面查询用户可用优惠券数量")
public AjaxResult getUserAvailableCouponCnt(HttpServletRequest request, @RequestBody Order order) { public AjaxResult getUserAvailableCouponCnt(HttpServletRequest request, @RequestBody Order order) {
LoginUser loginUser = tokenService.getLoginUser(request); LoginUser loginUser = tokenService.getLoginUser(request);
if (loginUser == null) { if (loginUser == null) {
...@@ -137,6 +148,7 @@ public class AppController extends BaseController { ...@@ -137,6 +148,7 @@ public class AppController extends BaseController {
if (loginUser == null) { if (loginUser == null) {
throw new ServiceException("请先登录"); throw new ServiceException("请先登录");
} }
loginUser.setOpenId("oA0gy4x4bUZcULVYwsLI_EW901mg");
List<CouponVo> couponVos = couponUserService.listCustAvailableCoupon(loginUser.getOpenId(), null); List<CouponVo> couponVos = couponUserService.listCustAvailableCoupon(loginUser.getOpenId(), null);
couponUserService.resovleCouponFitable(couponVos, order); couponUserService.resovleCouponFitable(couponVos, order);
couponRuleService.translateUseLimit(couponVos); couponRuleService.translateUseLimit(couponVos);
......
...@@ -47,26 +47,26 @@ public class ApplicationController { ...@@ -47,26 +47,26 @@ public class ApplicationController {
String key = jj.getString("key"); String key = jj.getString("key");
JSONObject location = jj.getJSONObject("location"); JSONObject location = jj.getJSONObject("location");
String s = stringRedisTemplate.opsForValue().get(key); String s = stringRedisTemplate.opsForValue().get(key);
if(StringUtils.isEmpty(s)){ if (StringUtils.isEmpty(s)) {
throw new ServiceException("该二维码已经过期"); throw new ServiceException("该二维码已经过期");
} }
JSONObject info = JSONObject.parseObject(s); JSONObject info = JSONObject.parseObject(s);
String machineCode = info.getString("machineCode"); String machineCode = info.getString("machineCode");
Machine machine = machineService.selectMachineByCode(machineCode); Machine machine = machineService.selectMachineByCode(machineCode);
Shop shop = shopService.selectShopById(machine.getShopId()); Shop shop = shopService.selectShopById(machine.getShopId());
shop.setDistance(AppServiceImpl.GetDistance(Double.parseDouble(shop.getLng()),Double.parseDouble(shop.getLat()),Double.parseDouble(location.getString("lng")),Double.parseDouble(location.getString("lat")))); shop.setDistance(AppServiceImpl.getDistance(Double.parseDouble(shop.getLng()), Double.parseDouble(shop.getLat()), Double.parseDouble(location.getString("lng")), Double.parseDouble(location.getString("lat"))));
info.put("shop",shop); info.put("shop", shop);
String[] keys = key.split("_"); String[] keys = key.split("_");
//推送数据给安卓 //推送数据给安卓
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("action","QRCODE_VISITED"); jsonObject.put("action", "QRCODE_VISITED");
jsonObject.put("timestamp",String.valueOf(System.currentTimeMillis())); jsonObject.put("timestamp", String.valueOf(System.currentTimeMillis()));
JSONObject data = new JSONObject(); JSONObject data = new JSONObject();
data.put("seqNo",key); data.put("seqNo", key);
jsonObject.put("data",data); jsonObject.put("data", data);
jiGuangPushService.push(keys[0],jsonObject); jiGuangPushService.push(keys[0], jsonObject);
// stringRedisTemplate.delete(key); // stringRedisTemplate.delete(key);
return AjaxResult.success("处理成功",info.toJSONString()); return AjaxResult.success("处理成功", info.toJSONString());
} }
@RequestMapping("/jgRegister") @RequestMapping("/jgRegister")
public AjaxResult jgRegister(@RequestParam String machineCode,@RequestParam String registerId){ public AjaxResult jgRegister(@RequestParam String machineCode,@RequestParam String registerId){
......
...@@ -46,6 +46,10 @@ public class CustomerController extends BaseController { ...@@ -46,6 +46,10 @@ public class CustomerController extends BaseController {
throw new ServiceException("请先登录"); throw new ServiceException("请先登录");
} }
customer.setId(loginUser.getOpenId()); customer.setId(loginUser.getOpenId());
Assert.notNull(customer.getSendMsgFlag1(), "用户授权发送消息1未传递");
Assert.notNull(customer.getSendMsgFlag2(), "用户授权发送消息2未传递");
Assert.notNull(customer.getSendMsgFlag3(), "用户授权发送消息3未传递");
Assert.notNull(customer.getRememberFlag(), "记住标识未传递");
customerService.updateSendMsgFlag(customer); customerService.updateSendMsgFlag(customer);
return AjaxResult.success(); return AjaxResult.success();
} }
......
...@@ -5,15 +5,20 @@ import com.soss.common.core.controller.BaseController; ...@@ -5,15 +5,20 @@ import com.soss.common.core.controller.BaseController;
import com.soss.common.core.domain.AjaxResult; import com.soss.common.core.domain.AjaxResult;
import com.soss.common.core.page.TableDataInfo; import com.soss.common.core.page.TableDataInfo;
import com.soss.common.enums.BusinessType; import com.soss.common.enums.BusinessType;
import com.soss.common.enums.SkuDeleteState;
import com.soss.common.exception.ServiceException; import com.soss.common.exception.ServiceException;
import com.soss.system.domain.Goods; import com.soss.system.domain.Goods;
import com.soss.system.domain.GoodsSku;
import com.soss.system.service.IGoodsService; import com.soss.system.service.IGoodsService;
import com.soss.system.service.IGoodsSkuService;
import io.jsonwebtoken.lang.Assert;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* 商品Controller * 商品Controller
...@@ -23,18 +28,18 @@ import java.util.List; ...@@ -23,18 +28,18 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/system/goods") @RequestMapping("/system/goods")
public class GoodsController extends BaseController public class GoodsController extends BaseController {
{
@Autowired @Autowired
private IGoodsService goodsService; private IGoodsService goodsService;
@Autowired
private IGoodsSkuService goodsSkuService;
/** /**
* 查询商品列表 * 查询商品列表
*/ */
@PreAuthorize("@ss.hasPermi('system:goods:list')") @PreAuthorize("@ss.hasPermi('system:goods:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(Goods goods) public TableDataInfo list(Goods goods) {
{
startPage(); startPage();
List<Goods> list = goodsService.selectGoodsList(goods); List<Goods> list = goodsService.selectGoodsList(goods);
return getDataTable(list); return getDataTable(list);
...@@ -118,4 +123,37 @@ public class GoodsController extends BaseController ...@@ -118,4 +123,37 @@ public class GoodsController extends BaseController
public AjaxResult getGoodsSkuList(@PathVariable("goodsId") Long goodsId) { public AjaxResult getGoodsSkuList(@PathVariable("goodsId") Long goodsId) {
return AjaxResult.success(goodsService.getGoodsSkus(goodsId)); return AjaxResult.success(goodsService.getGoodsSkus(goodsId));
} }
/**
* 删除sku
*/
@PreAuthorize("@ss.hasPermi('system:goods:sku:delete')")
@GetMapping("/sku/delete/{id}")
@ApiOperation("删除sku")
public AjaxResult deleteSkuManual(@PathVariable("id") Long skuId) {
GoodsSku sku = goodsSkuService.selectGoodsSkuById(skuId);
Assert.notNull(sku, "未查询到匹配的sku记录[id=" + skuId + "]");
Assert.isTrue(Objects.equals(sku.getIsDeleted(), SkuDeleteState.NORMAL.getState()), "当前状态不允许做该操作");
Goods goods = goodsService.selectGoodsById(sku.getGoodsId());
Assert.notNull(goods, "未查询到sku匹配的商品信息");
Assert.isTrue(Objects.equals(goods.getState(), "4"), "需先下架商品之后才可删除");
sku.setIsDeleted(SkuDeleteState.DELETE_MANUAL.getState());
goodsSkuService.updateGoodsSku(sku);
return AjaxResult.success();
}
/**
* 恢复sku
*/
@PreAuthorize("@ss.hasPermi('system:goods:sku:recover')")
@GetMapping("/sku/recover/{id}")
@ApiOperation("恢复sku")
public AjaxResult recoverSku(@PathVariable("id") Long skuId) {
GoodsSku sku = goodsSkuService.selectGoodsSkuById(skuId);
Assert.notNull(sku, "未查询到匹配的sku记录[id=" + skuId + "]");
Assert.isTrue(Objects.equals(sku.getIsDeleted(), SkuDeleteState.DELETE_MANUAL.getState()), "当前状态不允许做该操作");
sku.setIsDeleted(SkuDeleteState.NORMAL.getState());
goodsSkuService.updateGoodsSku(sku);
return AjaxResult.success();
}
} }
...@@ -15,6 +15,7 @@ import com.soss.system.domain.vo.CouponVo; ...@@ -15,6 +15,7 @@ import com.soss.system.domain.vo.CouponVo;
import com.soss.system.domain.vo.OrderQuery; import com.soss.system.domain.vo.OrderQuery;
import com.soss.system.service.ICouponUserService; import com.soss.system.service.ICouponUserService;
import com.soss.system.service.impl.OrderServiceImpl; import com.soss.system.service.impl.OrderServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
...@@ -33,6 +34,7 @@ import java.util.Map; ...@@ -33,6 +34,7 @@ import java.util.Map;
* @date 2022-04-28 * @date 2022-04-28
*/ */
@RestController @RestController
@Slf4j
@RequestMapping("/order") @RequestMapping("/order")
public class OrderController extends BaseController { public class OrderController extends BaseController {
@Autowired @Autowired
...@@ -116,6 +118,8 @@ public class OrderController extends BaseController { ...@@ -116,6 +118,8 @@ public class OrderController extends BaseController {
order.setCouponAmount(couponVo.getCouponAmount().negate()); order.setCouponAmount(couponVo.getCouponAmount().negate());
order.setPaidAmount(order.getAmount().add(order.getCouponAmount())); order.setPaidAmount(order.getAmount().add(order.getCouponAmount()));
order.setCouponId(couponVo.getCouponId()); order.setCouponId(couponVo.getCouponId());
} else {
couponUserService.orderDetailCheckAndAssign(order.getOrderDetails());
} }
AjaxResult ajaxResult = orderService.insertOrder(loginUser, order, couponUserId); AjaxResult ajaxResult = orderService.insertOrder(loginUser, order, couponUserId);
...@@ -123,6 +127,9 @@ public class OrderController extends BaseController { ...@@ -123,6 +127,9 @@ public class OrderController extends BaseController {
return ajaxResult; return ajaxResult;
} }
int amount = order.getPaidAmount().movePointRight(2).intValue(); int amount = order.getPaidAmount().movePointRight(2).intValue();
if (amount == 0) {
return AjaxResult.success(order.getId());
}
Map payInfo = weixinService.pay(request, "hooloo", order.getOrderNo(), order.getUserId(), amount); Map payInfo = weixinService.pay(request, "hooloo", order.getOrderNo(), order.getUserId(), amount);
if (payInfo != null) { if (payInfo != null) {
payInfo.put("orderId", order.getId()); payInfo.put("orderId", order.getId());
...@@ -138,6 +145,9 @@ public class OrderController extends BaseController { ...@@ -138,6 +145,9 @@ public class OrderController extends BaseController {
order.setOrderNo(orderService.getOrderNo(order.getSource())); order.setOrderNo(orderService.getOrderNo(order.getSource()));
orderService.updateOrder(order); orderService.updateOrder(order);
int amount = order.getPaidAmount().movePointRight(2).intValue(); int amount = order.getPaidAmount().movePointRight(2).intValue();
if (amount == 0) {
return AjaxResult.success();
}
Map payInfo = weixinService.pay(request, "hooloo", order.getOrderNo(), order.getUserId(), amount); Map payInfo = weixinService.pay(request, "hooloo", order.getOrderNo(), order.getUserId(), amount);
if (payInfo != null) { if (payInfo != null) {
return AjaxResult.success(payInfo); return AjaxResult.success(payInfo);
......
...@@ -11,18 +11,24 @@ import com.soss.common.exception.ServiceException; ...@@ -11,18 +11,24 @@ import com.soss.common.exception.ServiceException;
import com.soss.common.utils.StringUtils; import com.soss.common.utils.StringUtils;
import com.soss.framework.web.service.TokenService; import com.soss.framework.web.service.TokenService;
import com.soss.framework.web.service.WeixinServiceImpl; import com.soss.framework.web.service.WeixinServiceImpl;
import com.soss.system.domain.Goods;
import com.soss.system.domain.Order; import com.soss.system.domain.Order;
import com.soss.system.domain.OrderDetail;
import com.soss.system.domain.OrderRefund; import com.soss.system.domain.OrderRefund;
import com.soss.system.domain.vo.OrderQuery; import com.soss.system.domain.vo.OrderQuery;
import com.soss.system.service.IGoodsService;
import com.soss.system.service.IOrderRefundService; import com.soss.system.service.IOrderRefundService;
import com.soss.system.service.impl.OrderServiceImpl; import com.soss.system.service.impl.OrderServiceImpl;
import io.jsonwebtoken.lang.Assert; import io.jsonwebtoken.lang.Assert;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* 订单退款Controller * 订单退款Controller
...@@ -42,6 +48,8 @@ public class OrderRefundController extends BaseController ...@@ -42,6 +48,8 @@ public class OrderRefundController extends BaseController
private TokenService tokenService; private TokenService tokenService;
@Autowired @Autowired
private OrderServiceImpl orderService; private OrderServiceImpl orderService;
@Autowired
private IGoodsService goodsService;
/** /**
* 查询订单退款列表 * 查询订单退款列表
...@@ -71,7 +79,23 @@ public class OrderRefundController extends BaseController ...@@ -71,7 +79,23 @@ public class OrderRefundController extends BaseController
@PreAuthorize("@ss.hasPermi('system:refund:query')") @PreAuthorize("@ss.hasPermi('system:refund:query')")
@GetMapping(value = "/{id}") @GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") String id) { public AjaxResult getInfo(@PathVariable("id") String id) {
return AjaxResult.success(orderRefundService.selectOrderRefundById(id)); OrderRefund refund = orderRefundService.selectOrderRefundById(id);
Order order = refund.getOrder();
if (order == null) {
return AjaxResult.success(refund);
}
List<OrderDetail> orderDetails = order.getOrderDetails();
if (CollectionUtils.isEmpty(orderDetails)) {
return AjaxResult.success(refund);
}
List<Long> goodsIds = orderDetails.stream().map(OrderDetail::getGoodsId).collect(Collectors.toList());
List<Goods> goods = goodsService.selectGoodsByIds(goodsIds);
orderDetails.forEach(orderDetail -> goods.forEach(good -> {
if (Objects.equals(orderDetail.getGoodsId(), good.getId())) {
orderDetail.setGoods(good);
}
}));
return AjaxResult.success(refund);
} }
/** /**
...@@ -95,10 +119,14 @@ public class OrderRefundController extends BaseController ...@@ -95,10 +119,14 @@ public class OrderRefundController extends BaseController
if (obejct instanceof OrderRefund) { if (obejct instanceof OrderRefund) {
OrderRefund orderRefund1 = (OrderRefund) obejct; OrderRefund orderRefund1 = (OrderRefund) obejct;
if (RefundState.PENDING.getState().equals(orderRefund1.getState())) { if (RefundState.PENDING.getState().equals(orderRefund1.getState())) {
int totalFee = orderRefund1.getTotalFee().movePointRight(2).intValue();
int refundAmount = orderRefund1.getRefundAmount().movePointRight(2).intValue(); int refundAmount = orderRefund1.getRefundAmount().movePointRight(2).intValue();
if (refundAmount > 0) {
int totalFee = orderRefund1.getOrder().getPaidAmount().movePointRight(2).intValue();
weixinService.refund(orderRefund1.getOrderNo(), orderRefund1.getRefundNo(), totalFee, refundAmount); weixinService.refund(orderRefund1.getOrderNo(), orderRefund1.getRefundNo(), totalFee, refundAmount);
orderRefund1.setState(RefundState.REFUNDING.getState()); orderRefund1.setState(RefundState.REFUNDING.getState());
} else {
orderRefund1.setState(RefundState.SUCCESS.getState());
}
orderRefundService.updateOrderRefund(orderRefund1); orderRefundService.updateOrderRefund(orderRefund1);
} }
} }
......
...@@ -8,7 +8,9 @@ import com.soss.common.core.domain.AjaxResult; ...@@ -8,7 +8,9 @@ import com.soss.common.core.domain.AjaxResult;
import com.soss.common.core.page.TableDataInfo; import com.soss.common.core.page.TableDataInfo;
import com.soss.common.enums.BusinessType; import com.soss.common.enums.BusinessType;
import com.soss.system.domain.Goods; import com.soss.system.domain.Goods;
import com.soss.system.domain.GoodsCategory;
import com.soss.system.domain.Shop; import com.soss.system.domain.Shop;
import com.soss.system.service.IGoodsService;
import com.soss.system.service.IShopService; import com.soss.system.service.IShopService;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -28,14 +30,15 @@ import java.util.Map; ...@@ -28,14 +30,15 @@ import java.util.Map;
*/ */
@RestController @RestController
@RequestMapping("/system/shop") @RequestMapping("/system/shop")
public class ShopController extends BaseController public class ShopController extends BaseController {
{
@Autowired @Autowired
private IShopService shopService; private IShopService shopService;
@Autowired
private IGoodsService goodsService;
@GetMapping(value = "/turn") @GetMapping(value = "/turn")
public AjaxResult turn(@RequestParam Long shopId,@RequestParam Long goodsId, @RequestParam String pointer){ public AjaxResult turn(@RequestParam Long shopId, @RequestParam Long goodsId, @RequestParam String pointer) {
return AjaxResult.success(shopService.turn(shopId,goodsId,pointer)); return AjaxResult.success(shopService.turn(shopId, goodsId, pointer));
} }
/** /**
...@@ -135,27 +138,29 @@ public class ShopController extends BaseController ...@@ -135,27 +138,29 @@ public class ShopController extends BaseController
return AjaxResult.success(shopService.addGoods(shopId,goodsIds)); return AjaxResult.success(shopService.addGoods(shopId,goodsIds));
} }
@PostMapping(value = "/offGoods") @PostMapping(value = "/offGoods")
public AjaxResult offGoods(@RequestBody String body) public AjaxResult offGoods(@RequestBody String body) {
{
JSONObject jsonObject = JSON.parseObject(body); JSONObject jsonObject = JSON.parseObject(body);
return AjaxResult.success(shopService.offGoods(jsonObject)); return AjaxResult.success(shopService.offGoods(jsonObject));
} }
/** /**
* 获取店铺里面的商品信息,分类展示 * 获取店铺里面的商品信息,分类展示
*/ */
@GetMapping(value = "/getCategoryGoods") @GetMapping(value = "/getCategoryGoods")
public AjaxResult getCategoryGoods(long shopId) public AjaxResult getCategoryGoods(long shopId) {
{ List<GoodsCategory> categoryGoods = shopService.getCategoryGoods(shopId);
return AjaxResult.success(shopService.getCategoryGoods(shopId)); for (GoodsCategory categoryGood : categoryGoods) {
goodsService.resolverCategoryName(categoryGood.getGoodsList());
}
return AjaxResult.success(categoryGoods);
} }
/** /**
* 获取店铺里面商品对应的产品信息 * 获取店铺里面商品对应的产品信息
*/ */
@GetMapping(value = "/getSkuByGoodsId") @GetMapping(value = "/getSkuByGoodsId")
public AjaxResult getSkuByGoodsId(long shopId,long goodsId) public AjaxResult getSkuByGoodsId(long shopId, long goodsId) {
{ return AjaxResult.success(shopService.getSkuByGoodsId(shopId, goodsId));
return AjaxResult.success(shopService.getSkuByGoodsId(shopId,goodsId));
} }
/** /**
......
...@@ -3,7 +3,13 @@ package com.soss.web.controller.coffee; ...@@ -3,7 +3,13 @@ package com.soss.web.controller.coffee;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.soss.common.constant.Constants; import com.soss.common.constant.Constants;
import com.soss.common.core.domain.AjaxResult; import com.soss.common.core.domain.AjaxResult;
import com.soss.common.core.domain.model.LoginUser;
import com.soss.common.utils.StringUtils;
import com.soss.framework.web.service.TokenService;
import com.soss.framework.web.service.WeixinServiceImpl; import com.soss.framework.web.service.WeixinServiceImpl;
import com.soss.system.domain.Customer;
import com.soss.system.domain.Shop;
import com.soss.system.service.ICustomerService;
import com.soss.system.service.impl.AppServiceImpl; import com.soss.system.service.impl.AppServiceImpl;
import com.soss.system.service.impl.OrderTakingServiceImpl; import com.soss.system.service.impl.OrderTakingServiceImpl;
import com.soss.system.utils.SendSmsUtil; import com.soss.system.utils.SendSmsUtil;
...@@ -19,25 +25,29 @@ import java.util.Map; ...@@ -19,25 +25,29 @@ import java.util.Map;
@RequestMapping("/weixin") @RequestMapping("/weixin")
@Slf4j @Slf4j
public class WeixinController { public class WeixinController {
@Autowired
private TokenService tokenService;
@Autowired @Autowired
WeixinServiceImpl weixinService; WeixinServiceImpl weixinService;
@Autowired @Autowired
private AppServiceImpl appService; private AppServiceImpl appService;
@Autowired @Autowired
private OrderTakingServiceImpl orderTakingService; private OrderTakingServiceImpl orderTakingService;
@Autowired
private ICustomerService customerService;
//这个就是那个使用传code进来的接口 //这个就是那个使用传code进来的接口
@PostMapping("/login") @PostMapping("/login")
public AjaxResult login(@RequestBody String body){ public AjaxResult login(@RequestBody String body) {
JSONObject param = JSONObject.parseObject(body); JSONObject param = JSONObject.parseObject(body);
String code =param.getString("code"); String code = param.getString("code");
return AjaxResult.success(weixinService.login(code)); return AjaxResult.success(weixinService.login(code));
} }
@PostMapping("/decrypt") @PostMapping("/decrypt")
public AjaxResult decrypt(@RequestBody String body){ public AjaxResult decrypt(@RequestBody String body) {
JSONObject param = JSONObject.parseObject(body); JSONObject param = JSONObject.parseObject(body);
String encryptedData = param.getString("encryptedData"); String encryptedData = param.getString("encryptedData");
String iv = param.getString("iv"); String iv = param.getString("iv");
...@@ -70,20 +80,34 @@ public class WeixinController { ...@@ -70,20 +80,34 @@ public class WeixinController {
*/ */
@PostMapping("/native/notify") @PostMapping("/native/notify")
public String wxNotify(HttpServletRequest request) throws Exception { public String wxNotify(HttpServletRequest request) throws Exception {
System.out.println("微信发送的回调"); System.out.println("微信发送的回调");
return weixinService.wxNotify(request); return weixinService.wxNotify(request);
} }
@RequestMapping("/getShop") @RequestMapping("/getShop")
public AjaxResult getShop(@RequestParam(required = false)String lng,@RequestParam(required = false)String lat){ public AjaxResult getShop(HttpServletRequest request, @RequestParam(required = false) String lng, @RequestParam(required = false) String lat) {
return AjaxResult.success(appService.getShop(lng,lat)); LoginUser loginUser = tokenService.getLoginUser(request);
Shop shop;
if (loginUser == null || StringUtils.isEmpty(loginUser.getOpenId())) {
shop = appService.getShop(lng, lat, false);
} else {
Customer customer = customerService.selectCustById(loginUser.getOpenId());
shop = appService.getShop(lng, lat, customer.getTestFlag());
}
return AjaxResult.success(shop);
} }
@RequestMapping("/getArea") @RequestMapping("/getArea")
public AjaxResult getArea(@RequestParam(required = false) String lng,@RequestParam(required = false)String lat){ public AjaxResult getArea(HttpServletRequest request, @RequestParam(required = false) String lng, @RequestParam(required = false) String lat) {
List<JSONObject> area = weixinService.getArea(lng,lat); LoginUser loginUser = tokenService.getLoginUser(request);
List<JSONObject> area;
if (loginUser == null || StringUtils.isEmpty(loginUser.getOpenId())) {
area = weixinService.getArea(lng, lat, false);
} else {
Customer customer = customerService.selectCustById(loginUser.getOpenId());
area = weixinService.getArea(lng, lat, customer.getTestFlag());
}
return AjaxResult.success(area); return AjaxResult.success(area);
} }
......
package com.soss.web.controller.coupon; package com.soss.web.controller.coupon;
import com.github.pagehelper.PageInfo;
import com.soss.common.annotation.Log; import com.soss.common.annotation.Log;
import com.soss.common.core.controller.BaseController; import com.soss.common.core.controller.BaseController;
import com.soss.common.core.domain.AjaxResult; import com.soss.common.core.domain.AjaxResult;
...@@ -80,12 +81,14 @@ public class CouponController extends BaseController { ...@@ -80,12 +81,14 @@ public class CouponController extends BaseController {
return couponVo; return couponVo;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
couponRuleService.translateUseLimit(voList); couponRuleService.translateUseLimit(voList);
return getDataTable(voList); TableDataInfo dataTable = getDataTable(voList);
dataTable.setTotal(new PageInfo(coupons).getTotal());
return dataTable;
} }
private void transLimitToArrStyle(CouponVo couponVo, CouponRule couponRule) { private void transLimitToArrStyle(CouponVo couponVo, CouponRule couponRule) {
BeanUtils.copyProperties(couponRule, couponVo, "name", "state", "categoryIds", "goodsIds", "province", "city", "area", "shopIds"); BeanUtils.copyProperties(couponRule, couponVo, "name", "state", "categoryIds", "goodsIds", "province", "city", "area", "shopIds");
couponVo.setCategoryIds(ArrayUtil.transStrToCodeList(couponRule.getCategoryIds())); couponVo.setCategoryIds(ArrayUtil.transStrToLongList(couponRule.getCategoryIds()));
couponVo.setGoodsIds(ArrayUtil.transStrToLongList(couponRule.getGoodsIds())); couponVo.setGoodsIds(ArrayUtil.transStrToLongList(couponRule.getGoodsIds()));
couponVo.setProvince(ArrayUtil.transStrToCodeList(couponRule.getProvince())); couponVo.setProvince(ArrayUtil.transStrToCodeList(couponRule.getProvince()));
couponVo.setCity(ArrayUtil.transStrToCodeList(couponRule.getCity())); couponVo.setCity(ArrayUtil.transStrToCodeList(couponRule.getCity()));
...@@ -187,7 +190,7 @@ public class CouponController extends BaseController { ...@@ -187,7 +190,7 @@ public class CouponController extends BaseController {
*/ */
@PreAuthorize("@ss.hasPermi('coupon:list:effective')") @PreAuthorize("@ss.hasPermi('coupon:list:effective')")
@Log(title = "获取当前有效的规则集合", businessType = BusinessType.INSERT) @Log(title = "获取当前有效的规则集合", businessType = BusinessType.INSERT)
@DeleteMapping("/list/effective") @GetMapping("/list/effective")
@ApiOperation("获取当前有效的规则集合") @ApiOperation("获取当前有效的规则集合")
public TableDataInfo listEffective() { public TableDataInfo listEffective() {
startPage(); startPage();
......
package com.soss.common.enums; package com.soss.common.enums;
public enum CouponState { public enum CouponState {
DEFAULT(0, "默认"),
ONLINE(1, "生效中"), ONLINE(1, "生效中"),
OFFLINE(2, "未生效"), OFFLINE(2, "未生效"),
EXPIRED(3, "已失效"), EXPIRED(3, "已失效"),
......
package com.soss.common.enums;
/**
* sku删除状态枚举类
*/
public enum SkuDeleteState {
NORMAL(0, "未删除"),
DELETE_AUTO(1, "自动删除"),
DELETE_MANUAL(2, "手动删除");
private Integer state;
private String desc;
SkuDeleteState(Integer state, String desc) {
this.state = state;
this.desc = desc;
}
public Integer getState() {
return state;
}
public static String getDesc(Integer state) {
for (SkuDeleteState skuDeleteState : SkuDeleteState.values()) {
if (skuDeleteState.state.equals(state)) {
return skuDeleteState.desc;
}
}
return null;
}
}
...@@ -15,6 +15,7 @@ import com.github.wxpay.sdk.WXPayUtil; ...@@ -15,6 +15,7 @@ import com.github.wxpay.sdk.WXPayUtil;
import com.soss.common.core.domain.entity.SysUser; import com.soss.common.core.domain.entity.SysUser;
import com.soss.common.core.domain.model.LoginUser; import com.soss.common.core.domain.model.LoginUser;
import com.soss.common.enums.RefundState; import com.soss.common.enums.RefundState;
import com.soss.common.enums.ShopState;
import com.soss.common.exception.ServiceException; import com.soss.common.exception.ServiceException;
import com.soss.common.utils.StringUtils; import com.soss.common.utils.StringUtils;
import com.soss.common.utils.ip.IpUtils; import com.soss.common.utils.ip.IpUtils;
...@@ -37,6 +38,7 @@ import com.soss.system.weixin.util.RandomStringGenerator; ...@@ -37,6 +38,7 @@ import com.soss.system.weixin.util.RandomStringGenerator;
import com.soss.system.weixin.util.SendMessageUtils; import com.soss.system.weixin.util.SendMessageUtils;
import com.soss.system.weixin.util.Signature; import com.soss.system.weixin.util.Signature;
import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.XStream;
import org.apache.commons.lang3.BooleanUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -536,25 +538,25 @@ public class WeixinServiceImpl { ...@@ -536,25 +538,25 @@ public class WeixinServiceImpl {
return WxPayNotifyResponse.fail("回调有误!"); return WxPayNotifyResponse.fail("回调有误!");
} }
public List<JSONObject> getArea(String lng,String lat) { public List<JSONObject> getArea(String lng, String lat, Boolean testFlag) {
String provinceString ="[value ='%s'][0].label"; String provinceString ="[value ='%s'][0].label";
String cityString ="[value='%s'][0].children[value='%s'][0].label"; String cityString ="[value='%s'][0].children[value='%s'][0].label";
String zoneString = "[value='%s'][0].children[value='%s'][0].children[value='%s'][0].label"; String zoneString = "[value='%s'][0].children[value='%s'][0].children[value='%s'][0].label";
Shop shop = new Shop(); Shop shop = new Shop();
if (BooleanUtils.isTrue(testFlag)) {
shop.setStates(Arrays.asList(ShopState.TESTING.getState(), ShopState.OPEN.getState()));
} else {
shop.setState(ShopState.OPEN.getState());
}
List<Shop> shops = shopMapper.selectShopList(shop); List<Shop> shops = shopMapper.selectShopList(shop);
List<JSONObject> proviceList = new ArrayList<>(); List<JSONObject> proviceList = new ArrayList<>();
List<String> proString = new ArrayList<>(); List<String> proString = new ArrayList<>();
for (Shop shop1 : shops) { for (Shop shop1 : shops) {
if("3".equals(shop1.getState())){ if (StringUtils.isNotEmpty(lng) && StringUtils.isNotEmpty(lat)) {
continue; double realDistance = AppServiceImpl.getRealDistance(Double.parseDouble(lng), Double.parseDouble(lat), Double.parseDouble(shop1.getLng()), Double.parseDouble(shop1.getLat()));
}
if(StringUtils.isNotEmpty(lng)&&StringUtils.isNotEmpty(lat)){
String aa = AppServiceImpl.GetDistance(Double.parseDouble(lng), Double.parseDouble(lat), Double.parseDouble(shop1.getLng()), Double.parseDouble(shop1.getLat()));
shop1.setDistance(aa);
double realDistance = AppServiceImpl.GetRealDistance(Double.parseDouble(lng), Double.parseDouble(lat), Double.parseDouble(shop1.getLng()), Double.parseDouble(shop1.getLat()));
shop1.setRealDistance(realDistance); shop1.setRealDistance(realDistance);
}else{ shop1.setDistance(AppServiceImpl.getDistance(realDistance));
} else {
shop1.setDistance("-1"); shop1.setDistance("-1");
} }
String province = shop1.getProvince(); String province = shop1.getProvince();
......
...@@ -70,6 +70,9 @@ public class Customer extends BaseEntity ...@@ -70,6 +70,9 @@ public class Customer extends BaseEntity
@ApiModelProperty("用户授权有效期,空则永久有效") @ApiModelProperty("用户授权有效期,空则永久有效")
private LocalDateTime flagExpireDate; private LocalDateTime flagExpireDate;
@ApiModelProperty("测试用户标识:true-测试用户")
private Boolean testFlag;
private List<Order> refundOrder; private List<Order> refundOrder;
private List<Order> normalOrder; private List<Order> normalOrder;
......
package com.soss.system.domain; package com.soss.system.domain;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.soss.common.annotation.Excel; import com.soss.common.annotation.Excel;
import com.soss.common.core.domain.BaseEntity; import com.soss.common.core.domain.BaseEntity;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/** /**
* 商品对象 goods * 商品对象 goods
...@@ -16,6 +17,7 @@ import com.soss.common.core.domain.BaseEntity; ...@@ -16,6 +17,7 @@ import com.soss.common.core.domain.BaseEntity;
* @author zxq * @author zxq
* @date 2022-04-28 * @date 2022-04-28
*/ */
@Data
public class Goods extends BaseEntity public class Goods extends BaseEntity
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -27,14 +29,6 @@ public class Goods extends BaseEntity ...@@ -27,14 +29,6 @@ public class Goods extends BaseEntity
@Excel(name = "商品名称") @Excel(name = "商品名称")
private String name; private String name;
public String getCategoryName() {
return categoryName;
}
public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}
/** 商品分类 */ /** 商品分类 */
@Excel(name = "商品分类") @Excel(name = "商品分类")
private String category; private String category;
...@@ -92,54 +86,15 @@ public class Goods extends BaseEntity ...@@ -92,54 +86,15 @@ public class Goods extends BaseEntity
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date updatedAt; private Date updatedAt;
public Date getShelfAt() {
return shelfAt;
}
public void setShelfAt(Date shelfAt) {
this.shelfAt = shelfAt;
}
public Date getRecommendDate() {
return recommendDate;
}
public void setRecommendDate(Date recommendDate) {
this.recommendDate = recommendDate;
}
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
private Date shelfAt; private Date shelfAt;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:dd") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:dd")
private Date recommendDate; private Date recommendDate;
public Integer getSalesVolume() {
return salesVolume;
}
public void setSalesVolume(Integer salesVolume) {
this.salesVolume = salesVolume;
}
public String getRecommend() {
return recommend;
}
public void setRecommend(String recommend) {
this.recommend = recommend;
}
public String getPreferential() {
return preferential;
}
public void setPreferential(String preferential) {
this.preferential = preferential;
}
private String recommend; private String recommend;
private String preferential; private String preferential;
/** /**
* 总销量 * 总销量
*/ */
...@@ -151,150 +106,10 @@ public class Goods extends BaseEntity ...@@ -151,150 +106,10 @@ public class Goods extends BaseEntity
private List<String> goodsTagList; private List<String> goodsTagList;
public List<String> getGoodsTagList() { public List<String> getGoodsTagList() {
return goodsTagList; return goodsTagList;
} }
public void setGoodsTagList(List<String> goodsTagList) {
this.goodsTagList = goodsTagList;
}
public void setId(long id)
{
this.id = id;
}
public long getId()
{
return id;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setCategory(String category)
{
this.category = category;
}
public String getCategory()
{
return category;
}
public void setPrice(BigDecimal price)
{
this.price = price;
}
public BigDecimal getPrice()
{
return price;
}
public void setDiscount(BigDecimal discount)
{
this.discount = discount;
}
public BigDecimal getDiscount()
{
return discount;
}
public void setTakeTime(Long takeTime)
{
this.takeTime = takeTime;
}
public Long getTakeTime()
{
return takeTime;
}
public void setSpec(String spec)
{
this.spec = spec;
}
public String getSpec()
{
return spec;
}
public void setPics(String pics)
{
this.pics = pics;
}
public String getPics()
{
return pics;
}
public void setDesc(String desc)
{
this.desc = desc;
}
public String getDesc()
{
return desc;
}
public void setRemarks(String remarks)
{
this.remarks = remarks;
}
public String getRemarks()
{
return remarks;
}
public void setState(String state)
{
this.state = state;
}
public String getState()
{
return state;
}
public void setIsDeleted(Long isDeleted)
{
this.isDeleted = isDeleted;
}
public Long getIsDeleted()
{
return isDeleted;
}
public void setCreatedAt(Date createdAt)
{
this.createdAt = createdAt;
}
public Date getCreatedAt()
{
return createdAt;
}
public void setUpdatedAt(Date updatedAt)
{
this.updatedAt = updatedAt;
}
public Date getUpdatedAt()
{
return updatedAt;
}
public void setCode(String code)
{
this.code = code;
}
public String getCode()
{
return code;
}
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
......
...@@ -22,7 +22,7 @@ public class GoodsCategory extends BaseEntity { ...@@ -22,7 +22,7 @@ public class GoodsCategory extends BaseEntity {
/** /**
* 主键 * 主键
*/ */
private String id; private Long id;
/** /**
* 分类名称 * 分类名称
......
...@@ -33,8 +33,8 @@ public class GoodsSku extends BaseEntity ...@@ -33,8 +33,8 @@ public class GoodsSku extends BaseEntity
private String ruleList; private String ruleList;
/** 是否删除0否1是 */ /** 是否删除0否1是 */
@Excel(name = "是否删除0否1是") @Excel(name = "是否删除0否 1-自动删除 2-手动删除")
private String isDeleted; private Integer isDeleted;
/** 创建时间 */ /** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
......
package com.soss.system.domain; package com.soss.system.domain;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
import com.soss.common.annotation.Excel; import com.soss.common.annotation.Excel;
...@@ -11,6 +12,7 @@ import com.soss.common.core.domain.BaseEntity; ...@@ -11,6 +12,7 @@ import com.soss.common.core.domain.BaseEntity;
* @author zxq * @author zxq
* @date 2022-05-22 * @date 2022-05-22
*/ */
@Data
public class OrderSnapshot extends BaseEntity public class OrderSnapshot extends BaseEntity
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -22,25 +24,6 @@ public class OrderSnapshot extends BaseEntity ...@@ -22,25 +24,6 @@ public class OrderSnapshot extends BaseEntity
@Excel(name = "快照数据") @Excel(name = "快照数据")
private String snapshot; private String snapshot;
public void setOrderId(Long orderId)
{
this.orderId = orderId;
}
public Long getOrderId()
{
return orderId;
}
public void setSnapshot(String snapshot)
{
this.snapshot = snapshot;
}
public String getSnapshot()
{
return snapshot;
}
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
......
...@@ -10,6 +10,7 @@ import org.apache.commons.lang3.builder.ToStringStyle; ...@@ -10,6 +10,7 @@ import org.apache.commons.lang3.builder.ToStringStyle;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* 店铺对象 shop * 店铺对象 shop
...@@ -92,9 +93,14 @@ public class Shop extends BaseEntity ...@@ -92,9 +93,14 @@ public class Shop extends BaseEntity
@Excel(name = "店铺状态 1 正常 2 暂停营业 3 关闭") @Excel(name = "店铺状态 1 正常 2 暂停营业 3 关闭")
private Integer state; private Integer state;
/**
* 状态集合,查询时用
*/
private List<Integer> states;
private String distance; private String distance;
private double realDistance; private Double realDistance;
private String machieStatus; private String machieStatus;
......
...@@ -22,7 +22,7 @@ public class CouponPo { ...@@ -22,7 +22,7 @@ public class CouponPo {
private Integer categoryId; private Integer categoryId;
@ApiModelProperty("可用商品类别列表,全品类传 [0]") @ApiModelProperty("可用商品类别列表,全品类传 [0]")
private String[] categoryIds; private Long[] categoryIds;
@ApiModelProperty("可用商品id列表") @ApiModelProperty("可用商品id列表")
private Long[] goodsIds; private Long[] goodsIds;
......
...@@ -33,6 +33,9 @@ public class CouponVo extends CouponPo { ...@@ -33,6 +33,9 @@ public class CouponVo extends CouponPo {
@ApiModelProperty("优惠券类型描述") @ApiModelProperty("优惠券类型描述")
private String typeDesc; private String typeDesc;
@ApiModelProperty("优惠券通用描述")
private String categoryDesc;
@ApiModelProperty("优惠券状态") @ApiModelProperty("优惠券状态")
private Integer state; private Integer state;
......
package com.soss.system.domain.vo.orderTaking; package com.soss.system.domain.vo.orderTaking;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
@Data
public class SkuVo implements Serializable { public class SkuVo implements Serializable {
private String skuId; private String skuId;
private String state; private String state;
public String getSkuId() {
return skuId;
}
public void setSkuId(String skuId) {
this.skuId = skuId;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getIsDefault() {
return isDefault;
}
public void setIsDefault(String isDefault) {
this.isDefault = isDefault;
}
public JSONArray getRules() {
return rules;
}
public void setRules(JSONArray rules) {
this.rules = rules;
}
private String price; private String price;
private JSONArray rules; private JSONArray rules;
public String getRulesString() {
return rulesString;
}
public void setRulesString(String rulesString) {
this.rulesString = rulesString;
}
public String getDiscount() {
return discount;
}
public void setDiscount(String discount) {
this.discount = discount;
}
/** /**
* 0 默认 * 0 默认
*/ */
...@@ -80,4 +23,6 @@ public class SkuVo implements Serializable { ...@@ -80,4 +23,6 @@ public class SkuVo implements Serializable {
private String rulesString; private String rulesString;
private String discount; private String discount;
private Integer isDelete;
} }
...@@ -55,7 +55,7 @@ public interface CouponUserMapper { ...@@ -55,7 +55,7 @@ public interface CouponUserMapper {
* @param nowTime * @param nowTime
* @return * @return
*/ */
int getCustAvailableCouponCnt(@Param("custId") String custId, @Param("nowTime") LocalDateTime nowTime); int getCustAvailableCouponCnt(@Param("custId") String custId, @Param("nowTime") LocalDateTime nowTime, @Param("couponUserId") Integer couponUserId);
/** /**
* 查询用户可用优惠券列表 * 查询用户可用优惠券列表
......
...@@ -26,7 +26,7 @@ public interface GoodsCategoryMapper { ...@@ -26,7 +26,7 @@ public interface GoodsCategoryMapper {
* @param ids 商品分类主键集合 * @param ids 商品分类主键集合
* @return 商品分类 * @return 商品分类
*/ */
List<GoodsCategory> selectGoodsCategoryByIds(@Param("ids") List<String> ids); List<GoodsCategory> selectGoodsCategoryByIds(@Param("ids") List<Long> ids);
/** /**
* 查询商品分类列表 * 查询商品分类列表
...@@ -68,7 +68,7 @@ public interface GoodsCategoryMapper { ...@@ -68,7 +68,7 @@ public interface GoodsCategoryMapper {
*/ */
public int deleteGoodsCategoryByIds(String[] ids); public int deleteGoodsCategoryByIds(String[] ids);
List<GoodsCategory> selectByShopId(long shopId); List<String> selectCategoryIdByShopId(long shopId);
GoodsCategory selectGoodsCategoryPointer(String id, String pointer); GoodsCategory selectGoodsCategoryPointer(String id, String pointer);
} }
...@@ -69,7 +69,7 @@ public interface GoodsMapper ...@@ -69,7 +69,7 @@ public interface GoodsMapper
*/ */
public int deleteGoodsByIds(String[] ids); public int deleteGoodsByIds(String[] ids);
Integer selectCount(String id); Integer selectCount(Long id);
List<Goods> selectSpec(String query); List<Goods> selectSpec(String query);
......
...@@ -19,7 +19,7 @@ public interface GoodsSkuMapper ...@@ -19,7 +19,7 @@ public interface GoodsSkuMapper
* @param id 由规格选项组合生成商品sku主键 * @param id 由规格选项组合生成商品sku主键
* @return 由规格选项组合生成商品sku * @return 由规格选项组合生成商品sku
*/ */
public GoodsSku selectGoodsSkuById(String id); public GoodsSku selectGoodsSkuById(Long id);
/** /**
* 查询由规格选项组合生成商品sku列表 * 查询由规格选项组合生成商品sku列表
......
...@@ -21,6 +21,8 @@ public interface OrderDetailMapper { ...@@ -21,6 +21,8 @@ public interface OrderDetailMapper {
*/ */
public OrderDetail selectOrderDetailById(String id); public OrderDetail selectOrderDetailById(String id);
List<OrderDetail> selectOrderDetailsByIds(@Param("ids") List<Long> ids);
/** /**
* 根据明细id集合查询明细列表 * 根据明细id集合查询明细列表
* *
......
package com.soss.system.mapper; package com.soss.system.mapper;
import java.util.List;
import com.soss.system.domain.Goods; import com.soss.system.domain.Goods;
import com.soss.system.domain.ShopGoods; import com.soss.system.domain.ShopGoods;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 店铺和商品关联Mapper接口 * 店铺和商品关联Mapper接口
* *
...@@ -64,7 +64,7 @@ public interface ShopGoodsMapper ...@@ -64,7 +64,7 @@ public interface ShopGoodsMapper
List<Goods> selectShopCategoryGoods(long shopId); List<Goods> selectShopCategoryGoods(long shopId);
List<Goods> selectShopCategoryGoodsByCategoryId(@Param("shopId") long shopId, @Param("categoryId") String categoryId); List<Goods> selectShopCategoryGoodsByCategoryId(@Param("shopId") long shopId, @Param("categoryId") Long categoryId);
void updateStatus(@Param("shopID")String shopID, @Param("goodsId") Long goodsId,@Param("machineId") String robotID,@Param("status") String s); void updateStatus(@Param("shopID")String shopID, @Param("goodsId") Long goodsId,@Param("machineId") String robotID,@Param("status") String s);
......
package com.soss.system.service; package com.soss.system.service;
import com.soss.system.domain.CouponUser; import com.soss.system.domain.CouponUser;
import com.soss.system.domain.GoodsSku;
import com.soss.system.domain.Order; import com.soss.system.domain.Order;
import com.soss.system.domain.OrderDetail;
import com.soss.system.domain.vo.CouponUserVo; import com.soss.system.domain.vo.CouponUserVo;
import com.soss.system.domain.vo.CouponVo; import com.soss.system.domain.vo.CouponVo;
...@@ -30,4 +32,6 @@ public interface ICouponUserService { ...@@ -30,4 +32,6 @@ public interface ICouponUserService {
List<CouponUserVo> selectCouponUserList(CouponUser couponUser); List<CouponUserVo> selectCouponUserList(CouponUser couponUser);
void resovleCouponFitable(List<CouponVo> couponVos, Order order); void resovleCouponFitable(List<CouponVo> couponVos, Order order);
List<GoodsSku> orderDetailCheckAndAssign(List<OrderDetail> orderDetails);
} }
package com.soss.system.service; package com.soss.system.service;
import java.util.List;
import com.soss.system.domain.Goods; import com.soss.system.domain.Goods;
import com.soss.system.domain.GoodsSku; import com.soss.system.domain.GoodsSku;
import java.util.List;
/** /**
* 商品Service接口 * 商品Service接口
* *
...@@ -20,6 +21,8 @@ public interface IGoodsService ...@@ -20,6 +21,8 @@ public interface IGoodsService
*/ */
public Goods selectGoodsById(Long id); public Goods selectGoodsById(Long id);
List<Goods> selectGoodsByIds(List<Long> ids);
/** /**
* 查询商品列表 * 查询商品列表
* *
...@@ -28,6 +31,8 @@ public interface IGoodsService ...@@ -28,6 +31,8 @@ public interface IGoodsService
*/ */
public List<Goods> selectGoodsList(Goods goods); public List<Goods> selectGoodsList(Goods goods);
void resolverCategoryName(List<Goods> goodsList);
/** /**
* 新增商品 * 新增商品
* *
......
package com.soss.system.service; package com.soss.system.service;
import java.util.List;
import com.soss.system.domain.GoodsSku; import com.soss.system.domain.GoodsSku;
import java.util.List;
/** /**
* 由规格选项组合生成商品skuService接口 * 由规格选项组合生成商品skuService接口
* *
...@@ -17,7 +18,7 @@ public interface IGoodsSkuService ...@@ -17,7 +18,7 @@ public interface IGoodsSkuService
* @param id 由规格选项组合生成商品sku主键 * @param id 由规格选项组合生成商品sku主键
* @return 由规格选项组合生成商品sku * @return 由规格选项组合生成商品sku
*/ */
public GoodsSku selectGoodsSkuById(String id); public GoodsSku selectGoodsSkuById(Long id);
/** /**
* 查询由规格选项组合生成商品sku列表 * 查询由规格选项组合生成商品sku列表
......
package com.soss.system.service.impl; package com.soss.system.service.impl;
import com.soss.common.enums.ShopState;
import com.soss.common.utils.StringUtils; import com.soss.common.utils.StringUtils;
import com.soss.system.domain.Shop; import com.soss.system.domain.Shop;
import com.soss.system.mapper.ShopMapper; import com.soss.system.mapper.ShopMapper;
import org.apache.commons.lang3.BooleanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List; import java.util.List;
@Service @Service
public class AppServiceImpl { public class AppServiceImpl {
@Autowired @Autowired
private ShopMapper shopMapper; private ShopMapper shopMapper;
public Shop getShop(String lng, String lat) { private static final double EARTH_RADIUS = 6378137;
public Shop getShop(String lng, String lat, Boolean testFlag) {
Shop shop = new Shop(); Shop shop = new Shop();
shop.setState(1); if (BooleanUtils.isTrue(testFlag)) {
shop.setStates(Arrays.asList(ShopState.TESTING.getState(), ShopState.OPEN.getState()));
} else {
shop.setState(ShopState.OPEN.getState());
}
shop.setIsDefault(1L); shop.setIsDefault(1L);
List<Shop> shops = shopMapper.selectShopList(shop); List<Shop> shops = shopMapper.selectShopList(shop);
if(shops !=null &&!shops.isEmpty()){ if (CollectionUtils.isEmpty(shops)) {
Shop shop1 = shops.get(0); return new Shop();
shop1.setDistance("-1"); }
if(StringUtils.isNotEmpty(lng)&&StringUtils.isNotEmpty(lat)){
//List<Shop> shopList = shopMapper.selectShopList(new Shop());
shop1.setDistance(AppServiceImpl.GetDistance(Double.parseDouble(lng),Double.parseDouble(lat),Double.parseDouble(shop1.getLng()),Double.parseDouble(shop1.getLat()))); shops.forEach(sp -> {
double realDistance;
if (StringUtils.isNotEmpty(lng) && StringUtils.isNotEmpty(lat)) {
realDistance = getRealDistance(Double.parseDouble(lng), Double.parseDouble(lat), Double.parseDouble(sp.getLng()), Double.parseDouble(sp.getLat()));
} else {
realDistance = Double.MAX_VALUE;
} }
return shop1; sp.setRealDistance(realDistance);
}else{ sp.setDistance(getDistance(realDistance));
return new Shop(); });
shops.sort(Comparator.comparing(Shop::getRealDistance).reversed());
return shops.get(0);
}
public static String getDistance(Double realDistance) {
if (realDistance == null) {
return "-1";
}
if (realDistance.equals(Double.MAX_VALUE)) {
return "-1";
} }
if (realDistance > 1000 && realDistance < 10000) {
DecimalFormat df = new DecimalFormat("######0.0");
return df.format(realDistance / 1000) + "km";
} else if (realDistance >= 10000) {
Double aDouble = realDistance / 1000;
return aDouble.intValue() + "km";
}
return realDistance.intValue() + "m";
} }
private static final double EARTH_RADIUS = 6378137;
/** /**
* 根据两点间经纬度坐标(double值),计算两点间距离,单位为米 * 根据两点间经纬度坐标(double值),计算两点间距离,单位为米
* @param lng1
* @param lat1
* @param lng2
* @param lat2
* @return
*/ */
public static String GetDistance(double lng1, double lat1, double lng2, double lat2) public static String getDistance(double lng1, double lat1, double lng2, double lat2) {
{ double s = getRealDistance(lng1, lat1, lng2, lat2);
double s = GetRealDistance(lng1, lat1, lng2, lat2); return getDistance(s);
String distance = null;
if(s>1000&&s<10000){
DecimalFormat df = new DecimalFormat("######0.0");
distance = df.format(s/1000);
return distance+"km";
}else if (s>=10000){
Double aDouble = s / 1000;
return aDouble.intValue()+"km";
}else{
Double aDouble =s;
return aDouble.intValue()+"m";
}
} }
public static double GetRealDistance(double lng1, double lat1, double lng2, double lat2)
{ public static double getRealDistance(double lng1, double lat1, double lng2, double lat2) {
double radLat1 = rad(lat1); double radLat1 = Math.toRadians(lat1);
double radLat2 = rad(lat2); double radLat2 = Math.toRadians(lat2);
double a = radLat1 - radLat2; double a = radLat1 - radLat2;
double b = rad(lng1) - rad(lng2); double b = Math.toRadians(lng1) - Math.toRadians(lng2);
double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) + double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2))); Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
s = s * EARTH_RADIUS; s *= EARTH_RADIUS;
s = Math.round(s * 10000) / 10000; s = Math.round(s * 10000) / 10000;
return s; return s;
} }
private static double rad(double d)
{
return d * Math.PI / 180.0;
}
} }
...@@ -129,8 +129,7 @@ public class CouponCategoryServiceImpl implements ICouponCategoryService { ...@@ -129,8 +129,7 @@ public class CouponCategoryServiceImpl implements ICouponCategoryService {
Coupon coupon = new Coupon(); Coupon coupon = new Coupon();
coupon.setCategoryId(id); coupon.setCategoryId(id);
List<Coupon> coupons = couponMapper.listCoupon(coupon); List<Coupon> coupons = couponMapper.listCoupon(coupon);
long unOfflineCnt = coupons.stream().filter(c -> c.getState().equals(CouponState.DEFAULT.getState()) long unOfflineCnt = coupons.stream().filter(c -> c.getState().equals(CouponState.ONLINE.getState())).count();
|| c.getState().equals(CouponState.ONLINE.getState())).count();
if (unOfflineCnt > 0) { if (unOfflineCnt > 0) {
throw new ServiceException("需类下优惠券都处于下线状态才可下线"); throw new ServiceException("需类下优惠券都处于下线状态才可下线");
} }
......
...@@ -83,7 +83,7 @@ public class CouponRuleServiceImpl implements ICouponRuleService { ...@@ -83,7 +83,7 @@ public class CouponRuleServiceImpl implements ICouponRuleService {
} }
private void transCategoryIds(List<CouponVo> couponVos) { private void transCategoryIds(List<CouponVo> couponVos) {
List<String> categoryIds = new ArrayList<>(16); List<Long> categoryIds = new ArrayList<>(16);
List<Long> goodsIds = new ArrayList<>(16); List<Long> goodsIds = new ArrayList<>(16);
for (CouponVo couponVo : couponVos) { for (CouponVo couponVo : couponVos) {
if (!ArrayUtil.isAllAvailable(couponVo.getCategoryIds())) { if (!ArrayUtil.isAllAvailable(couponVo.getCategoryIds())) {
...@@ -92,7 +92,7 @@ public class CouponRuleServiceImpl implements ICouponRuleService { ...@@ -92,7 +92,7 @@ public class CouponRuleServiceImpl implements ICouponRuleService {
ArrayUtil.listAddArray(goodsIds, couponVo.getGoodsIds()); ArrayUtil.listAddArray(goodsIds, couponVo.getGoodsIds());
} }
Map<String, String> categoryMap; Map<Long, String> categoryMap;
if (!CollectionUtils.isEmpty(categoryIds)) { if (!CollectionUtils.isEmpty(categoryIds)) {
List<GoodsCategory> goodsCategories = goodsCategoryMapper.selectGoodsCategoryByIds(categoryIds); List<GoodsCategory> goodsCategories = goodsCategoryMapper.selectGoodsCategoryByIds(categoryIds);
categoryMap = goodsCategories.stream().collect(Collectors.toMap(GoodsCategory::getId, GoodsCategory::getName)); categoryMap = goodsCategories.stream().collect(Collectors.toMap(GoodsCategory::getId, GoodsCategory::getName));
......
...@@ -136,9 +136,14 @@ public class CouponServiceImpl implements ICouponService { ...@@ -136,9 +136,14 @@ public class CouponServiceImpl implements ICouponService {
Assert.notNull(couponPo.getUserLimit(), "用户可领取次数限制还未设置"); Assert.notNull(couponPo.getUserLimit(), "用户可领取次数限制还未设置");
Assert.notNull(couponPo.getUseStartTime(), "优惠券的绝对有效时间还未设置"); Assert.notNull(couponPo.getUseStartTime(), "优惠券的绝对有效时间还未设置");
Assert.notNull(couponPo.getUseEndTime(), "优惠券的绝对有效时间还未设置"); Assert.notNull(couponPo.getUseEndTime(), "优惠券的绝对有效时间还未设置");
if (couponPo.getReceivableTime() != null && couponPo.getReceivableTime().isAfter(couponPo.getUseStartTime())) { if (couponPo.getReceivableTime() != null && couponPo.getReceivableTime().isAfter(couponPo.getUseStartTime())) {
throw new ServiceException("优惠券的可领取时间要早于或等于优惠券的绝对有效时间的起始时间"); throw new ServiceException("优惠券的可领取时间要早于或等于优惠券的绝对有效时间的起始时间");
} }
if (couponPo.getRelativeTime() != null && couponPo.getRelativeTime() > 0) {
Assert.isTrue(couponPo.getUseStartTime().plusDays(couponPo.getRelativeTime()).isBefore(couponPo.getUseEndTime()),
"实际结束时间已超出生命周期,请修改有效时间。");
}
Assert.isTrue((couponPo.getCategoryIds() != null && couponPo.getCategoryIds().length > 0) Assert.isTrue((couponPo.getCategoryIds() != null && couponPo.getCategoryIds().length > 0)
|| (couponPo.getGoodsIds() != null && couponPo.getGoodsIds().length > 0), "商品范围还未设置"); || (couponPo.getGoodsIds() != null && couponPo.getGoodsIds().length > 0), "商品范围还未设置");
if (!ArrayUtil.isEmpty(couponPo.getCategoryIds()) && !ArrayUtil.isEmpty(couponPo.getGoodsIds())) { if (!ArrayUtil.isEmpty(couponPo.getCategoryIds()) && !ArrayUtil.isEmpty(couponPo.getGoodsIds())) {
...@@ -234,8 +239,8 @@ public class CouponServiceImpl implements ICouponService { ...@@ -234,8 +239,8 @@ public class CouponServiceImpl implements ICouponService {
@Transactional @Transactional
public int deleteCoupon(Integer id) { public int deleteCoupon(Integer id) {
Coupon coupon = this.detail(id); Coupon coupon = this.detail(id);
if (!coupon.getState().equals(CouponState.OFFLINE.getState())) { if (!coupon.getState().equals(CouponState.OFFLINE.getState()) && !coupon.getState().equals(CouponState.EXPIRED.getState())) {
throw new ServiceException("需下线优惠券才能删除"); throw new ServiceException("[已下线]或[已失效]的优惠券才能删除");
} }
Coupon delete = new Coupon(id, CouponState.DELETE.getState()); Coupon delete = new Coupon(id, CouponState.DELETE.getState());
int updateCnt = couponMapper.updateCoupon(delete); int updateCnt = couponMapper.updateCoupon(delete);
......
...@@ -120,7 +120,7 @@ public class CouponUserServiceImpl implements ICouponUserService { ...@@ -120,7 +120,7 @@ public class CouponUserServiceImpl implements ICouponUserService {
*/ */
@Override @Override
public int getCustAvailableCouponCnt(String custId) { public int getCustAvailableCouponCnt(String custId) {
return couponUserMapper.getCustAvailableCouponCnt(custId, LocalDateTime.now()); return couponUserMapper.getCustAvailableCouponCnt(custId, LocalDateTime.now(), null);
} }
/** /**
...@@ -139,7 +139,7 @@ public class CouponUserServiceImpl implements ICouponUserService { ...@@ -139,7 +139,7 @@ public class CouponUserServiceImpl implements ICouponUserService {
private void transferTabIds(List<CouponVo> couponVos) { private void transferTabIds(List<CouponVo> couponVos) {
couponVos.forEach(couponVo -> { couponVos.forEach(couponVo -> {
couponVo.setCategoryIds(ArrayUtil.transStrToCodeList(couponVo.getCategoryIdStr())); couponVo.setCategoryIds(ArrayUtil.transStrToLongList(couponVo.getCategoryIdStr()));
couponVo.setGoodsIds(ArrayUtil.transStrToLongList(couponVo.getGoodsIdStr())); couponVo.setGoodsIds(ArrayUtil.transStrToLongList(couponVo.getGoodsIdStr()));
couponVo.setProvince(ArrayUtil.transStrToCodeList(couponVo.getProvinceStr())); couponVo.setProvince(ArrayUtil.transStrToCodeList(couponVo.getProvinceStr()));
couponVo.setCity(ArrayUtil.transStrToCodeList(couponVo.getCityStr())); couponVo.setCity(ArrayUtil.transStrToCodeList(couponVo.getCityStr()));
...@@ -176,35 +176,20 @@ public class CouponUserServiceImpl implements ICouponUserService { ...@@ -176,35 +176,20 @@ public class CouponUserServiceImpl implements ICouponUserService {
} }
private void checkGoodsFitable(List<CouponVo> couponVos, List<OrderDetail> orderDetails) { private void checkGoodsFitable(List<CouponVo> couponVos, List<OrderDetail> orderDetails) {
Assert.notEmpty(orderDetails, "商品明细还未传递"); List<GoodsSku> goodsSkus = this.orderDetailCheckAndAssign(orderDetails);
List<Long> skuIds = orderDetails.stream().map(OrderDetail::getSkuId).collect(Collectors.toList());
Assert.notEmpty(skuIds, "skuId还未传递");
List<GoodsSku> goodsSkus = goodsSkuMapper.selectSkuListForOrder(skuIds);
log.info("sku id size is {} and query size is {}", skuIds.size(), goodsSkus.size());
Assert.isTrue(goodsSkus.size() == skuIds.size(), "未查询到匹配的sku记录");
List<Long> goodsIds = goodsSkus.stream().map(GoodsSku::getGoodsId).collect(Collectors.toList()); List<Long> goodsIds = goodsSkus.stream().map(GoodsSku::getGoodsId).collect(Collectors.toList());
List<Goods> goods = goodsMapper.selectGoodsByIds(goodsIds); List<Goods> goods = goodsMapper.selectGoodsByIds(goodsIds);
Assert.notEmpty(goods, "未查询到匹配的商品信息[id=" + goodsIds + "]"); Assert.notEmpty(goods, "未查询到匹配的商品信息[id=" + goodsIds + "]");
// sku的ID和价格字典
Map<Long, GoodsSku> skuMap = goodsSkus.stream().collect(Collectors.toMap(GoodsSku::getId, Function.identity()));
// 订单明细设置
orderDetails.forEach(orderDetail -> {
GoodsSku sku = skuMap.get(orderDetail.getSkuId());
BigDecimal skuNum = new BigDecimal(orderDetail.getNum());
orderDetail.setOriAmount(skuNum.multiply(sku.getPrice()));
orderDetail.setUnitPrice(sku.getDiscount());
orderDetail.setAmountShould(skuNum.multiply(sku.getDiscount()));
});
// 订单总额 // 订单总额
BigDecimal orderTotalAmount = orderDetails.stream().map(OrderDetail::getAmountShould).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal orderTotalAmount = orderDetails.stream().map(OrderDetail::getAmountShould).reduce(BigDecimal.ZERO, BigDecimal::add);
couponVos.stream().filter(couponVo -> StringUtils.isEmpty(couponVo.getNotFitableDesc())).forEach(couponVo -> { couponVos.stream().filter(couponVo -> StringUtils.isEmpty(couponVo.getNotFitableDesc())).forEach(couponVo -> {
/** 可用饮品范围的判断 */ /** 可用饮品范围的判断 */
List<Long> fitCouponGoodsIdList = goods.stream().filter(good -> List<Long> fitCouponGoodsIdList = goods.stream().filter(good ->
(ArrayUtil.isAllAvailable(couponVo.getCategoryIds()) || ArrayUtil.contains(couponVo.getCategoryIds(), good.getCategory())) (ArrayUtil.isAllAvailable(couponVo.getCategoryIds()) || ArrayUtil.containsSplit(couponVo.getCategoryIds(), good.getCategory()))
&& (ArrayUtil.isEmpty(couponVo.getGoodsIds()) || ArrayUtil.contains(couponVo.getGoodsIds(), good.getId()))) || (ArrayUtil.isAllAvailable(couponVo.getGoodsIds()) || ArrayUtil.contains(couponVo.getGoodsIds(), good.getId())))
.map(Goods::getId).collect(Collectors.toList()); .map(Goods::getId).collect(Collectors.toList());
if (CollectionUtils.isEmpty(fitCouponGoodsIdList)) { if (CollectionUtils.isEmpty(fitCouponGoodsIdList)) {
if (!ArrayUtil.isAllAvailable(couponVo.getCategoryIds())) { if (couponVo.getCategoryIds() != null && !ArrayUtil.isAllAvailable(couponVo.getCategoryIds())) {
couponVo.setNotFitableDesc("限定品类使用"); couponVo.setNotFitableDesc("限定品类使用");
} else { } else {
couponVo.setNotFitableDesc("限定商品使用"); couponVo.setNotFitableDesc("限定商品使用");
...@@ -215,6 +200,7 @@ public class CouponUserServiceImpl implements ICouponUserService { ...@@ -215,6 +200,7 @@ public class CouponUserServiceImpl implements ICouponUserService {
if (couponVo.getType().equals(CouponCategoryType.DEDUCTION.getType())) { // 抵扣 if (couponVo.getType().equals(CouponCategoryType.DEDUCTION.getType())) { // 抵扣
if (couponVo.getPriceLimit() != null && couponVo.getPriceLimit().compareTo(BigDecimal.ZERO) != 0 && couponVo.getPriceLimit().compareTo(orderTotalAmount) > 0) { if (couponVo.getPriceLimit() != null && couponVo.getPriceLimit().compareTo(BigDecimal.ZERO) != 0 && couponVo.getPriceLimit().compareTo(orderTotalAmount) > 0) {
couponVo.setNotFitableDesc("未达到满减要求"); couponVo.setNotFitableDesc("未达到满减要求");
return;
} }
couponVo.setCouponAmount(couponVo.getPriceDiscount().min(orderTotalAmount)); couponVo.setCouponAmount(couponVo.getPriceDiscount().min(orderTotalAmount));
} else { } else {
...@@ -226,6 +212,7 @@ public class CouponUserServiceImpl implements ICouponUserService { ...@@ -226,6 +212,7 @@ public class CouponUserServiceImpl implements ICouponUserService {
} else { // 免单 } else { // 免单
couponVo.setNotFitableDesc("未达到免单要求"); couponVo.setNotFitableDesc("未达到免单要求");
} }
return;
} }
this.wrapperCouponAmount(couponVo, fitOrderDetails, fitGoodsAmount); this.wrapperCouponAmount(couponVo, fitOrderDetails, fitGoodsAmount);
...@@ -240,6 +227,27 @@ public class CouponUserServiceImpl implements ICouponUserService { ...@@ -240,6 +227,27 @@ public class CouponUserServiceImpl implements ICouponUserService {
}); });
} }
@Override
public List<GoodsSku> orderDetailCheckAndAssign(List<OrderDetail> orderDetails) {
Assert.notEmpty(orderDetails, "商品明细还未传递");
List<Long> skuIds = orderDetails.stream().map(OrderDetail::getSkuId).collect(Collectors.toList());
Assert.notEmpty(skuIds, "skuId还未传递");
List<GoodsSku> goodsSkus = goodsSkuMapper.selectSkuListForOrder(skuIds);
log.info("sku id size is {} and query size is {}", skuIds.size(), goodsSkus.size());
Assert.isTrue(goodsSkus.size() == skuIds.size(), "未查询到匹配的sku记录");
// sku的ID和价格字典
Map<Long, GoodsSku> skuMap = goodsSkus.stream().collect(Collectors.toMap(GoodsSku::getId, Function.identity()));
// 订单明细设置
orderDetails.forEach(orderDetail -> {
GoodsSku sku = skuMap.get(orderDetail.getSkuId());
BigDecimal skuNum = new BigDecimal(orderDetail.getNum());
orderDetail.setOriAmount(skuNum.multiply(sku.getPrice()));
orderDetail.setUnitPrice(sku.getDiscount());
orderDetail.setAmountShould(skuNum.multiply(sku.getDiscount()));
});
return goodsSkus;
}
private void wrapperCouponAmount(CouponVo couponVo, List<OrderDetail> fitOrderDetails, BigDecimal fitGoodsAmount) { private void wrapperCouponAmount(CouponVo couponVo, List<OrderDetail> fitOrderDetails, BigDecimal fitGoodsAmount) {
Map<Long, BigDecimal> couponAmountMap = new HashMap<>(); Map<Long, BigDecimal> couponAmountMap = new HashMap<>();
if (couponVo.getOrderLimit() != null && couponVo.getOrderLimit()) { // 单杯 if (couponVo.getOrderLimit() != null && couponVo.getOrderLimit()) { // 单杯
...@@ -247,13 +255,14 @@ public class CouponUserServiceImpl implements ICouponUserService { ...@@ -247,13 +255,14 @@ public class CouponUserServiceImpl implements ICouponUserService {
BigDecimal discountAmount = orderDetail.getUnitPrice(); BigDecimal discountAmount = orderDetail.getUnitPrice();
if (couponVo.getType().equals(CouponCategoryType.DISCOUNT.getType())) { // 折扣 if (couponVo.getType().equals(CouponCategoryType.DISCOUNT.getType())) { // 折扣
discountAmount = this.getDiscountAmount(discountAmount, couponVo.getPriceDiscount()); discountAmount = this.getDiscountAmount(discountAmount, couponVo.getPriceDiscount());
}/* else { // 免单 }
}*/
couponVo.setCouponAmount(discountAmount); couponVo.setCouponAmount(discountAmount);
couponAmountMap.put(orderDetail.getSkuId(), couponVo.getCouponAmount()); couponAmountMap.put(orderDetail.getSkuId(), couponVo.getCouponAmount());
} else { // 整单 } else { // 整单
if (couponVo.getType().equals(CouponCategoryType.DISCOUNT.getType())) { // 折扣 if (couponVo.getType().equals(CouponCategoryType.DISCOUNT.getType())) { // 折扣
couponVo.setCouponAmount(this.getDiscountAmount(fitGoodsAmount, couponVo.getPriceDiscount())); BigDecimal couponAmount = this.getDiscountAmount(fitGoodsAmount, couponVo.getPriceDiscount());
couponAmount = couponAmount.min(BigDecimal.valueOf(50)); // 折扣类整单最高抵扣50元
couponVo.setCouponAmount(couponAmount);
fitOrderDetails.forEach(orderDetail -> orderDetail.setCouponAmount(this.getDiscountAmount(orderDetail.getAmountShould(), couponVo.getPriceDiscount()))); fitOrderDetails.forEach(orderDetail -> orderDetail.setCouponAmount(this.getDiscountAmount(orderDetail.getAmountShould(), couponVo.getPriceDiscount())));
// 订单明细优惠总和 // 订单明细优惠总和
BigDecimal detailCouponSum = fitOrderDetails.stream().map(OrderDetail::getCouponAmount).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal detailCouponSum = fitOrderDetails.stream().map(OrderDetail::getCouponAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
......
package com.soss.system.service.impl; package com.soss.system.service.impl;
import java.util.Date;
import java.util.List;
import com.soss.common.exception.ServiceException; import com.soss.common.exception.ServiceException;
import com.soss.common.utils.GenerateCode; import com.soss.common.utils.GenerateCode;
import com.soss.system.domain.Goods; import com.soss.system.domain.Goods;
import com.soss.system.service.IGoodsCategoryService; import com.soss.system.domain.GoodsCategory;
import com.soss.system.mapper.GoodsCategoryMapper;
import com.soss.system.mapper.GoodsMapper; import com.soss.system.mapper.GoodsMapper;
import com.soss.system.service.IGoodsCategoryService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.soss.system.mapper.GoodsCategoryMapper;
import com.soss.system.domain.GoodsCategory; import java.util.Date;
import java.util.List;
/** /**
* 商品分类Service业务层处理 * 商品分类Service业务层处理
...@@ -69,7 +69,7 @@ public class GoodsCategoryServiceImpl implements IGoodsCategoryService ...@@ -69,7 +69,7 @@ public class GoodsCategoryServiceImpl implements IGoodsCategoryService
goodsCategory.setUpdatedAt(new Date()); goodsCategory.setUpdatedAt(new Date());
goodsCategory.setIsDeleted("0"); goodsCategory.setIsDeleted("0");
goodsCategoryMapper.insertGoodsCategory(goodsCategory); goodsCategoryMapper.insertGoodsCategory(goodsCategory);
goodsCategory.setTurn(goodsCategory.getId()); goodsCategory.setTurn(goodsCategory.getId().toString());
return goodsCategoryMapper.updateGoodsCategory(goodsCategory); return goodsCategoryMapper.updateGoodsCategory(goodsCategory);
} }
...@@ -84,7 +84,7 @@ public class GoodsCategoryServiceImpl implements IGoodsCategoryService ...@@ -84,7 +84,7 @@ public class GoodsCategoryServiceImpl implements IGoodsCategoryService
{ {
if("2".equals(goodsCategory.getState())){ if("2".equals(goodsCategory.getState())){
Goods goods = new Goods(); Goods goods = new Goods();
goods.setCategory(goodsCategory.getId()); goods.setCategory(goodsCategory.getId().toString());
goods.setIsDeleted(0L); goods.setIsDeleted(0L);
int size = goodsMapper.selectGoodsList(goods).size(); int size = goodsMapper.selectGoodsList(goods).size();
if(size>0){ if(size>0){
...@@ -143,14 +143,14 @@ public class GoodsCategoryServiceImpl implements IGoodsCategoryService ...@@ -143,14 +143,14 @@ public class GoodsCategoryServiceImpl implements IGoodsCategoryService
if(index<0){ if(index<0){
lastId =id; lastId =id;
}else{ }else{
lastId = goodsCategories.get(index).getId(); lastId = goodsCategories.get(index).getId().toString();
} }
}else if("2".equals(pointer)){ }else if("2".equals(pointer)){
int index=i+1; int index=i+1;
if(index>=size){ if(index>=size){
lastId =id; lastId =id;
}else{ }else{
lastId = goodsCategories.get(index).getId(); lastId = goodsCategories.get(index).getId().toString();
} }
} }
} }
......
...@@ -2,6 +2,7 @@ package com.soss.system.service.impl; ...@@ -2,6 +2,7 @@ package com.soss.system.service.impl;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.soss.common.enums.SkuDeleteState;
import com.soss.common.exception.ServiceException; import com.soss.common.exception.ServiceException;
import com.soss.common.utils.GenerateCode; import com.soss.common.utils.GenerateCode;
import com.soss.common.utils.StringUtils; import com.soss.common.utils.StringUtils;
...@@ -9,10 +10,14 @@ import com.soss.system.domain.*; ...@@ -9,10 +10,14 @@ import com.soss.system.domain.*;
import com.soss.system.jiguang.impl.JiGuangPushServiceImpl; import com.soss.system.jiguang.impl.JiGuangPushServiceImpl;
import com.soss.system.mapper.*; import com.soss.system.mapper.*;
import com.soss.system.service.IGoodsService; import com.soss.system.service.IGoodsService;
import jodd.util.StringPool;
import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
...@@ -59,14 +64,22 @@ public class GoodsServiceImpl implements IGoodsService ...@@ -59,14 +64,22 @@ public class GoodsServiceImpl implements IGoodsService
* @return 商品 * @return 商品
*/ */
@Override @Override
public Goods selectGoodsById(Long id) public Goods selectGoodsById(Long id) {
{
Goods goods = goodsMapper.selectGoodsById(id); Goods goods = goodsMapper.selectGoodsById(id);
Assert.notNull(goods, "未查询到匹配的商品信息");
resolverCategoryName(Collections.singletonList(goods));
GoodsTag goodsTag = new GoodsTag(); GoodsTag goodsTag = new GoodsTag();
goodsTag.setGoodsId(goods.getId()); goodsTag.setGoodsId(goods.getId());
goods.setGoodsTagList(goodsTagMapper.selectGoodsTagList(goodsTag).stream().map(GoodsTag::getTag).collect(Collectors.toList())); goods.setGoodsTagList(goodsTagMapper.selectGoodsTagList(goodsTag).stream().map(GoodsTag::getTag).collect(Collectors.toList()));
return goods; return goods;
}
@Override
public List<Goods> selectGoodsByIds(List<Long> ids) {
Assert.notEmpty(ids, "goods ids cannot be empty");
List<Goods> goods = goodsMapper.selectGoodsByIds(ids);
this.resolverCategoryName(goods);
return goods;
} }
/** /**
...@@ -76,21 +89,38 @@ public class GoodsServiceImpl implements IGoodsService ...@@ -76,21 +89,38 @@ public class GoodsServiceImpl implements IGoodsService
* @return 商品 * @return 商品
*/ */
@Override @Override
public List<Goods> selectGoodsList(Goods goods) public List<Goods> selectGoodsList(Goods goods) {
{
List<Goods> goodsList = goodsMapper.selectGoodsList(goods); List<Goods> goodsList = goodsMapper.selectGoodsList(goods);
this.resolverCategoryName(goodsList);
for (Goods goods1 : goodsList) { for (Goods good : goodsList) {
GoodsCategory goodsCategory = goodsCategoryMapper.selectGoodsCategoryById(goods1.getCategory()); int count = orderMapper.selectSalesVolume(null, good.getId());
if(goodsCategory !=null){ good.setSalesVolume(count);
goods1.setCategoryName(goodsCategory.getName());
} }
int count = orderMapper.selectSalesVolume(null,goods1.getId()); return goodsList;
goods1.setSalesVolume(count);
} }
@Override
return goodsList; public void resolverCategoryName(List<Goods> goodsList) {
if (CollectionUtils.isEmpty(goodsList)) {
return;
}
List<Long> categoryIds = new ArrayList<>(16);
goodsList.forEach(good -> {
String[] categoryIdArr = good.getCategory().split(StringPool.COMMA);
for (String categoryId : categoryIdArr) {
if (!StringUtils.isEmpty(categoryId)) {
categoryIds.add(Long.parseLong(categoryId));
}
}
});
List<GoodsCategory> categories = goodsCategoryMapper.selectGoodsCategoryByIds(categoryIds);
Map<Long, String> categoryMap = categories.stream().collect(Collectors.toMap(GoodsCategory::getId, GoodsCategory::getName));
goodsList.forEach(good -> {
String categoryName = Arrays.stream(good.getCategory().split(StringPool.COMMA)).filter(StringUtils::isNotEmpty)
.map(Long::parseLong).map(categoryMap::get)
.collect(Collectors.joining(StringPool.COMMA));
good.setCategoryName(categoryName);
});
} }
/** /**
...@@ -171,7 +201,7 @@ public class GoodsServiceImpl implements IGoodsService ...@@ -171,7 +201,7 @@ public class GoodsServiceImpl implements IGoodsService
GoodsSku goodsSku = new GoodsSku(); GoodsSku goodsSku = new GoodsSku();
goodsSku.setGoodsId(goodsId); goodsSku.setGoodsId(goodsId);
goodsSku.setCreatedAt(new Date()); goodsSku.setCreatedAt(new Date());
goodsSku.setIsDeleted("0"); goodsSku.setIsDeleted(SkuDeleteState.NORMAL.getState());
goodsSku.setUpdatedAt(new Date()); goodsSku.setUpdatedAt(new Date());
BigDecimal price1 = new BigDecimal(price.toPlainString()); BigDecimal price1 = new BigDecimal(price.toPlainString());
BigDecimal discount1 = new BigDecimal(discount.toPlainString()); BigDecimal discount1 = new BigDecimal(discount.toPlainString());
...@@ -285,13 +315,11 @@ public class GoodsServiceImpl implements IGoodsService ...@@ -285,13 +315,11 @@ public class GoodsServiceImpl implements IGoodsService
Shop shop = new Shop(); Shop shop = new Shop();
List<Shop> shops = shopService.selectShopList(shop); List<Shop> shops = shopService.selectShopList(shop);
for (Shop shop1 : shops) { for (Shop shop1 : shops) {
if(!"3".equals(shop1.getState())){ if (!Objects.equals(3, shop1.getState())) {
try{ try {
shopService.addGoods(shop1.getId(),goodsId); shopService.addGoods(shop1.getId(), goodsId);
}catch (ServiceException serviceException){ } catch (ServiceException serviceException) {
} }
} }
} }
} }
...@@ -363,42 +391,13 @@ public class GoodsServiceImpl implements IGoodsService ...@@ -363,42 +391,13 @@ public class GoodsServiceImpl implements IGoodsService
public List<GoodsSku> getGoodsSkus(long goodsId){ public List<GoodsSku> getGoodsSkus(long goodsId){
GoodsSku goodsSku = new GoodsSku(); GoodsSku goodsSku = new GoodsSku();
goodsSku.setGoodsId(goodsId); goodsSku.setGoodsId(goodsId);
goodsSku.setIsDeleted("0");
return goodsSkuMapper.selectGoodsSkuList(goodsSku); return goodsSkuMapper.selectGoodsSkuList(goodsSku);
} }
@Data
class RuleNode<T>{ class RuleNode<T>{
private RuleNode parentRuleNode; private RuleNode parentRuleNode;
private T ruleNode; private T ruleNode;
public RuleNode getParentRuleNode() {
return parentRuleNode;
}
public void setParentRuleNode(RuleNode parentRuleNode) {
this.parentRuleNode = parentRuleNode;
}
private List<RuleNode> childNode; private List<RuleNode> childNode;
public T getRuleNode() {
return ruleNode;
}
public void setRuleNode(T ruleNode) {
this.ruleNode = ruleNode;
}
public List<RuleNode> getChildNode() {
return childNode;
}
public void setChildNode(List<RuleNode> childNode) {
this.childNode = childNode;
}
} }
} }
package com.soss.system.service.impl; package com.soss.system.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.soss.system.mapper.GoodsSkuMapper;
import com.soss.system.domain.GoodsSku; import com.soss.system.domain.GoodsSku;
import com.soss.system.mapper.GoodsSkuMapper;
import com.soss.system.service.IGoodsSkuService; import com.soss.system.service.IGoodsSkuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* 由规格选项组合生成商品skuService业务层处理 * 由规格选项组合生成商品skuService业务层处理
...@@ -26,7 +27,7 @@ public class GoodsSkuServiceImpl implements IGoodsSkuService ...@@ -26,7 +27,7 @@ public class GoodsSkuServiceImpl implements IGoodsSkuService
* @return 由规格选项组合生成商品sku * @return 由规格选项组合生成商品sku
*/ */
@Override @Override
public GoodsSku selectGoodsSkuById(String id) public GoodsSku selectGoodsSkuById(Long id)
{ {
return goodsSkuMapper.selectGoodsSkuById(id); return goodsSkuMapper.selectGoodsSkuById(id);
} }
......
...@@ -9,6 +9,7 @@ import com.soss.system.mapper.ShopMapper; ...@@ -9,6 +9,7 @@ import com.soss.system.mapper.ShopMapper;
import com.soss.system.service.IMachineService; import com.soss.system.service.IMachineService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -98,27 +99,25 @@ public class MachineServiceImpl implements IMachineService { ...@@ -98,27 +99,25 @@ public class MachineServiceImpl implements IMachineService {
} }
@Override @Override
@Transactional
public String bindMachine(String code, Long shopId) { public String bindMachine(String code, Long shopId) {
Machine machine = new Machine(); Machine machine = new Machine();
machine.setShopId(shopId); machine.setShopId(shopId);
List<Machine> machines = machineMapper.selectMachineList(machine); List<Machine> machines = machineMapper.selectMachineList(machine);
if(!machines.isEmpty()){ if (!machines.isEmpty()) {
throw new ServiceException("目前只允许一个店铺绑定一台机器"); throw new ServiceException("目前只允许一个店铺绑定一台机器");
} }
Machine machine1 = machineMapper.selectMachineByCode(code); Machine machine1 = machineMapper.selectMachineByCode(code);
if (machine1 == null) { if (machine1 == null) {
machine.setCode(code); throw new ServiceException("未查询到匹配的机器[code=" + code + "]");
machine.setBindTime(new Date());
machine.setCreatedAt(new Date());
machine.setUpdatedAt(new Date());
machine.setState(1);
return machineMapper.insertMachine(machine) + "";
} }
if (machine1.getShopId() != null) { if (machine1.getShopId() != null && machine1.getShopId() > 0) {
throw new ServiceException("该机器已经被绑定,请先解绑再绑定"); throw new ServiceException("该机器已经被绑定,请先解绑再绑定");
} }
machine1.setCode(code);
machine1.setShopId(shopId); machine1.setShopId(shopId);
Date curTime = new Date();
machine1.setBindTime(curTime);
machine1.setUpdatedAt(curTime);
machineMapper.updateMachine(machine1); machineMapper.updateMachine(machine1);
// 重新绑定机器后店铺进入测试中状态重新完成运营测试 // 重新绑定机器后店铺进入测试中状态重新完成运营测试
shopMapper.updateShop(new Shop(shopId, ShopState.TESTING.getState())); shopMapper.updateShop(new Shop(shopId, ShopState.TESTING.getState()));
......
...@@ -10,12 +10,15 @@ import com.soss.system.domain.Order; ...@@ -10,12 +10,15 @@ import com.soss.system.domain.Order;
import com.soss.system.domain.OrderDetail; import com.soss.system.domain.OrderDetail;
import com.soss.system.domain.OrderRefund; import com.soss.system.domain.OrderRefund;
import com.soss.system.domain.vo.OrderQuery; import com.soss.system.domain.vo.OrderQuery;
import com.soss.system.mapper.GoodsMapper;
import com.soss.system.mapper.OrderDetailMapper; import com.soss.system.mapper.OrderDetailMapper;
import com.soss.system.mapper.OrderRefundMapper; import com.soss.system.mapper.OrderRefundMapper;
import com.soss.system.service.IOrderRefundService; import com.soss.system.service.IOrderRefundService;
import io.jsonwebtoken.lang.Assert;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -33,14 +36,15 @@ import java.util.stream.Collectors; ...@@ -33,14 +36,15 @@ import java.util.stream.Collectors;
*/ */
@Service @Service
@Slf4j @Slf4j
public class OrderRefundServiceImpl implements IOrderRefundService public class OrderRefundServiceImpl implements IOrderRefundService {
{
@Autowired @Autowired
private OrderRefundMapper orderRefundMapper; private OrderRefundMapper orderRefundMapper;
@Autowired @Autowired
private OrderServiceImpl orderService; private OrderServiceImpl orderService;
@Autowired @Autowired
private OrderDetailMapper orderDetailMapper; private OrderDetailMapper orderDetailMapper;
@Autowired
private GoodsMapper goodsMapper;
/** /**
* 查询订单退款 * 查询订单退款
...@@ -51,6 +55,7 @@ public class OrderRefundServiceImpl implements IOrderRefundService ...@@ -51,6 +55,7 @@ public class OrderRefundServiceImpl implements IOrderRefundService
@Override @Override
public OrderRefund selectOrderRefundById(String id) { public OrderRefund selectOrderRefundById(String id) {
OrderRefund orderRefund = orderRefundMapper.selectOrderRefundById(id); OrderRefund orderRefund = orderRefundMapper.selectOrderRefundById(id);
Assert.notNull(orderRefund, "未查询到匹配的退款记录");
this.wrapperOrderInfo(orderRefund); this.wrapperOrderInfo(orderRefund);
return orderRefund; return orderRefund;
} }
...@@ -89,16 +94,18 @@ public class OrderRefundServiceImpl implements IOrderRefundService ...@@ -89,16 +94,18 @@ public class OrderRefundServiceImpl implements IOrderRefundService
* @return 结果 * @return 结果
*/ */
@Override @Override
public AjaxResult insertOrderRefund(OrderRefund orderRefund) @Transactional
{ public AjaxResult insertOrderRefund(OrderRefund orderRefund) {
Order order = orderService.selectById(orderRefund.getOrderId()); Order order = orderService.selectById(orderRefund.getOrderId());
if(order ==null ){ if (order == null) {
return AjaxResult.error("找不到该订单"); return AjaxResult.error("找不到该订单");
} }
String state = order.getState(); String state = order.getState();
// 制作中、制作完成、取餐中、已完成、待取超时、退款失败 // 制作中、制作完成、取餐中、已完成、待取超时、退款失败、部分退款、制作中取消
List<String> status = Arrays.asList(OrderStatusConstant.production,OrderStatusConstant.productionCompleted,OrderStatusConstant.Taking,OrderStatusConstant.completed,OrderStatusConstant.timeout,OrderStatusConstant.refundFailed); List<String> status = Arrays.asList(OrderStatusConstant.production, OrderStatusConstant.productionCompleted,
OrderStatusConstant.Taking, OrderStatusConstant.completed, OrderStatusConstant.timeout,
OrderStatusConstant.refundFailed, OrderStatusConstant.PartialRefund, OrderStatusConstant.productionCancel);
if (OrderStatusConstant.Paid.equals(state)) { if (OrderStatusConstant.Paid.equals(state)) {
//orderRefund.setRefundAmount(order.getAmount()); //orderRefund.setRefundAmount(order.getAmount());
// 4 支付制作中 5 制作完成未取 6 取餐中 7 取餐完成 // 4 支付制作中 5 制作完成未取 6 取餐中 7 取餐完成
...@@ -149,7 +156,11 @@ public class OrderRefundServiceImpl implements IOrderRefundService ...@@ -149,7 +156,11 @@ public class OrderRefundServiceImpl implements IOrderRefundService
orderRefund.setCreateUserName(order.getUserName()); orderRefund.setCreateUserName(order.getUserName());
} }
orderRefundMapper.insertOrderRefund(orderRefund); orderRefundMapper.insertOrderRefund(orderRefund);
if (order.getPaidAmount().compareTo(BigDecimal.ZERO) == 0) {
order.setState(OrderStatusConstant.refund);
} else {
order.setState(OrderStatusConstant.refunding); order.setState(OrderStatusConstant.refunding);
}
orderService.updateOrder(order); orderService.updateOrder(order);
orderDetailMapper.bindRefund(orderRefund.getId(), orderRefund.getOrderDetailIds()); orderDetailMapper.bindRefund(orderRefund.getId(), orderRefund.getOrderDetailIds());
orderRefund.setOrder(order); orderRefund.setOrder(order);
......
...@@ -29,6 +29,7 @@ import org.springframework.stereotype.Service; ...@@ -29,6 +29,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -90,6 +91,10 @@ public class OrderServiceImpl implements IOrderService { ...@@ -90,6 +91,10 @@ public class OrderServiceImpl implements IOrderService {
OrderSnapshot orderSnapshot = orderSnapshotService.selectOrderSnapshotByOrderId(order.getId()); OrderSnapshot orderSnapshot = orderSnapshotService.selectOrderSnapshotByOrderId(order.getId());
String snapshot = orderSnapshot.getSnapshot(); String snapshot = orderSnapshot.getSnapshot();
List<OrderDetail> orderDetails1 = JSONObject.parseArray(snapshot, OrderDetail.class); List<OrderDetail> orderDetails1 = JSONObject.parseArray(snapshot, OrderDetail.class);
List<Long> detailIds = orderDetails1.stream().map(OrderDetail::getId).collect(Collectors.toList());
List<OrderDetail> detailsActual = orderDetailMapper.selectOrderDetailsByIds(detailIds);
Map<Long, Long> refundIdMap = detailsActual.stream().filter(da -> da.getRefundId() != null).collect(Collectors.toMap(OrderDetail::getId, OrderDetail::getRefundId));
orderDetails1.forEach(od -> od.setRefundId(refundIdMap.get(od.getId())));
order.setOrderDetails(orderDetails1); order.setOrderDetails(orderDetails1);
return order; return order;
} }
...@@ -135,7 +140,11 @@ public class OrderServiceImpl implements IOrderService { ...@@ -135,7 +140,11 @@ public class OrderServiceImpl implements IOrderService {
couponUserMapper.updateCouponUser(couponUser); couponUserMapper.updateCouponUser(couponUser);
} }
if (order.getPaidAmount().compareTo(BigDecimal.ZERO) == 0) {
order.setState(OrderStatusConstant.Paid);
} else {
order.setState(OrderStatusConstant.Unpaid); order.setState(OrderStatusConstant.Unpaid);
}
order.setUserId(loginUser.getOpenId()); order.setUserId(loginUser.getOpenId());
order.setUserName(loginUser.getUsername()); order.setUserName(loginUser.getUsername());
order.setUserPhone(loginUser.getUser().getPhonenumber()); order.setUserPhone(loginUser.getUser().getPhonenumber());
...@@ -206,7 +215,7 @@ public class OrderServiceImpl implements IOrderService { ...@@ -206,7 +215,7 @@ public class OrderServiceImpl implements IOrderService {
throw new ServiceException("当前时间本店休息中,暂停点单~"); throw new ServiceException("当前时间本店休息中,暂停点单~");
} }
if (shop.getDistanceLimit() != null && shop.getDistanceLimit() > 0) { if (shop.getDistanceLimit() != null && shop.getDistanceLimit() > 0) {
double distance = AppServiceImpl.GetRealDistance(order.getLng().doubleValue(), order.getLat().doubleValue(), Double.parseDouble(shop.getLng()), Double.parseDouble(shop.getLat())); double distance = AppServiceImpl.getRealDistance(order.getLng().doubleValue(), order.getLat().doubleValue(), Double.parseDouble(shop.getLng()), Double.parseDouble(shop.getLat()));
if (distance > shop.getDistanceLimit() * 1000) { if (distance > shop.getDistanceLimit() * 1000) {
throw new ServiceException("超过店铺下单的距离范围"); throw new ServiceException("超过店铺下单的距离范围");
} }
...@@ -414,7 +423,6 @@ public class OrderServiceImpl implements IOrderService { ...@@ -414,7 +423,6 @@ public class OrderServiceImpl implements IOrderService {
@Override @Override
public List<Order> getMyOrder(String openId) { public List<Order> getMyOrder(String openId) {
List<Order> orders = orderMapper.selectByUserId(openId); List<Order> orders = orderMapper.selectByUserId(openId);
for (Order order : orders) { for (Order order : orders) {
order.setShop(shopMapper.selectShopById(order.getShopId())); order.setShop(shopMapper.selectShopById(order.getShopId()));
...@@ -472,9 +480,10 @@ public class OrderServiceImpl implements IOrderService { ...@@ -472,9 +480,10 @@ public class OrderServiceImpl implements IOrderService {
} }
orderNum %= 999; orderNum %= 999;
} }
int orderNumTail = (int) (Math.random() * 8);
// redisAtomicInteger.expire(1, TimeUnit.DAYS); // redisAtomicInteger.expire(1, TimeUnit.DAYS);
// int andIncrement = redisAtomicInteger.getAndAdd(3); // int andIncrement = redisAtomicInteger.getAndAdd(3);
return key + String.format("%03d", orderNum); return key + String.format("%03d", orderNum) + (orderNumTail + 1);
} }
//获取订单号 //获取订单号
......
...@@ -3,14 +3,17 @@ package com.soss.system.service.impl; ...@@ -3,14 +3,17 @@ package com.soss.system.service.impl;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.soss.common.exception.ServiceException; import com.soss.common.exception.ServiceException;
import com.soss.common.utils.StringUtils;
import com.soss.system.domain.*; import com.soss.system.domain.*;
import com.soss.system.domain.vo.orderTaking.*; import com.soss.system.domain.vo.orderTaking.*;
import com.soss.system.mapper.*; import com.soss.system.mapper.*;
import jodd.util.StringPool;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -129,21 +132,31 @@ public class OrderTakingServiceImpl { ...@@ -129,21 +132,31 @@ public class OrderTakingServiceImpl {
buildSkuRules(skuVos); buildSkuRules(skuVos);
goodsVo.setSkus(skuVos); goodsVo.setSkus(skuVos);
} }
//普通分类的产品 orderTakingVo.setRecommends(recommendVos);
List<GoodsCategory> shopCategories = goodsCategoryMapper.selectByShopId(shopId); //普通分类的产品
if(!CollectionUtils.isEmpty(shopCategories)){ List<String> categoryIdStrList = goodsCategoryMapper.selectCategoryIdByShopId(shopId);
if (CollectionUtils.isEmpty(categoryIdStrList)) {
return orderTakingVo;
}
List<Long> categoryIds = new ArrayList<>(16);
categoryIdStrList.forEach(categoryIdStr -> {
List<Long> categoryIdsUnit = Arrays.stream(categoryIdStr.split(StringPool.COMMA)).filter(StringUtils::isNotEmpty).map(Long::parseLong).collect(Collectors.toList());
categoryIds.addAll(categoryIdsUnit);
});
List<GoodsCategory> shopCategories = goodsCategoryMapper.selectGoodsCategoryByIds(categoryIds);
if (!CollectionUtils.isEmpty(shopCategories)) {
for (GoodsCategory category : shopCategories) { for (GoodsCategory category : shopCategories) {
CategoryVo categoryVo = new CategoryVo(); CategoryVo categoryVo = new CategoryVo();
categoryVo.setId(Long.parseLong(category.getId())); categoryVo.setId(category.getId());
categoryVo.setName(category.getName()); categoryVo.setName(category.getName());
categoryVo.setIcon(category.getIcon()); categoryVo.setIcon(category.getIcon());
List<Goods> goodsList = shopGoodsMapper.selectShopCategoryGoodsByCategoryId(shopId, category.getId()); List<Goods> goodsList = shopGoodsMapper.selectShopCategoryGoodsByCategoryId(shopId, category.getId());
List<GoodsVo> goodsVoList = new ArrayList<>(); List<GoodsVo> goodsVoList = new ArrayList<>();
categoryVo.setGoods(goodsVoList); categoryVo.setGoods(goodsVoList);
if(!CollectionUtils.isEmpty(goodsList)){ if (!CollectionUtils.isEmpty(goodsList)) {
for (Goods good : goodsList) { for (Goods good : goodsList) {
GoodsVo goodsVo =new GoodsVo(); GoodsVo goodsVo = new GoodsVo();
goodsVo.setGoodsId(String.valueOf(good.getId())); goodsVo.setGoodsId(String.valueOf(good.getId()));
goodsVo.setName(good.getName()); goodsVo.setName(good.getName());
goodsVo.setDesc(good.getDesc()); goodsVo.setDesc(good.getDesc());
...@@ -176,8 +189,6 @@ public class OrderTakingServiceImpl { ...@@ -176,8 +189,6 @@ public class OrderTakingServiceImpl {
} }
} }
orderTakingVo.setRecommends(recommendVos);
orderTakingVo.setCategorys(categoryVos); orderTakingVo.setCategorys(categoryVos);
return orderTakingVo; return orderTakingVo;
......
...@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject; ...@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import com.soss.common.core.domain.AjaxResult; import com.soss.common.core.domain.AjaxResult;
import com.soss.common.enums.MachineState; import com.soss.common.enums.MachineState;
import com.soss.common.enums.ShopState; import com.soss.common.enums.ShopState;
import com.soss.common.enums.SkuDeleteState;
import com.soss.common.exception.ServiceException; import com.soss.common.exception.ServiceException;
import com.soss.common.utils.StringUtils; import com.soss.common.utils.StringUtils;
import com.soss.system.domain.*; import com.soss.system.domain.*;
...@@ -12,6 +13,7 @@ import com.soss.system.domain.vo.orderTaking.*; ...@@ -12,6 +13,7 @@ import com.soss.system.domain.vo.orderTaking.*;
import com.soss.system.jiguang.impl.JiGuangPushServiceImpl; import com.soss.system.jiguang.impl.JiGuangPushServiceImpl;
import com.soss.system.mapper.*; import com.soss.system.mapper.*;
import com.soss.system.service.IShopService; import com.soss.system.service.IShopService;
import jodd.util.StringPool;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -202,7 +204,7 @@ public class ShopServiceImpl implements IShopService ...@@ -202,7 +204,7 @@ public class ShopServiceImpl implements IShopService
shopGoodsMapper.updateShopGoods(shopGoods); shopGoodsMapper.updateShopGoods(shopGoods);
GoodsSku goodsSku = new GoodsSku(); GoodsSku goodsSku = new GoodsSku();
goodsSku.setGoodsId(goodsId); goodsSku.setGoodsId(goodsId);
goodsSku.setIsDeleted("0"); goodsSku.setIsDeleted(SkuDeleteState.NORMAL.getState());
List<GoodsSku> goodsSkus = goodsSkuMapper.selectGoodsSkuList(goodsSku); List<GoodsSku> goodsSkus = goodsSkuMapper.selectGoodsSkuList(goodsSku);
Machine machine = new Machine(); Machine machine = new Machine();
machine.setShopId(shopId); machine.setShopId(shopId);
...@@ -234,24 +236,32 @@ public class ShopServiceImpl implements IShopService ...@@ -234,24 +236,32 @@ public class ShopServiceImpl implements IShopService
} }
@Override @Override
public List<GoodsCategory> getCategoryGoods(long shopId) { public List<GoodsCategory> getCategoryGoods(long shopId) {
List<String> categoryIdStrList = goodsCategoryMapper.selectCategoryIdByShopId(shopId);
List<GoodsCategory> shopCategories = goodsCategoryMapper.selectByShopId(shopId); if (CollectionUtils.isEmpty(categoryIdStrList)) {
return new ArrayList<>();
}
List<Long> categoryIds = new ArrayList<>(16);
categoryIdStrList.forEach(categoryIdStr -> {
List<Long> categoryIdsUnit = Arrays.stream(categoryIdStr.split(StringPool.COMMA)).filter(StringUtils::isNotEmpty).map(Long::parseLong).collect(Collectors.toList());
categoryIds.addAll(categoryIdsUnit);
});
List<GoodsCategory> shopCategories = goodsCategoryMapper.selectGoodsCategoryByIds(categoryIds);
for (GoodsCategory category : shopCategories) { for (GoodsCategory category : shopCategories) {
List<Goods> goodsList = shopGoodsMapper.selectShopCategoryGoodsByCategoryId(shopId,category.getId()); List<Goods> goodsList = shopGoodsMapper.selectShopCategoryGoodsByCategoryId(shopId, category.getId());
for (Goods goods : goodsList) { for (Goods goods : goodsList) {
ShopGoodsSku shopGoodsSku = new ShopGoodsSku(); ShopGoodsSku shopGoodsSku = new ShopGoodsSku();
shopGoodsSku.setShopId(shopId); shopGoodsSku.setShopId(shopId);
shopGoodsSku.setGoodsId(goods.getId()); shopGoodsSku.setGoodsId(goods.getId());
List<ShopGoodsSku> shopGoodsSkus = shopGoodsSkuMapper.selectShopGoodsSkuList(shopGoodsSku); List<ShopGoodsSku> shopGoodsSkus = shopGoodsSkuMapper.selectShopGoodsSkuList(shopGoodsSku);
if(!shopGoodsSkus.isEmpty()){ if (!shopGoodsSkus.isEmpty()) {
boolean boo= true; boolean boo = true;
for (ShopGoodsSku goodsSkus : shopGoodsSkus) { for (ShopGoodsSku goodsSkus : shopGoodsSkus) {
if("2".equals(goodsSkus.getState())){ if ("2".equals(goodsSkus.getState())) {
boo = false; boo = false;
} }
} }
if(!boo){ if (!boo) {
goods.setState("2"); goods.setState("2");
} }
} }
...@@ -450,6 +460,7 @@ public class ShopServiceImpl implements IShopService ...@@ -450,6 +460,7 @@ public class ShopServiceImpl implements IShopService
goodsVo.setSkus(skuVos); goodsVo.setSkus(skuVos);
return goodsVo; return goodsVo;
} }
private JSONArray buildGoodsSpec(String specs) { private JSONArray buildGoodsSpec(String specs) {
List<Spec> specList = JSONObject.parseArray(specs,Spec.class); List<Spec> specList = JSONObject.parseArray(specs,Spec.class);
List<SpecVo> specVos = new ArrayList<>(); List<SpecVo> specVos = new ArrayList<>();
......
package com.soss.system.utils; package com.soss.system.utils;
import com.soss.common.utils.StringUtils; import com.soss.common.utils.StringUtils;
import jodd.util.StringPool;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
...@@ -62,6 +63,19 @@ public class ArrayUtil { ...@@ -62,6 +63,19 @@ public class ArrayUtil {
return false; return false;
} }
public static boolean containsSplit(Long[] arr, String target) {
if (StringUtils.isEmpty(target)) {
return false;
}
for (String tar : target.split(StringPool.COMMA)) {
if (!StringUtils.isEmpty(tar) && contains(arr, Long.parseLong(tar))) {
return true;
}
}
return false;
}
public static <T> boolean isEmpty(T[] ts) { public static <T> boolean isEmpty(T[] ts) {
return ts == null || ts.length == 0; return ts == null || ts.length == 0;
} }
......
...@@ -84,7 +84,8 @@ ...@@ -84,7 +84,8 @@
select c.id, c.name select c.id, c.name
from coupon_rule cr from coupon_rule cr
left join coupon c on c.rule_id = cr.id left join coupon c on c.rule_id = cr.id
where cr.use_start_time > now() and cr.use_end_time &lt; now() where cr.use_start_time &lt; now() and cr.use_end_time > now()
and c.state = ${@com.soss.common.enums.CouponState @ONLINE.getState}
</select> </select>
<update id="expireCoupon"> <update id="expireCoupon">
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
<result property="sendMsgFlag2" column="send_msg_flag2"/> <result property="sendMsgFlag2" column="send_msg_flag2"/>
<result property="sendMsgFlag3" column="send_msg_flag3"/> <result property="sendMsgFlag3" column="send_msg_flag3"/>
<result property="flagExpireDate" column="flag_expire_date"/> <result property="flagExpireDate" column="flag_expire_date"/>
<result property="testFlag" column="test_flag"/>
</resultMap> </resultMap>
<sql id="selectCustomerVo"> <sql id="selectCustomerVo">
...@@ -53,6 +54,7 @@ ...@@ -53,6 +54,7 @@
<if test="sendMsgFlag2 != null">send_msg_flag2,</if> <if test="sendMsgFlag2 != null">send_msg_flag2,</if>
<if test="sendMsgFlag3 != null">send_msg_flag3,</if> <if test="sendMsgFlag3 != null">send_msg_flag3,</if>
<if test="flagExpireDate != null">flag_expire_date,</if> <if test="flagExpireDate != null">flag_expire_date,</if>
<if test="testFlag != null">test_flag,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if> <if test="id != null">#{id},</if>
...@@ -67,6 +69,7 @@ ...@@ -67,6 +69,7 @@
<if test="sendMsgFlag2 != null">#{sendMsgFlag2},</if> <if test="sendMsgFlag2 != null">#{sendMsgFlag2},</if>
<if test="sendMsgFlag3 != null">#{sendMsgFlag3},</if> <if test="sendMsgFlag3 != null">#{sendMsgFlag3},</if>
<if test="flagExpireDate != null">#{flagExpireDate},</if> <if test="flagExpireDate != null">#{flagExpireDate},</if>
<if test="testFlag != null">#{testFlag},</if>
</trim> </trim>
</insert> </insert>
...@@ -79,11 +82,12 @@ ...@@ -79,11 +82,12 @@
<if test="sex != null">sex = #{sex},</if> <if test="sex != null">sex = #{sex},</if>
<if test="birthday != null">birthday = #{birthday},</if> <if test="birthday != null">birthday = #{birthday},</if>
<if test="soucre != null">soucre = #{soucre},</if> <if test="soucre != null">soucre = #{soucre},</if>
<if test="allow != null">allow = #{soucre},</if> <!--<if test="allow != null">allow = #{soucre},</if>-->
<if test="sendMsgFlag1 != null">send_msg_flag1 = #{sendMsgFlag1},</if> <if test="sendMsgFlag1 != null">send_msg_flag1 = #{sendMsgFlag1},</if>
<if test="sendMsgFlag2 != null">send_msg_flag2 = #{sendMsgFlag2},</if> <if test="sendMsgFlag2 != null">send_msg_flag2 = #{sendMsgFlag2},</if>
<if test="sendMsgFlag3 != null">send_msg_flag3 = #{sendMsgFlag3},</if> <if test="sendMsgFlag3 != null">send_msg_flag3 = #{sendMsgFlag3},</if>
<if test="flagExpireDate != null">flag_expire_date = #{flagExpireDate},</if> <if test="flagExpireDate != null">flag_expire_date = #{flagExpireDate},</if>
<if test="testFlag != null">test_flag = #{testFlag},</if>
</trim> </trim>
where id = #{id} where id = #{id}
</update> </update>
......
...@@ -98,11 +98,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -98,11 +98,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{id} #{id}
</foreach> </foreach>
</delete> </delete>
<select id="selectByShopId" resultMap="GoodsCategoryResult"> <select id="selectCategoryIdByShopId" resultType="java.lang.String">
select DISTINCT gc.* from goods_category gc ,goods g , select g.category
shop_goods sg where g.id =sg.goods_id and g.category =gc.id from
and sg.shop_id =#{shopId} goods g ,
order by gc.turn shop_goods sg
where
g.id = sg.goods_id
and sg.shop_id = #{shopId}
</select> </select>
</mapper> </mapper>
\ No newline at end of file
...@@ -25,11 +25,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -25,11 +25,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<sql id="selectGoodsVo"> <sql id="selectGoodsVo">
select id, name, category, price, discount, take_time, spec, pics, `desc`, remarks, state, is_deleted, created_at, updated_at, code,shelf_at from goods select * from goods
</sql> </sql>
<select id="selectGoodsByIds" resultMap="GoodsResult"> <select id="selectGoodsByIds" resultMap="GoodsResult">
select id, name, category from goods where id in select * from goods where id in
<foreach collection="ids" item="id" separator="," open="(" close=")">#{id}</foreach> <foreach collection="ids" item="id" separator="," open="(" close=")">#{id}</foreach>
</select> </select>
...@@ -37,7 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -37,7 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectGoodsVo"/> <include refid="selectGoodsVo"/>
<where> <where>
<if test="name != null and name != ''">and name like concat('%', #{name}, '%')</if> <if test="name != null and name != ''">and name like concat('%', #{name}, '%')</if>
<if test="category != null and category != ''">and category = #{category}</if> <if test="category != null and category != ''">and category like concat('%,', #{category}, ',%')</if>
<if test="price != null ">and price = #{price}</if> <if test="price != null ">and price = #{price}</if>
<if test="discount != null ">and discount = #{discount}</if> <if test="discount != null ">and discount = #{discount}</if>
<if test="takeTime != null ">and take_time = #{takeTime}</if> <if test="takeTime != null ">and take_time = #{takeTime}</if>
...@@ -56,28 +56,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -56,28 +56,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="selectGoodsById" parameterType="Long" resultMap="GoodsResult"> <select id="selectGoodsById" parameterType="Long" resultMap="GoodsResult">
select select *
g.id, from goods
g.name, where id = #{id}
g.category,
gc.name as categoryName,
g.price,
g.discount,
g.take_time,
g.spec,
g.pics,
g.`desc`,
g.remarks,
g.state,
g.is_deleted,
g.created_at,
g.updated_at,
g.code,
g.shelf_at
from
goods g,goods_category gc
where g.id = #{id}
and g.category =gc.id
</select> </select>
<insert id="insertGoods" parameterType="Goods" useGeneratedKeys="true" keyProperty="id"> <insert id="insertGoods" parameterType="Goods" useGeneratedKeys="true" keyProperty="id">
......
...@@ -27,7 +27,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -27,7 +27,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectGoodsSkuList" parameterType="GoodsSku" resultMap="GoodsSkuResult"> <select id="selectGoodsSkuList" parameterType="GoodsSku" resultMap="GoodsSkuResult">
<include refid="selectGoodsSkuVo"/> <include refid="selectGoodsSkuVo"/>
<where> <where>
and is_deleted =0 and is_deleted in (0, 2)
<if test="goodsId != null and goodsId != ''">and goods_id = #{goodsId}</if> <if test="goodsId != null and goodsId != ''">and goods_id = #{goodsId}</if>
<if test="ruleList != null and ruleList != ''">and rule_list = #{ruleList}</if> <if test="ruleList != null and ruleList != ''">and rule_list = #{ruleList}</if>
<if test="isDeleted != null and isDeleted != ''">and is_deleted = #{isDeleted}</if> <if test="isDeleted != null and isDeleted != ''">and is_deleted = #{isDeleted}</if>
...@@ -70,7 +70,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -70,7 +70,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="SET" suffixOverrides=","> <trim prefix="SET" suffixOverrides=",">
<if test="goodsId != null and goodsId != ''">goods_id = #{goodsId},</if> <if test="goodsId != null and goodsId != ''">goods_id = #{goodsId},</if>
<if test="ruleList != null and ruleList != ''">rule_list = #{ruleList},</if> <if test="ruleList != null and ruleList != ''">rule_list = #{ruleList},</if>
<if test="isDeleted != null and isDeleted != ''">is_deleted = #{isDeleted},</if> <if test="isDeleted != null">is_deleted = #{isDeleted},</if>
<if test="updatedAt != null">updated_at = #{updatedAt},</if> <if test="updatedAt != null">updated_at = #{updatedAt},</if>
<if test="price != null">price = #{price},</if> <if test="price != null">price = #{price},</if>
<if test="discount != null">price = #{discount},</if> <if test="discount != null">price = #{discount},</if>
...@@ -88,13 +88,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -88,13 +88,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{id} #{id}
</foreach> </foreach>
</delete> </delete>
<update id="deleteGoodsSkuByGoodsId"> <update id="deleteGoodsSkuByGoodsId">
update goods_sku set is_deleted ='1' where goods_id=#{goodsId} update goods_sku set is_deleted = 1 where goods_id=#{goodsId}
</update> </update>
<select id="selectSpec" resultMap="GoodsSkuResult"> <select id="selectSpec" resultMap="GoodsSkuResult">
<include refid="selectGoodsSkuVo"/> <include refid="selectGoodsSkuVo"/>
where where is_deleted in (0, 2) and rule_list like concat('%',#{query},'%')
is_deleted ='0' and
rule_list like concat('%',#{query},'%')
</select> </select>
</mapper> </mapper>
\ No newline at end of file
...@@ -85,7 +85,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -85,7 +85,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</update> </update>
<delete id="deleteMachineById" parameterType="String"> <delete id="deleteMachineById" parameterType="String">
update machine set shop_id = null where id = #{id} update machine set shop_id = null, bind_time = null, updated_at = now() where id = #{id}
</delete> </delete>
<delete id="deleteMachineByIds" parameterType="String"> <delete id="deleteMachineByIds" parameterType="String">
...@@ -94,9 +94,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -94,9 +94,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{id} #{id}
</foreach> </foreach>
</delete> </delete>
<update id="unbound"> <update id="unbound">
update machine set shopId =null where code =#{id} update machine set shopId =null where code =#{id}
</update> </update>
<select id="selectRegister" resultType="string"> <select id="selectRegister" resultType="string">
select register from machine where code =#{id} select register from machine where code =#{id}
</select> </select>
......
...@@ -65,6 +65,12 @@ ...@@ -65,6 +65,12 @@
where id = #{id} where id = #{id}
</select> </select>
<select id="selectOrderDetailsByIds" resultMap="OrderDetailResult">
<include refid="selectOrderDetailVo"/>
where id in
<foreach collection="ids" item="id" separator="," open="(" close=")">#{id}</foreach>
</select>
<insert id="insertOrderDetail" parameterType="OrderDetail" useGeneratedKeys="true" keyProperty="id"> <insert id="insertOrderDetail" parameterType="OrderDetail" useGeneratedKeys="true" keyProperty="id">
insert into order_detail insert into order_detail
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
......
...@@ -95,7 +95,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -95,7 +95,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
'1' as state '1' as state
from shop_goods sg ,goods g where sg.goods_id =g.id and g.state ='3' and g.is_deleted =0 from shop_goods sg ,goods g where sg.goods_id =g.id and g.state ='3' and g.is_deleted =0
and shop_id =#{shopId} and category =#{categoryId} and shop_id =#{shopId} and category like concat('%,', #{categoryId}, ',%')
order by sg.turn order by sg.turn
</select> </select>
<select id="selectShopNoAddGoods" resultType="com.soss.system.domain.Goods"> <select id="selectShopNoAddGoods" resultType="com.soss.system.domain.Goods">
......
...@@ -100,13 +100,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -100,13 +100,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
sgs.state as state , sgs.state as state ,
gs.price as price, gs.price as price,
gs.discount as discount, gs.discount as discount,
gs.rule_list as rulesString gs.rule_list as rulesString,
gs.is_deleted isDelete
from from
goods_sku gs , goods_sku gs ,
shop_goods_sku sgs shop_goods_sku sgs
where where
gs.id = sgs.sku_id gs.id = sgs.sku_id
and gs.is_deleted = '0' <!-- and gs.is_deleted = '0' -->
and gs.is_deleted in (0, 2)
and sgs.goods_id =#{goodsId} and sgs.goods_id =#{goodsId}
and sgs.shop_id =#{shopId} and sgs.shop_id =#{shopId}
......
...@@ -51,6 +51,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -51,6 +51,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updatedAt != null ">and s.updated_at = #{updatedAt}</if> <if test="updatedAt != null ">and s.updated_at = #{updatedAt}</if>
<if test="isDefault != null ">and s.is_default = #{isDefault}</if> <if test="isDefault != null ">and s.is_default = #{isDefault}</if>
<if test="machineCode!=null and machineCode != ''">and m.code =#{machineCode}</if> <if test="machineCode!=null and machineCode != ''">and m.code =#{machineCode}</if>
<if test="states != null and states.size() > 0">
and s.state in
<foreach collection="states" item="state" separator="," open="(" close=")">#{state}</foreach>
</if>
</where> </where>
</select> </select>
......
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