Merge branch 'master' into qiuqiu

This commit is contained in:
pikachu
2021-06-29 08:26:22 +08:00
25 changed files with 353 additions and 131 deletions

View File

@@ -320,6 +320,11 @@ public enum ResultCode {
FULL_DISCOUNT_EDIT_DELETE(43002, "删除满优惠活动成功"),
/**
* 直播
*/
STODIO_GOODS_EXIST_ERROR(44001,"直播商品已存在"),
/**
* 店铺
*/

View File

@@ -1,6 +1,7 @@
package cn.lili.common.validation;
import cn.lili.common.validation.impl.MobileValidator;
import cn.lili.common.validation.impl.PhoneValidator;
import javax.validation.Constraint;
import javax.validation.Payload;
@@ -12,7 +13,7 @@ import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
/**
* 手机号码校验注解
* 电话号码校验注解
*
* @author Bulbasaur
*/
@@ -22,9 +23,9 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Constraint(validatedBy = {MobileValidator.class})
public @interface Mobile {
String regexp() default "1[3|4|5|7|8]\\d{9}";
String regexp() default "";
String message() default "手机号码格式不正确";
String message() default "电话号码格式不正确";
Class<?>[] groups() default {};

View File

@@ -0,0 +1,32 @@
package cn.lili.common.validation;
import cn.lili.common.validation.impl.PhoneValidator;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
/**
* 手机号码校验注解
*
* @author Bulbasaur
*/
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {PhoneValidator.class})
public @interface Phone {
String regexp() default "1[3|4|5|7|8]\\d{9}";
String message() default "手机号码格式不正确";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}

View File

@@ -1,6 +1,7 @@
package cn.lili.common.validation.impl;
import cn.lili.common.validation.Mobile;
import cn.lili.common.validation.Phone;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
@@ -10,12 +11,21 @@ import java.util.regex.Pattern;
public class MobileValidator implements ConstraintValidator<Mobile, String> {
private static Pattern pattern = Pattern.compile("^0?(13[0-9]|14[0-9]|15[0-9]|16[0-9]|17[0-9]|18[0-9]|19[0-9])[0-9]{8}$");
@Override
public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
Matcher m = pattern.matcher(value);
return m.matches();
Pattern p1 = null,p2 = null;
Matcher m = null;
boolean b = false;
p1 = Pattern.compile("^[0][1-9]{2,3}-[0-9]{5,10}$"); // 验证带区号的
p2 = Pattern.compile("^[1-9]{1}[0-9]{5,8}$"); // 验证没有区号的
if(value.length() >9)
{ m = p1.matcher(value);
b = m.matches();
}else{
m = p2.matcher(value);
b = m.matches();
}
return b;
}
@Override

View File

@@ -0,0 +1,25 @@
package cn.lili.common.validation.impl;
import cn.lili.common.validation.Phone;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PhoneValidator implements ConstraintValidator<Phone, String> {
private static Pattern pattern = Pattern.compile("^0?(13[0-9]|14[0-9]|15[0-9]|16[0-9]|17[0-9]|18[0-9]|19[0-9])[0-9]{8}$");
@Override
public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
Matcher m = pattern.matcher(value);
return m.matches();
}
@Override
public void initialize(Phone constraintAnnotation) {
}
}

View File

@@ -5,6 +5,7 @@ import cn.lili.common.delayqueue.BroadcastMessage;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.security.enums.UserEnums;
import cn.lili.common.trigger.enums.DelayTypeEnums;
import cn.lili.common.trigger.interfaces.TimeTrigger;
import cn.lili.common.trigger.model.TimeExecuteConstant;
@@ -61,9 +62,9 @@ public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> impleme
public Boolean create(Studio studio) {
try {
//创建小程序直播
Map<String, String> roomMap = wechatLivePlayerUtil.create(studio);
studio.setRoomId(Integer.parseInt(roomMap.get("roomId")));
studio.setQrCodeUrl(roomMap.get("qrcodeUrl"));
// Map<String, String> roomMap = wechatLivePlayerUtil.create(studio);
// studio.setRoomId(Integer.parseInt(roomMap.get("roomId")));
// studio.setQrCodeUrl(roomMap.get("qrcodeUrl"));
studio.setStoreId(UserContext.getCurrentUser().getStoreId());
studio.setStatus(StudioStatusEnum.NEW.name());
//直播间添加成功发送直播间开启、关闭延时任务
@@ -71,7 +72,8 @@ public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> impleme
//直播开启延时任务
BroadcastMessage broadcastMessage = new BroadcastMessage(studio.getId(), StudioStatusEnum.START.name());
TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.BROADCAST_EXECUTOR,
Long.parseLong(studio.getStartTime()) * 1000L, broadcastMessage,
Long.parseLong(studio.getStartTime()),
broadcastMessage,
DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.BROADCAST, studio.getId()),
rocketmqCustomProperties.getPromotionTopic());
@@ -81,7 +83,7 @@ public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> impleme
//直播结束延时任务
broadcastMessage = new BroadcastMessage(studio.getId(), StudioStatusEnum.END.name());
timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.BROADCAST_EXECUTOR,
Long.parseLong(studio.getEndTime()) * 1000L, broadcastMessage,
Long.parseLong(studio.getEndTime()), broadcastMessage,
DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.BROADCAST, studio.getId()),
rocketmqCustomProperties.getPromotionTopic());
//发送促销活动开始的延时任务
@@ -152,6 +154,14 @@ public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> impleme
@Override
public Boolean push(Integer roomId, Integer goodsId) {
//判断直播间是否已添加商品
if (studioCommodityService.getOne(
new LambdaQueryWrapper<StudioCommodity>().eq(StudioCommodity::getRoomId, roomId)
.eq(StudioCommodity::getGoodsId, goodsId)) != null) {
throw new ServiceException(ResultCode.STODIO_GOODS_EXIST_ERROR);
}
//调用微信接口添加直播间商品并进行记录
if (wechatLivePlayerUtil.pushGoods(roomId, goodsId)) {
studioCommodityService.save(new StudioCommodity(roomId, goodsId));
@@ -186,10 +196,14 @@ public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> impleme
@Override
public IPage<Studio> studioList(PageVO pageVO, Integer recommend, String status) {
return this.page(PageUtil.initPage(pageVO), new QueryWrapper<Studio>()
QueryWrapper queryWrapper = new QueryWrapper<Studio>()
.eq(recommend != null, "recommend", true)
.eq(status != null, "status", status)
.orderByDesc("create_time"));
.orderByDesc("create_time");
if (UserContext.getCurrentUser().getRole().equals(UserEnums.STORE)) {
queryWrapper.eq("store_id", UserContext.getCurrentUser().getStoreId());
}
return this.page(PageUtil.initPage(pageVO), queryWrapper);
}

View File

@@ -201,7 +201,7 @@ public class WechatLivePlayerUtil {
log.info("微信小程序请求结果:" + content);
//获取请求内容如果token过期则重新获取如果出错则抛出错误
JSONObject jsonObject = new JSONObject(content);
if (jsonObject.get("errcode").equals("0")) {
if (jsonObject.get("errcode").toString().equals("0")) {
return jsonObject;
} else if (jsonObject.get("errcode").equals("40001")) {
wechatAccessTokenUtil.removeAccessToken(ClientTypeEnum.WECHAT_MP);

View File

@@ -184,6 +184,8 @@ public class ConnectUtil {
.clientId(qqConnectSettingItem.getAppId())
.clientSecret(qqConnectSettingItem.getAppKey())
.redirectUri(getRedirectUri(authInterface))
//这里qq获取unionid 需要配置为true详情可以查阅属性说明内部有帮助文档
.unionId(true)
.build(), cache);
}
}

View File

@@ -1,7 +1,7 @@
package cn.lili.modules.member.entity.dos;
import cn.lili.base.BaseEntity;
import cn.lili.common.validation.Mobile;
import cn.lili.common.validation.Phone;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -34,7 +34,7 @@ public class MemberAddress extends BaseEntity {
@ApiModelProperty(value = "收货人姓名")
private String name;
@Mobile
@Phone
@ApiModelProperty(value = "手机号码")
private String mobile;

View File

@@ -1,5 +1,7 @@
package cn.lili.modules.member.entity.dto;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.security.enums.UserEnums;
import cn.lili.common.utils.StringUtils;
import cn.lili.common.vo.PageVO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

View File

@@ -1,6 +1,6 @@
package cn.lili.modules.member.entity.dto;
import cn.lili.common.validation.Mobile;
import cn.lili.common.validation.Phone;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -20,7 +20,7 @@ public class MemberAddressDTO {
@ApiModelProperty(value = "收货人姓名")
private String consigneeName;
@Mobile
@Phone
@ApiModelProperty(value = "手机号码")
private String consigneeMobile;

View File

@@ -2,7 +2,14 @@ package cn.lili.modules.promotion.serviceimpl;
import cn.hutool.json.JSONUtil;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.trigger.enums.DelayTypeEnums;
import cn.lili.common.trigger.interfaces.TimeTrigger;
import cn.lili.common.trigger.message.PromotionMessage;
import cn.lili.common.trigger.model.TimeExecuteConstant;
import cn.lili.common.trigger.model.TimeTriggerMsg;
import cn.lili.common.trigger.util.DelayQueueTools;
import cn.lili.common.utils.DateUtil;
import cn.lili.config.rocketmq.RocketmqCustomProperties;
import cn.lili.modules.member.entity.dos.Member;
import cn.lili.modules.member.service.MemberService;
import cn.lili.modules.promotion.entity.dos.Coupon;
@@ -10,9 +17,7 @@ import cn.lili.modules.promotion.entity.dos.CouponActivity;
import cn.lili.modules.promotion.entity.dos.CouponActivityItem;
import cn.lili.modules.promotion.entity.dos.MemberCoupon;
import cn.lili.modules.promotion.entity.dto.CouponActivityDTO;
import cn.lili.modules.promotion.entity.enums.CouponActivitySendTypeEnum;
import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum;
import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum;
import cn.lili.modules.promotion.entity.enums.*;
import cn.lili.modules.promotion.entity.vos.CouponActivityVO;
import cn.lili.modules.promotion.mapper.CouponActivityMapper;
import cn.lili.modules.promotion.service.CouponActivityItemService;
@@ -47,6 +52,12 @@ public class CouponActivityServiceImpl extends ServiceImpl<CouponActivityMapper,
private CouponActivityItemService couponActivityItemService;
@Autowired
private MemberService memberService;
//Rocketmq
@Autowired
private RocketmqCustomProperties rocketmqCustomProperties;
//延时任务
@Autowired
private TimeTrigger timeTrigger;
@Override
public CouponActivityDTO addCouponActivity(CouponActivityDTO couponActivityDTO) {
@@ -60,6 +71,17 @@ public class CouponActivityServiceImpl extends ServiceImpl<CouponActivityMapper,
this.save(couponActivityDTO);
//添加优惠券活动优惠券
this.addCouponActivityItems(couponActivityDTO);
//创建优惠券活动延时任务
PromotionMessage promotionMessage = new PromotionMessage(couponActivityDTO.getId(), PromotionTypeEnum.COUPON_ACTIVITY.name(), PromotionStatusEnum.START.name(), couponActivityDTO.getStartTime(), couponActivityDTO.getEndTime());
TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.PROMOTION_EXECUTOR,
couponActivityDTO.getStartTime().getTime(),
promotionMessage,
DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (promotionMessage.getPromotionType() + promotionMessage.getPromotionId())),
rocketmqCustomProperties.getPromotionTopic());
//发送促销活动开始的延时任务
this.timeTrigger.addDelay(timeTriggerMsg);
return couponActivityDTO;
}

View File

@@ -15,18 +15,12 @@ import cn.lili.common.vo.PageVO;
import cn.lili.config.rocketmq.RocketmqCustomProperties;
import cn.lili.modules.goods.entity.dos.GoodsSku;
import cn.lili.modules.goods.service.GoodsSkuService;
import cn.lili.modules.promotion.entity.dos.Coupon;
import cn.lili.modules.promotion.entity.dos.FullDiscount;
import cn.lili.modules.promotion.entity.dos.MemberCoupon;
import cn.lili.modules.promotion.entity.dos.PromotionGoods;
import cn.lili.modules.promotion.entity.dos.*;
import cn.lili.modules.promotion.entity.enums.*;
import cn.lili.modules.promotion.entity.vos.CouponSearchParams;
import cn.lili.modules.promotion.entity.vos.CouponVO;
import cn.lili.modules.promotion.mapper.CouponMapper;
import cn.lili.modules.promotion.service.CouponService;
import cn.lili.modules.promotion.service.FullDiscountService;
import cn.lili.modules.promotion.service.MemberCouponService;
import cn.lili.modules.promotion.service.PromotionGoodsService;
import cn.lili.modules.promotion.service.*;
import cn.lili.modules.promotion.tools.PromotionTools;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -76,6 +70,9 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
//满额活动
@Autowired
private FullDiscountService fullDiscountService;
//优惠券活动-优惠券关联
@Autowired
private CouponActivityItemService couponActivityItemService;
@Override
public CouponVO add(CouponVO coupon) {
@@ -159,15 +156,31 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
@Override
public boolean deleteCoupon(String id) {
CouponVO couponVO = checkStatus(id);
LambdaUpdateWrapper<Coupon> couponUpdateWrapper = new LambdaUpdateWrapper<Coupon>().eq(Coupon::getId, id).set(Coupon::getPromotionStatus, PromotionStatusEnum.CLOSE.name()).set(Coupon::getDeleteFlag, true);
//更新优惠券状态为关闭,标示删除标志
LambdaUpdateWrapper<Coupon> couponUpdateWrapper = new LambdaUpdateWrapper<Coupon>().eq(Coupon::getId, id)
.set(Coupon::getPromotionStatus, PromotionStatusEnum.CLOSE.name()).set(Coupon::getDeleteFlag, true);
boolean result = this.update(couponUpdateWrapper);
LambdaUpdateWrapper<PromotionGoods> updateWrapper = new LambdaUpdateWrapper<PromotionGoods>().eq(PromotionGoods::getPromotionId, id).set(PromotionGoods::getPromotionStatus, PromotionStatusEnum.CLOSE.name()).set(PromotionGoods::getDeleteFlag, true);
//更新促销商品记录信息为删除
LambdaUpdateWrapper<PromotionGoods> updateWrapper = new LambdaUpdateWrapper<PromotionGoods>()
.eq(PromotionGoods::getPromotionId, id)
.set(PromotionGoods::getPromotionStatus, PromotionStatusEnum.CLOSE.name())
.set(PromotionGoods::getDeleteFlag, true);
this.promotionGoodsService.update(updateWrapper);
LambdaUpdateWrapper<MemberCoupon> memberCouponLambdaUpdateWrapper = new LambdaUpdateWrapper<MemberCoupon>().eq(MemberCoupon::getCouponId, id).set(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.CLOSED.name());
//删除mongo优惠券信息
LambdaUpdateWrapper<MemberCoupon> memberCouponLambdaUpdateWrapper = new LambdaUpdateWrapper<MemberCoupon>()
.eq(MemberCoupon::getCouponId, id)
.set(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.CLOSED.name());
memberCouponService.update(memberCouponLambdaUpdateWrapper);
this.mongoTemplate.remove(new Query().addCriteria(Criteria.where("id").is(id)), CouponVO.class);
//删除优惠券活动关联优惠券
couponActivityItemService.remove(new LambdaQueryWrapper<CouponActivityItem>()
.eq(CouponActivityItem::getCouponId,id));
//删除延时任务
this.timeTrigger.delete(TimeExecuteConstant.PROMOTION_EXECUTOR,
couponVO.getStartTime().getTime(),
DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (PromotionTypeEnum.COUPON.name() + couponVO.getId())),

View File

@@ -16,6 +16,7 @@ import cn.lili.modules.search.service.EsGoodsIndexService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
@@ -416,16 +417,17 @@ public class PromotionServiceImpl implements PromotionService {
* @return 修改结果
*/
private boolean updateCouponActivity(PromotionMessage promotionMessage, PromotionTypeEnum promotionTypeEnum){
boolean result;
CouponActivityVO couponActivityVO = this.mongoTemplate.findById(promotionMessage.getPromotionId(), CouponActivityVO.class);
if (couponActivityVO == null) {
this.throwPromotionException(promotionTypeEnum, promotionMessage.getPromotionId(), promotionMessage.getPromotionStatus());
return false;
//如果是精准发券,进行发送优惠券
CouponActivity couponActivity=couponActivityService.getById(promotionMessage.getPromotionId());
if(couponActivity.getCouponActivityType().equals(CouponActivityTypeEnum.SPECIFY.name())){
couponActivityService.specify(couponActivity.getId());
}
couponActivityVO.setPromotionStatus(promotionMessage.getPromotionStatus());
result = this.couponActivityService.update(promotionMessage.updateWrapper());
this.mongoTemplate.save(couponActivityVO);
return result;
//修改活动状态
return couponActivityService.update(new LambdaUpdateWrapper<CouponActivity>()
.eq(CouponActivity::getId,promotionMessage.getPromotionId())
.set(CouponActivity::getPromotionStatus,promotionMessage.getPromotionStatus()));
}
/**

View File

@@ -185,7 +185,7 @@ public class SeckillApplyServiceImpl extends ServiceImpl<SeckillApplyMapper, Sec
promotionGoodsService.saveBatch(promotionGoodsList);
}
//设置秒杀活动的商品数量、店铺数量
seckillService.updateSeckillGoodsNum(seckill.getId());
seckillService.updateSeckillGoodsNum(seckillId);
}

View File

@@ -126,7 +126,7 @@ public class SeckillServiceImpl extends ServiceImpl<SeckillMapper, Seckill> impl
//检查秒杀活动参数
checkSeckillParam(seckillVO, seckill.getStoreId());
//保存到MYSQL中
boolean result = this.save(seckill);
boolean result = this.save(seckillVO);
//保存到MONGO中
this.mongoTemplate.save(seckillVO);
//添加秒杀延时任务
@@ -245,7 +245,7 @@ public class SeckillServiceImpl extends ServiceImpl<SeckillMapper, Seckill> impl
public Integer getApplyNum() {
LambdaQueryWrapper<Seckill> queryWrapper = Wrappers.lambdaQuery();
//秒杀申请时间未超过当前时间
queryWrapper.le(Seckill::getApplyEndTime, cn.hutool.core.date.DateUtil.date());
queryWrapper.ge(Seckill::getApplyEndTime, cn.hutool.core.date.DateUtil.date());
queryWrapper.eq(Seckill::getPromotionStatus, PromotionStatusEnum.NEW.name());
return this.count(queryWrapper);
}
@@ -296,7 +296,7 @@ public class SeckillServiceImpl extends ServiceImpl<SeckillMapper, Seckill> impl
int sameNum = this.count(queryWrapper);
//当前时间段是否存在同类活动
if (sameNum > 0) {
throw new ServiceException("当前时间内已存在同类活动");
throw new ServiceException("当前时间内已存在同类活动:"+seckill.getStartTime());
}
}
}

View File

@@ -4,6 +4,7 @@ package cn.lili.modules.store.entity.dos;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.lili.common.validation.Mobile;
import cn.lili.common.validation.Phone;
import cn.lili.modules.store.entity.dto.AdminStoreApplyDTO;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -93,7 +94,7 @@ public class StoreDetail {
private String linkName;
@NotBlank(message = "手机号不能为空")
@Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$", message = "手机号格式有误")
@Phone
@ApiModelProperty(value = "联系人电话")
private String linkPhone;

View File

@@ -1,5 +1,6 @@
package cn.lili.modules.store.entity.dto;
import cn.lili.common.validation.Mobile;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -57,6 +58,7 @@ public class AdminStoreApplyDTO {
@ApiModelProperty(value = "公司名称")
private String companyName;
@Mobile
@ApiModelProperty(value = "公司电话")
private String companyPhone;

View File

@@ -1,5 +1,6 @@
package cn.lili.modules.store.entity.dto;
import cn.lili.common.validation.Mobile;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
@@ -38,6 +39,10 @@ public class StoreCompanyDTO {
@ApiModelProperty(value = "公司地址")
private String companyAddress;
@Mobile
@ApiModelProperty(value = "公司电话")
private String companyPhone;
@Email
@ApiModelProperty(value = "电子邮箱")
private String companyEmail;

View File

@@ -1,11 +1,23 @@
package cn.lili.modules.store.entity.dto;
import cn.lili.common.validation.Mobile;
import cn.lili.common.validation.Phone;
import cn.lili.modules.store.entity.dos.StoreDetail;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.validation.constraints.Email;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.util.Date;
/**
* 店铺修改DTO
@@ -14,7 +26,147 @@ import javax.validation.constraints.Size;
* @date 2020-08-22 15:10:51
*/
@Data
public class StoreEditDTO extends StoreDetail {
public class StoreEditDTO {
@Id
@TableId
@TableField
@Column(columnDefinition = "bigint(20)")
@ApiModelProperty(value = "唯一标识", hidden = true)
private String id;
@NotBlank(message = "店铺不能为空")
@ApiModelProperty(value = "店铺id")
private String storeId;
@Size(min = 2, max = 200, message = "店铺名称长度为2-200位")
@NotBlank(message = "店铺名称不能为空")
@ApiModelProperty(value = "店铺名称")
private String storeName;
@NotBlank(message = "公司名称不能为空")
@Size(min = 2, max = 100, message = "公司名称错误")
@ApiModelProperty(value = "公司名称")
private String companyName;
@NotBlank(message = "公司地址不能为空")
@Size(min = 1, max = 200, message = "公司地址,长度为1-200字符")
@ApiModelProperty(value = "公司地址")
private String companyAddress;
@ApiModelProperty(value = "公司地址地区Id")
private String companyAddressIdPath;
@ApiModelProperty(value = "公司地址地区")
private String companyAddressPath;
@Mobile
@ApiModelProperty(value = "公司电话")
private String companyPhone;
@Email
@ApiModelProperty(value = "电子邮箱")
private String companyEmail;
@Min(value = 1, message = "员工总数,至少一位")
@ApiModelProperty(value = "员工总数")
private Integer employeeNum;
@Min(value = 1, message = "注册资金,至少一位")
@ApiModelProperty(value = "注册资金")
private Double registeredCapital;
@NotBlank(message = "联系人姓名为空")
@Length(min = 2, max = 20, message = "联系人长度为2-20位字符")
@ApiModelProperty(value = "联系人姓名")
private String linkName;
@NotBlank(message = "手机号不能为空")
@Phone
@ApiModelProperty(value = "联系人电话")
private String linkPhone;
@Size(min = 18, max = 18, message = "营业执照长度为18位字符")
@ApiModelProperty(value = "营业执照号")
private String licenseNum;
@Size(min = 1, max = 200, message = "法定经营范围长度为1-200位字符")
@ApiModelProperty(value = "法定经营范围")
private String scope;
@NotBlank(message = "营业执照电子版不能为空")
@ApiModelProperty(value = "营业执照电子版")
private String licencePhoto;
@NotBlank(message = "法人姓名不能为空")
@Size(min = 2, max = 20, message = "法人姓名长度为2-20位字符")
@ApiModelProperty(value = "法人姓名")
private String legalName;
@NotBlank(message = "法人身份证不能为空")
@Size(min = 18, max = 18, message = "法人身份证号长度为18位")
@ApiModelProperty(value = "法人身份证")
private String legalId;
@NotBlank(message = "法人身份证不能为空")
@ApiModelProperty(value = "法人身份证照片")
private String legalPhoto;
@Size(min = 1, max = 200, message = "结算银行开户行名称长度为1-200位")
@NotBlank(message = "结算银行开户行名称不能为空")
@ApiModelProperty(value = "结算银行开户行名称")
private String settlementBankAccountName;
@Size(min = 1, max = 200, message = "结算银行开户账号长度为1-200位")
@NotBlank(message = "结算银行开户账号不能为空")
@ApiModelProperty(value = "结算银行开户账号")
private String settlementBankAccountNum;
@Size(min = 1, max = 200, message = "结算银行开户支行名称长度为1-200位")
@NotBlank(message = "结算银行开户支行名称不能为空")
@ApiModelProperty(value = "结算银行开户支行名称")
private String settlementBankBranchName;
@Size(min = 1, max = 50, message = "结算银行支行联行号长度为1-200位")
@NotBlank(message = "结算银行支行联行号不能为空")
@ApiModelProperty(value = "结算银行支行联行号")
private String settlementBankJointName;
@NotBlank(message = "店铺经营类目不能为空")
@ApiModelProperty(value = "店铺经营类目")
@Column(columnDefinition = "TEXT")
private String goodsManagementCategory;
@ApiModelProperty(value = "结算周期")
private String settlementCycle;
@ApiModelProperty(value = "库存预警数量")
private Integer stockWarning;
/**
* 同城配送达达店铺编码
*/
@ApiModelProperty(value = "同城配送达达店铺编码")
@TableField(value = "dd_code")
private String ddCode;
//店铺退货收件地址
@ApiModelProperty(value = "收货人姓名")
private String salesConsigneeName;
@ApiModelProperty(value = "收件人手机")
private String salesConsigneeMobile;
@ApiModelProperty(value = "地址Id ''分割")
private String salesConsigneeAddressId;
@ApiModelProperty(value = "地址名称, ''分割")
private String salesConsigneeAddressPath;
@ApiModelProperty(value = "详细地址")
private String salesConsigneeDetail;
@ApiModelProperty(value = "店铺状态")
private String storeDisable;

View File

@@ -24,7 +24,7 @@ public interface StoreDetailMapper extends BaseMapper<StoreDetail> {
"d.* from li_store s inner join li_store_detail d on s.id=d.store_id where s.id=#{storeId}")
StoreDetailVO getStoreDetail(String storeId);
@Select("select s.member_name,s.store_name,s.store_disable,s.self_operated,s.store_center,s.store_logo,s.store_desc,d.* " +
@Select("select s.member_name,s.store_name,s.store_disable,s.self_operated,s.store_center,s.store_logo,s.store_desc,s.store_address_detail,s.store_address_path,s.store_address_id_path,d.* " +
"from li_store s inner join li_store_detail d on s.id=d.store_id where s.member_id=#{memberId}")
StoreDetailVO getStoreDetailByMemberId(String memberId);

View File

@@ -177,7 +177,10 @@ public class StoreServiceImpl extends ServiceImpl<StoreMapper, Store> implements
member.setHaveStore(true);
member.setStoreId(id);
memberService.updateById(member);
//设定商家的结算日
storeDetailService.update(new LambdaUpdateWrapper<StoreDetail>()
.eq(StoreDetail::getStoreId, id)
.set(StoreDetail::getSettlementDay, new DateTime()));
} else {
store.setStoreDisable(StoreStatusEnum.REFUSED.value());
}
@@ -217,11 +220,17 @@ public class StoreServiceImpl extends ServiceImpl<StoreMapper, Store> implements
if (!Optional.ofNullable(store).isPresent()) {
Member member = memberService.getById(UserContext.getCurrentUser().getId());
store = new Store(member);
BeanUtil.copyProperties(storeCompanyDTO, store);
this.save(store);
StoreDetail storeDetail = new StoreDetail();
storeDetail.setStoreId(store.getId());
BeanUtil.copyProperties(storeCompanyDTO, storeDetail);
return storeDetailService.save(storeDetail);
} else {
store.setStoreAddressDetail(storeCompanyDTO.getStoreAddressDetail());
store.setStoreAddressIdPath(storeCompanyDTO.getStoreAddressIdPath());
store.setStoreAddressPath(storeCompanyDTO.getStoreAddressPath());
this.saveOrUpdate(store);
}
//判断是否存在店铺详情,如果没有则进行新建,如果存在则进行修改
StoreDetail storeDetail = storeDetailService.getStoreDetail(store.getId());