Commit dc5b09db authored by hezhen's avatar hezhen

Merge branch 'base-modify' of http://113.105.137.151:22280/youjj/cloud-platform into base-modify

# Conflicts:
#	xx-activity/xx-activity-api/src/main/java/com/xxfc/platform/activity/feign/ActivityFeign.java
parents 62ac4dbb 2e070a13
...@@ -10,6 +10,7 @@ import tk.mybatis.mapper.common.Mapper; ...@@ -10,6 +10,7 @@ import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import java.lang.reflect.ParameterizedType; import java.lang.reflect.ParameterizedType;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -116,4 +117,5 @@ public abstract class BaseBiz<M extends Mapper<T>, T> { ...@@ -116,4 +117,5 @@ public abstract class BaseBiz<M extends Mapper<T>, T> {
List<T> list = mapper.selectByExample(example); List<T> list = mapper.selectByExample(example);
return new TableResultResponse<T>(result.getTotal(), list); return new TableResultResponse<T>(result.getTotal(), list);
} }
} }
...@@ -117,6 +117,11 @@ public interface UserFeign { ...@@ -117,6 +117,11 @@ public interface UserFeign {
@GetMapping("/api/app/imi/{imiId}") @GetMapping("/api/app/imi/{imiId}")
public ImiVo findUserInfoByImiId(@PathVariable(value = "imiId") Integer imiId); ImiVo findUserInfoByImiId(@PathVariable(value = "imiId") Integer imiId);
@GetMapping("/app/user/findusersByIds")
Map<Integer,AppUserLogin> findAppUsersByUserIds(@RequestParam(value = "userIds") List<Integer> userIds);
@GetMapping("/app/user/finduserIdsByphones")
Map<String, Integer> findAppusersByUserNames(@RequestParam(value = "phones") List<String> phones);
} }
...@@ -14,6 +14,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -14,6 +14,7 @@ import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import java.time.Instant; import java.time.Instant;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -110,9 +111,16 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail ...@@ -110,9 +111,16 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail
criteria.andIn("userid", memberIds); criteria.andIn("userid", memberIds);
List<AppUserDetail> appUserDetails = mapper.selectByExample(example); List<AppUserDetail> appUserDetails = mapper.selectByExample(example);
if (CollectionUtils.isNotEmpty(appUserDetails)){ if (CollectionUtils.isNotEmpty(appUserDetails)) {
userIdAndAppUserDetailMap = appUserDetails.stream().collect(Collectors.toMap(AppUserDetail::getUserid, Function.identity())); userIdAndAppUserDetailMap = appUserDetails.stream().collect(Collectors.toMap(AppUserDetail::getUserid, Function.identity()));
} }
return userIdAndAppUserDetailMap; return userIdAndAppUserDetailMap;
} }
public void deleteByUserIds(Collection<Integer> userIds) {
Example example = new Example(AppUserDetail.class);
Example.Criteria criteria = example.createCriteria();
criteria.andIn("userid", userIds);
mapper.deleteByExample(example);
}
} }
...@@ -198,4 +198,11 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> { ...@@ -198,4 +198,11 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
public void available(AppUserLogin appUserLogin) { public void available(AppUserLogin appUserLogin) {
mapper.updateByPrimaryKeySelective(appUserLogin); mapper.updateByPrimaryKeySelective(appUserLogin);
} }
public void deleteByPhones(List<String> phons) {
Example example = new Example(AppUserLogin.class);
Example.Criteria criteria = example.createCriteria();
criteria.andIn("username",phons);
mapper.deleteByExample(example);
}
} }
...@@ -241,4 +241,11 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel ...@@ -241,4 +241,11 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel
memberSateAndCountMap.put(1,activityCount); memberSateAndCountMap.put(1,activityCount);
return memberSateAndCountMap; return memberSateAndCountMap;
} }
public void deleteByMemberIds(Collection<Integer> userIds) {
Example example = new Example(AppUserRelation.class);
Example.Criteria criteria = example.createCriteria();
criteria.andIn("userId",userIds);
mapper.deleteByExample(example);
}
} }
\ No newline at end of file
...@@ -344,4 +344,11 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A ...@@ -344,4 +344,11 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A
public BigDecimal selectTotalIncomeByUserId(Integer userId) { public BigDecimal selectTotalIncomeByUserId(Integer userId) {
return mapper.selectTotalIncomeByUserId(userId); return mapper.selectTotalIncomeByUserId(userId);
} }
public void deleteByMemberIds(Collection<Integer> userIds) {
Example example = new Example(AppUserSellingWater.class);
Example.Criteria criteria = example.createCriteria();
criteria.andIn("sourceId",userIds);
mapper.deleteByExample(example);
}
} }
\ No newline at end of file
...@@ -18,6 +18,8 @@ import lombok.extern.slf4j.Slf4j; ...@@ -18,6 +18,8 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.BeanUtils;
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.ws.rs.GET;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -170,6 +172,13 @@ public class AppUserController extends CommonBaseController { ...@@ -170,6 +172,13 @@ public class AppUserController extends CommonBaseController {
return appUserLoginBiz.getUserByUsername(username); return appUserLoginBiz.getUserByUsername(username);
} }
@GetMapping("/findusersByIds")
public Map<Integer,AppUserLogin> findAppUsersByUserIds(@RequestParam(value = "userIds") List<Integer> userIds){
return appUserLoginBiz.findUserIdAndUserLoginMapByMemberIds(userIds);
}
@GetMapping("/finduserIdsByphones")
Map<String, Integer> findAppusersByUserNames(@RequestParam(value = "phones") List<String> phones){
return appUserLoginBiz.findPhoneAndUserIdMapByPhones(phones);
}
} }
package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.biz.AppUserDetailBiz;
import com.github.wxiaoqi.security.admin.biz.AppUserLoginBiz;
import com.github.wxiaoqi.security.admin.biz.AppUserRelationBiz;
import com.github.wxiaoqi.security.admin.biz.AppUserSellingWaterBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.activity.feign.ActivityFeign;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/24 15:11
*/
@RestController
@RequestMapping("/app/unauth/user_data")
public class DataController {
@Autowired
private AppUserLoginBiz appUserLoginBiz;
@Autowired
private AppUserDetailBiz appUserDetailBiz;
@Autowired
private AppUserRelationBiz appUserRelationBiz;
@Autowired
private AppUserSellingWaterBiz appUserSellingWaterBiz;
@Autowired
private ActivityFeign activityFeign;
@GetMapping("/clearByPhone")
public ObjectRestResponse<Void> clearData(@RequestParam("phones") List<String> phons) {
Map<String, Integer> phoneAndUserIdMapByPhones = appUserLoginBiz.findPhoneAndUserIdMapByPhones(phons);
Collection<Integer> userIds = phoneAndUserIdMapByPhones.values();
appUserLoginBiz.deleteByPhones(phons);
appUserDetailBiz.deleteByUserIds(userIds);
appUserRelationBiz.deleteByMemberIds(userIds);
appUserSellingWaterBiz.deleteByMemberIds(userIds);
activityFeign.clearDate(new ArrayList<>(userIds));
return ObjectRestResponse.succ();
}
}
\ No newline at end of file
package com.xxfc.platform.activity.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/23 15:00
*/
@Data
public class CouponDTO {
@ApiModelProperty("主键id")
private Integer id;
@ApiModelProperty(value = "优惠券标题(有图片则显示图片):无门槛50元优惠券 | 单品最高减2000元")
private String title;
@ApiModelProperty(value = "副标题")
private String subtitle;
@ApiModelProperty(value = "图片")
private String icon;
@ApiModelProperty(value = "可用于:10店铺优惠券 11新人店铺券 20商品优惠券 30类目优惠券 60平台优惠券 61新人平台券")
private Integer used;
@ApiModelProperty(value = "0-全平台;1-租车;2-旅游;3-营地")
private Integer channel;
@ApiModelProperty(value = "0-普通用户;1-会员用户")
private Integer userType;
@ApiModelProperty(value = "1满减券 2叠加满减券 3无门槛券(需要限制大小)")
private Integer type;
@ApiModelProperty(value = "1可用于特价商品 2不能 默认不能(商品优惠卷除外)")
private Integer withSpecial;
@ApiModelProperty(value = "店铺或商品流水号")
private String withSn;
@ApiModelProperty(value = "满多少金额")
private BigDecimal withAmount;
@ApiModelProperty(value = "用券抵扣金额")
private BigDecimal usedAmount;
@ApiModelProperty(value = "配额:发券数量")
private Integer quota;
@ApiModelProperty(value = "每人限领次数")
private Integer limitCollar;
@ApiModelProperty(value = "已领取的优惠券数量")
private Integer takeCount;
@ApiModelProperty(value = "已使用的优惠券数量")
private Integer usedCount;
@ApiModelProperty(value = "发放开始时间")
private Long startTime;
@ApiModelProperty(value = "发放结束时间")
private Long endTime;
@ApiModelProperty(value = "时效:1绝对时效(领取后XXX-XXX时间段有效) 2相对时效(领取后N天有效)")
private Integer validType;
@ApiModelProperty(value = "使用开始时间")
private Long validStartTime;
@ApiModelProperty(value = "使用结束时间")
private Long validEndTime;
@ApiModelProperty(value = "自领取之日起有效天数")
private Integer validDays;
@ApiModelProperty(value = "跳转链接")
private String url;
}
...@@ -14,5 +14,9 @@ public class CouponFindDTO extends PageParam { ...@@ -14,5 +14,9 @@ public class CouponFindDTO extends PageParam {
private String title; private String title;
private Integer channel;
private Integer type; private Integer type;
private Integer status;
} }
package com.xxfc.platform.activity.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/23 17:06
*/
@Data
public class UserCouponDTO {
private Integer id;
@ApiModelProperty(value = "用户id")
private Integer userId;
@ApiModelProperty(value = "标题")
private String title;
@ApiModelProperty(value = "抵扣金额")
private BigDecimal usedAmount;
@ApiModelProperty(value = "0-未使用;1-已使用")
private Integer isUse;
@ApiModelProperty(value = "领卷时间", hidden = true )
private Long crtTime;
@ApiModelProperty(value = "到期时间", hidden = true )
private Long expireTime;
@ApiModelProperty(value = "使用时间")
private Long useTime;
}
package com.xxfc.platform.activity.dto;
import com.github.wxiaoqi.security.common.vo.PageParam;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/23 16:26
*/
@Data
public class UserCouponFindDTO extends PageParam {
private String phone;
private Integer couponId;
private BigDecimal usedAmount;
private Integer status;
private Integer userId;
}
package com.xxfc.platform.activity.dto;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/23 18:02
*/
@Data
public class UserCouponSendDTO {
private String phone;
private Integer couponId;
private Integer couponNum;
}
...@@ -50,9 +50,12 @@ public interface ActivityFeign { ...@@ -50,9 +50,12 @@ public interface ActivityFeign {
@ApiOperation("新人有礼参加活动") @ApiOperation("新人有礼参加活动")
@RequestMapping(value = "/join/user", method = RequestMethod.POST) @RequestMapping(value = "/join/user", method = RequestMethod.POST)
public ObjectRestResponse join(@RequestParam(value = "userId",defaultValue ="0" ) Integer userId); public ObjectRestResponse join(@RequestParam(value = "userId",defaultValue ="0" ) Integer userId);
@ApiModelProperty("获取用户积分") @ApiModelProperty("获取用户积分")
@GetMapping(value = "/user") @GetMapping(value = "/user")
public IntegralUserTotal user(@RequestParam("userId") Integer userId); public IntegralUserTotal user(@RequestParam("userId") Integer userId);
@GetMapping("/activity_data/clear")
ObjectRestResponse<Void> clearDate(@RequestParam(value = "userIds") List<Integer> userIds);
} }
package com.xxfc.platform.activity.vo; package com.xxfc.platform.activity.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
/** /**
* @author libin * @author libin
* @version 1.0 * @version 1.0
...@@ -11,4 +14,44 @@ import lombok.Data; ...@@ -11,4 +14,44 @@ import lombok.Data;
@Data @Data
public class CouponPagVo { public class CouponPagVo {
@ApiModelProperty("主键id")
private Integer id;
@ApiModelProperty(value = "优惠券标题(有图片则显示图片):无门槛50元优惠券 | 单品最高减2000元")
private String title;
@ApiModelProperty(value = "图片")
private String icon;
@ApiModelProperty(value = "0-全平台;1-租车;2-旅游;3-营地")
private Integer channel;
@ApiModelProperty(value = "1满减券 2叠加满减券 3无门槛券(需要限制大小)")
private Integer type;
@ApiModelProperty(value = "用券抵扣金额")
private BigDecimal usedAmount;
@ApiModelProperty(value = "配额:发券数量")
private Integer quota;
@ApiModelProperty(value = "已领取的优惠券数量")
private Integer takeCount;
@ApiModelProperty(value = "已使用的优惠券数量")
private Integer usedCount;
@ApiModelProperty(value = "1生效 2失效 3已结束")
private Integer status;
@ApiModelProperty(value = "创建时间", hidden = true)
private Long crtTime;
} }
package com.xxfc.platform.activity.vo;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/23 18:11
*/
@Data
public class CouponTitleVo {
private Integer id;
private String title;
}
package com.xxfc.platform.activity.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/23 15:00
*/
@Data
public class CouponVo {
@ApiModelProperty("主键id")
private Integer id;
@ApiModelProperty(value = "优惠券标题(有图片则显示图片):无门槛50元优惠券 | 单品最高减2000元")
private String title;
@ApiModelProperty(value = "副标题")
private String subtitle;
@ApiModelProperty(value = "图片")
private String icon;
@ApiModelProperty(value = "可用于:10店铺优惠券 11新人店铺券 20商品优惠券 30类目优惠券 60平台优惠券 61新人平台券")
private Integer used;
@ApiModelProperty(value = "0-全平台;1-租车;2-旅游;3-营地")
private Integer channel;
@ApiModelProperty(value = "0-普通用户;1-会员用户")
private Integer userType;
@ApiModelProperty(value = "1满减券 2叠加满减券 3无门槛券(需要限制大小)")
private Integer type;
@ApiModelProperty(value = "1可用于特价商品 2不能 默认不能(商品优惠卷除外)")
private Integer withSpecial;
@ApiModelProperty(value = "店铺或商品流水号")
private String withSn;
@ApiModelProperty(value = "满多少金额")
private BigDecimal withAmount;
@ApiModelProperty(value = "用券抵扣金额")
private BigDecimal usedAmount;
@ApiModelProperty(value = "配额:发券数量")
private Integer quota;
@ApiModelProperty(value = "每人限领次数")
private Integer limitCollar;
@ApiModelProperty(value = "已领取的优惠券数量")
private Integer takeCount;
@ApiModelProperty(value = "已使用的优惠券数量")
private Integer usedCount;
@ApiModelProperty(value = "发放开始时间")
private Long startTime;
@ApiModelProperty(value = "发放结束时间")
private Long endTime;
@ApiModelProperty(value = "时效:1绝对时效(领取后XXX-XXX时间段有效) 2相对时效(领取后N天有效)")
private Integer validType;
@ApiModelProperty(value = "使用开始时间")
private Long validStartTime;
@ApiModelProperty(value = "使用结束时间")
private Long validEndTime;
@ApiModelProperty(value = "自领取之日起有效天数")
private Integer validDays;
@ApiModelProperty(value = "跳转链接")
private String url;
}
package com.xxfc.platform.activity.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/23 16:29
*/
@Data
public class UserCouponPageVo {
private Integer id;
@ApiModelProperty(value = "手机号")
private String phone;
@ApiModelProperty(value = "标题")
private String title;
@ApiModelProperty(value = "抵扣金额")
private BigDecimal usedAmount;
@ApiModelProperty(value = "0-未使用;1-已使用")
private Integer isUse;
@ApiModelProperty(value = "领卷时间", hidden = true )
private Long crtTime;
@ApiModelProperty(value = "到期时间", hidden = true )
private Long expireTime;
@ApiModelProperty(value = "使用时间")
private Long useTime;
}
...@@ -20,7 +20,8 @@ import tk.mybatis.spring.annotation.MapperScan; ...@@ -20,7 +20,8 @@ import tk.mybatis.spring.annotation.MapperScan;
@SpringBootApplication(scanBasePackages = { @SpringBootApplication(scanBasePackages = {
"com.xxfc.platform", "com.xxfc.platform",
"com.github.wxiaoqi.security.common.handler", "com.github.wxiaoqi.security.common.handler",
"com.github.wxiaoqi.security.common.log" "com.github.wxiaoqi.security.common.log",
"com.github.wxiaoqi.security.admin.support.aop"
}) })
@EnableDiscoveryClient @EnableDiscoveryClient
@EnableScheduling @EnableScheduling
......
...@@ -7,6 +7,9 @@ import org.springframework.stereotype.Service; ...@@ -7,6 +7,9 @@ import org.springframework.stereotype.Service;
import com.xxfc.platform.activity.entity.ActivityPopularizeUser; import com.xxfc.platform.activity.entity.ActivityPopularizeUser;
import com.xxfc.platform.activity.mapper.ActivityPopularizeUserMapper; import com.xxfc.platform.activity.mapper.ActivityPopularizeUserMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import tk.mybatis.mapper.entity.Example;
import java.util.List;
/** /**
* 用户与推广活动(邀请有礼)的关系表 * 用户与推广活动(邀请有礼)的关系表
...@@ -24,4 +27,11 @@ public class ActivityPopularizeUserBiz extends BaseBiz<ActivityPopularizeUserMap ...@@ -24,4 +27,11 @@ public class ActivityPopularizeUserBiz extends BaseBiz<ActivityPopularizeUserMap
throw new BaseException(ResultCode.DB_OPERATION_FAIL_CODE); throw new BaseException(ResultCode.DB_OPERATION_FAIL_CODE);
} }
} }
public void deleteByUserIds(List<Integer> userIds) {
Example example = new Example(ActivityPopularizeUser.class);
Example.Criteria criteria = example.createCriteria();
criteria.andIn("userId",userIds);
mapper.deleteByExample(example);
}
} }
\ No newline at end of file
package com.xxfc.platform.activity.biz; package com.xxfc.platform.activity.biz;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.activity.constant.CouponUsed; import com.xxfc.platform.activity.constant.CouponUsed;
import com.xxfc.platform.activity.dto.CouponDTO;
import com.xxfc.platform.activity.dto.CouponFindDTO;
import com.xxfc.platform.activity.entity.Coupon; import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.activity.vo.CouponPagVo;
import com.xxfc.platform.activity.vo.CouponTitleVo;
import com.xxfc.platform.activity.vo.CouponVo;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.xxfc.platform.activity.mapper.CouponMapper; import com.xxfc.platform.activity.mapper.CouponMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* 优惠券表 * 优惠券表
...@@ -31,4 +44,82 @@ public class CouponBiz extends BaseBiz<CouponMapper, Coupon> { ...@@ -31,4 +44,82 @@ public class CouponBiz extends BaseBiz<CouponMapper, Coupon> {
} }
return null; return null;
} }
public PageDataVO<CouponPagVo> listCouponWithPage(CouponFindDTO couponFindDTO) {
PageDataVO<CouponPagVo> couponPagVo = new PageDataVO<>();
Example example = new Example(Coupon.class);
Example.Criteria criteria = example.createCriteria();
if (!StringUtils.isEmpty(couponFindDTO.getTitle())){
criteria.andLike("title",String.format("%%%s%%",couponFindDTO.getTitle()));
}
if (Objects.nonNull(couponFindDTO.getChannel())){
criteria.andEqualTo("channel",couponFindDTO.getChannel());
}
if (Objects.nonNull(couponFindDTO.getType())){
criteria.andEqualTo("type",couponFindDTO.getType());
}
if (Objects.nonNull(couponFindDTO.getStatus())){
criteria.andEqualTo("status",couponFindDTO.getStatus());
}
criteria.andEqualTo("isDel",0);
example.setOrderByClause("crt_time DESC");
PageDataVO<Coupon> couponPage = PageDataVO.pageInfo(couponFindDTO.getPage(), couponFindDTO.getLimit(), () -> mapper.selectByExample(example));
List<Coupon> data = couponPage.getData();
if (CollectionUtils.isEmpty(data)){
return couponPagVo;
}
List<CouponPagVo> couponPagVos = new ArrayList<>();
CouponPagVo coupon ;
for (Coupon coup : data) {
coupon = new CouponPagVo();
BeanUtils.copyProperties(coup,coupon);
couponPagVos.add(coupon);
}
couponPagVo.setPageNum(couponPage.getPageNum());
couponPagVo.setPageSize(couponPage.getTotalPage());
couponPagVo.setTotalPage(couponPage.getTotalPage());
couponPagVo.setTotalCount(couponPage.getTotalCount());
couponPagVo.setData(couponPagVos);
return couponPagVo;
}
public CouponVo findCouponById(Integer id) {
CouponVo couponVo= new CouponVo();
Coupon coupon = mapper.selectByPrimaryKey(id);
BeanUtils.copyProperties(coupon,couponVo);
return couponVo;
}
public int addCoupon(CouponDTO couponDTO, UserDTO userDTO) {
Coupon coupon = new Coupon();
BeanUtils.copyProperties(couponDTO,coupon);
if (Objects.nonNull(couponDTO.getId())){
coupon.setUpdTime(Instant.now().toEpochMilli());
coupon.setUpdUser(userDTO.getId());
coupon.setUpdName(userDTO.getUsername());
return mapper.updateByPrimaryKeySelective(coupon);
}else {
coupon.setCrtTime(Instant.now().toEpochMilli());
coupon.setCrtUser(userDTO.getId());
coupon.setCrtName(userDTO.getUsername());
return mapper.insertSelective(coupon);
}
}
public int updateCouponDelStateById(Integer id,UserDTO userDTO) {
Coupon coupon = new Coupon();
coupon.setId(id);
coupon.setUpdName(userDTO.getUsername());
coupon.setUpdUser(userDTO.getId());
coupon.setUpdTime(Instant.now().toEpochMilli());
coupon.setIsDel(1);
return mapper.updateByPrimaryKeySelective(coupon);
}
public List<CouponTitleVo> getCouponTitleList() {
return mapper.selectTitles();
}
} }
\ No newline at end of file
package com.xxfc.platform.activity.biz; package com.xxfc.platform.activity.biz;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.admin.entity.AppUserLogin;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.util.process.SystemConfig; import com.github.wxiaoqi.security.common.util.process.SystemConfig;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.activity.constant.CouponUsed; import com.xxfc.platform.activity.constant.CouponUsed;
import com.xxfc.platform.activity.dto.UserCouponDTO;
import com.xxfc.platform.activity.dto.UserCouponFindDTO;
import com.xxfc.platform.activity.dto.UserCouponSendDTO;
import com.xxfc.platform.activity.entity.Coupon; import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.activity.entity.UserCoupon; import com.xxfc.platform.activity.entity.UserCoupon;
import com.xxfc.platform.activity.vo.CouponVo;
import com.xxfc.platform.activity.vo.UserCouponPageVo;
import com.xxfc.platform.activity.vo.UserCouponVo; import com.xxfc.platform.activity.vo.UserCouponVo;
import com.xxfc.platform.universal.weixin.util.Snowflake; import com.xxfc.platform.universal.weixin.util.Snowflake;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.assertj.core.util.Arrays; import org.assertj.core.util.Arrays;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.xxfc.platform.activity.mapper.UserCouponMapper; import com.xxfc.platform.activity.mapper.UserCouponMapper;
...@@ -19,9 +29,9 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz; ...@@ -19,9 +29,9 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.time.Instant;
import java.util.Comparator; import java.util.*;
import java.util.List; import java.util.stream.Collectors;
/** /**
* 我的优惠卷 * 我的优惠卷
...@@ -38,6 +48,9 @@ public class UserCouponBiz extends BaseBiz<UserCouponMapper, UserCoupon> { ...@@ -38,6 +48,9 @@ public class UserCouponBiz extends BaseBiz<UserCouponMapper, UserCoupon> {
@Autowired @Autowired
private CouponBiz couponBiz; private CouponBiz couponBiz;
@Autowired
private UserFeign userFeign;
private static final Long DAY=86400000L; private static final Long DAY=86400000L;
//自动发送优惠卷 //自动发送优惠卷
...@@ -235,6 +248,80 @@ public class UserCouponBiz extends BaseBiz<UserCouponMapper, UserCoupon> { ...@@ -235,6 +248,80 @@ public class UserCouponBiz extends BaseBiz<UserCouponMapper, UserCoupon> {
} }
public PageDataVO<UserCouponPageVo> listUserCouponWithPage(UserCouponFindDTO userCouponFindDTO) {
PageDataVO<UserCouponPageVo> userCouponPag = new PageDataVO<>();
if (StringUtils.isNotEmpty(userCouponFindDTO.getPhone())) {
AppUserLogin appUserLogin = userFeign.one(userCouponFindDTO.getPhone());
userCouponFindDTO.setUserId(appUserLogin.getId());
}
PageDataVO<UserCouponDTO> pageDataVO = PageDataVO.pageInfo(userCouponFindDTO.getPage(), userCouponFindDTO.getLimit(), () -> mapper.findUserCoupons(userCouponFindDTO));
List<UserCouponDTO> data = pageDataVO.getData();
if (CollectionUtils.isEmpty(data)) {
return userCouponPag;
}
Map<Integer, AppUserLogin> userIdAndAppuserLoginMap = null;
if (Objects.nonNull(userCouponFindDTO.getPhone())) {
List<Integer> userIds = data.stream().map(UserCouponDTO::getUserId).collect(Collectors.toList());
userIdAndAppuserLoginMap = userFeign.findAppUsersByUserIds(userIds);
}
List<UserCouponPageVo> userCouponPageVos = new ArrayList<>();
UserCouponPageVo userCouponPageVo;
for (UserCouponDTO userCouponDTO : data) {
userCouponPageVo = new UserCouponPageVo();
BeanUtils.copyProperties(userCouponDTO, userCouponPageVo);
if (Objects.nonNull(userCouponFindDTO.getPhone())) {
userCouponPageVo.setPhone(userCouponFindDTO.getPhone());
} else {
userCouponPageVo.setPhone(userIdAndAppuserLoginMap == null ? "" : userIdAndAppuserLoginMap.get(userCouponDTO.getUserId()) == null ? "" : userIdAndAppuserLoginMap.get(userCouponDTO.getUserId()).getUsername());
}
userCouponPageVos.add(userCouponPageVo);
}
userCouponPag.setPageSize(pageDataVO.getPageSize());
userCouponPag.setPageNum(pageDataVO.getPageNum());
userCouponPag.setTotalCount(pageDataVO.getTotalCount());
userCouponPag.setTotalPage(pageDataVO.getTotalPage());
userCouponPag.setData(userCouponPageVos);
return userCouponPag;
}
public int sendCoupon(UserCouponSendDTO userCouponSendDTO) {
AppUserLogin appUserLogin = userFeign.one(userCouponSendDTO.getPhone());
CouponVo couponVo = couponBiz.findCouponById(userCouponSendDTO.getCouponId());
UserCoupon userCoupon;
List<UserCoupon> userCoupons = new ArrayList<>();
for (int i=0;i<userCouponSendDTO.getCouponNum();i++){
userCoupon = new UserCoupon();
userCoupon.setCouponId(userCouponSendDTO.getCouponId());
userCoupon.setUserId(appUserLogin.getId());
userCoupon.setCrtTime(Instant.now().toEpochMilli());
userCoupon.setStartTime(couponVo.getValidStartTime());
userCoupon.setExpireTime(couponVo.getValidEndTime());
userCoupons.add(userCoupon);
}
return mapper.inserBatch(userCoupons);
}
public long importUserCoupon(Integer couponId,List<String[]> userCounponData) {
List<String> phones = userCounponData.stream().map(x -> x[0]).collect(Collectors.toList());
Map<String,Integer> phoneAndAppUserLoginMap = userFeign.findAppusersByUserNames(phones);
CouponVo couponVo = couponBiz.findCouponById(couponId);
UserCoupon userCoupon;
List<UserCoupon> userCoupons = new ArrayList<>();
long length = userCounponData.size();
for (int i=0;i<length;i++){
userCoupon = new UserCoupon();
userCoupon.setCouponId(couponId);
userCoupon.setStartTime(couponVo.getValidStartTime());
userCoupon.setExpireTime(couponVo.getValidEndTime());
userCoupon.setCrtTime(Instant.now().toEpochMilli());
userCoupon.setUserId(phoneAndAppUserLoginMap.get(userCounponData.get(i)[0]));
userCoupons.add(userCoupon);
}
return mapper.inserBatch(userCoupons);
}
} }
\ No newline at end of file
...@@ -49,10 +49,9 @@ public class SwaggerConfig { ...@@ -49,10 +49,9 @@ public class SwaggerConfig {
pars.add(ticketPar2.build()); pars.add(ticketPar2.build());
return new Docket(DocumentationType.SWAGGER_2) return new Docket(DocumentationType.SWAGGER_2)
.host("10.1.37.248:8765/api/activity")
.select() .select()
.apis(RequestHandlerSelectors.basePackage("com.xxfc.platform.activity")) .apis(RequestHandlerSelectors.basePackage("com.xxfc.platform.activity"))
//.apis(RequestHandlerSelectors.any()) .apis(RequestHandlerSelectors.any())
.build() .build()
.globalOperationParameters(pars) .globalOperationParameters(pars)
.apiInfo(apiInfo()); .apiInfo(apiInfo());
......
package com.xxfc.platform.activity.mapper; package com.xxfc.platform.activity.mapper;
import com.xxfc.platform.activity.entity.Coupon; import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.activity.vo.CouponTitleVo;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/** /**
* 优惠券表 * 优惠券表
* *
...@@ -11,5 +14,6 @@ import tk.mybatis.mapper.common.Mapper; ...@@ -11,5 +14,6 @@ import tk.mybatis.mapper.common.Mapper;
* @date 2019-06-21 14:34:49 * @date 2019-06-21 14:34:49
*/ */
public interface CouponMapper extends Mapper<Coupon> { public interface CouponMapper extends Mapper<Coupon> {
List<CouponTitleVo> selectTitles();
} }
package com.xxfc.platform.activity.mapper; package com.xxfc.platform.activity.mapper;
import com.xxfc.platform.activity.dto.UserCouponDTO;
import com.xxfc.platform.activity.dto.UserCouponFindDTO;
import com.xxfc.platform.activity.entity.UserCoupon; import com.xxfc.platform.activity.entity.UserCoupon;
import com.xxfc.platform.activity.vo.UserCouponVo; import com.xxfc.platform.activity.vo.UserCouponVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.additional.insert.InsertListMapper;
import org.apache.ibatis.annotations.Update; import org.apache.ibatis.annotations.Update;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
...@@ -15,7 +18,7 @@ import java.util.List; ...@@ -15,7 +18,7 @@ import java.util.List;
* @email 18178966185@163.com * @email 18178966185@163.com
* @date 2019-06-21 14:34:49 * @date 2019-06-21 14:34:49
*/ */
public interface UserCouponMapper extends Mapper<UserCoupon> { public interface UserCouponMapper extends Mapper<UserCoupon> , InsertListMapper<UserCoupon> {
//我的优惠卷 //我的优惠卷
public List<UserCouponVo> getUserCouponsByType(@Param("userId")Integer userId,@Param("type")int type,@Param("time")Long time,@Param("channel")Integer channel); public List<UserCouponVo> getUserCouponsByType(@Param("userId")Integer userId,@Param("type")int type,@Param("time")Long time,@Param("channel")Integer channel);
...@@ -26,5 +29,9 @@ public interface UserCouponMapper extends Mapper<UserCoupon> { ...@@ -26,5 +29,9 @@ public interface UserCouponMapper extends Mapper<UserCoupon> {
//已使用的优惠券数量数量加减 //已使用的优惠券数量数量加减
@Update("update coupon set used_count=used_count+#{count} where `id`=#{id}") @Update("update coupon set used_count=used_count+#{count} where `id`=#{id}")
int upUsedCount(@Param("id")Integer id,@Param("count")Integer count); int upUsedCount(@Param("id")Integer id,@Param("count")Integer count);
List<UserCouponDTO> findUserCoupons(UserCouponFindDTO userCouponFindDTO);
int inserBatch(@Param("userCoupons") List<UserCoupon> userCoupons);
} }
\ No newline at end of file
package com.xxfc.platform.activity.rest;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.activity.biz.ActivityPopularizeUserBiz;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/24 14:58
*/
@RestController
@RequestMapping("/activity_data")
public class DateController {
@Autowired
private ActivityPopularizeUserBiz activityPopularizeUserBiz;
@GetMapping("/clear")
public ObjectRestResponse<Void> clearDate(@RequestParam(value = "userIds") List<Integer> userIds){
activityPopularizeUserBiz.deleteByUserIds(userIds);
return ObjectRestResponse.succ();
}
}
package com.xxfc.platform.activity.rest.admin; package com.xxfc.platform.activity.rest.admin;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.activity.biz.CouponBiz; import com.xxfc.platform.activity.biz.CouponBiz;
import com.xxfc.platform.activity.dto.CouponDTO;
import com.xxfc.platform.activity.dto.CouponFindDTO; import com.xxfc.platform.activity.dto.CouponFindDTO;
import com.xxfc.platform.activity.vo.CouponPagVo;
import com.xxfc.platform.activity.vo.CouponTitleVo;
import com.xxfc.platform.activity.vo.CouponVo;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.List;
/** /**
* @author libin * @author libin
...@@ -18,13 +25,47 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -18,13 +25,47 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/admin/coupon") @RequestMapping("/admin/coupon")
public class CouponAdminController { public class CouponAdminController {
@Autowired @Autowired
private CouponBiz couponBiz; private CouponBiz couponBiz;
@ApiOperation("优惠券列表")
@GetMapping("/page") @GetMapping("/page")
public ObjectRestResponse listCouponWithPage(CouponFindDTO couponFindDTO){ public ObjectRestResponse<PageDataVO<CouponPagVo>> listCouponWithPage(CouponFindDTO couponFindDTO) {
PageDataVO<CouponPagVo> couponPage = couponBiz.listCouponWithPage(couponFindDTO);
return ObjectRestResponse.succ(couponPage);
}
@ApiOperation("查询优惠券详情")
@GetMapping("/{id}")
public ObjectRestResponse<CouponVo> findCouponById(@PathVariable(value = "id") Integer id){
CouponVo couponVo = couponBiz.findCouponById(id);
return ObjectRestResponse.succ(couponVo);
}
@ApiOperation("获取优惠劵标题列表")
@GetMapping("/titles")
public ObjectRestResponse<List<CouponTitleVo>> getCouponTitleList(){
List<CouponTitleVo> titles = couponBiz.getCouponTitleList();
return ObjectRestResponse.succ(titles);
}
@ApiOperation("优惠劵新增 或 编辑")
@PostMapping
public ObjectRestResponse<Void> addCoupon(@RequestBody CouponDTO couponDTO, UserDTO userDTO){
couponBiz.addCoupon(couponDTO,userDTO);
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
@ApiOperation("优惠劵逻辑删除")
@DeleteMapping("/{id}")
public ObjectRestResponse<Void> deleteCouponById(@PathVariable(value = "id") Integer id,UserDTO userDTO){
couponBiz.updateCouponDelStateById(id,userDTO);
return ObjectRestResponse.succ();
}
@ApiOperation("检查优惠劵是否已经在使用阶段")
@GetMapping("check/{id}")
public Boolean checkCouponHasUsedById(@PathVariable(value = "id") Integer id){
return false;
}
} }
package com.xxfc.platform.activity.rest.admin;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.excel.ExcelImport;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.activity.ActivityApplication;
import com.xxfc.platform.activity.biz.UserCouponBiz;
import com.xxfc.platform.activity.dto.UserCouponFindDTO;
import com.xxfc.platform.activity.dto.UserCouponSendDTO;
import com.xxfc.platform.activity.vo.UserCouponPageVo;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/23 16:22
*/
@RestController
@RequestMapping("/admin/user_coupon")
public class UserCouponAdminController {
@Autowired
private UserCouponBiz userCouponBiz;
@ApiOperation("领劵列表")
@GetMapping("/page")
public ObjectRestResponse<PageDataVO<UserCouponPageVo>> listUserCouponWithPage(UserCouponFindDTO userCouponFindDTO) {
PageDataVO<UserCouponPageVo> userCouponPage = userCouponBiz.listUserCouponWithPage(userCouponFindDTO);
return ObjectRestResponse.succ(userCouponPage);
}
@PostMapping("/sendcoupon")
public ObjectRestResponse<Void> sendCoupon(UserCouponSendDTO userCouponSendDTO){
userCouponBiz.sendCoupon(userCouponSendDTO);
return ObjectRestResponse.succ();
}
@PostMapping("/import")
public ObjectRestResponse<Void> importCouponBatch(@RequestParam("couponId") Integer couponId,@RequestPart(name = "file")MultipartFile couponExcel){
List<String[]> userCounponData = ExcelImport.getExcelData(couponExcel);
if (userCounponData.size() < 1) {
return ObjectRestResponse.createFailedResult(1001, "导入不能没数据!!!");
}
userCounponData.remove(0);
userCouponBiz.importUserCoupon(couponId,userCounponData);
return ObjectRestResponse.succ();
}
@ApiOperation("用户劵excel模板下载")
@GetMapping("/excel_model/dowload")
public ResponseEntity<byte[]> dowloadUserMemberExcelModel(HttpServletResponse response) {
// 重置response
response.reset();
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
response.addHeader("Content-Disposition", "attachment;filename=usercoupon.xlsx");
InputStream inputStream = ActivityApplication.class.getClassLoader().getResourceAsStream("file/usercoupon.xlsx");
try {
byte[] bytes = IOUtils.toByteArray(inputStream);
return ResponseEntity.ok(bytes);
} catch (IOException e) {
e.printStackTrace();
}
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
}
}
...@@ -37,4 +37,7 @@ ...@@ -37,4 +37,7 @@
<result property="isDel" column="is_del"/> <result property="isDel" column="is_del"/>
</resultMap> </resultMap>
<select id="selectTitles" resultType="com.xxfc.platform.activity.vo.CouponTitleVo">
select `id`,`title` from `coupon` where `is_del`=0
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<mapper namespace="com.xxfc.platform.activity.mapper.UserCouponMapper"> <mapper namespace="com.xxfc.platform.activity.mapper.UserCouponMapper">
<!-- 可根据自己的需求,是否要使用 --> <!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.xxfc.platform.activity.vo.UserCouponVo" id="userCouponMap"> <resultMap type="com.xxfc.platform.activity.vo.UserCouponVo" id="userCouponMap">
<result property="couponId" column="coupon_id"/> <result property="couponId" column="coupon_id"/>
<result property="userId" column="user_id"/> <result property="userId" column="user_id"/>
...@@ -31,21 +31,21 @@ ...@@ -31,21 +31,21 @@
<select id="getUserCouponsByType" resultMap="userCouponMap"> <select id="getUserCouponsByType" resultMap="userCouponMap">
SELECT SELECT
* *
FROM FROM
user_coupon u user_coupon u
LEFT JOIN coupon c ON u.coupon_id = c.id LEFT JOIN coupon c ON u.coupon_id = c.id
WHERE WHERE
u.is_del = 0 and u.user_id=#{userId} u.is_del = 0 and u.user_id=#{userId}
<if test="type==0"> <if test="type==0">
and u.is_use=0 and u.expire_time >=#{time} and u.is_use=0 and u.expire_time >=#{time}
</if> </if>
<if test="type==1"> <if test="type==1">
and u.is_use=1 and u.is_use=1
</if> </if>
<if test="type==2"> <if test="type==2">
and u.is_use=0 and u.expire_time &lt;#{time} and u.is_use=0 and u.expire_time &lt;#{time}
</if> </if>
<if test="channel!=null and channel!=''"> <if test="channel!=null and channel!=''">
and (c.channel=#{channel} or c.channel=0 ) and (c.channel=#{channel} or c.channel=0 )
...@@ -72,4 +72,41 @@ ...@@ -72,4 +72,41 @@
u.is_del = 0 and u.ticker_no=#{tickerNo} limit 1 u.is_del = 0 and u.ticker_no=#{tickerNo} limit 1
</select> </select>
<select id="findUserCoupons" resultType="com.xxfc.platform.activity.dto.UserCouponDTO"
parameterType="com.xxfc.platform.activity.dto.UserCouponFindDTO">
SELECT
uc.id,
uc.user_id AS `userId`,
uc.is_use AS `isUse`,
cp.title,
cp.used_amount AS `usedAmount`,
uc.crt_time AS `crtTime`,
uc.expire_time AS `expireTime`,
uc.use_time AS `useTime`
FROM
( SELECT `id`, `coupon_id`, `user_id`, `is_use`, `crt_time`, `expire_time`, `use_time` FROM `user_coupon` WHERE
`is_del` = 0
<if test="userId != null">
AND `user_id`=#{userId}
</if>
<if test="status != null">
AND `is_use`=#{status}
</if>) AS `uc`
INNER JOIN ( SELECT `id`, `title`, `used_amount` FROM `coupon` WHERE 1=1
<if test="couponId != null">
AND `id`=#{couponId}
</if>
<if test="usedAmount != null">
AND `used_amount`=#{usedAmount}
</if>
) AS `cp` ON uc.coupon_id = cp.id order by `crtTime` DESC
</select>
<insert id="inserBatch">
INSERT INTO `user_coupon`(`user_id`,`coupon_id`,`start_time`,`expire_time`,`crt_time`) VALUES
<foreach collection="userCoupons" item="userCoupon" separator=",">
(#{userCoupon.userId},#{userCoupon.couponId},#{userCoupon.startTime},#{userCoupon.expireTime},#{userCoupon.crtTime} )
</foreach>
</insert>
</mapper> </mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment