commit
894a75beb3
@ -1,3 +1,6 @@
|
|||||||
|
|
||||||
|
/** 优惠券活动增加领取周期字段 **/
|
||||||
|
ALTER TABLE li_coupon_activity ADD coupon_frequency_enum varchar(255) COMMENT '领取周期';
|
||||||
-- 会员优惠券标识
|
-- 会员优惠券标识
|
||||||
CREATE TABLE `li_member_coupon_sign` (
|
CREATE TABLE `li_member_coupon_sign` (
|
||||||
`id` bigint NOT NULL,
|
`id` bigint NOT NULL,
|
||||||
|
@ -59,17 +59,17 @@ public class DistributionGoodsBuyerController {
|
|||||||
})
|
})
|
||||||
@GetMapping(value = "/checked/{distributionGoodsId}")
|
@GetMapping(value = "/checked/{distributionGoodsId}")
|
||||||
public ResultMessage<Object> distributionCheckGoods(
|
public ResultMessage<Object> distributionCheckGoods(
|
||||||
@NotNull(message = "分销商品不能为空") @PathVariable("distributionGoodsId") String distributionGoodsId,Boolean checked) {
|
@NotNull(message = "分销商品不能为空") @PathVariable("distributionGoodsId") String distributionGoodsId, Boolean checked) {
|
||||||
Boolean result=false;
|
Boolean result = false;
|
||||||
if(checked){
|
if (checked) {
|
||||||
result=distributionSelectedGoodsService.add(distributionGoodsId);
|
result = distributionSelectedGoodsService.add(distributionGoodsId);
|
||||||
}else {
|
} else {
|
||||||
result=distributionSelectedGoodsService.delete(distributionGoodsId);
|
result = distributionSelectedGoodsService.delete(distributionGoodsId);
|
||||||
}
|
}
|
||||||
//判断操作结果
|
//判断操作结果
|
||||||
if(result){
|
if (result) {
|
||||||
return ResultUtil.success(ResultCode.SUCCESS);
|
return ResultUtil.success(ResultCode.SUCCESS);
|
||||||
}else{
|
} else {
|
||||||
throw new ServiceException(ResultCode.ERROR);
|
throw new ServiceException(ResultCode.ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,4 +65,10 @@ public class FootprintController {
|
|||||||
return ResultUtil.data(footprintService.getFootprintNum());
|
return ResultUtil.data(footprintService.getFootprintNum());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping("/history")
|
||||||
|
@ApiOperation(value = "获取会员的历史足迹")
|
||||||
|
public ResultMessage<IPage<EsGoodsIndex>> getMemberHistory(FootPrintQueryParams params) {
|
||||||
|
return ResultUtil.data(footprintService.footPrintPage(params));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -128,5 +128,4 @@ public class OrderBuyerController {
|
|||||||
return ResultUtil.data(orderService.invoice(orderSn));
|
return ResultUtil.data(orderService.invoice(orderSn));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,8 @@ package cn.lili.controller.passport;
|
|||||||
import cn.lili.common.enums.ResultCode;
|
import cn.lili.common.enums.ResultCode;
|
||||||
import cn.lili.common.enums.ResultUtil;
|
import cn.lili.common.enums.ResultUtil;
|
||||||
import cn.lili.common.exception.ServiceException;
|
import cn.lili.common.exception.ServiceException;
|
||||||
|
import cn.lili.common.security.AuthUser;
|
||||||
|
import cn.lili.common.security.context.UserContext;
|
||||||
import cn.lili.common.security.enums.UserEnums;
|
import cn.lili.common.security.enums.UserEnums;
|
||||||
import cn.lili.common.vo.ResultMessage;
|
import cn.lili.common.vo.ResultMessage;
|
||||||
import cn.lili.modules.member.entity.dos.Member;
|
import cn.lili.modules.member.entity.dos.Member;
|
||||||
@ -264,4 +266,18 @@ public class MemberBuyerController {
|
|||||||
return ResultUtil.data(this.memberService.refreshToken(refreshToken));
|
return ResultUtil.data(this.memberService.refreshToken(refreshToken));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/getImUser")
|
||||||
|
@ApiOperation(value = "获取用户信息")
|
||||||
|
public ResultMessage<Member> getImUser() {
|
||||||
|
AuthUser authUser = UserContext.getCurrentUser();
|
||||||
|
return ResultUtil.data(memberService.getById(authUser.getId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/getImUserDetail/{memberId}")
|
||||||
|
@ApiImplicitParam(name = "memberId", value = "店铺Id", required = true, dataType = "String", paramType = "path")
|
||||||
|
@ApiOperation(value = "获取用户信息")
|
||||||
|
public ResultMessage<Member> getImUserDetail(@PathVariable String memberId) {
|
||||||
|
return ResultUtil.data(memberService.getById(memberId));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
package cn.lili.controller.store;
|
package cn.lili.controller.store;
|
||||||
|
|
||||||
import cn.lili.common.enums.ResultUtil;
|
import cn.lili.common.enums.ResultUtil;
|
||||||
|
import cn.lili.common.security.AuthUser;
|
||||||
import cn.lili.common.security.context.UserContext;
|
import cn.lili.common.security.context.UserContext;
|
||||||
import cn.lili.common.vo.PageVO;
|
import cn.lili.common.vo.PageVO;
|
||||||
import cn.lili.common.vo.ResultMessage;
|
import cn.lili.common.vo.ResultMessage;
|
||||||
import cn.lili.modules.goods.entity.vos.StoreGoodsLabelVO;
|
import cn.lili.modules.goods.entity.vos.StoreGoodsLabelVO;
|
||||||
import cn.lili.modules.goods.service.StoreGoodsLabelService;
|
import cn.lili.modules.goods.service.StoreGoodsLabelService;
|
||||||
|
import cn.lili.modules.store.entity.dos.Store;
|
||||||
import cn.lili.modules.store.entity.dto.StoreBankDTO;
|
import cn.lili.modules.store.entity.dto.StoreBankDTO;
|
||||||
import cn.lili.modules.store.entity.dto.StoreCompanyDTO;
|
import cn.lili.modules.store.entity.dto.StoreCompanyDTO;
|
||||||
import cn.lili.modules.store.entity.dto.StoreOtherInfoDTO;
|
import cn.lili.modules.store.entity.dto.StoreOtherInfoDTO;
|
||||||
@ -57,6 +59,20 @@ public class StoreBuyerController {
|
|||||||
return ResultUtil.data(storeService.findByConditionPage(entity, page));
|
return ResultUtil.data(storeService.findByConditionPage(entity, page));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/store")
|
||||||
|
@ApiOperation(value = "im-获取店铺信息")
|
||||||
|
public ResultMessage<Store> getStoreUser() {
|
||||||
|
AuthUser authUser = UserContext.getCurrentUser();
|
||||||
|
return ResultUtil.data(storeService.getById(authUser.getStoreId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/store/{storeId}")
|
||||||
|
@ApiImplicitParam(name = "storeId", value = "店铺Id", required = true, dataType = "String", paramType = "path")
|
||||||
|
@ApiOperation(value = "im-店铺ID获取店铺信息")
|
||||||
|
public ResultMessage<Store> getStoreUserDetail(@PathVariable String storeId) {
|
||||||
|
return ResultUtil.data(storeService.getById(storeId));
|
||||||
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "通过id获取店铺信息")
|
@ApiOperation(value = "通过id获取店铺信息")
|
||||||
@ApiImplicitParam(name = "id", value = "店铺ID", required = true, paramType = "path")
|
@ApiImplicitParam(name = "id", value = "店铺ID", required = true, paramType = "path")
|
||||||
@GetMapping(value = "/get/detail/{id}")
|
@GetMapping(value = "/get/detail/{id}")
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package cn.lili.event.impl;
|
package cn.lili.event.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.text.CharSequenceUtil;
|
||||||
import cn.lili.cache.Cache;
|
import cn.lili.cache.Cache;
|
||||||
import cn.lili.cache.CachePrefix;
|
import cn.lili.cache.CachePrefix;
|
||||||
import cn.lili.common.utils.StringUtils;
|
|
||||||
import cn.lili.event.MemberRegisterEvent;
|
import cn.lili.event.MemberRegisterEvent;
|
||||||
import cn.lili.modules.member.entity.dos.Member;
|
import cn.lili.modules.member.entity.dos.Member;
|
||||||
import cn.lili.modules.member.service.MemberService;
|
import cn.lili.modules.member.service.MemberService;
|
||||||
@ -46,7 +46,7 @@ public class RegisteredCouponActivityExecute implements MemberRegisterEvent {
|
|||||||
.build());
|
.build());
|
||||||
//邀请人赠券
|
//邀请人赠券
|
||||||
String memberId = (String) cache.get(CachePrefix.INVITER.getPrefix() + member.getId());
|
String memberId = (String) cache.get(CachePrefix.INVITER.getPrefix() + member.getId());
|
||||||
if (StringUtils.isNotEmpty(memberId)) {
|
if (CharSequenceUtil.isNotEmpty(memberId)) {
|
||||||
//邀请人
|
//邀请人
|
||||||
Member inviter = memberService.getById(memberId);
|
Member inviter = memberService.getById(memberId);
|
||||||
couponActivityService.trigger(CouponActivityTrigger.builder()
|
couponActivityService.trigger(CouponActivityTrigger.builder()
|
||||||
|
@ -193,6 +193,7 @@ public enum ResultCode {
|
|||||||
ORDER_NOT_USER(31007, "非当前会员的订单"),
|
ORDER_NOT_USER(31007, "非当前会员的订单"),
|
||||||
ORDER_TAKE_ERROR(31008, "当前订单无法核销"),
|
ORDER_TAKE_ERROR(31008, "当前订单无法核销"),
|
||||||
MEMBER_ADDRESS_NOT_EXIST(31009, "订单无收货地址,请先配置收货地址"),
|
MEMBER_ADDRESS_NOT_EXIST(31009, "订单无收货地址,请先配置收货地址"),
|
||||||
|
STORE_ADDRESS_NOT_EXIST(31009,"订单没有自提地址,请先选择自提地址"),
|
||||||
ORDER_DELIVER_NUM_ERROR(31010, "没有待发货的订单"),
|
ORDER_DELIVER_NUM_ERROR(31010, "没有待发货的订单"),
|
||||||
ORDER_NOT_SUPPORT_DISTRIBUTION(31011, "购物车中包含不支持配送的商品,请重新选择收货地址,或者重新选择商品"),
|
ORDER_NOT_SUPPORT_DISTRIBUTION(31011, "购物车中包含不支持配送的商品,请重新选择收货地址,或者重新选择商品"),
|
||||||
ORDER_NOT_EXIST_VALID(31041, "购物车中无有效商品,请检查购物车内商品,或者重新选择商品"),
|
ORDER_NOT_EXIST_VALID(31041, "购物车中无有效商品,请检查购物车内商品,或者重新选择商品"),
|
||||||
@ -447,6 +448,7 @@ public enum ResultCode {
|
|||||||
ALIPAY_EXCEPTION(70003, "支付宝支付错误,请稍后重试"),
|
ALIPAY_EXCEPTION(70003, "支付宝支付错误,请稍后重试"),
|
||||||
ALIPAY_PARAMS_EXCEPTION(70004, "支付宝参数异常"),
|
ALIPAY_PARAMS_EXCEPTION(70004, "支付宝参数异常"),
|
||||||
LOGISTICS_NOT_SETTING(70005, "您还未配置快递查询"),
|
LOGISTICS_NOT_SETTING(70005, "您还未配置快递查询"),
|
||||||
|
LOGISTICS_CHECK_SETTING(70005, "操作失败,请检查您的快递鸟配置"),
|
||||||
ORDER_SETTING_ERROR(70006, "系统订单配置异常"),
|
ORDER_SETTING_ERROR(70006, "系统订单配置异常"),
|
||||||
ALI_SMS_SETTING_ERROR(70007, "您还未配置阿里云短信"),
|
ALI_SMS_SETTING_ERROR(70007, "您还未配置阿里云短信"),
|
||||||
SMS_SIGN_EXIST_ERROR(70008, "短信签名已存在"),
|
SMS_SIGN_EXIST_ERROR(70008, "短信签名已存在"),
|
||||||
|
@ -77,11 +77,7 @@ public class AuthConfig {
|
|||||||
/**
|
/**
|
||||||
* 针对国外服务可以单独设置代理
|
* 针对国外服务可以单独设置代理
|
||||||
* HttpConfig config = new HttpConfig();
|
* HttpConfig config = new HttpConfig();
|
||||||
<<<<<<< HEAD
|
|
||||||
* config.setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("106.124.130.167", 10080)));
|
|
||||||
=======
|
|
||||||
* config.setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 10080)));
|
* config.setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 10080)));
|
||||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
|
||||||
* config.setTimeout(15000);
|
* config.setTimeout(15000);
|
||||||
*
|
*
|
||||||
* @since 1.15.5
|
* @since 1.15.5
|
||||||
|
@ -5,6 +5,7 @@ import cn.lili.modules.goods.entity.dos.Wholesale;
|
|||||||
import cn.lili.modules.goods.entity.dto.GoodsParamsDTO;
|
import cn.lili.modules.goods.entity.dto.GoodsParamsDTO;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -14,6 +15,7 @@ import java.util.List;
|
|||||||
* @author pikachu
|
* @author pikachu
|
||||||
* @since 2020-02-26 23:24:13
|
* @since 2020-02-26 23:24:13
|
||||||
*/
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Data
|
@Data
|
||||||
public class DraftGoodsVO extends DraftGoods {
|
public class DraftGoodsVO extends DraftGoods {
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ public enum MessageResultType {
|
|||||||
* 未读消息
|
* 未读消息
|
||||||
* 历史消息
|
* 历史消息
|
||||||
* 系统提示
|
* 系统提示
|
||||||
|
* 下线提醒
|
||||||
*/
|
*/
|
||||||
FRIENDS,
|
FRIENDS,
|
||||||
ADD_FRIENDS,
|
ADD_FRIENDS,
|
||||||
@ -23,6 +24,7 @@ public enum MessageResultType {
|
|||||||
READ_MESSAGE,
|
READ_MESSAGE,
|
||||||
UN_READ,
|
UN_READ,
|
||||||
HISTORY,
|
HISTORY,
|
||||||
SYSTEM_TIPS
|
SYSTEM_TIPS,
|
||||||
|
OFFLINE
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package cn.lili.modules.im.entity.vo;
|
|||||||
|
|
||||||
import cn.lili.modules.im.entity.enums.MessageResultType;
|
import cn.lili.modules.im.entity.enums.MessageResultType;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -12,6 +13,7 @@ import lombok.Data;
|
|||||||
* 2021-12-30 15:51
|
* 2021-12-30 15:51
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
@Builder
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class MessageVO {
|
public class MessageVO {
|
||||||
|
|
||||||
|
@ -194,10 +194,11 @@ public class KdNiaoServiceImpl implements KdNiaoService {
|
|||||||
params.put("DataType", "2");
|
params.put("DataType", "2");
|
||||||
// 以form表单形式提交post请求,post请求体中包含了应用级参数和系统级参数
|
// 以form表单形式提交post请求,post请求体中包含了应用级参数和系统级参数
|
||||||
String result = sendPost(ReqURL, params);
|
String result = sendPost(ReqURL, params);
|
||||||
|
if(CharSequenceUtil.isEmpty(result) || CharSequenceUtil.isBlank(result)){
|
||||||
|
throw new ServiceException(ResultCode.LOGISTICS_CHECK_SETTING);
|
||||||
|
}
|
||||||
//根据公司业务处理返回的信息......
|
//根据公司业务处理返回的信息......
|
||||||
JSONObject obj = JSONObject.parseObject(result);
|
JSONObject obj = JSONObject.parseObject(result);
|
||||||
|
|
||||||
log.info("电子面单响应:{}",result);
|
log.info("电子面单响应:{}",result);
|
||||||
if(!"100".equals(obj.getString("ResultCode"))){
|
if(!"100".equals(obj.getString("ResultCode"))){
|
||||||
return obj.getString("Reason");
|
return obj.getString("Reason");
|
||||||
|
@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
|
||||||
@ -15,6 +16,7 @@ import lombok.NoArgsConstructor;
|
|||||||
* @author Chopper
|
* @author Chopper
|
||||||
* @since 2020/11/17 7:22 下午
|
* @since 2020/11/17 7:22 下午
|
||||||
*/
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Data
|
@Data
|
||||||
@TableName("li_foot_print")
|
@TableName("li_foot_print")
|
||||||
@ApiModel(value = "浏览历史")
|
@ApiModel(value = "浏览历史")
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package cn.lili.modules.member.entity.dos;
|
package cn.lili.modules.member.entity.dos;
|
||||||
|
|
||||||
|
import cn.hutool.core.text.CharSequenceUtil;
|
||||||
import cn.lili.common.enums.SwitchEnum;
|
import cn.lili.common.enums.SwitchEnum;
|
||||||
import cn.lili.common.security.sensitive.Sensitive;
|
import cn.lili.common.security.sensitive.Sensitive;
|
||||||
import cn.lili.common.security.sensitive.enums.SensitiveStrategy;
|
import cn.lili.common.security.sensitive.enums.SensitiveStrategy;
|
||||||
import cn.lili.common.utils.StringUtils;
|
|
||||||
import cn.lili.modules.goods.entity.dos.GoodsSku;
|
import cn.lili.modules.goods.entity.dos.GoodsSku;
|
||||||
import cn.lili.modules.member.entity.dto.MemberEvaluationDTO;
|
import cn.lili.modules.member.entity.dto.MemberEvaluationDTO;
|
||||||
import cn.lili.modules.order.order.entity.dos.Order;
|
import cn.lili.modules.order.order.entity.dos.Order;
|
||||||
@ -131,7 +131,7 @@ public class MemberEvaluation extends BaseEntity {
|
|||||||
//设置订单编号
|
//设置订单编号
|
||||||
this.orderNo = order.getSn();
|
this.orderNo = order.getSn();
|
||||||
//是否包含图片
|
//是否包含图片
|
||||||
this.haveImage = StringUtils.isNotEmpty(memberEvaluationDTO.getImages());
|
this.haveImage = CharSequenceUtil.isNotEmpty(memberEvaluationDTO.getImages());
|
||||||
//默认开启评价
|
//默认开启评价
|
||||||
this.status = SwitchEnum.OPEN.name();
|
this.status = SwitchEnum.OPEN.name();
|
||||||
}
|
}
|
||||||
|
@ -89,5 +89,4 @@ public interface StoreLogisticsService extends IService<StoreLogistics> {
|
|||||||
*/
|
*/
|
||||||
List<StoreLogisticsVO> getCloseStoreLogistics(String storeId);
|
List<StoreLogisticsVO> getCloseStoreLogistics(String storeId);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -4,7 +4,6 @@ import cn.hutool.core.text.CharSequenceUtil;
|
|||||||
import cn.lili.common.enums.ResultCode;
|
import cn.lili.common.enums.ResultCode;
|
||||||
import cn.lili.common.exception.ServiceException;
|
import cn.lili.common.exception.ServiceException;
|
||||||
import cn.lili.common.security.context.UserContext;
|
import cn.lili.common.security.context.UserContext;
|
||||||
import cn.lili.common.utils.BeanUtil;
|
|
||||||
import cn.lili.common.utils.StringUtils;
|
import cn.lili.common.utils.StringUtils;
|
||||||
import cn.lili.common.vo.PageVO;
|
import cn.lili.common.vo.PageVO;
|
||||||
import cn.lili.modules.member.entity.dos.Clerk;
|
import cn.lili.modules.member.entity.dos.Clerk;
|
||||||
@ -20,7 +19,6 @@ import cn.lili.modules.member.service.*;
|
|||||||
import cn.lili.mybatis.util.PageUtil;
|
import cn.lili.mybatis.util.PageUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -60,9 +58,8 @@ public class ClerkServiceImpl extends ServiceImpl<ClerkMapper, Clerk> implements
|
|||||||
clerkVOQueryWrapper.eq(StringUtils.isNotEmpty(clerkQueryDTO.getDepartmentId()), "li_clerk.department_id", clerkQueryDTO.getDepartmentId());
|
clerkVOQueryWrapper.eq(StringUtils.isNotEmpty(clerkQueryDTO.getDepartmentId()), "li_clerk.department_id", clerkQueryDTO.getDepartmentId());
|
||||||
clerkVOQueryWrapper.like(StringUtils.isNotEmpty(clerkQueryDTO.getClerkName()), "li_clerk.clerk_name", clerkQueryDTO.getClerkName());
|
clerkVOQueryWrapper.like(StringUtils.isNotEmpty(clerkQueryDTO.getClerkName()), "li_clerk.clerk_name", clerkQueryDTO.getClerkName());
|
||||||
clerkVOQueryWrapper.like(StringUtils.isNotEmpty(clerkQueryDTO.getMobile()), "m.mobile", clerkQueryDTO.getMobile());
|
clerkVOQueryWrapper.like(StringUtils.isNotEmpty(clerkQueryDTO.getMobile()), "m.mobile", clerkQueryDTO.getMobile());
|
||||||
IPage<ClerkVO> clerkPage = this.baseMapper.selectClerkPage(PageUtil.initPage(page), clerkVOQueryWrapper);
|
|
||||||
|
|
||||||
return clerkPage;
|
return this.baseMapper.selectClerkPage(PageUtil.initPage(page), clerkVOQueryWrapper);
|
||||||
|
|
||||||
|
|
||||||
/*Page<Clerk> clerkPage = page(initPage, initWrapper);
|
/*Page<Clerk> clerkPage = page(initPage, initWrapper);
|
||||||
|
@ -42,7 +42,6 @@ import cn.lili.modules.store.service.StoreService;
|
|||||||
import cn.lili.mybatis.util.PageUtil;
|
import cn.lili.mybatis.util.PageUtil;
|
||||||
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
||||||
import cn.lili.rocketmq.tags.MemberTagsEnum;
|
import cn.lili.rocketmq.tags.MemberTagsEnum;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
@ -189,8 +188,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
|||||||
@Override
|
@Override
|
||||||
public Token usernameStoreLogin(String username, String password) {
|
public Token usernameStoreLogin(String username, String password) {
|
||||||
|
|
||||||
// Member member = this.findMember(username);
|
Member member = this.findMember(username);
|
||||||
Member member = this.getOne(new LambdaQueryWrapper<Member>().eq(Member::getMobile,username));
|
|
||||||
//判断用户是否存在
|
//判断用户是否存在
|
||||||
if (member == null || !member.getDisabled()) {
|
if (member == null || !member.getDisabled()) {
|
||||||
throw new ServiceException(ResultCode.USER_NOT_EXIST);
|
throw new ServiceException(ResultCode.USER_NOT_EXIST);
|
||||||
|
@ -73,7 +73,7 @@ public class MemberSignServiceImpl extends ServiceImpl<MemberSignMapper, MemberS
|
|||||||
LambdaQueryWrapper<MemberSign> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<MemberSign> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq(MemberSign::getMemberId, authUser.getId());
|
queryWrapper.eq(MemberSign::getMemberId, authUser.getId());
|
||||||
List<MemberSign> signSize = this.baseMapper.getTodayMemberSign(queryWrapper);
|
List<MemberSign> signSize = this.baseMapper.getTodayMemberSign(queryWrapper);
|
||||||
if (signSize.size() > 0) {
|
if (signSize.isEmpty()) {
|
||||||
throw new ServiceException(ResultCode.MEMBER_SIGN_REPEAT);
|
throw new ServiceException(ResultCode.MEMBER_SIGN_REPEAT);
|
||||||
}
|
}
|
||||||
//当前签到天数的前一天日期
|
//当前签到天数的前一天日期
|
||||||
|
@ -45,7 +45,7 @@ public class StoreLogisticsServiceImpl extends ServiceImpl<StoreLogisticsMapper,
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public StoreLogistics update(String logisticsId, String storeId,StoreLogisticsCustomerDTO storeLogisticsCustomerDTO) {
|
public StoreLogistics update(String logisticsId, String storeId, StoreLogisticsCustomerDTO storeLogisticsCustomerDTO) {
|
||||||
LambdaQueryWrapper<StoreLogistics> lambdaQueryWrapper = Wrappers.lambdaQuery();
|
LambdaQueryWrapper<StoreLogistics> lambdaQueryWrapper = Wrappers.lambdaQuery();
|
||||||
lambdaQueryWrapper.eq(StoreLogistics::getLogisticsId, logisticsId);
|
lambdaQueryWrapper.eq(StoreLogistics::getLogisticsId, logisticsId);
|
||||||
lambdaQueryWrapper.eq(StoreLogistics::getStoreId, storeId);
|
lambdaQueryWrapper.eq(StoreLogistics::getStoreId, storeId);
|
||||||
@ -58,15 +58,15 @@ public class StoreLogisticsServiceImpl extends ServiceImpl<StoreLogisticsMapper,
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public StoreLogistics getStoreLogisticsInfo( String logisticsId) {
|
public StoreLogistics getStoreLogisticsInfo(String logisticsId) {
|
||||||
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
|
String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
|
||||||
return this.getOne(new LambdaQueryWrapper<StoreLogistics>().eq(StoreLogistics::getStoreId,storeId).eq(StoreLogistics::getLogisticsId,logisticsId));
|
return this.getOne(new LambdaQueryWrapper<StoreLogistics>().eq(StoreLogistics::getStoreId, storeId).eq(StoreLogistics::getLogisticsId, logisticsId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<StoreLogisticsVO> getOpenStoreLogistics(String storeId) {
|
public List<StoreLogisticsVO> getOpenStoreLogistics(String storeId) {
|
||||||
List<StoreLogisticsVO> openStoreLogistics = this.baseMapper.getOpenStoreLogistics(storeId);
|
List<StoreLogisticsVO> openStoreLogistics = this.baseMapper.getOpenStoreLogistics(storeId);
|
||||||
for(StoreLogisticsVO storeLogisticsVO:openStoreLogistics){
|
for (StoreLogisticsVO storeLogisticsVO : openStoreLogistics) {
|
||||||
storeLogisticsVO.setSelected("1");
|
storeLogisticsVO.setSelected("1");
|
||||||
}
|
}
|
||||||
return openStoreLogistics;
|
return openStoreLogistics;
|
||||||
@ -78,14 +78,14 @@ public class StoreLogisticsServiceImpl extends ServiceImpl<StoreLogisticsMapper,
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public StoreLogistics add(String logisticsId, String storeId, StoreLogisticsCustomerDTO storeLogisticsCustomerDTO){
|
public StoreLogistics add(String logisticsId, String storeId, StoreLogisticsCustomerDTO storeLogisticsCustomerDTO) {
|
||||||
//判断是否已经选择过,如果没有选择则进行添加
|
//判断是否已经选择过,如果没有选择则进行添加
|
||||||
LambdaQueryWrapper<StoreLogistics> lambdaQueryWrapper = Wrappers.lambdaQuery();
|
LambdaQueryWrapper<StoreLogistics> lambdaQueryWrapper = Wrappers.lambdaQuery();
|
||||||
lambdaQueryWrapper.eq(StoreLogistics::getLogisticsId, logisticsId);
|
lambdaQueryWrapper.eq(StoreLogistics::getLogisticsId, logisticsId);
|
||||||
lambdaQueryWrapper.eq(StoreLogistics::getStoreId, storeId);
|
lambdaQueryWrapper.eq(StoreLogistics::getStoreId, storeId);
|
||||||
StoreLogistics storeLogistics=null;
|
StoreLogistics storeLogistics = null;
|
||||||
if (this.getOne(lambdaQueryWrapper) == null) {
|
if (this.getOne(lambdaQueryWrapper) == null) {
|
||||||
storeLogistics=new StoreLogistics(storeLogisticsCustomerDTO);
|
storeLogistics = new StoreLogistics(storeLogisticsCustomerDTO);
|
||||||
storeLogistics.setStoreId(storeId);
|
storeLogistics.setStoreId(storeId);
|
||||||
storeLogistics.setLogisticsId(logisticsId);
|
storeLogistics.setLogisticsId(logisticsId);
|
||||||
this.save(storeLogistics);
|
this.save(storeLogistics);
|
||||||
|
@ -455,7 +455,10 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
|
|||||||
switch (afterSaleStatusEnum) {
|
switch (afterSaleStatusEnum) {
|
||||||
//判断当前售后的状态---申请中
|
//判断当前售后的状态---申请中
|
||||||
case APPLY: {
|
case APPLY: {
|
||||||
|
// 买家申请售后时已经输入了订单售后数量,这里不需要(+x)处理
|
||||||
orderItem.setReturnGoodsNumber(orderItem.getReturnGoodsNumber() + afterSale.getNum());
|
orderItem.setReturnGoodsNumber(orderItem.getReturnGoodsNumber() + afterSale.getNum());
|
||||||
|
//修改orderItem订单
|
||||||
|
this.updateOrderItem(orderItem);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -464,13 +467,13 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
|
|||||||
case BUYER_CANCEL:
|
case BUYER_CANCEL:
|
||||||
case SELLER_TERMINATION: {
|
case SELLER_TERMINATION: {
|
||||||
orderItem.setReturnGoodsNumber(orderItem.getReturnGoodsNumber() - afterSale.getNum());
|
orderItem.setReturnGoodsNumber(orderItem.getReturnGoodsNumber() - afterSale.getNum());
|
||||||
|
//修改orderItem订单
|
||||||
|
this.updateOrderItem(orderItem);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//修改orderItem订单
|
|
||||||
this.updateOrderItem(orderItem);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ package cn.lili.modules.order.cart.entity.vo;
|
|||||||
import cn.lili.modules.distribution.entity.dos.DistributionGoods;
|
import cn.lili.modules.distribution.entity.dos.DistributionGoods;
|
||||||
import cn.lili.modules.goods.entity.dos.GoodsSku;
|
import cn.lili.modules.goods.entity.dos.GoodsSku;
|
||||||
import cn.lili.modules.order.cart.entity.enums.CartTypeEnum;
|
import cn.lili.modules.order.cart.entity.enums.CartTypeEnum;
|
||||||
|
import cn.lili.modules.order.cart.entity.enums.DeliveryMethodEnum;
|
||||||
import cn.lili.modules.promotion.tools.PromotionTools;
|
import cn.lili.modules.promotion.tools.PromotionTools;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -89,6 +90,12 @@ public class CartSkuVO extends CartBase implements Serializable {
|
|||||||
@ApiModelProperty(value = "购物车类型")
|
@ApiModelProperty(value = "购物车类型")
|
||||||
private CartTypeEnum cartType;
|
private CartTypeEnum cartType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see DeliveryMethodEnum
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "配送方式")
|
||||||
|
private String deliveryMethod;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 在构造器里初始化促销列表,规格列表
|
* 在构造器里初始化促销列表,规格列表
|
||||||
*/
|
*/
|
||||||
|
@ -81,6 +81,7 @@ public class CartVO extends CartBase implements Serializable {
|
|||||||
public CartVO(CartSkuVO cartSkuVO) {
|
public CartVO(CartSkuVO cartSkuVO) {
|
||||||
this.setStoreId(cartSkuVO.getStoreId());
|
this.setStoreId(cartSkuVO.getStoreId());
|
||||||
this.setStoreName(cartSkuVO.getStoreName());
|
this.setStoreName(cartSkuVO.getStoreName());
|
||||||
|
this.setDeliveryMethod(cartSkuVO.getDeliveryMethod());
|
||||||
this.setSkuList(new ArrayList<>());
|
this.setSkuList(new ArrayList<>());
|
||||||
this.setCouponList(new ArrayList<>());
|
this.setCouponList(new ArrayList<>());
|
||||||
this.setGiftList(new ArrayList<>());
|
this.setGiftList(new ArrayList<>());
|
||||||
|
@ -36,10 +36,7 @@ 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 java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -108,29 +105,36 @@ public class CheckDataRender implements CartRenderStep {
|
|||||||
|
|
||||||
//缓存中的商品信息
|
//缓存中的商品信息
|
||||||
GoodsSku dataSku = goodsSkuService.getGoodsSkuByIdFromCache(cartSkuVO.getGoodsSku().getId());
|
GoodsSku dataSku = goodsSkuService.getGoodsSkuByIdFromCache(cartSkuVO.getGoodsSku().getId());
|
||||||
Map<String, Object> promotionMap = promotionGoodsService.getCurrentGoodsPromotion(dataSku, tradeDTO.getCartTypeEnum().name());
|
|
||||||
//商品有效性判定
|
|
||||||
if (dataSku == null || dataSku.getUpdateTime().after(cartSkuVO.getGoodsSku().getUpdateTime())) {
|
|
||||||
//商品失效,将商品移除并重新填充商品
|
|
||||||
cartSkuVOS.remove(cartSkuVO);
|
|
||||||
//设置新商品
|
|
||||||
CartSkuVO newCartSkuVO = new CartSkuVO(dataSku,promotionMap);
|
|
||||||
newCartSkuVO.setCartType(tradeDTO.getCartTypeEnum());
|
|
||||||
newCartSkuVO.setNum(cartSkuVO.getNum());
|
|
||||||
newCartSkuVO.setSubTotal(CurrencyUtil.mul(newCartSkuVO.getPurchasePrice(), cartSkuVO.getNum()));
|
|
||||||
cartSkuVOS.add(newCartSkuVO);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
//商品上架状态判定
|
//商品上架状态判定
|
||||||
if (!GoodsAuthEnum.PASS.name().equals(dataSku.getAuthFlag()) || !GoodsStatusEnum.UPPER.name().equals(dataSku.getMarketEnable())) {
|
boolean checkGoodsStatus = dataSku == null || !GoodsAuthEnum.PASS.name().equals(dataSku.getAuthFlag()) || !GoodsStatusEnum.UPPER.name().equals(dataSku.getMarketEnable());
|
||||||
|
//商品有效性判定
|
||||||
|
boolean checkGoodsValid = dataSku != null && dataSku.getUpdateTime() != null && dataSku.getUpdateTime().after(cartSkuVO.getGoodsSku().getUpdateTime());
|
||||||
|
|
||||||
|
Map<String, Object> promotionMap = dataSku != null ? promotionGoodsService.getCurrentGoodsPromotion(dataSku, tradeDTO.getCartTypeEnum().name()) : null;
|
||||||
|
|
||||||
|
log.info("dataSku: {}, goodsSku: {}", dataSku, cartSkuVO.getGoodsSku());
|
||||||
|
if (checkGoodsStatus || checkGoodsValid) {
|
||||||
|
if (checkGoodsStatus) {
|
||||||
//设置购物车未选中
|
//设置购物车未选中
|
||||||
cartSkuVO.setChecked(false);
|
cartSkuVO.setChecked(false);
|
||||||
//设置购物车此sku商品已失效
|
//设置购物车此sku商品已失效
|
||||||
cartSkuVO.setInvalid(true);
|
cartSkuVO.setInvalid(true);
|
||||||
//设置失效消息
|
//设置失效消息
|
||||||
cartSkuVO.setErrorMessage("商品已下架");
|
cartSkuVO.setErrorMessage("商品已下架");
|
||||||
|
}
|
||||||
|
if (checkGoodsValid) {
|
||||||
|
CartSkuVO newCartSkuVO = new CartSkuVO(dataSku,promotionMap);
|
||||||
|
newCartSkuVO.setCartType(tradeDTO.getCartTypeEnum());
|
||||||
|
newCartSkuVO.setNum(cartSkuVO.getNum());
|
||||||
|
newCartSkuVO.setSubTotal(CurrencyUtil.mul(newCartSkuVO.getPurchasePrice(), cartSkuVO.getNum()));
|
||||||
|
cartSkuVO = newCartSkuVO;
|
||||||
|
log.info("商品信息已更新,更新后的商品信息为:{}", cartSkuVO);
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
//商品库存判定
|
//商品库存判定
|
||||||
if (dataSku.getQuantity() < cartSkuVO.getNum()) {
|
if (dataSku.getQuantity() < cartSkuVO.getNum()) {
|
||||||
//设置购物车未选中
|
//设置购物车未选中
|
||||||
|
@ -116,6 +116,9 @@ public class SkuFreightRender implements CartRenderStep {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}else{
|
||||||
|
//自提清空不配送商品
|
||||||
|
tradeDTO.setNotSupportFreight(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -492,12 +492,11 @@ public class CartServiceImpl implements CartService {
|
|||||||
if (CharSequenceUtil.isNotEmpty(way)) {
|
if (CharSequenceUtil.isNotEmpty(way)) {
|
||||||
cartTypeEnum = CartTypeEnum.valueOf(way);
|
cartTypeEnum = CartTypeEnum.valueOf(way);
|
||||||
}
|
}
|
||||||
TradeDTO tradeDTO = this.getCheckedTradeDTO(cartTypeEnum);
|
TradeDTO tradeDTO = this.readDTO(cartTypeEnum);
|
||||||
for (CartVO cartVO : tradeDTO.getCartList()) {
|
for (CartSkuVO cartSkuVO : tradeDTO.getSkuList()) {
|
||||||
cartVO.setDeliveryMethod(DeliveryMethodEnum.valueOf(deliveryMethod).name());
|
cartSkuVO.setDeliveryMethod(DeliveryMethodEnum.valueOf(deliveryMethod).name());
|
||||||
}
|
}
|
||||||
this.resetTradeDTO(tradeDTO);
|
this.resetTradeDTO(tradeDTO);
|
||||||
TradeDTO neTradeDTO = (TradeDTO) cache.get(this.getOriginKey(cartTypeEnum));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package cn.lili.modules.order.order.entity.vo;
|
package cn.lili.modules.order.order.entity.vo;
|
||||||
|
|
||||||
import cn.hutool.core.text.CharSequenceUtil;
|
import cn.hutool.core.text.CharSequenceUtil;
|
||||||
|
import cn.lili.modules.order.cart.entity.enums.DeliveryMethodEnum;
|
||||||
import cn.lili.modules.order.order.entity.dos.Order;
|
import cn.lili.modules.order.order.entity.dos.Order;
|
||||||
import cn.lili.modules.order.order.entity.enums.DeliverStatusEnum;
|
import cn.lili.modules.order.order.entity.enums.DeliverStatusEnum;
|
||||||
import cn.lili.modules.order.order.entity.enums.OrderStatusEnum;
|
import cn.lili.modules.order.order.entity.enums.OrderStatusEnum;
|
||||||
@ -69,10 +70,11 @@ public class AllowOperation implements Serializable {
|
|||||||
//新订单,允许支付
|
//新订单,允许支付
|
||||||
this.pay = status.equals(OrderStatusEnum.UNPAID.name()) && payStatus.equals(PayStatusEnum.UNPAID.name());
|
this.pay = status.equals(OrderStatusEnum.UNPAID.name()) && payStatus.equals(PayStatusEnum.UNPAID.name());
|
||||||
|
|
||||||
//可编辑订单收件人信息=实物订单 && 订单未发货 && 订单未取消
|
//可编辑订单收件人信息=实物订单 && 订单未发货 && 订单未取消 && 订单不是自提
|
||||||
this.editConsignee = order.getOrderType().equals(OrderTypeEnum.NORMAL.name())
|
this.editConsignee = order.getOrderType().equals(OrderTypeEnum.NORMAL.name())
|
||||||
&& order.getDeliverStatus().equals(DeliverStatusEnum.UNDELIVERED.name())
|
&& order.getDeliverStatus().equals(DeliverStatusEnum.UNDELIVERED.name())
|
||||||
&& !status.equals(OrderStatusEnum.CANCELLED.name());
|
&& !status.equals(OrderStatusEnum.CANCELLED.name())
|
||||||
|
&& !order.getDeliveryMethod().equals(DeliveryMethodEnum.SELF_PICK_UP.name());
|
||||||
|
|
||||||
//是否允许被发货
|
//是否允许被发货
|
||||||
this.ship = editConsignee && status.equals(OrderStatusEnum.UNDELIVERED.name());
|
this.ship = editConsignee && status.equals(OrderStatusEnum.UNDELIVERED.name());
|
||||||
@ -83,7 +85,8 @@ public class AllowOperation implements Serializable {
|
|||||||
//是否允许查看物流信息
|
//是否允许查看物流信息
|
||||||
this.showLogistics = order.getDeliverStatus().equals(DeliverStatusEnum.DELIVERED.name()) && status.equals(OrderStatusEnum.DELIVERED.name());
|
this.showLogistics = order.getDeliverStatus().equals(DeliverStatusEnum.DELIVERED.name()) && status.equals(OrderStatusEnum.DELIVERED.name());
|
||||||
|
|
||||||
this.take = order.getOrderType().equals(OrderTypeEnum.VIRTUAL.name()) && order.getOrderStatus().equals(OrderStatusEnum.TAKE.name());
|
//虚拟订单 或 自提订单可以核销
|
||||||
|
this.take = (order.getOrderType().equals(OrderTypeEnum.VIRTUAL.name()) && order.getOrderStatus().equals(OrderStatusEnum.TAKE.name())) || (order.getDeliveryMethod().equals(DeliveryMethodEnum.SELF_PICK_UP.name()) && order.getOrderStatus().equals(OrderStatusEnum.STAY_PICKED_UP.name()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1002,12 +1002,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|||||||
if (order == null) {
|
if (order == null) {
|
||||||
throw new ServiceException(ResultCode.ORDER_NOT_EXIST);
|
throw new ServiceException(ResultCode.ORDER_NOT_EXIST);
|
||||||
}
|
}
|
||||||
//判断是否为虚拟订单
|
//判断是否为虚拟订单 或 自提订单
|
||||||
if (!order.getOrderType().equals(OrderTypeEnum.VIRTUAL.name())) {
|
if (!order.getOrderType().equals(OrderTypeEnum.VIRTUAL.name()) && !order.getDeliveryMethod().equals(DeliveryMethodEnum.SELF_PICK_UP.name())) {
|
||||||
throw new ServiceException(ResultCode.ORDER_TAKE_ERROR);
|
throw new ServiceException(ResultCode.ORDER_TAKE_ERROR);
|
||||||
}
|
}
|
||||||
//判断虚拟订单状态
|
//判断虚拟订单状态 或 待自提
|
||||||
if (!order.getOrderStatus().equals(OrderStatusEnum.TAKE.name())) {
|
if (!order.getOrderStatus().equals(OrderStatusEnum.TAKE.name()) && !order.getOrderStatus().equals(OrderStatusEnum.STAY_PICKED_UP.name())) {
|
||||||
throw new ServiceException(ResultCode.ORDER_TAKE_ERROR);
|
throw new ServiceException(ResultCode.ORDER_TAKE_ERROR);
|
||||||
}
|
}
|
||||||
//判断验证码是否正确
|
//判断验证码是否正确
|
||||||
|
File diff suppressed because one or more lines are too long
@ -4,8 +4,6 @@ import cn.lili.common.utils.SnowFlake;
|
|||||||
import cn.lili.common.utils.SpringContextUtil;
|
import cn.lili.common.utils.SpringContextUtil;
|
||||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||||
import cn.lili.modules.order.order.entity.dos.Order;
|
import cn.lili.modules.order.order.entity.dos.Order;
|
||||||
import cn.lili.modules.order.order.entity.dos.OrderItem;
|
|
||||||
import cn.lili.modules.order.order.service.OrderItemService;
|
|
||||||
import cn.lili.modules.order.order.service.OrderService;
|
import cn.lili.modules.order.order.service.OrderService;
|
||||||
import cn.lili.modules.order.order.service.StoreFlowService;
|
import cn.lili.modules.order.order.service.StoreFlowService;
|
||||||
import cn.lili.modules.payment.entity.RefundLog;
|
import cn.lili.modules.payment.entity.RefundLog;
|
||||||
@ -35,11 +33,6 @@ public class RefundSupport {
|
|||||||
*/
|
*/
|
||||||
@Autowired
|
@Autowired
|
||||||
private OrderService orderService;
|
private OrderService orderService;
|
||||||
/**
|
|
||||||
* 子订单
|
|
||||||
*/
|
|
||||||
@Autowired
|
|
||||||
private OrderItemService orderItemService;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 售后退款
|
* 售后退款
|
||||||
@ -64,31 +57,10 @@ public class RefundSupport {
|
|||||||
Payment payment = (Payment) SpringContextUtil.getBean(paymentMethodEnum.getPlugin());
|
Payment payment = (Payment) SpringContextUtil.getBean(paymentMethodEnum.getPlugin());
|
||||||
payment.refund(refundLog);
|
payment.refund(refundLog);
|
||||||
|
|
||||||
this.updateReturnGoodsNumber(afterSale);
|
|
||||||
|
|
||||||
//记录退款流水
|
//记录退款流水
|
||||||
storeFlowService.refundOrder(afterSale);
|
storeFlowService.refundOrder(afterSale);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 功能描述: 修改子订单中已售后退款商品数量
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
* @Author ftyy
|
|
||||||
* @Date 17:33 2021/11/18
|
|
||||||
* @Param [afterSale]
|
|
||||||
**/
|
|
||||||
private void updateReturnGoodsNumber(AfterSale afterSale) {
|
|
||||||
//根据商品id及订单sn获取子订单
|
|
||||||
OrderItem orderItem = orderItemService.getByOrderSnAndSkuId(afterSale.getOrderSn(), afterSale.getSkuId());
|
|
||||||
|
|
||||||
orderItem.setReturnGoodsNumber(afterSale.getNum() + orderItem.getReturnGoodsNumber());
|
|
||||||
|
|
||||||
//修改子订单订单中的退货数量
|
|
||||||
orderItemService.updateById(orderItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 退款通知
|
* 退款通知
|
||||||
*
|
*
|
||||||
|
@ -23,6 +23,7 @@ import javax.validation.constraints.NotNull;
|
|||||||
@ApiModel(value = "优惠券活动实体类")
|
@ApiModel(value = "优惠券活动实体类")
|
||||||
public class CouponActivity extends BasePromotions {
|
public class CouponActivity extends BasePromotions {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 4230258450334305951L;
|
||||||
/**
|
/**
|
||||||
* @see CouponActivityTypeEnum
|
* @see CouponActivityTypeEnum
|
||||||
*/
|
*/
|
||||||
|
@ -5,6 +5,7 @@ import cn.lili.modules.promotion.entity.dos.MemberCoupon;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MemberCouponVO
|
* MemberCouponVO
|
||||||
@ -15,6 +16,7 @@ import lombok.EqualsAndHashCode;
|
|||||||
*/
|
*/
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Data
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
public class MemberCouponVO extends MemberCoupon {
|
public class MemberCouponVO extends MemberCoupon {
|
||||||
|
|
||||||
private static final long serialVersionUID = -5533168813075444962L;
|
private static final long serialVersionUID = -5533168813075444962L;
|
||||||
@ -30,7 +32,4 @@ public class MemberCouponVO extends MemberCoupon {
|
|||||||
this.reason = reason;
|
this.reason = reason;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MemberCouponVO(){
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ import cn.lili.modules.goods.entity.dos.GoodsSku;
|
|||||||
import cn.lili.modules.goods.entity.dto.GoodsSkuDTO;
|
import cn.lili.modules.goods.entity.dto.GoodsSkuDTO;
|
||||||
import cn.lili.modules.promotion.entity.dos.PromotionGoods;
|
import cn.lili.modules.promotion.entity.dos.PromotionGoods;
|
||||||
import cn.lili.modules.promotion.entity.dto.search.PromotionGoodsSearchParams;
|
import cn.lili.modules.promotion.entity.dto.search.PromotionGoodsSearchParams;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@ -60,7 +60,7 @@ public interface PromotionGoodsService extends IService<PromotionGoods> {
|
|||||||
* @param pageVo 分页参数
|
* @param pageVo 分页参数
|
||||||
* @return 促销商品列表
|
* @return 促销商品列表
|
||||||
*/
|
*/
|
||||||
IPage<PromotionGoods> pageFindAll(PromotionGoodsSearchParams searchParams, PageVO pageVo);
|
Page<PromotionGoods> pageFindAll(PromotionGoodsSearchParams searchParams, PageVO pageVo);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取促销商品信息
|
* 获取促销商品信息
|
||||||
|
@ -29,7 +29,7 @@ import cn.lili.mybatis.util.PageUtil;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
@ -115,7 +115,7 @@ public class PromotionGoodsServiceImpl extends ServiceImpl<PromotionGoodsMapper,
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<PromotionGoods> pageFindAll(PromotionGoodsSearchParams searchParams, PageVO pageVo) {
|
public Page<PromotionGoods> pageFindAll(PromotionGoodsSearchParams searchParams, PageVO pageVo) {
|
||||||
return this.page(PageUtil.initPage(pageVo), searchParams.queryWrapper());
|
return this.page(PageUtil.initPage(pageVo), searchParams.queryWrapper());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -257,10 +257,6 @@ public class SeckillApplyServiceImpl extends ServiceImpl<SeckillApplyMapper, Sec
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
<<<<<<< HEAD
|
|
||||||
=======
|
|
||||||
<<<<<<< HEAD
|
|
||||||
>>>>>>> origin/master
|
|
||||||
* 更新秒杀活动时间
|
* 更新秒杀活动时间
|
||||||
*
|
*
|
||||||
* @param seckill 秒杀活动
|
* @param seckill 秒杀活动
|
||||||
|
@ -135,10 +135,6 @@ public class SeckillServiceImpl extends AbstractPromotionsServiceImpl<SeckillMap
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <<<<<<< HEAD
|
|
||||||
* =======
|
|
||||||
* <<<<<<< HEAD
|
|
||||||
* >>>>>>> origin/master
|
|
||||||
* 通用促销更新
|
* 通用促销更新
|
||||||
* 调用顺序:
|
* 调用顺序:
|
||||||
* 1. checkStatus 检查促销状态
|
* 1. checkStatus 检查促销状态
|
||||||
|
@ -214,15 +214,15 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements
|
|||||||
|
|
||||||
List<Map<String, Object>> brandList = new ArrayList<>();
|
List<Map<String, Object>> brandList = new ArrayList<>();
|
||||||
if (CollUtil.isNotEmpty(brandIds)) {
|
if (CollUtil.isNotEmpty(brandIds)) {
|
||||||
brandList = this.brandService.getBrandsMapsByCategory(brandIds, "id,name,logo");
|
brandList = this.brandService.getBrandsMapsByCategory(CollUtil.distinct(brandIds), "id,name,logo");
|
||||||
}
|
}
|
||||||
List<Map<String, Object>> categoryList = new ArrayList<>();
|
List<Map<String, Object>> categoryList = new ArrayList<>();
|
||||||
if (CollUtil.isNotEmpty(categoryList)) {
|
if (CollUtil.isNotEmpty(categoryPaths)) {
|
||||||
categoryList = this.categoryService.listMapsByIdsOrderByLevel(categoryPaths, "id,name");
|
categoryList = this.categoryService.listMapsByIdsOrderByLevel(CollUtil.distinct(categoryPaths), "id,name");
|
||||||
}
|
}
|
||||||
List<Map<String, Object>> storeCategoryList = new ArrayList<>();
|
List<Map<String, Object>> storeCategoryList = new ArrayList<>();
|
||||||
if (CollUtil.isNotEmpty(storeCategoryList)) {
|
if (CollUtil.isNotEmpty(storeCategoryPaths)) {
|
||||||
storeCategoryList = this.storeGoodsLabelService.listMapsByStoreIds(storeCategoryPaths, "id,label_name");
|
storeCategoryList = this.storeGoodsLabelService.listMapsByStoreIds(CollUtil.distinct(storeCategoryPaths), "id,label_name");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (GoodsSkuDTO goodsSku : skuIPage.getRecords()) {
|
for (GoodsSkuDTO goodsSku : skuIPage.getRecords()) {
|
||||||
@ -913,9 +913,11 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements
|
|||||||
if (CollUtil.isNotEmpty(categoryList) && CharSequenceUtil.isNotEmpty(goodsSku.getCategoryPath())) {
|
if (CollUtil.isNotEmpty(categoryList) && CharSequenceUtil.isNotEmpty(goodsSku.getCategoryPath())) {
|
||||||
StringBuilder categoryNamePath = new StringBuilder();
|
StringBuilder categoryNamePath = new StringBuilder();
|
||||||
categoryList.stream().filter(o -> goodsSku.getCategoryPath().contains(o.get("id").toString())).forEach(p -> categoryNamePath.append(p.get("name")).append(","));
|
categoryList.stream().filter(o -> goodsSku.getCategoryPath().contains(o.get("id").toString())).forEach(p -> categoryNamePath.append(p.get("name")).append(","));
|
||||||
|
if (CharSequenceUtil.isNotEmpty(categoryNamePath)) {
|
||||||
categoryNamePath.deleteCharAt(categoryNamePath.length() - 1);
|
categoryNamePath.deleteCharAt(categoryNamePath.length() - 1);
|
||||||
index.setCategoryNamePath(categoryNamePath.toString());
|
index.setCategoryNamePath(categoryNamePath.toString());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
//商品品牌索引
|
//商品品牌索引
|
||||||
if (CollUtil.isNotEmpty(brandList) && CharSequenceUtil.isNotEmpty(goodsSku.getBrandId())) {
|
if (CollUtil.isNotEmpty(brandList) && CharSequenceUtil.isNotEmpty(goodsSku.getBrandId())) {
|
||||||
Optional<Map<String, Object>> brandInfo = brandList.stream().filter(p -> p.get("id").equals(goodsSku.getBrandId())).findFirst();
|
Optional<Map<String, Object>> brandInfo = brandList.stream().filter(p -> p.get("id").equals(goodsSku.getBrandId())).findFirst();
|
||||||
@ -928,9 +930,11 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements
|
|||||||
if (CollUtil.isNotEmpty(storeCategoryList) && CharSequenceUtil.isNotEmpty(goodsSku.getStoreCategoryPath())) {
|
if (CollUtil.isNotEmpty(storeCategoryList) && CharSequenceUtil.isNotEmpty(goodsSku.getStoreCategoryPath())) {
|
||||||
StringBuilder storeCategoryNamePath = new StringBuilder();
|
StringBuilder storeCategoryNamePath = new StringBuilder();
|
||||||
storeCategoryList.stream().filter(o -> goodsSku.getStoreCategoryPath().contains(o.get("id").toString())).forEach(p -> storeCategoryNamePath.append(p.get("label_name").toString()).append(","));
|
storeCategoryList.stream().filter(o -> goodsSku.getStoreCategoryPath().contains(o.get("id").toString())).forEach(p -> storeCategoryNamePath.append(p.get("label_name").toString()).append(","));
|
||||||
|
if (CharSequenceUtil.isNotEmpty(storeCategoryNamePath)) {
|
||||||
storeCategoryNamePath.deleteCharAt(storeCategoryNamePath.length() - 1);
|
storeCategoryNamePath.deleteCharAt(storeCategoryNamePath.length() - 1);
|
||||||
index.setStoreCategoryNamePath(storeCategoryNamePath.toString());
|
index.setStoreCategoryNamePath(storeCategoryNamePath.toString());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -120,8 +120,6 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService {
|
|||||||
@Override
|
@Override
|
||||||
public List<EsGoodsIndex> getEsGoodsBySkuIds(List<String> skuIds, PageVO pageVo) {
|
public List<EsGoodsIndex> getEsGoodsBySkuIds(List<String> skuIds, PageVO pageVo) {
|
||||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder();
|
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder();
|
||||||
NativeSearchQuery build = searchQueryBuilder.build();
|
|
||||||
build.setIds(skuIds);
|
|
||||||
if (pageVo != null) {
|
if (pageVo != null) {
|
||||||
int pageNumber = pageVo.getPageNumber() - 1;
|
int pageNumber = pageVo.getPageNumber() - 1;
|
||||||
if (pageNumber < 0) {
|
if (pageNumber < 0) {
|
||||||
@ -131,6 +129,8 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService {
|
|||||||
//分页
|
//分页
|
||||||
searchQueryBuilder.withPageable(pageable);
|
searchQueryBuilder.withPageable(pageable);
|
||||||
}
|
}
|
||||||
|
NativeSearchQuery build = searchQueryBuilder.build();
|
||||||
|
build.setIds(skuIds);
|
||||||
return restTemplate.multiGet(build, EsGoodsIndex.class, restTemplate.getIndexCoordinatesFor(EsGoodsIndex.class));
|
return restTemplate.multiGet(build, EsGoodsIndex.class, restTemplate.getIndexCoordinatesFor(EsGoodsIndex.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,7 +15,10 @@ import cn.lili.modules.goods.service.GoodsService;
|
|||||||
import cn.lili.modules.search.utils.EsIndexUtil;
|
import cn.lili.modules.search.utils.EsIndexUtil;
|
||||||
import cn.lili.modules.store.entity.dos.Store;
|
import cn.lili.modules.store.entity.dos.Store;
|
||||||
import cn.lili.modules.store.entity.dos.StoreDetail;
|
import cn.lili.modules.store.entity.dos.StoreDetail;
|
||||||
import cn.lili.modules.store.entity.dto.*;
|
import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO;
|
||||||
|
import cn.lili.modules.store.entity.dto.StoreDeliverGoodsAddressDTO;
|
||||||
|
import cn.lili.modules.store.entity.dto.StoreSettingDTO;
|
||||||
|
import cn.lili.modules.store.entity.dto.StoreSettlementDay;
|
||||||
import cn.lili.modules.store.entity.vos.StoreBasicInfoVO;
|
import cn.lili.modules.store.entity.vos.StoreBasicInfoVO;
|
||||||
import cn.lili.modules.store.entity.vos.StoreDetailVO;
|
import cn.lili.modules.store.entity.vos.StoreDetailVO;
|
||||||
import cn.lili.modules.store.entity.vos.StoreManagementCategoryVO;
|
import cn.lili.modules.store.entity.vos.StoreManagementCategoryVO;
|
||||||
@ -25,7 +28,6 @@ import cn.lili.modules.store.service.StoreDetailService;
|
|||||||
import cn.lili.modules.store.service.StoreService;
|
import cn.lili.modules.store.service.StoreService;
|
||||||
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
||||||
import cn.lili.rocketmq.tags.GoodsTagsEnum;
|
import cn.lili.rocketmq.tags.GoodsTagsEnum;
|
||||||
import cn.lili.rocketmq.tags.MemberTagsEnum;
|
|
||||||
import cn.lili.rocketmq.tags.StoreTagsEnum;
|
import cn.lili.rocketmq.tags.StoreTagsEnum;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
@ -100,6 +102,7 @@ public class StoreDetailServiceImpl extends ServiceImpl<StoreDetailMapper, Store
|
|||||||
boolean result = storeService.updateById(store);
|
boolean result = storeService.updateById(store);
|
||||||
if (result) {
|
if (result) {
|
||||||
this.updateStoreGoodsInfo(store);
|
this.updateStoreGoodsInfo(store);
|
||||||
|
this.removeCache(store.getId());
|
||||||
}
|
}
|
||||||
String destination = rocketmqCustomProperties.getStoreTopic() + ":" + StoreTagsEnum.EDIT_STORE_SETTING.name();
|
String destination = rocketmqCustomProperties.getStoreTopic() + ":" + StoreTagsEnum.EDIT_STORE_SETTING.name();
|
||||||
//发送订单变更mq消息
|
//发送订单变更mq消息
|
||||||
@ -125,6 +128,7 @@ public class StoreDetailServiceImpl extends ServiceImpl<StoreDetailMapper, Store
|
|||||||
AuthUser tokenUser = Objects.requireNonNull(UserContext.getCurrentUser());
|
AuthUser tokenUser = Objects.requireNonNull(UserContext.getCurrentUser());
|
||||||
Store store = storeService.getById(tokenUser.getStoreId());
|
Store store = storeService.getById(tokenUser.getStoreId());
|
||||||
store.setMerchantEuid(merchantEuid);
|
store.setMerchantEuid(merchantEuid);
|
||||||
|
this.removeCache(store.getId());
|
||||||
return storeService.updateById(store);
|
return storeService.updateById(store);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,7 +152,7 @@ public class StoreDetailServiceImpl extends ServiceImpl<StoreDetailMapper, Store
|
|||||||
@Override
|
@Override
|
||||||
public StoreDeliverGoodsAddressDTO getStoreDeliverGoodsAddressDto(String id) {
|
public StoreDeliverGoodsAddressDTO getStoreDeliverGoodsAddressDto(String id) {
|
||||||
StoreDeliverGoodsAddressDTO storeDeliverGoodsAddressDto = this.baseMapper.getStoreDeliverGoodsAddressDto(id);
|
StoreDeliverGoodsAddressDTO storeDeliverGoodsAddressDto = this.baseMapper.getStoreDeliverGoodsAddressDto(id);
|
||||||
if(storeDeliverGoodsAddressDto ==null ){
|
if (storeDeliverGoodsAddressDto == null) {
|
||||||
storeDeliverGoodsAddressDto = new StoreDeliverGoodsAddressDTO();
|
storeDeliverGoodsAddressDto = new StoreDeliverGoodsAddressDTO();
|
||||||
}
|
}
|
||||||
return storeDeliverGoodsAddressDto;
|
return storeDeliverGoodsAddressDto;
|
||||||
@ -158,12 +162,15 @@ public class StoreDetailServiceImpl extends ServiceImpl<StoreDetailMapper, Store
|
|||||||
public boolean editStoreDeliverGoodsAddressDTO(StoreDeliverGoodsAddressDTO storeDeliverGoodsAddressDto) {
|
public boolean editStoreDeliverGoodsAddressDTO(StoreDeliverGoodsAddressDTO storeDeliverGoodsAddressDto) {
|
||||||
String storeId = Objects.requireNonNull(UserContext.getCurrentUser().getStoreId());
|
String storeId = Objects.requireNonNull(UserContext.getCurrentUser().getStoreId());
|
||||||
LambdaUpdateWrapper<StoreDetail> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
|
LambdaUpdateWrapper<StoreDetail> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
|
||||||
lambdaUpdateWrapper.set(StoreDetail::getSalesConsignorName,storeDeliverGoodsAddressDto.getSalesConsignorName());
|
lambdaUpdateWrapper.set(StoreDetail::getSalesConsignorName, storeDeliverGoodsAddressDto.getSalesConsignorName());
|
||||||
lambdaUpdateWrapper.set(StoreDetail::getSalesConsignorMobile,storeDeliverGoodsAddressDto.getSalesConsignorMobile());
|
lambdaUpdateWrapper.set(StoreDetail::getSalesConsignorMobile, storeDeliverGoodsAddressDto.getSalesConsignorMobile());
|
||||||
lambdaUpdateWrapper.set(StoreDetail::getSalesConsignorAddressId,storeDeliverGoodsAddressDto.getSalesConsignorAddressId());
|
lambdaUpdateWrapper.set(StoreDetail::getSalesConsignorAddressId, storeDeliverGoodsAddressDto.getSalesConsignorAddressId());
|
||||||
lambdaUpdateWrapper.set(StoreDetail::getSalesConsignorAddressPath,storeDeliverGoodsAddressDto.getSalesConsignorAddressPath());
|
lambdaUpdateWrapper.set(StoreDetail::getSalesConsignorAddressPath, storeDeliverGoodsAddressDto.getSalesConsignorAddressPath());
|
||||||
lambdaUpdateWrapper.set(StoreDetail::getSalesConsignorDetail,storeDeliverGoodsAddressDto.getSalesConsignorDetail());
|
lambdaUpdateWrapper.set(StoreDetail::getSalesConsignorDetail, storeDeliverGoodsAddressDto.getSalesConsignorDetail());
|
||||||
lambdaUpdateWrapper.eq(StoreDetail::getStoreId,storeId);
|
lambdaUpdateWrapper.eq(StoreDetail::getStoreId, storeId);
|
||||||
|
|
||||||
|
|
||||||
|
this.removeCache(storeId);
|
||||||
return this.update(lambdaUpdateWrapper);
|
return this.update(lambdaUpdateWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,6 +182,7 @@ public class StoreDetailServiceImpl extends ServiceImpl<StoreDetailMapper, Store
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void updateSettlementDay(String storeId, DateTime dateTime) {
|
public void updateSettlementDay(String storeId, DateTime dateTime) {
|
||||||
|
this.removeCache(storeId);
|
||||||
this.baseMapper.updateSettlementDay(storeId, dateTime);
|
this.baseMapper.updateSettlementDay(storeId, dateTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -209,6 +217,8 @@ public class StoreDetailServiceImpl extends ServiceImpl<StoreDetailMapper, Store
|
|||||||
lambdaUpdateWrapper.set(StoreDetail::getSalesConsigneeDetail, storeAfterSaleAddressDTO.getSalesConsigneeDetail());
|
lambdaUpdateWrapper.set(StoreDetail::getSalesConsigneeDetail, storeAfterSaleAddressDTO.getSalesConsigneeDetail());
|
||||||
lambdaUpdateWrapper.set(StoreDetail::getSalesConsigneeMobile, storeAfterSaleAddressDTO.getSalesConsigneeMobile());
|
lambdaUpdateWrapper.set(StoreDetail::getSalesConsigneeMobile, storeAfterSaleAddressDTO.getSalesConsigneeMobile());
|
||||||
lambdaUpdateWrapper.eq(StoreDetail::getStoreId, storeId);
|
lambdaUpdateWrapper.eq(StoreDetail::getStoreId, storeId);
|
||||||
|
|
||||||
|
this.removeCache(storeId);
|
||||||
return this.update(lambdaUpdateWrapper);
|
return this.update(lambdaUpdateWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -219,6 +229,7 @@ public class StoreDetailServiceImpl extends ServiceImpl<StoreDetailMapper, Store
|
|||||||
LambdaUpdateWrapper<StoreDetail> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
|
LambdaUpdateWrapper<StoreDetail> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
|
||||||
lambdaUpdateWrapper.set(StoreDetail::getStockWarning, stockWarning);
|
lambdaUpdateWrapper.set(StoreDetail::getStockWarning, stockWarning);
|
||||||
lambdaUpdateWrapper.eq(StoreDetail::getStoreId, storeId);
|
lambdaUpdateWrapper.eq(StoreDetail::getStoreId, storeId);
|
||||||
|
this.removeCache(storeId);
|
||||||
return this.update(lambdaUpdateWrapper);
|
return this.update(lambdaUpdateWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,4 +260,14 @@ public class StoreDetailServiceImpl extends ServiceImpl<StoreDetailMapper, Store
|
|||||||
return this.baseMapper.getLicencePhoto(storeId);
|
return this.baseMapper.getLicencePhoto(storeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除缓存
|
||||||
|
*
|
||||||
|
* @param storeId 店铺id
|
||||||
|
*/
|
||||||
|
private void removeCache(String storeId) {
|
||||||
|
cache.remove(CachePrefix.STORE.getPrefix() + storeId);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,83 +0,0 @@
|
|||||||
package cn.lili.controller.goods;
|
|
||||||
|
|
||||||
import cn.lili.common.enums.ResultCode;
|
|
||||||
import cn.lili.common.enums.ResultUtil;
|
|
||||||
import cn.lili.common.exception.ServiceException;
|
|
||||||
import cn.lili.common.vo.ResultMessage;
|
|
||||||
import cn.lili.modules.goods.service.GoodsService;
|
|
||||||
import cn.lili.modules.goods.service.GoodsSkuService;
|
|
||||||
import cn.lili.modules.search.service.EsGoodsSearchService;
|
|
||||||
import cn.lili.modules.search.service.HotWordsService;
|
|
||||||
import cn.lili.modules.statistics.aop.PageViewPoint;
|
|
||||||
import cn.lili.modules.statistics.aop.enums.PageViewEnum;
|
|
||||||
import io.swagger.annotations.Api;
|
|
||||||
import io.swagger.annotations.ApiImplicitParam;
|
|
||||||
import io.swagger.annotations.ApiImplicitParams;
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* IM端,商品接口
|
|
||||||
*
|
|
||||||
* @author chc
|
|
||||||
* @since 2022-12-28 18:30:33
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
@Api(tags = "IM端,商品接口")
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/im/goods/goods")
|
|
||||||
public class GoodsImController {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 商品
|
|
||||||
*/
|
|
||||||
@Autowired
|
|
||||||
private GoodsService goodsService;
|
|
||||||
/**
|
|
||||||
* 商品SKU
|
|
||||||
*/
|
|
||||||
@Autowired
|
|
||||||
private GoodsSkuService goodsSkuService;
|
|
||||||
/**
|
|
||||||
* ES商品搜索
|
|
||||||
*/
|
|
||||||
@Autowired
|
|
||||||
private EsGoodsSearchService goodsSearchService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private HotWordsService hotWordsService;
|
|
||||||
|
|
||||||
@ApiOperation(value = "通过id获取商品信息")
|
|
||||||
@ApiImplicitParams({
|
|
||||||
@ApiImplicitParam(name = "goodsId", value = "商品ID", required = true, paramType = "path"),
|
|
||||||
@ApiImplicitParam(name = "skuId", value = "skuId", required = true, paramType = "path")
|
|
||||||
})
|
|
||||||
@GetMapping(value = "/sku/{goodsId}/{skuId}")
|
|
||||||
@PageViewPoint(type = PageViewEnum.SKU, id = "#id")
|
|
||||||
public ResultMessage<Map<String, Object>> getSku(@NotNull(message = "商品ID不能为空") @PathVariable("goodsId") String goodsId,
|
|
||||||
@NotNull(message = "SKU ID不能为空") @PathVariable("skuId") String skuId) {
|
|
||||||
try {
|
|
||||||
// 读取选中的列表
|
|
||||||
Map<String, Object> map = goodsSkuService.getGoodsSkuDetail(goodsId, skuId);
|
|
||||||
return ResultUtil.data(map);
|
|
||||||
} catch (ServiceException se) {
|
|
||||||
log.info(se.getMsg(), se);
|
|
||||||
throw se;
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error(ResultCode.GOODS_ERROR.message(), e);
|
|
||||||
return ResultUtil.error(ResultCode.GOODS_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,175 +0,0 @@
|
|||||||
package cn.lili.controller.im;
|
|
||||||
|
|
||||||
import cn.lili.common.enums.ResultCode;
|
|
||||||
import cn.lili.common.enums.ResultUtil;
|
|
||||||
import cn.lili.common.exception.ServiceException;
|
|
||||||
import cn.lili.common.security.AuthUser;
|
|
||||||
import cn.lili.common.security.context.UserContext;
|
|
||||||
import cn.lili.common.security.enums.UserEnums;
|
|
||||||
import cn.lili.common.security.token.Token;
|
|
||||||
import cn.lili.common.utils.StringUtils;
|
|
||||||
import cn.lili.common.vo.PageVO;
|
|
||||||
import cn.lili.common.vo.ResultMessage;
|
|
||||||
import cn.lili.common.vo.SearchVO;
|
|
||||||
import cn.lili.modules.permission.entity.dos.AdminUser;
|
|
||||||
import cn.lili.modules.permission.entity.dto.AdminUserDTO;
|
|
||||||
import cn.lili.modules.permission.entity.vo.AdminUserVO;
|
|
||||||
import cn.lili.modules.permission.service.AdminUserService;
|
|
||||||
import cn.lili.modules.permission.service.DepartmentService;
|
|
||||||
import cn.lili.mybatis.util.PageUtil;
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
||||||
import io.swagger.annotations.Api;
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
|
||||||
import io.swagger.annotations.ApiParam;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
|
|
||||||
import javax.validation.Valid;
|
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Slf4j
|
|
||||||
@RestController
|
|
||||||
@Api(tags = "管理员")
|
|
||||||
@RequestMapping("/im/manager/im/passport/user")
|
|
||||||
@Validated
|
|
||||||
public class ImManagerController {
|
|
||||||
@Autowired
|
|
||||||
private AdminUserService adminUserService;
|
|
||||||
@Autowired
|
|
||||||
private DepartmentService departmentService;
|
|
||||||
|
|
||||||
@PostMapping(value = "/login")
|
|
||||||
@ApiOperation(value = "登录管理员")
|
|
||||||
public ResultMessage<Token> login(@NotNull(message = "用户名不能为空") String username,
|
|
||||||
@NotNull(message = "密码不能为空") String password) {
|
|
||||||
return ResultUtil.data(adminUserService.login(username, password));
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "注销接口")
|
|
||||||
@PostMapping("/logout")
|
|
||||||
public ResultMessage<Object> logout() {
|
|
||||||
this.adminUserService.logout(UserEnums.MANAGER);
|
|
||||||
return ResultUtil.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "刷新token")
|
|
||||||
@GetMapping("/refresh/{refreshToken}")
|
|
||||||
public ResultMessage<Object> refreshToken(@NotNull(message = "刷新token不能为空") @PathVariable String refreshToken) {
|
|
||||||
return ResultUtil.data(this.adminUserService.refreshToken(refreshToken));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@GetMapping(value = "/info")
|
|
||||||
@ApiOperation(value = "获取当前登录用户接口")
|
|
||||||
public ResultMessage<AdminUserVO> getUserInfo() {
|
|
||||||
AuthUser tokenUser = UserContext.getCurrentUser();
|
|
||||||
if (tokenUser != null) {
|
|
||||||
AdminUserVO adminUser = new AdminUserVO(adminUserService.findByUsername(tokenUser.getUsername()));
|
|
||||||
if (StringUtils.isNotEmpty(adminUser.getDepartmentId())) {
|
|
||||||
adminUser.setDepartmentTitle(departmentService.getById(adminUser.getDepartmentId()).getTitle());
|
|
||||||
}
|
|
||||||
adminUser.setPassword(null);
|
|
||||||
return ResultUtil.data(adminUser);
|
|
||||||
}
|
|
||||||
throw new ServiceException(ResultCode.USER_NOT_LOGIN);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PutMapping(value = "/edit")
|
|
||||||
@ApiOperation(value = "修改用户自己资料", notes = "用户名密码不会修改")
|
|
||||||
public ResultMessage<Object> editOwner(AdminUser adminUser) {
|
|
||||||
|
|
||||||
AuthUser tokenUser = UserContext.getCurrentUser();
|
|
||||||
if (tokenUser != null) {
|
|
||||||
//查询当前管理员
|
|
||||||
AdminUser oldAdminUser = adminUserService.findByUsername(tokenUser.getUsername());
|
|
||||||
oldAdminUser.setAvatar(adminUser.getAvatar());
|
|
||||||
oldAdminUser.setNickName(adminUser.getNickName());
|
|
||||||
if (!adminUserService.updateById(oldAdminUser)) {
|
|
||||||
throw new ServiceException(ResultCode.USER_EDIT_ERROR);
|
|
||||||
}
|
|
||||||
return ResultUtil.success(ResultCode.USER_EDIT_SUCCESS);
|
|
||||||
}
|
|
||||||
throw new ServiceException(ResultCode.USER_NOT_LOGIN);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PutMapping(value = "/admin/edit")
|
|
||||||
@ApiOperation(value = "超级管理员修改其他管理员资料")
|
|
||||||
public ResultMessage<Object> edit(@Valid AdminUser adminUser,
|
|
||||||
@RequestParam(required = false) List<String> roles) {
|
|
||||||
if (!adminUserService.updateAdminUser(adminUser, roles)) {
|
|
||||||
throw new ServiceException(ResultCode.USER_EDIT_ERROR);
|
|
||||||
}
|
|
||||||
return ResultUtil.success(ResultCode.USER_EDIT_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改密码
|
|
||||||
*
|
|
||||||
* @param password
|
|
||||||
* @param newPassword
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@PutMapping(value = "/editPassword")
|
|
||||||
@ApiOperation(value = "修改密码")
|
|
||||||
public ResultMessage<Object> editPassword(String password, String newPassword) {
|
|
||||||
adminUserService.editPassword(password, newPassword);
|
|
||||||
return ResultUtil.success(ResultCode.USER_EDIT_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping(value = "/resetPassword/{ids}")
|
|
||||||
@ApiOperation(value = "重置密码")
|
|
||||||
public ResultMessage<Object> resetPassword(@PathVariable List ids) {
|
|
||||||
adminUserService.resetPassword(ids);
|
|
||||||
return ResultUtil.success(ResultCode.USER_EDIT_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping
|
|
||||||
@ApiOperation(value = "多条件分页获取用户列表")
|
|
||||||
public ResultMessage<IPage<AdminUserVO>> getByCondition(AdminUserDTO user,
|
|
||||||
SearchVO searchVo,
|
|
||||||
PageVO pageVo) {
|
|
||||||
IPage<AdminUserVO> page = adminUserService.adminUserPage(PageUtil.initPage(pageVo), PageUtil.initWrapper(user, searchVo));
|
|
||||||
|
|
||||||
return ResultUtil.data(page);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@PostMapping
|
|
||||||
@ApiOperation(value = "添加用户")
|
|
||||||
public ResultMessage<Object> register(@Valid AdminUserDTO adminUser,
|
|
||||||
@RequestParam(required = false) List<String> roles) {
|
|
||||||
int rolesMaxSize = 10;
|
|
||||||
try {
|
|
||||||
if (roles != null && roles.size() >= rolesMaxSize) {
|
|
||||||
throw new ServiceException(ResultCode.PERMISSION_BEYOND_TEN);
|
|
||||||
}
|
|
||||||
adminUserService.saveAdminUser(adminUser, roles);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("添加用户错误", e);
|
|
||||||
}
|
|
||||||
return ResultUtil.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
@PutMapping(value = "/enable/{userId}")
|
|
||||||
@ApiOperation(value = "禁/启 用 用户")
|
|
||||||
public ResultMessage<Object> disable(@ApiParam("用户唯一id标识") @PathVariable String userId, Boolean status) {
|
|
||||||
AdminUser user = adminUserService.getById(userId);
|
|
||||||
if (user == null) {
|
|
||||||
throw new ServiceException(ResultCode.USER_NOT_EXIST);
|
|
||||||
}
|
|
||||||
user.setStatus(status);
|
|
||||||
adminUserService.updateById(user);
|
|
||||||
return ResultUtil.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
@DeleteMapping(value = "/{ids}")
|
|
||||||
@ApiOperation(value = "批量通过ids删除")
|
|
||||||
public ResultMessage<Object> delAllByIds(@PathVariable List<String> ids) {
|
|
||||||
adminUserService.deleteCompletely(ids);
|
|
||||||
return ResultUtil.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -5,7 +5,6 @@ import cn.lili.common.enums.ResultUtil;
|
|||||||
import cn.lili.common.security.AuthUser;
|
import cn.lili.common.security.AuthUser;
|
||||||
import cn.lili.common.security.context.UserContext;
|
import cn.lili.common.security.context.UserContext;
|
||||||
import cn.lili.common.vo.ResultMessage;
|
import cn.lili.common.vo.ResultMessage;
|
||||||
import cn.lili.modules.member.entity.dos.FootPrint;
|
|
||||||
import cn.lili.modules.member.entity.dos.Member;
|
import cn.lili.modules.member.entity.dos.Member;
|
||||||
import cn.lili.modules.member.entity.dto.FootPrintQueryParams;
|
import cn.lili.modules.member.entity.dto.FootPrintQueryParams;
|
||||||
import cn.lili.modules.member.service.FootprintService;
|
import cn.lili.modules.member.service.FootprintService;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package cn.lili.controller.im;
|
package cn.lili.controller.im;
|
||||||
|
|
||||||
import cn.lili.cache.Cache;
|
import cn.hutool.json.JSONUtil;
|
||||||
import cn.lili.common.security.AuthUser;
|
import cn.lili.common.security.AuthUser;
|
||||||
import cn.lili.common.security.context.UserContext;
|
import cn.lili.common.security.context.UserContext;
|
||||||
import cn.lili.common.security.enums.UserEnums;
|
import cn.lili.common.security.enums.UserEnums;
|
||||||
@ -12,11 +12,10 @@ import cn.lili.modules.im.entity.vo.MessageOperation;
|
|||||||
import cn.lili.modules.im.entity.vo.MessageVO;
|
import cn.lili.modules.im.entity.vo.MessageVO;
|
||||||
import cn.lili.modules.im.service.ImMessageService;
|
import cn.lili.modules.im.service.ImMessageService;
|
||||||
import cn.lili.modules.im.service.ImTalkService;
|
import cn.lili.modules.im.service.ImTalkService;
|
||||||
import cn.lili.modules.member.service.MemberService;
|
|
||||||
import cn.lili.modules.store.service.StoreService;
|
|
||||||
import com.alibaba.druid.util.StringUtils;
|
import com.alibaba.druid.util.StringUtils;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
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.context.annotation.Scope;
|
import org.springframework.context.annotation.Scope;
|
||||||
@ -35,53 +34,46 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||||||
@ServerEndpoint(value = "/lili/webSocket/{accessToken}", configurator = CustomSpringConfigurator.class)
|
@ServerEndpoint(value = "/lili/webSocket/{accessToken}", configurator = CustomSpringConfigurator.class)
|
||||||
@Scope("prototype")
|
@Scope("prototype")
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||||
public class WebSocketServer {
|
public class WebSocketServer {
|
||||||
/**
|
/**
|
||||||
* 消息服务
|
* 消息服务
|
||||||
*/
|
*/
|
||||||
@Autowired
|
private final ImMessageService imMessageService;
|
||||||
private ImMessageService imMessageService;
|
|
||||||
|
|
||||||
/**
|
private final ImTalkService imTalkService;
|
||||||
* im用户服务
|
|
||||||
*/
|
|
||||||
@Autowired
|
|
||||||
private MemberService memberService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private StoreService storeService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ImTalkService imTalkService;
|
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private Cache cache;
|
|
||||||
/**
|
/**
|
||||||
* 在线人数
|
* 在线人数
|
||||||
* PS 注意,只能单节点,如果多节点部署需要自行寻找方案
|
* PS 注意,只能单节点,如果多节点部署需要自行寻找方案
|
||||||
*/
|
*/
|
||||||
private static ConcurrentHashMap<String, Session> sessionPools = new ConcurrentHashMap<>();
|
private static ConcurrentHashMap<String, Session> sessionPools = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 建立连接
|
* 建立连接
|
||||||
*
|
*
|
||||||
* @param session
|
* @param session
|
||||||
*/
|
*/
|
||||||
@OnOpen
|
@OnOpen
|
||||||
public void onOpen(@PathParam("accessToken") String accessToken, Session session) throws IOException {
|
public void onOpen(@PathParam("accessToken") String accessToken, Session session) {
|
||||||
AuthUser authUser = UserContext.getAuthUser(accessToken);
|
|
||||||
Object message = null;
|
|
||||||
if (UserEnums.STORE.equals(authUser.getRole())) {
|
|
||||||
message = storeService.getById(authUser.getStoreId());
|
|
||||||
sessionPools.put(authUser.getStoreId(), session);
|
|
||||||
|
|
||||||
} else if (UserEnums.MEMBER.equals(authUser.getRole())) {
|
|
||||||
message = memberService.getById(authUser.getId());
|
AuthUser authUser = UserContext.getAuthUser(accessToken);
|
||||||
sessionPools.put(authUser.getId(), session);
|
|
||||||
|
String sessionId = UserEnums.STORE.equals(authUser.getRole()) ? authUser.getStoreId() : authUser.getId();
|
||||||
|
//如果已有会话,则进行下线提醒。
|
||||||
|
if (sessionPools.containsKey(sessionId)) {
|
||||||
|
log.info("用户重复登陆,旧用户下线");
|
||||||
|
Session oldSession = sessionPools.get(sessionId);
|
||||||
|
sendMessage(oldSession, MessageVO.builder().messageResultType(MessageResultType.OFFLINE).result("用户异地登陆").build());
|
||||||
|
try {
|
||||||
|
oldSession.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
MessageVO messageVO = new MessageVO(MessageResultType.FRIENDS, message);
|
}
|
||||||
sendMessage(authUser.getId(), messageVO);
|
sessionPools.put(sessionId, session);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -89,8 +81,9 @@ public class WebSocketServer {
|
|||||||
*/
|
*/
|
||||||
@OnClose
|
@OnClose
|
||||||
public void onClose(@PathParam("accessToken") String accessToken) {
|
public void onClose(@PathParam("accessToken") String accessToken) {
|
||||||
log.info("断开连接:{}", accessToken);
|
AuthUser authUser = UserContext.getAuthUser(accessToken);
|
||||||
sessionPools.remove(UserContext.getAuthUser(accessToken).getId());
|
log.info("用户断开断开连接:{}", JSONUtil.toJsonStr(authUser));
|
||||||
|
sessionPools.remove(authUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -101,7 +94,7 @@ public class WebSocketServer {
|
|||||||
*/
|
*/
|
||||||
@OnMessage
|
@OnMessage
|
||||||
public void onMessage(@PathParam("accessToken") String accessToken, String msg) {
|
public void onMessage(@PathParam("accessToken") String accessToken, String msg) {
|
||||||
log.error(msg);
|
log.info("发送消息:{}", msg);
|
||||||
MessageOperation messageOperation = JSON.parseObject(msg, MessageOperation.class);
|
MessageOperation messageOperation = JSON.parseObject(msg, MessageOperation.class);
|
||||||
operation(accessToken, messageOperation);
|
operation(accessToken, messageOperation);
|
||||||
}
|
}
|
||||||
@ -123,9 +116,9 @@ public class WebSocketServer {
|
|||||||
ImMessage imMessage = new ImMessage(messageOperation);
|
ImMessage imMessage = new ImMessage(messageOperation);
|
||||||
imMessageService.save(imMessage);
|
imMessageService.save(imMessage);
|
||||||
//修改最后消息信息
|
//修改最后消息信息
|
||||||
imTalkService.update(new LambdaUpdateWrapper<ImTalk>().eq(ImTalk::getId,messageOperation.getTalkId()).set(ImTalk::getLastTalkMessage,messageOperation.getContext())
|
imTalkService.update(new LambdaUpdateWrapper<ImTalk>().eq(ImTalk::getId, messageOperation.getTalkId()).set(ImTalk::getLastTalkMessage, messageOperation.getContext())
|
||||||
.set(ImTalk::getLastTalkTime,imMessage.getCreateTime())
|
.set(ImTalk::getLastTalkTime, imMessage.getCreateTime())
|
||||||
.set(ImTalk::getLastMessageType,imMessage.getMessageType()));
|
.set(ImTalk::getLastMessageType, imMessage.getMessageType()));
|
||||||
//发送消息
|
//发送消息
|
||||||
sendMessage(messageOperation.getTo(), new MessageVO(MessageResultType.MESSAGE, imMessage));
|
sendMessage(messageOperation.getTo(), new MessageVO(MessageResultType.MESSAGE, imMessage));
|
||||||
break;
|
break;
|
||||||
@ -148,15 +141,25 @@ public class WebSocketServer {
|
|||||||
/**
|
/**
|
||||||
* 发送消息
|
* 发送消息
|
||||||
*
|
*
|
||||||
* @param key 密钥
|
* @param sessionId sessionId
|
||||||
* @param message 消息对象
|
* @param message 消息对象
|
||||||
*/
|
*/
|
||||||
private void sendMessage(String key, MessageVO message) {
|
private void sendMessage(String sessionId, MessageVO message) {
|
||||||
Session session = sessionPools.get(key);
|
Session session = sessionPools.get(sessionId);
|
||||||
|
sendMessage(session, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送消息
|
||||||
|
*
|
||||||
|
* @param session 会话
|
||||||
|
* @param message 消息对象
|
||||||
|
*/
|
||||||
|
private void sendMessage(Session session, MessageVO message) {
|
||||||
if (session != null) {
|
if (session != null) {
|
||||||
try {
|
try {
|
||||||
session.getBasicRemote().sendText(JSON.toJSONString(message, true));
|
session.getBasicRemote().sendText(JSON.toJSONString(message, true));
|
||||||
} catch (IOException e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -170,16 +173,8 @@ public class WebSocketServer {
|
|||||||
*/
|
*/
|
||||||
@OnError
|
@OnError
|
||||||
public void onError(Session session, Throwable throwable) {
|
public void onError(Session session, Throwable throwable) {
|
||||||
throwable.printStackTrace();
|
log.error("socket异常: {}", session.getId(), throwable);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取店铺id
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
private String storeKey(String storeId) {
|
|
||||||
return "STORE_" + storeId;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,42 +0,0 @@
|
|||||||
package cn.lili.controller.orders;
|
|
||||||
|
|
||||||
import cn.lili.common.enums.ResultUtil;
|
|
||||||
import cn.lili.common.vo.ResultMessage;
|
|
||||||
import cn.lili.modules.im.entity.dto.ImQueryParams;
|
|
||||||
import cn.lili.modules.member.entity.dto.FootPrintQueryParams;
|
|
||||||
import cn.lili.modules.order.order.entity.dos.Order;
|
|
||||||
import cn.lili.modules.order.order.entity.dto.OrderSearchParams;
|
|
||||||
import cn.lili.modules.order.order.entity.vo.OrderSimpleVO;
|
|
||||||
import cn.lili.modules.order.order.service.OrderService;
|
|
||||||
import cn.lili.modules.search.entity.dos.EsGoodsIndex;
|
|
||||||
import cn.lili.mybatis.util.PageUtil;
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
||||||
import io.swagger.annotations.Api;
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* IM端,订单接口
|
|
||||||
*
|
|
||||||
* @author chc
|
|
||||||
* @since 2022/6/2114:46
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
@Api(tags = "IM端,订单接口")
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/im/orders/orders")
|
|
||||||
public class ImOrderComtroller {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private OrderService orderService;
|
|
||||||
|
|
||||||
@GetMapping("")
|
|
||||||
@ApiOperation(value = "获取会员订单列表")
|
|
||||||
public ResultMessage<IPage<OrderSimpleVO>> getMemberHistory(OrderSearchParams params) {
|
|
||||||
return ResultUtil.data(orderService.queryByParams(params));
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,4 +1,4 @@
|
|||||||
package cn.lili.controller.im;
|
package cn.lili.controller.store.im;
|
||||||
|
|
||||||
import cn.lili.common.enums.ResultUtil;
|
import cn.lili.common.enums.ResultUtil;
|
||||||
import cn.lili.common.vo.PageVO;
|
import cn.lili.common.vo.PageVO;
|
@ -1,4 +1,4 @@
|
|||||||
package cn.lili.controller.seat;
|
package cn.lili.controller.store.seat;
|
||||||
|
|
||||||
import cn.lili.common.enums.ResultUtil;
|
import cn.lili.common.enums.ResultUtil;
|
||||||
import cn.lili.common.vo.ResultMessage;
|
import cn.lili.common.vo.ResultMessage;
|
@ -1,4 +1,4 @@
|
|||||||
package cn.lili.controller.seat;
|
package cn.lili.controller.store.seat;
|
||||||
|
|
||||||
import cn.lili.common.enums.ResultUtil;
|
import cn.lili.common.enums.ResultUtil;
|
||||||
import cn.lili.common.security.context.UserContext;
|
import cn.lili.common.security.context.UserContext;
|
@ -1,4 +1,4 @@
|
|||||||
package cn.lili.controller.seat;
|
package cn.lili.controller.store.seat;
|
||||||
|
|
||||||
import cn.lili.common.enums.ResultUtil;
|
import cn.lili.common.enums.ResultUtil;
|
||||||
import cn.lili.common.security.context.UserContext;
|
import cn.lili.common.security.context.UserContext;
|
@ -1,4 +1,4 @@
|
|||||||
package cn.lili.controller.seat;
|
package cn.lili.controller.store.seat;
|
||||||
|
|
||||||
import cn.lili.common.enums.ResultUtil;
|
import cn.lili.common.enums.ResultUtil;
|
||||||
import cn.lili.common.vo.ResultMessage;
|
import cn.lili.common.vo.ResultMessage;
|
@ -1,7 +1,9 @@
|
|||||||
package cn.lili.controller.goods;
|
package cn.lili.controller.goods;
|
||||||
|
|
||||||
import cn.lili.common.aop.annotation.DemoSite;
|
import cn.lili.common.aop.annotation.DemoSite;
|
||||||
|
import cn.lili.common.enums.ResultCode;
|
||||||
import cn.lili.common.enums.ResultUtil;
|
import cn.lili.common.enums.ResultUtil;
|
||||||
|
import cn.lili.common.exception.ServiceException;
|
||||||
import cn.lili.common.security.OperationalJudgment;
|
import cn.lili.common.security.OperationalJudgment;
|
||||||
import cn.lili.common.security.context.UserContext;
|
import cn.lili.common.security.context.UserContext;
|
||||||
import cn.lili.common.vo.ResultMessage;
|
import cn.lili.common.vo.ResultMessage;
|
||||||
@ -16,6 +18,8 @@ import cn.lili.modules.goods.entity.vos.GoodsVO;
|
|||||||
import cn.lili.modules.goods.entity.vos.StockWarningVO;
|
import cn.lili.modules.goods.entity.vos.StockWarningVO;
|
||||||
import cn.lili.modules.goods.service.GoodsService;
|
import cn.lili.modules.goods.service.GoodsService;
|
||||||
import cn.lili.modules.goods.service.GoodsSkuService;
|
import cn.lili.modules.goods.service.GoodsSkuService;
|
||||||
|
import cn.lili.modules.statistics.aop.PageViewPoint;
|
||||||
|
import cn.lili.modules.statistics.aop.enums.PageViewEnum;
|
||||||
import cn.lili.modules.store.entity.dos.StoreDetail;
|
import cn.lili.modules.store.entity.dos.StoreDetail;
|
||||||
import cn.lili.modules.store.service.StoreDetailService;
|
import cn.lili.modules.store.service.StoreDetailService;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
@ -24,11 +28,14 @@ import io.swagger.annotations.Api;
|
|||||||
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiImplicitParams;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -39,6 +46,7 @@ import java.util.stream.Collectors;
|
|||||||
* @since 2020-02-23 15:18:56
|
* @since 2020-02-23 15:18:56
|
||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
|
@Slf4j
|
||||||
@Api(tags = "店铺端,商品接口")
|
@Api(tags = "店铺端,商品接口")
|
||||||
@RequestMapping("/store/goods/goods")
|
@RequestMapping("/store/goods/goods")
|
||||||
public class GoodsStoreController {
|
public class GoodsStoreController {
|
||||||
@ -174,4 +182,27 @@ public class GoodsStoreController {
|
|||||||
return ResultUtil.success();
|
return ResultUtil.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "通过id获取商品信息")
|
||||||
|
@ApiImplicitParams({
|
||||||
|
@ApiImplicitParam(name = "goodsId", value = "商品ID", required = true, paramType = "path"),
|
||||||
|
@ApiImplicitParam(name = "skuId", value = "skuId", required = true, paramType = "path")
|
||||||
|
})
|
||||||
|
@GetMapping(value = "/sku/{goodsId}/{skuId}")
|
||||||
|
@PageViewPoint(type = PageViewEnum.SKU, id = "#id")
|
||||||
|
public ResultMessage<Map<String, Object>> getSku(@NotNull(message = "商品ID不能为空") @PathVariable("goodsId") String goodsId,
|
||||||
|
@NotNull(message = "SKU ID不能为空") @PathVariable("skuId") String skuId) {
|
||||||
|
try {
|
||||||
|
// 读取选中的列表
|
||||||
|
Map<String, Object> map = goodsSkuService.getGoodsSkuDetail(goodsId, skuId);
|
||||||
|
return ResultUtil.data(map);
|
||||||
|
} catch (ServiceException se) {
|
||||||
|
log.info(se.getMsg(), se);
|
||||||
|
throw se;
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error(ResultCode.GOODS_ERROR.message(), e);
|
||||||
|
return ResultUtil.error(ResultCode.GOODS_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,39 @@
|
|||||||
|
package cn.lili.controller.member;
|
||||||
|
|
||||||
|
import cn.lili.common.enums.ResultUtil;
|
||||||
|
import cn.lili.common.security.context.UserContext;
|
||||||
|
import cn.lili.common.vo.ResultMessage;
|
||||||
|
import cn.lili.modules.member.entity.dto.FootPrintQueryParams;
|
||||||
|
import cn.lili.modules.member.service.FootprintService;
|
||||||
|
import cn.lili.modules.search.entity.dos.EsGoodsIndex;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
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.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商家端,浏览历史接口
|
||||||
|
*
|
||||||
|
* @author chc
|
||||||
|
* @since 2022/6/2114:46
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@Api(tags = "商家端,浏览历史接口")
|
||||||
|
@RequestMapping("/store/member/footprint")
|
||||||
|
public class FootprintStoreController {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 会员足迹
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
private FootprintService footprintService;
|
||||||
|
|
||||||
|
@ApiOperation(value = "分页获取")
|
||||||
|
@GetMapping
|
||||||
|
public ResultMessage<IPage<EsGoodsIndex>> getByPage(FootPrintQueryParams params) {
|
||||||
|
return ResultUtil.data(footprintService.footPrintPage(params));
|
||||||
|
}
|
||||||
|
}
|
@ -8,6 +8,8 @@ import cn.lili.common.enums.ResultUtil;
|
|||||||
import cn.lili.common.vo.ResultMessage;
|
import cn.lili.common.vo.ResultMessage;
|
||||||
import cn.lili.modules.member.entity.dos.Member;
|
import cn.lili.modules.member.entity.dos.Member;
|
||||||
import cn.lili.modules.member.service.MemberService;
|
import cn.lili.modules.member.service.MemberService;
|
||||||
|
import cn.lili.modules.store.entity.dos.Store;
|
||||||
|
import cn.lili.modules.store.service.StoreService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -29,6 +31,9 @@ public class StoreUserController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private MemberService memberService;
|
private MemberService memberService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private StoreService storeService;
|
||||||
|
|
||||||
|
|
||||||
@GetMapping(value = "/info")
|
@GetMapping(value = "/info")
|
||||||
@ApiOperation(value = "获取当前登录用户接口")
|
@ApiOperation(value = "获取当前登录用户接口")
|
||||||
@ -42,5 +47,16 @@ public class StoreUserController {
|
|||||||
throw new ServiceException(ResultCode.USER_NOT_LOGIN);
|
throw new ServiceException(ResultCode.USER_NOT_LOGIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping(value = "")
|
||||||
|
@ApiOperation(value = "获取当前登录店铺接口")
|
||||||
|
public ResultMessage<Store> getStoreInfo() {
|
||||||
|
AuthUser tokenUser = UserContext.getCurrentUser();
|
||||||
|
if (tokenUser != null) {
|
||||||
|
Store store = storeService.getById(tokenUser.getStoreId());
|
||||||
|
return ResultUtil.data(store);
|
||||||
|
}
|
||||||
|
throw new ServiceException(ResultCode.USER_NOT_LOGIN);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,40 +1,4 @@
|
|||||||
<<<<<<< HEAD
|
|
||||||
=======
|
|
||||||
<p align="center" >
|
|
||||||
<img src="https://www.xuxueli.com/doc/static/xxl-job/images/xxl-logo.jpg" width="150">
|
|
||||||
<h3 align="center">XXL-JOB</h3>
|
|
||||||
<p align="center">
|
|
||||||
XXL-JOB, a distributed task scheduling framework.
|
|
||||||
<br>
|
|
||||||
<a href="https://www.xuxueli.com/xxl-job/"><strong>-- Home Page --</strong></a>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<a href="https://github.com/xuxueli/xxl-job/actions">
|
|
||||||
<img src="https://github.com/xuxueli/xxl-job/workflows/Java%20CI/badge.svg" >
|
|
||||||
</a>
|
|
||||||
<a href="https://maven-badges.herokuapp.com/maven-central/com.xuxueli/xxl-job/">
|
|
||||||
<img src="https://maven-badges.herokuapp.com/maven-central/com.xuxueli/xxl-job/badge.svg" >
|
|
||||||
</a>
|
|
||||||
<a href="https://github.com/xuxueli/xxl-job/releases">
|
|
||||||
<img src="https://img.shields.io/github/release/xuxueli/xxl-job.svg" >
|
|
||||||
</a>
|
|
||||||
<a href="https://github.com/xuxueli/xxl-job/">
|
|
||||||
<img src="https://img.shields.io/github/stars/xuxueli/xxl-job" >
|
|
||||||
</a>
|
|
||||||
<a href="https://hub.docker.com/r/xuxueli/xxl-job-admin/">
|
|
||||||
<img src="https://img.shields.io/docker/pulls/xuxueli/xxl-job-admin" >
|
|
||||||
</a>
|
|
||||||
<a href="http://www.gnu.org/licenses/gpl-3.0.html">
|
|
||||||
<img src="https://img.shields.io/badge/license-GPLv3-blue.svg" >
|
|
||||||
</a>
|
|
||||||
<a href="https://www.xuxueli.com/page/donate.html">
|
|
||||||
<img src="https://img.shields.io/badge/%24-donate-ff69b4.svg?style=flat" >
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
>>>>>>> ae0c4aea12996d3d72eca7c6ccdc97922373e4d7
|
|
||||||
## Introduction
|
## Introduction
|
||||||
XXL-JOB is a distributed task scheduling framework.
|
XXL-JOB is a distributed task scheduling framework.
|
||||||
It's core design goal is to develop quickly and learn simple, lightweight, and easy to expand.
|
It's core design goal is to develop quickly and learn simple, lightweight, and easy to expand.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user