Merge pull request #76

pg
This commit is contained in:
misworga831 2023-02-09 16:06:45 +08:00 committed by GitHub
commit 894a75beb3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
53 changed files with 328 additions and 534 deletions

View File

@ -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,

View File

@ -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));
}
} }

View File

@ -128,5 +128,4 @@ public class OrderBuyerController {
return ResultUtil.data(orderService.invoice(orderSn)); return ResultUtil.data(orderService.invoice(orderSn));
} }
} }

View File

@ -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));
}
} }

View File

@ -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}")

View File

@ -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()

View File

@ -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, "短信签名已存在"),

View File

@ -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

View File

@ -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 {

View File

@ -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
} }

View File

@ -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 {

View File

@ -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");

View File

@ -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 = "浏览历史")

View File

@ -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();
} }

View File

@ -89,5 +89,4 @@ public interface StoreLogisticsService extends IService<StoreLogistics> {
*/ */
List<StoreLogisticsVO> getCloseStoreLogistics(String storeId); List<StoreLogisticsVO> getCloseStoreLogistics(String storeId);
} }

View File

@ -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);

View File

@ -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);

View File

@ -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);
} }
//当前签到天数的前一天日期 //当前签到天数的前一天日期

View File

@ -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);
} }

View File

@ -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;
/** /**
* 在构造器里初始化促销列表规格列表 * 在构造器里初始化促销列表规格列表
*/ */

View File

@ -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<>());

View File

@ -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()) {
//设置购物车未选中 //设置购物车未选中

View File

@ -116,6 +116,9 @@ public class SkuFreightRender implements CartRenderStep {
} }
} }
} }
}else{
//自提清空不配送商品
tradeDTO.setNotSupportFreight(null);
} }
} }

View File

@ -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));
} }
/** /**

View File

@ -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()));
} }
/** /**

View File

@ -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

View File

@ -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);
}
/** /**
* 退款通知 * 退款通知
* *

View File

@ -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
*/ */

View File

@ -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(){
}
} }

View File

@ -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);
/** /**
* 获取促销商品信息 * 获取促销商品信息

View File

@ -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());
} }

View File

@ -257,10 +257,6 @@ public class SeckillApplyServiceImpl extends ServiceImpl<SeckillApplyMapper, Sec
} }
/** /**
<<<<<<< HEAD
=======
<<<<<<< HEAD
>>>>>>> origin/master
* 更新秒杀活动时间 * 更新秒杀活动时间
* *
* @param seckill 秒杀活动 * @param seckill 秒杀活动

View File

@ -135,10 +135,6 @@ public class SeckillServiceImpl extends AbstractPromotionsServiceImpl<SeckillMap
} }
/** /**
* <<<<<<< HEAD
* =======
* <<<<<<< HEAD
* >>>>>>> origin/master
* 通用促销更新 * 通用促销更新
* 调用顺序: * 调用顺序:
* 1. checkStatus 检查促销状态 * 1. checkStatus 检查促销状态

View File

@ -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;
} }
} }

View File

@ -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));
} }

View File

@ -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);
} }
@ -164,6 +168,9 @@ public class StoreDetailServiceImpl extends ServiceImpl<StoreDetailMapper, Store
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);
}
} }

View File

@ -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);
}
}
}

View File

@ -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();
}
}

View File

@ -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;

View File

@ -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);
} }
@ -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;
}
} }

View File

@ -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));
}
}

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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);
}
}
} }

View File

@ -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));
}
}

View File

@ -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);
}
} }

View File

@ -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.