diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPasswordController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPasswordController.java index c2755fb01..2aaa55fed 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPasswordController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPasswordController.java @@ -2,14 +2,19 @@ package com.iformall.controller.market; import com.github.pagehelper.PageInfo; import com.iformall.annotation.SystemControllerLog; +import com.iformall.annotation.TenantIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.base.BaseEntity; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponPassword; import com.iformall.domain.vo.WxCouponPasswordCountInfoVO; import com.iformall.domain.vo.WxCouponPasswordVo; import com.iformall.enums.EnumCouponPasswordStatus; +import com.iformall.enums.EnumCouponSubsidyType; +import com.iformall.enums.EnumYesOrNo; import com.iformall.service.WxCouponPasswordService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -112,6 +117,25 @@ public class WxCouponPasswordController extends BaseController { } return new ResultData(); } + + @TenantIgnore + @ApiOperation("后置设置金额") + @PostMapping("setPrice") + public ResultData setPrice(@RequestBody WxCouponPassword wxCouponPassword) { + wxCouponPassword.updateTenantInfo(getTenantInfo()); + WxCouponPassword couponPassword = wxCouponPasswordService.getById(wxCouponPassword.getId()); + if (null == couponPassword ) { + return new ResultData(ResultData.ERROR, "卡密未查询到。"+wxCouponPassword.getId()); + } + if (couponPassword.getIsStop().intValue() == EnumYesOrNo.YES.getCode().intValue() ) { + return new ResultData(ResultData.ERROR, "已停用,不能设置。"); + } + if (couponPassword.getPrice() > 0 ) { + return new ResultData(ResultData.ERROR, "已设置面额,不能再次设置面额。"); + } + wxCouponPasswordService.setPrice(wxCouponPassword); + return new ResultData(); + } } diff --git a/mallinkAdmin/src/main/resources/db/migration/V2023030300001__card.sql b/mallinkAdmin/src/main/resources/db/migration/V2023030300001__card.sql new file mode 100644 index 000000000..81642c761 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V2023030300001__card.sql @@ -0,0 +1,10 @@ +alter table wx_coupon_password add column price int(11) not null default 0 comment '面额'; + +update wx_coupon_password cp inner join wx_coupon_89 c on cp.coupon_id = c.id set cp.price = c.price where cp.price = 0 and c.price > 0 ; + + + + + + + diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCardInfoController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCardInfoController.java index 2d3232693..f568e1065 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCardInfoController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCardInfoController.java @@ -87,16 +87,9 @@ public class WxCardInfoController extends BaseController { map.put("cardType", cardInfo.getType()); }else { //第一次刷卡的时候没有cardInfo - WxCoupon cq = new WxCoupon(); - cq.updateTenantInfo(password); - cq.setId(password.getCouponId()); - WxCoupon coupon = wxCouponService.findById(cq); - if (null == coupon) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "卡未查询到券:"+cardIdStr); - } map.put("cardId", couponPasswordId); - map.put("amount", coupon.getPrice()); - map.put("remainAmount", coupon.getPrice()); + map.put("amount", password.getPrice()); + map.put("remainAmount", password.getPrice()); map.put("cardType", EnumCardInfoType.CARD.getCode()); } } diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java index 667d66164..8df42349b 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java @@ -90,10 +90,6 @@ public class WxCardPayController extends BaseController { WxMerchantBUser user = getLoginBUser(); wxCardSpendVo.updateTenantInfo(user); wxCardSpendVo.setMerchantId(user.getMerchantId()); -// List sources = new ArrayList(); -// sources.add(EnumMerchantSubsidySource.CARD.getCode()); -// wxCardSpendVo.setSources(sources); -// wxCardSpendVo.setCardSpendListShow(1); wxCardSpendVo.setSortColumns(BaseEntity.SortField.CreateDate_DESC); final PageInfo page = wxCardSpendService.listAsPage(wxCardSpendVo, pageNum, pageSize); return new ResultData(page); @@ -108,10 +104,6 @@ public class WxCardPayController extends BaseController { WxMerchantBUser user = getLoginBUser(); wxCardSpend.updateTenantInfo(user); wxCardSpend.setMerchantId(user.getMerchantId()); -// List sources = new ArrayList(); -// sources.add(EnumMerchantSubsidySource.CARD.getCode()); -// wxCardSpend.setSources(sources); -// wxCardSpend.setCardSpendListShow(1); final Map mapList = wxCardSpendService.sumCardSpend(wxCardSpend); return new ResultData(mapList); } @@ -194,6 +186,9 @@ public class WxCardPayController extends BaseController { if (EnumYesOrNo.YES.getCode().intValue() == couponPassword.getIsStop().intValue()) { return new ResultData(ErrorCode.CARD_IS_NOT_FOUND.getCode(),"卡已被禁用."); } + if (couponPassword.getPrice().intValue() <= 0 ) { + return new ResultData(ErrorCode.CARD_IS_NOT_FOUND.getCode(),"卡密面额未设置."); + } WxCoupon coupon = wxCouponService.getById(couponPassword.getCouponId(),couponPassword.getTenantId()); if (coupon == null) { diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java index 2c5197bf1..8ac08bf23 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java @@ -80,6 +80,9 @@ public class WxCouponPasswordController extends BaseController { if (couponPassword.getIsStop().intValue() == EnumYesOrNo.YES.getCode().intValue()) { return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"卡密已经停用"); } + if (couponPassword.getPrice() <= 0) { + return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF.getCode(),"卡密面值未设置,请联系管理员."); + } WxCUserBasicInfo member = userService.getById(memberId,getFinalTenantId()); if(member == null) { throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "会员用户未找到" + memberId); @@ -93,7 +96,7 @@ public class WxCouponPasswordController extends BaseController { return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); } if (coupon.getPrice() <= 0) { - return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF.getCode(),"面值未设置,请联系管理员."); + return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF.getCode(),"卡面值未设置,请联系管理员."); } // 卡密领取卡券 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java index 9ec4d5432..d861d82a6 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java @@ -20,6 +20,8 @@ public class WxCouponPassword extends TenantEntity { protected Long id; @TableField(exist = false) private String idLike; + @io.swagger.annotations.ApiModelProperty(value="面额",name="price") + private Integer price; @io.swagger.annotations.ApiModelProperty(value="卡券ID",name="couponId") private Long couponId; @io.swagger.annotations.ApiModelProperty(value="卡券短ID",name="couponShort") diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxCardSpendMerchantVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxCardSpendMerchantVo.java index 44efcbe63..19c54e42b 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxCardSpendMerchantVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCardSpendMerchantVo.java @@ -13,11 +13,11 @@ public class WxCardSpendMerchantVo { private Long merchantId; @Excel(name = "商户名称", width = 20, orderNum = "2") private String merchantName; - @Excel(name = "交易总金额", width = 20, orderNum = "3") + @Excel(name = "交易总金额(分)", width = 20, orderNum = "3") private BigDecimal total; - @Excel(name = "总手续费", width = 20, orderNum = "4") + @Excel(name = "总手续费(分)", width = 20, orderNum = "4") private BigDecimal fee; - @Excel(name = "总补贴", width = 20, orderNum = "5") + @Excel(name = "总补贴(分)", width = 20, orderNum = "5") private BigDecimal subsidy; } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponPasswordVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponPasswordVo.java index 9623eab0e..ea62ddfaf 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponPasswordVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponPasswordVo.java @@ -25,40 +25,45 @@ public class WxCouponPasswordVo extends TenantEntity { @Excel(name = "卡号", width = 20, orderNum = "1", prefix = "`") protected Long id; - @Excel(name = "卡密", width = 20, orderNum = "2", prefix = "`") + @Excel(name = "卡名称", width = 20, orderNum = "2", prefix = "`") + protected String couponTitile; + @Excel(name = "卡密", width = 20, orderNum = "3", prefix = "`") @io.swagger.annotations.ApiModelProperty(value = "卡密", name = "couponPassword") private String couponPassword; - @Excel(name = "创建时间", width = 20, exportFormat = "yyyy-MM-dd HH:mm:ss", orderNum = "3") + @Excel(name = "卡密面额(分)", width = 20, orderNum = "4", prefix = "`") + @io.swagger.annotations.ApiModelProperty(value = "卡密面额", name = "couponPasswordPrice") + private Integer couponPasswordPrice; + @Excel(name = "创建时间", width = 20, exportFormat = "yyyy-MM-dd HH:mm:ss", orderNum = "5") @io.swagger.annotations.ApiModelProperty(value = "", name = "createDate") private Date createDate; - @Excel(name = "卡密状态", width = 20, orderNum = "4", replace = {"初始化_0", "消息发送中_1", "消息已发送_2", "已兑换_3","已作废_4"},prefix = "`") + @Excel(name = "卡密状态", width = 20, orderNum = "6", replace = {"初始化_0", "消息发送中_1", "消息已发送_2", "已兑换_3","已作废_4"},prefix = "`") @io.swagger.annotations.ApiModelProperty(value = "卡密状态", name = "remainPrice") private Integer status; - @Excel(name = "卡密是否停用", width = 20, orderNum = "5", replace = {"否_0", "是_1"},prefix = "`") + @Excel(name = "卡密是否停用", width = 20, orderNum = "7", replace = {"否_0", "是_1"},prefix = "`") @io.swagger.annotations.ApiModelProperty(value = "卡密是否停用", name = "isStop") private Integer isStop; - @Excel(name = "卡激活状态", width = 20, orderNum = "6",replace = {"未激活_0", "已激活_1"}, prefix = "`") + @Excel(name = "卡激活状态", width = 20, orderNum = "8",replace = {"未激活_0", "已激活_1"}, prefix = "`") @io.swagger.annotations.ApiModelProperty(value = "卡激活状态EnumYesOrNo", name = "used") private Integer used; - @Excel(name = "激活时间", width = 20, exportFormat = "yyyy-MM-dd HH:mm:ss", orderNum = "7") + @Excel(name = "激活时间", width = 20, exportFormat = "yyyy-MM-dd HH:mm:ss", orderNum = "9") @io.swagger.annotations.ApiModelProperty(value = "", name = "activeDate") private Date activeDate; - @Excel(name = "激活手机号", width = 20, orderNum = "8", prefix = "`") + @Excel(name = "激活手机号", width = 20, orderNum = "10", prefix = "`") @io.swagger.annotations.ApiModelProperty(value = "激活手机号", name = "phone") private String phone; - @Excel(name = "激活会员", width = 20, orderNum = "9", prefix = "`") + @Excel(name = "激活会员", width = 20, orderNum = "11", prefix = "`") @io.swagger.annotations.ApiModelProperty(value = "激活会员", name = "userName") private String userName; - @Excel(name = "电子卡卡号", width = 20, orderNum = "10", prefix = "`") + @Excel(name = "电子卡卡号", width = 20, orderNum = "12", prefix = "`") @io.swagger.annotations.ApiModelProperty(value = "电子卡卡号", name = "cardId") private Long cardId; - @Excel(name = "面额(元)", width = 20, orderNum = "11", prefix = "`") + @Excel(name = "面额(元)", width = 20, orderNum = "13", prefix = "`") @io.swagger.annotations.ApiModelProperty(value = "面额(元)", name = "price") private Double price; - @Excel(name = "余额(元)", width = 20, orderNum = "12", prefix = "`") + @Excel(name = "余额(元)", width = 20, orderNum = "14", prefix = "`") @io.swagger.annotations.ApiModelProperty(value = "余额(元)", name = "remainPrice") private Double remainPrice; - @Excel(name = "电子卡状态", width = 20, orderNum = "13",replace = {"正常_0", "已禁用_1"}, prefix = "`") + @Excel(name = "电子卡状态", width = 20, orderNum = "15",replace = {"正常_0", "已禁用_1"}, prefix = "`") @io.swagger.annotations.ApiModelProperty(value = "电子卡状态EnumYesOrNo", name = "cardStatus") private Integer cardStatus; diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java index 1fd6d725b..88eadde43 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java @@ -42,7 +42,7 @@ public interface WxCouponMapper extends CommonMapper { void deleteById(@Param("id")Long id,@Param("tenantId")String tenantId); - Integer setPrice(@Param("id")Long id,@Param("tenantId")String tenantId,@Param("price")Integer price,@Param("subsidyNum")Integer subsidyNum); + Integer setPrice(WxCoupon wxCoupon); Integer reduceInventory(@Param("id")Long id,@Param("tenantId")String tenantId,@Param("number")Integer number); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java index db4b0f8ea..4c1fce714 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java @@ -29,5 +29,7 @@ public interface WxCouponPasswordMapper extends CommonMapper handleQueryResult(List list,TenantEntity tenantEntity) { if (null != list && list.size() > 0) { List couponPasswordIdList = new ArrayList(); + List couponIdList = new ArrayList(); for (int i = 0 ; i < list.size() ; i ++ ) { WxCouponPassword bo = list.get(i); if (null != bo.getId() && (!couponPasswordIdList.contains(bo.getId()))) { couponPasswordIdList.add(bo.getId()); } + if (null != bo.getCouponId() && (!couponIdList.contains(bo.getCouponId()))) { + couponIdList.add(bo.getCouponId()); + } } - + + Map couponMap = new HashMap(); + if (couponIdList.size() > 0 ) { + WxCoupon cQ = new WxCoupon(); + cQ.updateTenantInfo(tenantEntity); + cQ.setIds(couponIdList); + List cList = wxCouponMapper.findList(cQ); + if (null != cList && cList.size() > 0) { + for (int i = 0 ; i < cList.size(); i++) { + WxCoupon c = cList.get(i); + couponMap.put(c.getId(), c); + } + } + } + List cUserIdList = new ArrayList(); Map passwordCardInfoMap = new HashMap(); if (couponPasswordIdList.size() > 0 ) { @@ -129,7 +150,14 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { WxCouponPasswordVo co = new WxCouponPasswordVo(); WxCardInfo cardInfo = passwordCardInfoMap.get(coo.getId()); co.setId(coo.getId()); + if (null != coo.getCouponId()) { + WxCoupon coupon = couponMap.get(coo.getCouponId()); + if (null != coupon) { + co.setCouponTitile(coupon.getTitle()); + } + } co.setCouponPassword(coo.getPassword()); + co.setCouponPasswordPrice(coo.getPrice()); if (null != cardInfo) { co.setUsed(EnumYesOrNo.YES.getCode()); co.setPrice(new BigDecimal(cardInfo.getAmount()).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()); @@ -303,5 +331,10 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { public void startOrStop(WxCouponPassword wxCouponPassword) { wxCouponPasswordMapper.updateIsStop(wxCouponPassword.getTenantId(), wxCouponPassword.getId(), wxCouponPassword.getIsStop()); } + + @Override + public void setPrice(WxCouponPassword wxCouponPassword) { + wxCouponPasswordMapper.setPrice(wxCouponPassword); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index 91986caed..04e87ec66 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -1022,10 +1022,16 @@ public class WxCouponServiceImpl implements WxCouponService { @Override @Transactional(isolation=Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) public ResultData setPrice(WxCoupon record) { - Integer count = wxCouponMapper.setPrice(record.getId(), record.getTenantId(), record.getPrice(),record.getSubsidyNum()); + Integer count = wxCouponMapper.setPrice(record); if (null == count || count <= 0 ) { return new ResultData(Result.ERROR,"设置失败"); } + //设置卡密price + WxCouponPassword couponPassword = new WxCouponPassword(); + couponPassword.updateTenantInfo(record); + couponPassword.setCouponId(record.getId()); + couponPassword.setPrice(record.getPrice()); + couponPasswordMapper.setPrice(couponPassword); return new ResultData(); } diff --git a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml index 3ee43e15c..f9f68b923 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml @@ -1524,8 +1524,8 @@ update wx_coupon set make_merchant_id = #{makeMerchantId} where id = #{id} and tenant_id = #{tenantId} - - update wx_coupon set price = #{price},subsidy_num={subsidyNum} where id = #{id} and tenant_id = #{tenantId} and price = 0 + + update wx_coupon set price = #{price},subsidy_num=#{subsidyNum} where id = #{id} and tenant_id = #{tenantId} and price = 0 diff --git a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index fa6b58a54..d42fca60e 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -5,6 +5,7 @@ + @@ -19,7 +20,7 @@ - `id`,`tenant_id`,`parent_tenant_id`,`coupon_id`,`coupon_short`,`password`,`status`,`sended_phone`,`card_id`,`create_date`,`update_date`,`expire_date`,`present_id`,`is_stop` + `id`,`tenant_id`,`parent_tenant_id`,`price`,`coupon_id`,`coupon_short`,`password`,`status`,`sended_phone`,`card_id`,`create_date`,`update_date`,`expire_date`,`present_id`,`is_stop` @@ -213,5 +214,16 @@ update wx_coupon_password set is_stop = #{isStop} , update_date = now() where id = #{id} and tenant_id = #{tenantId} + + + update wx_coupon_password set price = #{price} , update_date = now() + where tenant_id = #{tenantId} and price = 0 + + and coupon_id = #{couponId} + + + and id = #{id} + +