Commit b0288c32 by caiyt

完善需求功能及修复bug

parent 968b4136
......@@ -14,15 +14,11 @@ import com.soss.system.domain.OrderDetail;
import com.soss.system.domain.vo.CouponVo;
import com.soss.system.service.ICouponRuleService;
import com.soss.system.service.ICouponUserService;
import com.soss.system.service.impl.AppServiceImpl;
import com.soss.system.service.impl.OrderServiceImpl;
import com.soss.system.service.impl.WechatMessageServiceImpl;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
......@@ -37,8 +33,6 @@ public class AppController extends BaseController {
@Autowired
private TokenService tokenService;
@Autowired
private AppServiceImpl appService;
@Autowired
private OrderServiceImpl orderService;
@Autowired
private WechatMessageServiceImpl wechatMessageService;
......@@ -74,7 +68,7 @@ public class AppController extends BaseController {
public AjaxResult getWaitTime(@RequestBody String body){
JSONObject jsonObject = JSONObject.parseObject(body);
Order order = new Order();
order.setShopId(jsonObject.getString("shopId"));
order.setShopId(jsonObject.getLong("shopId"));
JSONArray goods = jsonObject.getJSONArray("goods");
List<OrderDetail> orderDetails = new ArrayList<>();
order.setOrderDetails(orderDetails);
......@@ -83,7 +77,6 @@ public class AppController extends BaseController {
orderDetail.setGoodsId(goods.getJSONObject(i).getLong("goodsId"));
orderDetail.setNum(goods.getJSONObject(i).getString("num"));
orderDetails.add(orderDetail);
}
String info = orderService.getWaitTime(order);
return AjaxResult.success("操作成功",info);
......@@ -111,30 +104,33 @@ public class AppController extends BaseController {
return AjaxResult.success("", wechatMessageService.getMessageCount(loginUser.getOpenId()));
}
@GetMapping("/coupon/available/count")
@ApiOperation("查询用户可用优惠券数量")
public AjaxResult getUserAvailableCouponCnt(HttpServletRequest request) {
@GetMapping("/coupon/list/{effectiveFlag}")
@ApiOperation("查询用户优惠券列表")
public TableDataInfo listUserCoupon(HttpServletRequest request, @PathVariable Boolean effectiveFlag) {
LoginUser loginUser = tokenService.getLoginUser(request);
if (loginUser == null) {
throw new ServiceException("请先登录");
}
int userAvailableCouponCnt = couponUserService.getCustAvailableCouponCnt(loginUser.getOpenId());
return AjaxResult.success(userAvailableCouponCnt);
startPage();
List<CouponVo> couponVos = couponUserService.listCustCoupons(loginUser.getOpenId(), effectiveFlag);
couponRuleService.translateUseLimit(couponVos);
return getDataTable(couponVos);
}
@GetMapping("/coupon/available/list")
@ApiOperation("查询用户可用优惠券列表")
public TableDataInfo listUserAvailableCoupon(HttpServletRequest request) {
@PostMapping("/order/coupon/fitable-count")
@ApiOperation("查询用户可用优惠券数量")
public AjaxResult getUserAvailableCouponCnt(HttpServletRequest request, @RequestBody Order order) {
LoginUser loginUser = tokenService.getLoginUser(request);
if (loginUser == null) {
throw new ServiceException("请先登录");
}
List<CouponVo> couponVoList = couponUserService.listCustAvailableCoupon(loginUser.getOpenId(), null);
couponRuleService.translateUseLimit(couponVoList);
return getDataTable(couponVoList);
List<CouponVo> couponVos = couponUserService.listCustAvailableCoupon(loginUser.getOpenId(), null);
couponUserService.resovleCouponFitable(couponVos, order);
long fitableCount = couponVos.stream().filter(couponVo -> StringUtils.isEmpty(couponVo.getNotFitableDesc())).count();
return AjaxResult.success(fitableCount);
}
@GetMapping("/order/coupon/info")
@PostMapping("/order/coupon/info")
@ApiOperation("下单页面查询用户可用优惠券信息")
public AjaxResult listUserAvailableCoupon(HttpServletRequest request, @RequestBody Order order) {
LoginUser loginUser = tokenService.getLoginUser(request);
......
......@@ -53,7 +53,7 @@ public class ApplicationController {
JSONObject info = JSONObject.parseObject(s);
String machineCode = info.getString("machineCode");
Machine machine = machineService.selectMachineByCode(machineCode);
Shop shop = shopService.selectShopById(String.valueOf(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"))));
info.put("shop",shop);
String[] keys = key.split("_");
......
......@@ -22,6 +22,7 @@ import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
......@@ -77,6 +78,11 @@ public class OrderController extends BaseController {
public AjaxResult add(HttpServletRequest request, @RequestBody Order order) {
LoginUser loginUser = tokenService.getLoginUser(request);
if (order.getLng() == null || order.getLng().compareTo(BigDecimal.ZERO) == 0
|| order.getLat() == null || order.getLat().compareTo(BigDecimal.ZERO) == 0) {
return AjaxResult.error("未授权地理位置不允许下单");
}
AjaxResult result = check(order);
if (HttpStatus.SUCCESS != (int) result.get(result.CODE_TAG)) {
return result;
......@@ -98,8 +104,9 @@ public class OrderController extends BaseController {
order.setPaidAmount(order.getAmount().add(order.getCouponAmount()));
order.getOrderDetails().forEach(orderDetail -> {
orderDetail.setCouponAmount(couponVo.getCouponAmountMap().get(orderDetail.getSkuId()).negate());
orderDetail.setRealAmount(orderDetail.getViewAmount().add(orderDetail.getCouponAmount()));
orderDetail.setRealAmount(orderDetail.getAmountShould().add(orderDetail.getCouponAmount()));
});
couponUserService.useCoupon(couponVo.getId());
}
} catch (ServiceException e) {
return AjaxResult.error(e.getMessage());
......
package com.soss.web.controller.coffee;
import java.util.List;
import com.soss.common.annotation.Log;
import com.soss.common.core.controller.BaseController;
import com.soss.common.core.domain.AjaxResult;
import com.soss.common.core.domain.model.LoginUser;
import com.soss.common.core.page.TableDataInfo;
import com.soss.common.enums.BusinessType;
import com.soss.framework.web.service.TokenService;
import com.soss.framework.web.service.WeixinServiceImpl;
import com.soss.system.domain.Order;
import com.soss.system.domain.OrderRefund;
import com.soss.system.domain.vo.OrderQuery;
import com.soss.system.service.IOrderRefundService;
import com.soss.system.service.impl.OrderServiceImpl;
import org.checkerframework.checker.units.qual.A;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.soss.common.annotation.Log;
import com.soss.common.core.controller.BaseController;
import com.soss.common.core.domain.AjaxResult;
import com.soss.common.enums.BusinessType;
import com.soss.system.domain.OrderRefund;
import com.soss.system.service.IOrderRefundService;
import com.soss.common.core.page.TableDataInfo;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* 订单退款Controller
......@@ -75,8 +68,8 @@ public class OrderRefundController extends BaseController
@PostMapping
public AjaxResult add(HttpServletRequest request, @RequestBody OrderRefund orderRefund)
{
// LoginUser loginUser = tokenService.getLoginUser(request);
// orderRefund.setCreateUserName(loginUser.getUsername());
LoginUser loginUser = tokenService.getLoginUser(request);
orderRefund.setCreateUserName(loginUser.getUsername());
AjaxResult ajaxResult = orderRefundService.insertOrderRefund(orderRefund);
Object obejct = ajaxResult.get(AjaxResult.DATA_TAG);
......
......@@ -10,6 +10,7 @@ import com.soss.common.enums.BusinessType;
import com.soss.system.domain.Goods;
import com.soss.system.domain.Shop;
import com.soss.system.service.IShopService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
......@@ -37,9 +38,6 @@ public class ShopController extends BaseController
return AjaxResult.success(shopService.turn(shopId,goodsId,pointer));
}
/**
* 查询店铺列表
*/
......@@ -56,32 +54,63 @@ public class ShopController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('system:shop:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") String id)
{
public AjaxResult getInfo(@PathVariable("id") Long id) {
return AjaxResult.success(shopService.selectShopById(id));
}
/**
* 新增店铺
*/
@PreAuthorize("@ss.hasPermi('system:shop:add')")
@Log(title = "店铺", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody Shop shop)
{
public AjaxResult add(@RequestBody Shop shop) {
return AjaxResult.success(shopService.insertShop(shop));
}
/**
* 开始测试
*/
@PreAuthorize("@ss.hasPermi('system:shop:test:start')")
@Log(title = "店铺", businessType = BusinessType.UPDATE)
@GetMapping("/test/start/{shopId}")
@ApiOperation("开始测试")
public AjaxResult testStart(@PathVariable Long shopId) {
shopService.testStart(shopId);
return AjaxResult.success();
}
/**
* 完成测试
*/
@PreAuthorize("@ss.hasPermi('system:shop:test:finish')")
@Log(title = "店铺", businessType = BusinessType.UPDATE)
@GetMapping("/test/finish/{shopId}")
@ApiOperation("完成测试")
public AjaxResult testFinish(@PathVariable Long shopId) {
shopService.testFinish(shopId);
return AjaxResult.success();
}
/**
* 开始营业
*/
@PreAuthorize("@ss.hasPermi('system:shop:open')")
@Log(title = "店铺", businessType = BusinessType.UPDATE)
@GetMapping("/open/{shopId}")
@ApiOperation("开始营业")
public AjaxResult open(@PathVariable Long shopId) {
shopService.open(shopId);
return AjaxResult.success();
}
/**
* 修改店铺
*/
@PreAuthorize("@ss.hasPermi('system:shop:edit')")
@Log(title = "店铺", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody Shop shop)
{
public AjaxResult edit(@RequestBody Shop shop) {
return toAjax(shopService.updateShop(shop));
}
......
......@@ -4,7 +4,8 @@ public enum CouponState {
DEFAULT(0, "默认"),
ONLINE(1, "生效中"),
OFFLINE(2, "未生效"),
DELETE(3, "已删除");
EXPIRED(3, "已失效"),
DELETE(4, "已删除");
private Integer state;
private String desc;
......
......@@ -2,8 +2,8 @@ package com.soss.common.enums;
public enum CouponUserState {
EFFECTIVE(0, "有效"),
USED(1, "使用"),
EXPIRED(2, "过期失效");
USED(1, "使用"),
EXPIRED(2, "失效");
private Integer state;
private String desc;
......
package com.soss.common.enums;
/**
* 店铺状态枚举类
*/
public enum ShopState {
TESTING(0, "测试中"),
OPEN(1, "正常营业"),
CLOSE(2, "暂停营业"),
DELETE(3, "已关闭");
private Integer state;
private String desc;
ShopState(Integer state, String desc) {
this.state = state;
this.desc = desc;
}
public Integer getState() {
return state;
}
public static String getDesc(Integer state) {
for (ShopState categoryType : ShopState.values()) {
if (categoryType.state.equals(state)) {
return categoryType.desc;
}
}
return null;
}
}
......@@ -3,6 +3,7 @@ package com.soss.system.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.soss.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDateTime;
......@@ -16,6 +17,7 @@ import java.time.LocalDateTime;
* @since 2022-07-21
*/
@Data
@NoArgsConstructor
public class CouponUser extends BaseEntity {
/**
* 主键
......@@ -97,5 +99,8 @@ public class CouponUser extends BaseEntity {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updatedAt;
public CouponUser(Integer id, Integer state) {
this.id = id;
this.state = state;
}
}
package com.soss.system.domain;
import java.util.Date;
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.core.domain.BaseEntity;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
/**
* 机器对象 machine
......@@ -13,6 +15,7 @@ import com.soss.common.core.domain.BaseEntity;
* @author zxq
* @date 2022-04-28
*/
@Data
public class Machine extends BaseEntity
{
private static final long serialVersionUID = 1L;
......@@ -34,7 +37,7 @@ public class Machine extends BaseEntity
/** 状态 1 正常 2 故障 3 关停 */
@Excel(name = "状态 1 正常 2 故障 3 关停 11忙碌 99离线")
private String state;
private Integer state;
/** 绑定时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
......@@ -51,89 +54,8 @@ public class Machine extends BaseEntity
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date updatedAt;
public String getRegister() {
return register;
}
public void setRegister(String register) {
this.register = register;
}
private String register;
public void setId(String id)
{
this.id = id;
}
public String getId()
{
return id;
}
public void setShopId(Long shopId)
{
this.shopId = shopId;
}
public Long getShopId()
{
return shopId;
}
public void setCode(String code)
{
this.code = code;
}
public String getCode()
{
return code;
}
public void setType(String type)
{
this.type = type;
}
public String getType()
{
return type;
}
public void setState(String state)
{
this.state = state;
}
public String getState()
{
return state;
}
public void setBindTime(Date bindTime)
{
this.bindTime = bindTime;
}
public Date getBindTime()
{
return bindTime;
}
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;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
......
......@@ -2,6 +2,7 @@ package com.soss.system.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.soss.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
......@@ -109,7 +110,7 @@ public class Order implements Serializable {
* 店铺ID
*/
@Excel(name = "店铺ID")
private String shopId;
private Long shopId;
/**
* 机器ID
......@@ -140,25 +141,37 @@ public class Order implements Serializable {
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date updatedAt;
/**
* 下单时用户所在地的经度
*/
@ApiModelProperty("下单时用户所在地的经度")
private BigDecimal lng;
/**
* 下单时用户所在地的纬度
*/
@ApiModelProperty("下单时用户所在地的纬度")
private BigDecimal lat;
private Shop shop;
private List<OrderDetail> orderDetails;
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("orderNo", getOrderNo())
.append("orderNum", getOrderNum())
.append("userId", getUserId())
.append("userName", getUserName())
.append("userPhone", getUserPhone())
.append("payTime", getPayTime())
.append("finishTime", getFinishTime())
.append("amount", getAmount())
.append("goodsNum", getGoodsNum())
.append("pickCode", getPickCode())
.append("shopId", getShopId())
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("orderNo", getOrderNo())
.append("orderNum", getOrderNum())
.append("userId", getUserId())
.append("userName", getUserName())
.append("userPhone", getUserPhone())
.append("payTime", getPayTime())
.append("finishTime", getFinishTime())
.append("amount", getAmount())
.append("goodsNum", getGoodsNum())
.append("pickCode", getPickCode())
.append("shopId", getShopId())
.append("machineId", getMachineId())
.append("source", getSource())
.append("state", getState())
......
......@@ -3,6 +3,7 @@ package com.soss.system.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.soss.common.annotation.Excel;
import com.soss.common.core.domain.BaseEntity;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
......@@ -15,6 +16,7 @@ import java.util.Date;
* @author zxq
* @date 2022-04-28
*/
@Data
public class Shop extends BaseEntity
{
private static final long serialVersionUID = 1L;
......@@ -66,25 +68,9 @@ public class Shop extends BaseEntity
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String zone;
public String getDistance() {
return distance;
}
public void setDistance(String distance) {
this.distance = distance;
}
/** 店铺状态 1 正常 2 暂停营业 3 关闭 */
@Excel(name = "店铺状态 1 正常 2 暂停营业 3 关闭")
private String state;
public String getMachieStatus() {
return machieStatus;
}
public void setMachieStatus(String machieStatus) {
this.machieStatus = machieStatus;
}
private Integer state;
private String distance;
......@@ -102,47 +88,14 @@ public class Shop extends BaseEntity
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date updatedAt;
public String getMachineCode() {
return machineCode;
}
public void setMachineCode(String machineCode) {
this.machineCode = machineCode;
}
private String machineCode;
public int getMachineCount() {
return machineCount;
}
public void setMachineCount(int machineCount) {
this.machineCount = machineCount;
}
public BigDecimal getSalesAmount() {
return salesAmount;
}
public void setSalesAmount(BigDecimal salesAmount) {
this.salesAmount = salesAmount;
}
public Integer getSalesVolume() {
return salesVolume;
}
public void setSalesVolume(Integer salesVolume) {
this.salesVolume = salesVolume;
}
/** 是否默认 0否1是 */
@Excel(name = "是否默认 0否1是")
private Long isDefault;
private int machineCount;
/**
*
*/
......@@ -154,160 +107,17 @@ public class Shop extends BaseEntity
super();
}
public Shop(long id, String code, String name) {
public Shop(long id, Integer state) {
this();
this.id = id;
this.code = code;
this.name = name;
this.state = state;
}
public void setId(long id) {
public Shop(long id, String code, String name) {
this();
this.id = id;
}
public long getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setCode(String code) {
this.code = code;
}
public String getCode()
{
return code;
}
public void setLng(String lng)
{
this.lng = lng;
}
public String getLng()
{
return lng;
}
public void setLat(String lat)
{
this.lat = lat;
}
public String getLat()
{
return lat;
}
public void setRemarks(String remarks)
{
this.remarks = remarks;
}
public String getRemarks()
{
return remarks;
}
public void setStartTime(String startTime)
{
this.startTime = startTime;
}
public String getStartTime()
{
return startTime;
}
public void setEndTime(String endTime)
{
this.endTime = endTime;
}
public String getEndTime()
{
return endTime;
}
public void setAddress(String address)
{
this.address = address;
}
public String getAddress()
{
return address;
}
public void setProvince(String province)
{
this.province = province;
}
public String getProvince()
{
return province;
}
public void setCity(String city)
{
this.city = city;
}
public String getCity()
{
return city;
}
public void setZone(String zone)
{
this.zone = zone;
}
public String getZone()
{
return zone;
}
public void setState(String state)
{
this.state = state;
}
public String getState()
{
return state;
}
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 setIsDefault(Long isDefault)
{
this.isDefault = isDefault;
}
public Long getIsDefault()
{
return isDefault;
}
public double getRealDistance() {
return realDistance;
}
public void setRealDistance(double realDistance) {
this.realDistance = realDistance;
this.name = name;
}
@Override
......
......@@ -78,7 +78,7 @@ public class CouponPo {
@ApiModelProperty("短信模板ID")
private Integer msgId;
public void couponUseLimitCheck() {
public void couponUseAreaLimitCheck() {
int limitDim = 0;
if (province != null && province.length > 0) {
limitDim += 1;
......
......@@ -12,6 +12,9 @@ import java.util.Map;
@Data
public class CouponVo extends CouponPo {
@ApiModelProperty("优惠券id")
private Integer couponId;
@ApiModelProperty("优惠券规则id")
private Integer ruleId;
......
package com.soss.system.domain.vo.orderTaking;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONArray;
import lombok.Data;
@Data
public class ImagesVo {
private String left;
private JSONArray left;
public String getLeft() {
return left;
}
public void setLeft(String left) {
this.left = left;
}
public JSONObject getRight() {
return right;
}
public void setRight(JSONObject right) {
this.right = right;
}
private JSONObject right;
// private JSONObject right;
}
package com.soss.system.domain.vo.orderTaking;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class OrderTakingVo implements Serializable {
private ImagesVo images;
public ImagesVo getImages() {
return images;
}
public void setImages(ImagesVo images) {
this.images = images;
}
public String getTips() {
return tips;
}
public void setTips(String tips) {
this.tips = tips;
}
public String getCountOfOrder() {
return countOfOrder;
}
public void setCountOfOrder(String countOfOrder) {
this.countOfOrder = countOfOrder;
}
public List<CategoryVo> getCategorys() {
return categorys;
}
public void setCategorys(List<CategoryVo> categorys) {
this.categorys = categorys;
}
public List<RecommendVo> getRecommends() {
return recommends;
}
public void setRecommends(List<RecommendVo> recommends) {
this.recommends = recommends;
}
private String tips;
public String getShopState() {
return shopState;
}
public void setShopState(String shopState) {
this.shopState = shopState;
}
private String countOfOrder;
private List<CategoryVo> categorys;
private List<RecommendVo> recommends;
private String shopState;
private Integer shopState;
}
......@@ -55,4 +55,9 @@ public interface CouponMapper {
* @return
*/
List<Coupon> getEffectiveCoupon();
/**
* 到期的优惠券状态置为失效
*/
void expireCoupon();
}
......@@ -23,7 +23,7 @@ public interface CouponUserMapper {
* @param couponId
* @return
*/
int getCouponReceiveCount(@Param("couponId") Integer couponId);
long getCouponReceiveCount(@Param("couponId") Integer couponId);
/**
* 查询用户的优惠券信息
......@@ -67,10 +67,23 @@ public interface CouponUserMapper {
List<CouponVo> listCustAvailableCoupon(@Param("custId") String custId, @Param("couponId") Integer couponId, @Param("nowTime") LocalDateTime nowTime);
/**
* 查询用户优惠券列表
*
* @param custId 用户id
* @param effectiveFlag 有效标识 true-有效 false-已使用/已失效
*/
List<CouponVo> listCustCoupons(@Param("custId") String custId, @Param("effectiveFlag") Boolean effectiveFlag);
/**
* 查询用户领取优惠券列表
*
* @param couponUser
* @return
*/
List<CouponUserVo> selectCouponUserList(CouponUser couponUser);
/**
* 用户优惠券到期失效
*/
void expireCouponUser();
}
package com.soss.system.mapper;
import java.util.List;
import com.soss.system.domain.Machine;
import java.util.List;
/**
* 机器Mapper接口
*
......@@ -13,12 +14,14 @@ public interface MachineMapper
{
/**
* 查询机器
*
*
* @param id 机器主键
* @return 机器
*/
public Machine selectMachineById(String id);
List<Machine> selectMachineByShopId(Long shopId);
public Machine selectMachineByCode(String code);
/**
......
......@@ -73,7 +73,7 @@ public interface OrderMapper {
List<Order> selectOrder(@Param("status") List<String> status,@Param("machineId") String machineCode);
List<Order> selectOrderByShopId(@Param("status") List<String> status,@Param("shopId") String shopId);
List<Order> selectOrderByShopId(@Param("status") List<String> status,@Param("shopId") Long shopId);
Order selectHomeByUserId(@Param("userId") String openId, @Param("status") List<String> status, @Param("shopId") String shopId);
......
......@@ -18,7 +18,7 @@ public interface ShopMapper {
* @param id 店铺主键
* @return 店铺
*/
public Shop selectShopById(String id);
Shop selectShopById(Long id);
/**
* 查询店铺列表,为翻译用
......
package com.soss.system.schedule;
import com.soss.system.mapper.CouponMapper;
import com.soss.system.mapper.CouponUserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class CouponSchedule {
@Autowired
private CouponMapper couponMapper;
@Autowired
private CouponUserMapper couponUserMapper;
@Scheduled(cron = "0 0 0 * * ?")
private void expireCoupon() {
couponMapper.expireCoupon();
}
@Scheduled(cron = "0 0 0 * * ?")
private void expireCouponUser() {
couponUserMapper.expireCouponUser();
}
}
......@@ -25,7 +25,11 @@ public interface ICouponUserService {
List<CouponVo> listCustAvailableCoupon(String custId, Integer couponId);
List<CouponVo> listCustCoupons(String custId, Boolean effectiveFlag);
List<CouponUserVo> selectCouponUserList(CouponUser couponUser);
void resovleCouponFitable(List<CouponVo> couponVos, Order order);
void useCoupon(Integer id);
}
package com.soss.system.service;
import java.util.List;
import com.soss.common.core.domain.AjaxResult;
import com.soss.common.core.domain.model.LoginUser;
import com.soss.system.domain.Order;
import com.soss.system.domain.vo.OrderQuery;
import java.util.List;
/**
* 订单Service接口
*
......@@ -41,7 +41,7 @@ public interface IOrderService
*/
public AjaxResult insertOrder(LoginUser request, Order order);
void checkBusinessTime(String shopId);
void checkBusinessTime(Long shopId);
/**
* 修改订单
......
package com.soss.system.service;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import com.soss.system.domain.Goods;
import com.soss.system.domain.GoodsCategory;
import com.soss.system.domain.GoodsSku;
import com.soss.system.domain.Shop;
import java.util.List;
import java.util.Map;
/**
* 店铺Service接口
*
......@@ -23,7 +23,7 @@ public interface IShopService
* @param id 店铺主键
* @return 店铺
*/
public Shop selectShopById(String id);
public Shop selectShopById(Long id);
/**
* 查询店铺列表
......@@ -33,6 +33,12 @@ public interface IShopService
*/
public List<Shop> selectShopList(Shop shop);
void testFinish(Long shopId);
void testStart(Long shopId);
void open(Long shopId);
/**
* 新增店铺
*
......@@ -57,14 +63,6 @@ public interface IShopService
*/
public int deleteShopByIds(String[] ids);
/**
* 删除店铺信息
*
* @param id 店铺主键
* @return 结果
*/
public int deleteShopById(String id);
String addGoods(long shopId, String goodsIds);
List<GoodsCategory> getCategoryGoods(long shopId);
......
......@@ -15,7 +15,7 @@ public class AppServiceImpl {
private ShopMapper shopMapper;
public Shop getShop(String lng, String lat) {
Shop shop = new Shop();
shop.setState("1");
shop.setState(1);
shop.setIsDefault(1L);
List<Shop> shops = shopMapper.selectShopList(shop);
if(shops !=null &&!shops.isEmpty()){
......
......@@ -82,7 +82,7 @@ public class CouponServiceImpl implements ICouponService {
public void update(CouponPo couponPo) {
Assert.notNull(couponPo.getId(), "要修改的优惠券ID还未传递");
Coupon coupon = this.detail(couponPo.getId());
int couponReceiveCount = couponUserMapper.getCouponReceiveCount(coupon.getId());
long couponReceiveCount = couponUserMapper.getCouponReceiveCount(coupon.getId());
if (couponReceiveCount > 0) {
throw new ServiceException("优惠券已被领取,无法编辑,只可下线");
} else if (!coupon.getState().equals(CouponState.OFFLINE.getState())) {
......@@ -96,7 +96,7 @@ public class CouponServiceImpl implements ICouponService {
@Override
public void updateCheckPre(Integer id) {
int couponReceiveCount = couponUserMapper.getCouponReceiveCount(id);
Long couponReceiveCount = couponUserMapper.getCouponReceiveCount(id);
if (couponReceiveCount > 0) {
throw new ServiceException("优惠券已被领取,无法编辑,只可下线");
}
......@@ -122,7 +122,7 @@ public class CouponServiceImpl implements ICouponService {
Assert.notNull(couponPo.getPriceDiscount(), "打折数还未设置");
Assert.notNull(couponPo.getOrderLimit(), "订单限制还未设置");
couponPo.setPriceLimit(BigDecimal.ZERO);
ruleName = couponPo.getOrderLimit() + "折";
ruleName = couponPo.getPriceDiscount() + "折";
ruleDesc = couponPo.getOrderLimit() ? "单杯" : "整单";
} else {
Assert.notNull(couponPo.getPriceLimit(), "价格门槛还未设置");
......@@ -148,7 +148,7 @@ public class CouponServiceImpl implements ICouponService {
if (!ArrayUtil.isEmpty(couponPo.getCategoryIds()) && !ArrayUtil.isEmpty(couponPo.getGoodsIds())) {
throw new ServiceException("品类范围和商品范围不能重叠选择");
}
couponPo.couponUseLimitCheck();
couponPo.couponUseAreaLimitCheck();
Assert.notEmpty(couponPo.getWeekLimit(), "每周几的限制还未传递");
Integer maxWeekVal = Arrays.stream(couponPo.getWeekLimit()).max(Integer::compareTo).get();
Integer minWeekVal = Arrays.stream(couponPo.getWeekLimit()).min(Integer::compareTo).get();
......
......@@ -2,6 +2,7 @@ package com.soss.system.service.impl;
import com.soss.common.enums.CouponCategoryType;
import com.soss.common.enums.CouponState;
import com.soss.common.enums.CouponUserState;
import com.soss.common.enums.CouponUserType;
import com.soss.common.exception.ServiceException;
import com.soss.common.utils.DateUtils;
......@@ -132,6 +133,11 @@ public class CouponUserServiceImpl implements ICouponUserService {
@Override
public List<CouponVo> listCustAvailableCoupon(String custId, Integer couponId) {
List<CouponVo> couponVos = couponUserMapper.listCustAvailableCoupon(custId, couponId, LocalDateTime.now());
transferTabIds(couponVos);
return couponVos;
}
private void transferTabIds(List<CouponVo> couponVos) {
couponVos.forEach(couponVo -> {
couponVo.setCategoryIds(ArrayUtil.transStrToCodeList(couponVo.getCategoryIdStr()));
couponVo.setGoodsIds(ArrayUtil.transStrToLongList(couponVo.getGoodsIdStr()));
......@@ -141,6 +147,12 @@ public class CouponUserServiceImpl implements ICouponUserService {
couponVo.setShopIds(ArrayUtil.transStrToLongList(couponVo.getShopIdStr()));
couponVo.setWeekLimit(ArrayUtil.transStrToIntList(couponVo.getWeekLimitStr()));
});
}
@Override
public List<CouponVo> listCustCoupons(String custId, Boolean effectiveFlag) {
List<CouponVo> couponVos = couponUserMapper.listCustCoupons(custId, effectiveFlag);
transferTabIds(couponVos);
return couponVos;
}
......@@ -163,6 +175,12 @@ public class CouponUserServiceImpl implements ICouponUserService {
checkGoodsFitable(couponVos, order.getOrderDetails());
}
@Override
public void useCoupon(Integer id) {
CouponUser couponUser = new CouponUser(id, CouponUserState.USED.getState());
couponUserMapper.updateCouponUser(couponUser);
}
private void checkGoodsFitable(List<CouponVo> couponVos, List<OrderDetail> orderDetails) {
Assert.notEmpty(orderDetails, "商品明细还未传递");
List<Long> skuIds = orderDetails.stream().map(OrderDetail::getSkuId).collect(Collectors.toList());
......@@ -222,7 +240,7 @@ public class CouponUserServiceImpl implements ICouponUserService {
BigDecimal discountAmount = fitSkuMap.values().stream().max(BigDecimal::compareTo).get();
Long couponSkuId = fitOrderDetails.stream().filter(orderDetail -> fitSkuMap.get(orderDetail.getSkuId()).compareTo(BigDecimal.ZERO) == 0).findFirst().get().getSkuId();
if (couponVo.getType().equals(CouponCategoryType.DISCOUNT.getType())) { // 折扣
couponVo.setCouponAmount(this.getDiscountAmount(discountAmount, couponVo.getPriceDiscount()));
couponVo.setCouponAmount(discountAmount.subtract(this.getDiscountAmount(discountAmount, couponVo.getPriceDiscount())));
} else { // 免单
couponVo.setCouponAmount(discountAmount);
}
......@@ -238,6 +256,8 @@ public class CouponUserServiceImpl implements ICouponUserService {
OrderDetail orderDetail = fitOrderDetails.get(fitOrderDetails.size() - 1);
orderDetail.setCouponAmount(orderDetail.getCouponAmount().add(couponVo.getCouponAmount().subtract(detailCouponSum)));
}
fitOrderDetails.forEach(orderDetail -> orderDetail.setCouponAmount(fitSkuMap.get(orderDetail.getSkuId()).subtract(orderDetail.getCouponAmount())));
couponVo.setCouponAmount(fitGoodsAmount.subtract(couponVo.getCouponAmount()));
} else { // 免单
couponVo.setCouponAmount(fitGoodsAmount);
}
......@@ -246,7 +266,7 @@ public class CouponUserServiceImpl implements ICouponUserService {
couponVo.setCouponAmountMap(couponAmountMap);
}
private void checkShopAndWeeklyFitable(List<CouponVo> couponVos, String shopId) {
private void checkShopAndWeeklyFitable(List<CouponVo> couponVos, Long shopId) {
Assert.notNull(shopId, "商店id还未传递");
Shop shop = shopMapper.selectShopById(shopId);
Assert.notNull(shop, "未查询到匹配的商店[id=" + shopId + "]");
......@@ -254,15 +274,16 @@ public class CouponUserServiceImpl implements ICouponUserService {
int dayOfWeek = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
couponVos.forEach(couponVo -> {
/** 可用门店的判断 */
if (!ArrayUtil.isAllAvailable(couponVo.getProvince()) && !ArrayUtil.contains(couponVo.getProvince(), shop.getProvince())) {
if (!ArrayUtil.isAllAvailable(couponVo.getProvince()) && ArrayUtil.hasContents(couponVo.getProvince())
&& !ArrayUtil.contains(couponVo.getProvince(), shop.getProvince())) {
couponVo.setNotFitableDesc("限定区域使用");
return;
}
if (!ArrayUtil.isEmpty(couponVo.getCity()) && !ArrayUtil.contains(couponVo.getCity(), shop.getCity())) {
if (!ArrayUtil.isEmpty(couponVo.getCity()) && ArrayUtil.hasContents(couponVo.getCity()) && !ArrayUtil.contains(couponVo.getCity(), shop.getCity())) {
couponVo.setNotFitableDesc("限定区域使用");
return;
}
if (!ArrayUtil.isEmpty(couponVo.getArea()) && !ArrayUtil.contains(couponVo.getArea(), shop.getZone())) {
if (!ArrayUtil.isEmpty(couponVo.getArea()) && ArrayUtil.hasContents(couponVo.getArea()) && !ArrayUtil.contains(couponVo.getArea(), shop.getZone())) {
couponVo.setNotFitableDesc("限定区域使用");
return;
}
......
......@@ -260,7 +260,7 @@ public class MachineApiServiceImpl {
public Object robotUpdate(JSONObject jsonObject) {
String robotID = jsonObject.getString("robotId");
String status = jsonObject.getString("status");
Integer status = jsonObject.getInteger("status");
Long shopID = jsonObject.getLong("shopId");
Machine machine = new Machine();
machine.setShopId(shopID);
......
package com.soss.system.service.impl;
import java.util.Date;
import java.util.List;
import com.soss.common.enums.ShopState;
import com.soss.common.exception.ServiceException;
import com.soss.system.domain.Machine;
import com.soss.system.domain.Shop;
import com.soss.system.mapper.MachineMapper;
import com.soss.system.mapper.ShopMapper;
import com.soss.system.service.IMachineService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.soss.system.mapper.MachineMapper;
import com.soss.system.domain.Machine;
import java.util.Date;
import java.util.List;
/**
* 机器Service业务层处理
*
*
* @author zxq
* @date 2022-04-28
*/
@Service
public class MachineServiceImpl implements IMachineService
{
public class MachineServiceImpl implements IMachineService {
@Autowired
private MachineMapper machineMapper;
@Autowired
private ShopMapper shopMapper;
/**
* 查询机器
*
*
* @param id 机器主键
* @return 机器
*/
@Override
public Machine selectMachineById(String id)
{
public Machine selectMachineById(String id) {
return machineMapper.selectMachineById(id);
}
......@@ -103,20 +106,22 @@ public class MachineServiceImpl implements IMachineService
throw new ServiceException("目前只允许一个店铺绑定一台机器");
}
Machine machine1 = machineMapper.selectMachineByCode(code);
if(machine1 ==null){
if (machine1 == null) {
machine.setCode(code);
machine.setBindTime(new Date());
machine.setCreatedAt(new Date());
machine.setUpdatedAt(new Date());
machine.setState("1");
return machineMapper.insertMachine(machine)+"";
machine.setState(1);
return machineMapper.insertMachine(machine) + "";
}
if(machine1.getShopId()!=null){
if (machine1.getShopId() != null) {
throw new ServiceException("该机器已经被绑定,请先解绑再绑定");
}
machine1.setCode(code);
machine1.setShopId(shopId);
machineMapper.updateMachine(machine1);
// 重新绑定机器后店铺进入测试中状态重新完成运营测试
shopMapper.updateShop(new Shop(shopId, ShopState.TESTING.getState()));
return "1";
}
......
package com.soss.system.service.impl;
import java.util.Date;
import java.util.List;
import com.soss.common.utils.StringUtils;
import com.soss.system.constants.OrderStatusConstant;
import com.soss.system.domain.Order;
import com.soss.system.domain.OrderOperationLog;
import com.soss.system.domain.OrderRefund;
import com.soss.system.domain.vo.ResultVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.soss.system.mapper.OrderOperationLogMapper;
import com.soss.system.domain.OrderOperationLog;
import com.soss.system.service.IOrderOperationLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* 【请填写功能名称】Service业务层处理
......@@ -187,22 +187,16 @@ public class OrderOperationLogServiceImpl implements IOrderOperationLogService
String state = order.getState();
operationLog.setOperation("同步消息");
operationLog.setOperationUser("接口");
String result = "成功";
if(!"0".equals(resultVo.getCode())){
result = "失败";
}
String result = "0".equals(resultVo.getCode()) ? "成功" : "失败";
switch (state){
case OrderStatusConstant.UnpaidCancel:
case OrderStatusConstant.PaidCancel:
operationLog.setStatus("已取消");
operationLog.setContent("取消订单同步"+result);
operationLog.setContent("取消订单信息同步【" + result + "】");
break;
case OrderStatusConstant.Paid:
operationLog.setStatus("已付款");
operationLog.setContent("付款状态信息"+result);
break;
case OrderStatusConstant.PaidCancel:
operationLog.setStatus("已取消");
operationLog.setContent("取消订单同步"+result);
operationLog.setContent("付款信息同步【" + result + "】");
break;
default:
return;
......
......@@ -28,7 +28,6 @@ import org.springframework.util.CollectionUtils;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
......@@ -136,7 +135,7 @@ public class OrderServiceImpl implements IOrderService {
String machineId = null;
if (StringUtils.isEmpty(order.getMachineId())) {
Machine machine = new Machine();
machine.setShopId(Long.parseLong(order.getShopId()));
machine.setShopId(order.getShopId());
List<Machine> machines = machineMapper.selectMachineList(machine);
if (machines != null && !machines.isEmpty()) {
Machine machine1 = machines.get(0);
......@@ -179,7 +178,7 @@ public class OrderServiceImpl implements IOrderService {
}
@Override
public void checkBusinessTime(String shopId) {
public void checkBusinessTime(Long shopId) {
Shop shop = shopMapper.selectShopById(shopId);
String startTime = shop.getStartTime();
String endTime = shop.getEndTime();
......@@ -456,19 +455,30 @@ public class OrderServiceImpl implements IOrderService {
* @param shopId
* @return
*/
private String getOrderNum(String shopId) {
private String getOrderNum(Long shopId) {
Calendar calendar = Calendar.getInstance();
String key = calendar.getTime().toString().substring(0, 3);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String format = simpleDateFormat.format(new Date());
String redisKey = "shopId" + format + shopId;
RedisAtomicInteger redisAtomicInteger = new RedisAtomicInteger(redisKey, SpringUtils.getBean(StringRedisTemplate.class).getConnectionFactory());
int randomValue = (int) (9 * Math.random());
while (randomValue == 0) {
randomValue = (int) (9 * Math.random());
}
int orderNum = randomValue;
if (0 == redisAtomicInteger.get()) {
redisAtomicInteger.set((int) (1000 * Math.random()));
redisAtomicInteger.set(randomValue);
} else {
orderNum = redisAtomicInteger.getAndAdd(randomValue);
if (orderNum % 999 == 0) {
orderNum = redisAtomicInteger.getAndAdd(randomValue);
}
orderNum %= 999;
}
redisAtomicInteger.expire(1, TimeUnit.DAYS);
int andIncrement = redisAtomicInteger.getAndAdd(3);
return key + String.format("%03d", andIncrement);
// redisAtomicInteger.expire(1, TimeUnit.DAYS);
// int andIncrement = redisAtomicInteger.getAndAdd(3);
return key + String.format("%03d", orderNum);
}
//获取订单号
......@@ -555,7 +565,7 @@ public class OrderServiceImpl implements IOrderService {
}
public String getWaitTime(Order order) {
String shopId = order.getShopId();
Long shopId = order.getShopId();
List<String> status = Arrays.asList(OrderStatusConstant.Paid, OrderStatusConstant.production);
List<Order> orders = orderMapper.selectOrderByShopId(status, shopId);
List<OrderDetail> list = new ArrayList<>();
......
......@@ -58,15 +58,15 @@ public class OrderTakingServiceImpl {
public OrderTakingVo getOrderTakingInfo(Long shopId){
OrderTakingVo orderTakingVo = new OrderTakingVo();
Shop shop = shopMapper.selectShopById(String.valueOf(shopId));
if(shop ==null){
Shop shop = shopMapper.selectShopById(shopId);
if (shop == null) {
return orderTakingVo;
}
orderTakingVo.setShopState(shop.getState());
ImagesVo imagesVo = new ImagesVo();
orderTakingVo.setImages(imagesVo);
imagesVo.setLeft(sysConfigService.selectConfigByKey("menu.left"));
imagesVo.setRight(JSONObject.parseObject(sysConfigService.selectConfigByKey("menu.right")));
imagesVo.setLeft(JSONArray.parseArray(sysConfigService.selectConfigByKey("menu.left")));
// imagesVo.setRight(JSONObject.parseObject(sysConfigService.selectConfigByKey("menu.right")));
orderTakingVo.setCountOfOrder(sysConfigService.selectConfigByKey("goods.limit"));
orderTakingVo.setTips(sysConfigService.selectConfigByKey("tips.address"));
List<CategoryVo> categoryVos = new ArrayList<>();
......@@ -75,7 +75,7 @@ public class OrderTakingServiceImpl {
preferentialCategoryVo.setId(0L);
preferentialCategoryVo.setName("今日特惠");
//查询出该店铺今日特惠的商品
List<GoodsVo> goodsVos = shopRecommendMapper.selectShopGoodsByTyepe("2",shopId);
List<GoodsVo> goodsVos = shopRecommendMapper.selectShopGoodsByTyepe("2", shopId);
preferentialCategoryVo.setGoods(goodsVos);
if(!CollectionUtils.isEmpty(goodsVos)){
for (GoodsVo goodsVo : goodsVos) {
......
......@@ -3,6 +3,7 @@ package com.soss.system.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.soss.common.core.domain.AjaxResult;
import com.soss.common.enums.ShopState;
import com.soss.common.exception.ServiceException;
import com.soss.common.utils.StringUtils;
import com.soss.system.domain.*;
......@@ -14,6 +15,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import java.util.*;
......@@ -63,7 +65,7 @@ public class ShopServiceImpl implements IShopService
* @return 店铺
*/
@Override
public Shop selectShopById(String id)
public Shop selectShopById(Long id)
{
return shopMapper.selectShopById(id);
}
......@@ -83,7 +85,7 @@ public class ShopServiceImpl implements IShopService
machine.setShopId(shop1.getId());
shop1.setMachineCount(machineMapper.selectMachineList(machine).size());
shop1.setSalesAmount(orderMapper.selectSalesAmount(shop1.getId()));
shop1.setSalesVolume(orderMapper.selectSalesVolume(shop1.getId(),null));
shop1.setSalesVolume(orderMapper.selectSalesVolume(shop1.getId(), null));
//shop1.setMachieStatus(machineMapper.selectMachineList(machine).get(0).getState());
}
......@@ -91,18 +93,54 @@ public class ShopServiceImpl implements IShopService
return shops;
}
@Override
public void testStart(Long shopId) {
Shop shop = shopMapper.selectShopById(shopId);
Assert.notNull(shop, "未查询到匹配的店铺信息[id=" + shopId + "]");
if (!Objects.equals(shop.getState(), ShopState.CLOSE.getState())) {
throw new ServiceException("需暂停营业状态才可以开始测试");
}
this.updateShop(new Shop(shopId, ShopState.TESTING.getState()));
}
@Override
public void testFinish(Long shopId) {
List<Machine> machines = machineMapper.selectMachineByShopId(shopId);
if (CollectionUtils.isEmpty(machines)) {
throw new ServiceException("需绑定机器后才可完成测试");
}
// 完成测试后的校验 todo 逻辑待定
long unFinishTestMachineCount = machines.stream().filter(machine -> !machine.getState().equals(1)).count();
if (unFinishTestMachineCount > 0) {
throw new ServiceException("需机器完成运营测试后才可完成测试");
}
Shop shop = new Shop(shopId, ShopState.CLOSE.getState());
this.updateShop(shop);
}
@Override
public void open(Long shopId) {
Shop shop = shopMapper.selectShopById(shopId);
Assert.notNull(shop, "未查询到匹配的店铺信息[id=" + shopId + "]");
// 判断店铺绑定机器是否输入组件属性对应经验值 todo
/*if () {
throw new ServiceException("店铺绑定机器还未输入组件属性对应经验值");
}*/
this.updateShop(new Shop(shopId, ShopState.OPEN.getState()));
}
/**
* 新增店铺
*
*
* @param shop 店铺
* @return 结果
*/
@Override
public long insertShop(Shop shop)
{
public long insertShop(Shop shop) {
shop.setCreatedAt(new Date());
shop.setUpdatedAt(new Date());
shop.setIsDefault(0L);
shop.setState(ShopState.TESTING.getState());
shopMapper.insertShop(shop);
return shop.getId();
}
......@@ -135,23 +173,10 @@ public class ShopServiceImpl implements IShopService
for (String id : ids) {
Shop shop = new Shop();
shop.setId(Long.parseLong(id));
shop.setState("3");
shop.setState(ShopState.DELETE.getState());
shopMapper.updateShop(shop);
}
return 1;
}
/**
* 删除店铺信息
*
* @param id 店铺主键
* @return 结果
*/
@Override
public int deleteShopById(String id)
{
return shopMapper.deleteShopById(id);
}
@Override
......
......@@ -84,4 +84,11 @@
left join coupon c on c.rule_id = cr.id
where cr.use_start_time > now() and cr.use_end_time &lt; now()
</select>
<update id="expireCoupon">
update coupon c
left join coupon_rule cr on c.rule_id = cr.id
set c.state = ${@com.soss.common.enums.CouponState @EXPIRED.getState}
where cr.use_end_time &lt; now()
</update>
</mapper>
......@@ -20,7 +20,7 @@
<result column="updated_at" property="updatedAt"/>
</resultMap>
<select id="getCouponReceiveCount">
<select id="getCouponReceiveCount" resultType="Long">
select count(*)
from coupon_user
where coupon_id = #{couponId}
......@@ -31,13 +31,36 @@
<include refid="selectCustAvailableCoupon"/>
</select>
<select id="listCustCoupons" resultType="com.soss.system.domain.vo.CouponVo">
<include refid="selectCouponVo"/>
from coupon_user cu
left join coupon c on cu.coupon_id = c.id
left join coupon_category cc on c.category_id = cc.id
left join coupon_rule cr on c.rule_id = cr.id
where cu.cust_id = #{custId}
<choose>
<when test="effectiveFlag != null and effectiveFlag">
and cu.state = ${@com.soss.common.enums.CouponUserState @EFFECTIVE.getState}
</when>
<otherwise>
and cu.state in (${@com.soss.common.enums.CouponUserState @USED.getState},
${@com.soss.common.enums.CouponUserState @EXPIRED.getState})
</otherwise>
</choose>
</select>
<select id="listCustAvailableCoupon" resultType="com.soss.system.domain.vo.CouponVo">
<include refid="selectCouponVo"/>
<include refid="selectCustAvailableCoupon"/>
</select>
<sql id="selectCouponVo">
select cu.id, cc.`type`, cc.name categoryName, cr.name ruleName, cr.`desc` ruleDesc, c.name, cr.use_start_time
useStartTime, cu.expired_time useEndTime, cc.`desc` categoryDesc, cr.category_ids categoryIdStr, cr.goods_ids
goodsIdStr, cr.province provinceStr, cr.city cityStr, cr.area areaStr, cr.shop_ids shopIdStr,
cr.week_limit weekLimitStr
<include refid="selectCustAvailableCoupon"/>
</select>
cr.week_limit weekLimitStr, cr.price_discount priceDiscount, c.id couponId, cr.price_limit priceLimit,
cr.order_limit orderLimit
</sql>
<sql id="selectCustAvailableCoupon">
from coupon_user cu
......@@ -132,4 +155,10 @@
</trim>
where id = #{id}
</update>
<update id="expireCouponUser">
update coupon_user
set state = ${@com.soss.common.enums.CouponUserState @EXPIRED.getState}
where expired_time &lt; now()
</update>
</mapper>
......@@ -29,7 +29,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</sql>
<select id="selectGoodsByIds" resultMap="GoodsResult">
select id, name from goods where id in
select id, name, category from goods where id in
<foreach collection="ids" item="id" separator="," open="(" close=")">#{id}</foreach>
</select>
......@@ -55,7 +55,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
order by created_at desc
</select>
<select id="selectGoodsById" parameterType="String" resultMap="GoodsResult">
<select id="selectGoodsById" parameterType="Long" resultMap="GoodsResult">
select
g.id,
g.name,
......
......@@ -38,7 +38,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
</select>
<select id="selectGoodsSkuById" parameterType="String" resultMap="GoodsSkuResult">
<select id="selectGoodsSkuById" parameterType="Long" resultMap="GoodsSkuResult">
<include refid="selectGoodsSkuVo"/>
where id = #{id}
</select>
......
......@@ -24,24 +24,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectMachineVo"/>
<where>
<if test="shopId != null and shopId != ''"> and shop_id = #{shopId}</if>
<if test="code != null and code != ''"> and code = #{code}</if>
<if test="type != null and type != ''"> and type = #{type}</if>
<if test="state != null and state != ''"> and state = #{state}</if>
<if test="bindTime != null "> and bind_time = #{bindTime}</if>
<if test="createdAt != null "> and created_at = #{createdAt}</if>
<if test="updatedAt != null "> and updated_at = #{updatedAt}</if>
<if test="code != null and code != ''">and code = #{code}</if>
<if test="type != null and type != ''">and type = #{type}</if>
<if test="state != null and state != ''">and state = #{state}</if>
<if test="bindTime != null ">and bind_time = #{bindTime}</if>
<if test="createdAt != null ">and created_at = #{createdAt}</if>
<if test="updatedAt != null ">and updated_at = #{updatedAt}</if>
</where>
</select>
<select id="selectMachineById" parameterType="String" resultMap="MachineResult">
<include refid="selectMachineVo"/>
where id = #{id}
</select>
<select id="selectMachineByShopId" parameterType="Long" resultMap="MachineResult">
<include refid="selectMachineVo"/>
where shop_id = #{shopId}
</select>
<select id="selectMachineByCode" parameterType="String" resultMap="MachineResult">
<include refid="selectMachineVo"/>
where code = #{code}
</select>
<insert id="insertMachine" parameterType="Machine" useGeneratedKeys="true" keyProperty="id">
insert into machine
<trim prefix="(" suffix=")" suffixOverrides=",">
......
......@@ -24,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectOrderDetailVo">
select id, order_id, goods_id, goods_name, machine_id, num, amount, real_amount, spec_rule_detail, spec_rule_ids, sku_id, goods_category, created_at, updated_at from order_detail
select id, order_id, goods_id, goods_name, machine_id, num, view_amount, amount_should, coupon_amount, real_amount, spec_rule_detail, spec_rule_ids, sku_id, goods_category, created_at, updated_at from order_detail
</sql>
<select id="selectOrderDetailList" parameterType="OrderDetail" resultMap="OrderDetailResult">
......
......@@ -28,7 +28,7 @@
</resultMap>
<sql id="selectOrderVo">
select id, order_no, order_num, user_id, user_name, user_phone, pay_time, finish_time, amount, goods_num, pick_code, shop_id, machine_id, source, state, created_at, updated_at from `order`
select id, order_no, order_num, user_id, user_name, user_phone, pay_time, finish_time, amount, coupon_id, coupon_amount, paid_amount, goods_num, pick_code, shop_id, machine_id, source, state, created_at, updated_at from `order`
</sql>
<select id="selectOrderList" parameterType="Order" resultMap="OrderResult">
......
......@@ -45,7 +45,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="province != null and province != ''">and s.province = #{province}</if>
<if test="city != null and city != ''">and s.city = #{city}</if>
<if test="zone != null and zone != ''">and s.zone = #{zone}</if>
<if test="state != null and state != ''">and s.state = #{state}</if>
<if test="state != null">and s.state = #{state}</if>
<if test="createdAt != null ">and s.created_at = #{createdAt}</if>
<if test="updatedAt != null ">and s.updated_at = #{updatedAt}</if>
<if test="isDefault != null ">and s.is_default = #{isDefault}</if>
......@@ -53,7 +53,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
</select>
<select id="selectShopById" parameterType="String" resultMap="ShopResult">
<select id="selectShopById" parameterType="Long" resultMap="ShopResult">
<include refid="selectShopVo"/>
where id = #{id}
</select>
......@@ -77,7 +77,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="province != null and province != ''">province,</if>
<if test="city != null and city != ''">city,</if>
<if test="zone != null">zone,</if>
<if test="state != null and state != ''">state,</if>
<if test="state != null">state,</if>
<if test="createdAt != null">created_at,</if>
<if test="updatedAt != null">updated_at,</if>
<if test="isDefault != null">is_default,</if>
......@@ -94,7 +94,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="province != null and province != ''">#{province},</if>
<if test="city != null and city != ''">#{city},</if>
<if test="zone != null">#{zone},</if>
<if test="state != null and state != ''">#{state},</if>
<if test="state != null">#{state},</if>
<if test="createdAt != null">#{createdAt},</if>
<if test="updatedAt != null">#{updatedAt},</if>
<if test="isDefault != null">#{isDefault},</if>
......@@ -115,7 +115,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="province != null and province != ''">province = #{province},</if>
<if test="city != null and city != ''">city = #{city},</if>
<if test="zone != null">zone = #{zone},</if>
<if test="state != null and state != ''">state = #{state},</if>
<if test="state != null">state = #{state},</if>
<if test="updatedAt != null">updated_at = #{updatedAt},</if>
<if test="isDefault != null">is_default = #{isDefault},</if>
</trim>
......
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