| @@ -152,7 +152,7 @@ public class TtPoiPlanController extends BaseController { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"定向达人抖音号为空"); | return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"定向达人抖音号为空"); | ||||
| } | } | ||||
| //达人去重 | //达人去重 | ||||
| List<String> collect = record.getDouyinIdList().stream().collect(Collectors.toList()); | |||||
| List<String> collect = record.getDouyinIdList().stream().distinct().collect(Collectors.toList()); | |||||
| record.setDouyinIdList(collect); | record.setDouyinIdList(collect); | ||||
| if(record.getCouponId() == null){ | if(record.getCouponId() == null){ | ||||
| @@ -85,21 +85,6 @@ public class WxCouponController extends BaseController { | |||||
| wxCoupon.setSortColumn(null); | wxCoupon.setSortColumn(null); | ||||
| } | } | ||||
| if(wxCoupon.getTargetAd() != null ){ | |||||
| if(wxCoupon.getTargetAd() == EnumCouponChannelType.COUPON_CHANNEL_ID_TIMED.getCode() | |||||
| || wxCoupon.getTargetAd() == EnumCouponChannelType.COUPON_CHANNEL_ID_GAME.getCode()){ | |||||
| Integer[] typeArray = { | |||||
| EnumCouponType.COUPON_MANJIAN.getCode(), | |||||
| EnumCouponType.COUPON_DAIJIN.getCode(), | |||||
| EnumCouponType.COUPON_LIPIN.getCode(), | |||||
| EnumCouponType.COUPON_TINGCHE.getCode(), | |||||
| EnumCouponType.COUPON_MULTIMCH.getCode(), | |||||
| EnumCouponType.COUPON_DOUYIN.getCode()}; | |||||
| wxCoupon.setTypes(Arrays.asList(typeArray)); | |||||
| } | |||||
| } | |||||
| //isList true 查全部 / 否则 只查询主动领取和定向投放的。 | //isList true 查全部 / 否则 只查询主动领取和定向投放的。 | ||||
| if(!(isList == null?false:isList)){ | if(!(isList == null?false:isList)){ | ||||
| Integer[] sendTypeArray = { | Integer[] sendTypeArray = { | ||||
| @@ -0,0 +1,4 @@ | |||||
| INSERT INTO `mallink`.`mall_permission`(`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`) VALUES (648, '抖音平台券', 602, 'Y', NULL, 1, NULL, NULL, 'douyinPlatCoupon', NULL, 0, 648); | |||||
| INSERT INTO `mallink`.`mall_permission`(`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`) VALUES (649, '抖音品牌券', 602, 'Y', NULL, 1, NULL, NULL, 'douyinBrandCoupon', NULL, 0, 649); | |||||
| INSERT INTO `mallink`.`mall_sale_type`(`id`, `name`, `type`, `period`, `menus`) VALUES (101, '抖音集团版', 101, 12, '[1, 2, 4, 5, 6, 50, 105, 110, 201, 205, 202, 211, 212, 221, 222, 223, 224, 251, 409, 410, 411, 416, 500, 502, 504, 505, 506, 507, 511, 512, 521, 522, 523, 591, 592, 595, 601, 602, 605, 610, 615, 622, 648, 649, 676, 711, 901, 902, 904, 907, 61501, 61502]'); | |||||
| @@ -42,6 +42,9 @@ public class WxCoupon extends TenantEntity { | |||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| protected List<Long> notinTypes; | protected List<Long> notinTypes; | ||||
| @TableField(exist = false) | |||||
| protected Integer plat; | |||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| protected String channels; | protected String channels; | ||||
| @@ -363,6 +366,26 @@ public class WxCoupon extends TenantEntity { | |||||
| @io.swagger.annotations.ApiModelProperty(value = "审批流参数", name = "flowParams") | @io.swagger.annotations.ApiModelProperty(value = "审批流参数", name = "flowParams") | ||||
| private Map<String, Object> flowParams; | private Map<String, Object> flowParams; | ||||
| @TableField(exist = false) | |||||
| @io.swagger.annotations.ApiModelProperty(value="spuId",name="spuId")//goodsId | |||||
| private String spuId; | |||||
| @TableField(exist = false) | |||||
| @io.swagger.annotations.ApiModelProperty(value="状态:0-审核中,1-上架,2-下架,3-审核拒绝 4-审核通过",name="poiStatus") | |||||
| private Integer poiStatus; | |||||
| @TableField(exist = false) | |||||
| @io.swagger.annotations.ApiModelProperty(value="描述",name="statusDesc") | |||||
| private String statusDesc; | |||||
| @TableField(exist = false) | |||||
| @io.swagger.annotations.ApiModelProperty(value="状态:0-审核中,1-上架,2-下架,3-审核拒绝 4-审核通过",name="lastStatus") | |||||
| private Integer lastStatus; | |||||
| @TableField(exist = false) | |||||
| @io.swagger.annotations.ApiModelProperty(value="描述",name="lastStatusDesc") | |||||
| private String lastStatusDesc; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "是否删除1是0否", name = "isDel") | @io.swagger.annotations.ApiModelProperty(value = "是否删除1是0否", name = "isDel") | ||||
| private Integer isDel; | private Integer isDel; | ||||
| @@ -1,5 +1,11 @@ | |||||
| package com.iformall.enums; | package com.iformall.enums; | ||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.exception.MallinkException; | |||||
| import java.util.ArrayList; | |||||
| import java.util.List; | |||||
| /** | /** | ||||
| * Created by Stormeye on 2018/08/09. | * Created by Stormeye on 2018/08/09. | ||||
| */ | */ | ||||
| @@ -10,9 +16,12 @@ public enum EnumCouponChannelType { | |||||
| * //初次投放,只为展示审核,不让购买。 | * //初次投放,只为展示审核,不让购买。 | ||||
| * //当券投放到其他渠道时,此渠道自动上架,才可购买。 | * //当券投放到其他渠道时,此渠道自动上架,才可购买。 | ||||
| * //其他所有渠道下架后,该渠道自动下架。 | * //其他所有渠道下架后,该渠道自动下架。 | ||||
| * | |||||
| * //该渠道不做任何查询 | |||||
| */ | */ | ||||
| COUPON_CHANNEL_ID_DOUYIN(0,"抖音"), | COUPON_CHANNEL_ID_DOUYIN(0,"抖音"), | ||||
| COUPON_CHANNEL_ID_LIST(1, "列表"), | COUPON_CHANNEL_ID_LIST(1, "列表"), | ||||
| COUPON_CHANNEL_ID_TIMED(2, "限时抢购"), | COUPON_CHANNEL_ID_TIMED(2, "限时抢购"), | ||||
| COUPON_CHANNEL_ID_CAMPAIN(3, "幻灯片"), // banner图, 宣传页,轮播图,走马灯 | COUPON_CHANNEL_ID_CAMPAIN(3, "幻灯片"), // banner图, 宣传页,轮播图,走马灯 | ||||
| @@ -46,6 +55,41 @@ public enum EnumCouponChannelType { | |||||
| this.message = message; | this.message = message; | ||||
| } | } | ||||
| /** | |||||
| * 微信平台的渠道 | |||||
| */ | |||||
| public static List<Integer> getWeiXinType(){ | |||||
| List<Integer> typeList = new ArrayList<>(); | |||||
| typeList.add(COUPON_CHANNEL_ID_LIST.getCode()); | |||||
| typeList.add(COUPON_CHANNEL_ID_TIMED.getCode()); | |||||
| typeList.add(COUPON_CHANNEL_ID_GAME.getCode()); | |||||
| typeList.add(COUPON_CHANNEL_ID_CARD.getCode()); | |||||
| typeList.add(COUPON_CHANNEL_ID_PRESS.getCode()); | |||||
| typeList.add(COUPON_CHANNEL_ID_ORDER_GROUP.getCode()); | |||||
| typeList.add(COUPON_CHANNEL_ID_CREDIT.getCode()); | |||||
| typeList.add(COUPON_CHANNEL_ID_H5.getCode()); | |||||
| typeList.add(COUPON_CHANNEL_ID_WXLIVE_LIST.getCode()); | |||||
| return typeList; | |||||
| } | |||||
| /** | |||||
| * 抖音平台的渠道 | |||||
| */ | |||||
| public static List<Integer> getDouYinType(){ | |||||
| List<Integer> typeList = new ArrayList<>(); | |||||
| typeList.add(COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()); | |||||
| return typeList; | |||||
| } | |||||
| public static EnumAppPlat getAppPlat(Integer code) { | |||||
| if(getWeiXinType().contains(code)){ | |||||
| return EnumAppPlat.WX; | |||||
| }else if(getDouYinType().contains(code)){ | |||||
| return EnumAppPlat.TOUTIAO; | |||||
| } | |||||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "券类型错误,未找到对应平台"); | |||||
| } | |||||
| public Integer getCode() { | public Integer getCode() { | ||||
| return code; | return code; | ||||
| } | } | ||||
| @@ -53,4 +97,57 @@ public enum EnumCouponChannelType { | |||||
| public String getMessage() { | public String getMessage() { | ||||
| return message; | return message; | ||||
| } | } | ||||
| //根据渠道筛选券类型 | |||||
| public static List<Integer> getCouponTypeBy(Integer code){ | |||||
| List<Integer> codes = new ArrayList<>(); | |||||
| if(COUPON_CHANNEL_ID_LIST.getCode().equals(code)){ | |||||
| //微信 列表 渠道 | |||||
| //满减,代金,礼品,停车,通用,预购商品,可配送商品,券礼包 | |||||
| codes.add(EnumCouponType.COUPON_MANJIAN.getCode()); | |||||
| codes.add(EnumCouponType.COUPON_DAIJIN.getCode()); | |||||
| codes.add(EnumCouponType.COUPON_LIPIN.getCode()); | |||||
| codes.add(EnumCouponType.COUPON_TINGCHE.getCode()); | |||||
| codes.add(EnumCouponType.COUPON_MULTIMCH.getCode()); | |||||
| codes.add(EnumCouponType.COUPON_PREORDER.getCode()); | |||||
| codes.add(EnumCouponType.COUPON_DISTRIBUTION.getCode()); | |||||
| codes.add(EnumCouponType.COUPON_GIFT.getCode()); | |||||
| }else if(COUPON_CHANNEL_ID_TIMED.getCode().equals(code) | |||||
| || COUPON_CHANNEL_ID_GAME.getCode().equals(code)){ | |||||
| //微信 限时抢购,游戏 渠道 | |||||
| //可用 满减,代金,礼品,停车,通用 | |||||
| codes.add(EnumCouponType.COUPON_MANJIAN.getCode()); | |||||
| codes.add(EnumCouponType.COUPON_DAIJIN.getCode()); | |||||
| codes.add(EnumCouponType.COUPON_LIPIN.getCode()); | |||||
| codes.add(EnumCouponType.COUPON_TINGCHE.getCode()); | |||||
| codes.add(EnumCouponType.COUPON_MULTIMCH.getCode()); | |||||
| }else if(COUPON_CHANNEL_ID_CARD.getCode().equals(code)){ | |||||
| //微信 卡频道 | |||||
| //可用 消费卡 | |||||
| codes.add(EnumCouponType.CARD_MULTIMCH.getCode()); | |||||
| }else if(COUPON_CHANNEL_ID_PRESS.getCode().equals(code)){ | |||||
| //微信 砍价频道 | |||||
| //可用 砍价券 | |||||
| codes.add(EnumCouponType.COUPON_PRESS.getCode()); | |||||
| }else if(COUPON_CHANNEL_ID_ORDER_GROUP.getCode().equals(code)){ | |||||
| //微信 拼团频道 | |||||
| //可用 拼团券 | |||||
| codes.add(EnumCouponType.COUPON_GROUP.getCode()); | |||||
| }else if(COUPON_CHANNEL_ID_CAMPAIN.getCode().equals(code) | |||||
| || COUPON_CHANNEL_ID_TOPIC.getCode().equals(code)){ | |||||
| //宣传页 专题 (不分平台)查所有券 | |||||
| //平台从其他地方区分 | |||||
| codes.addAll(EnumCouponType.getAllCodes()); | |||||
| }else if(COUPON_CHANNEL_ID_CREDIT.getCode().equals(code)){ | |||||
| //微信 积分商城 | |||||
| codes.add(EnumCouponType.COUPON_CREDIT.getCode()); | |||||
| codes.add(EnumCouponType.COUPON_CREDIT_PARK.getCode()); | |||||
| }else if(COUPON_CHANNEL_ID_DOUYIN_LIST.getCode().equals(code)){ | |||||
| //抖音 列表 | |||||
| codes.add(EnumCouponType.COUPON_DOUYIN.getCode()); | |||||
| codes.add(EnumCouponType.COUPON_DOUYIN_PLAT.getCode()); | |||||
| codes.add(EnumCouponType.COUPON_DOUYIN_BRAND.getCode()); | |||||
| } | |||||
| return codes; | |||||
| } | |||||
| } | } | ||||
| @@ -28,7 +28,10 @@ public enum EnumCouponType { | |||||
| COUPON_CREDIT(50,"积分券"), | COUPON_CREDIT(50,"积分券"), | ||||
| COUPON_CREDIT_PARK(51,"积分停车券"), | COUPON_CREDIT_PARK(51,"积分停车券"), | ||||
| // COUPON_CREDIT_DOUYIN(55,"抖音积分券"), | // COUPON_CREDIT_DOUYIN(55,"抖音积分券"), | ||||
| COUPON_PLAT(53,"平台券"), | |||||
| COUPON_DOUYIN_PLAT(67, "抖音集团平台券"), | |||||
| COUPON_DOUYIN_BRAND(68, "抖音集团品牌券"), | |||||
| CARD_MULTIMCH(100, "消费卡"), | CARD_MULTIMCH(100, "消费卡"), | ||||
| ; | ; | ||||
| @@ -40,6 +43,14 @@ public enum EnumCouponType { | |||||
| } | } | ||||
| return null; | return null; | ||||
| } | } | ||||
| public static List<Integer> getAllCodes(){ | |||||
| List<Integer> codes = new ArrayList<>(); | |||||
| for (EnumCouponType value : values()) { | |||||
| codes.add(value.getCode()); | |||||
| } | |||||
| return codes; | |||||
| } | |||||
| public static boolean mustHasMerchant(Integer code) { | public static boolean mustHasMerchant(Integer code) { | ||||
| if (null == code) { | if (null == code) { | ||||
| @@ -75,6 +86,8 @@ public enum EnumCouponType { | |||||
| List<Integer> typeList = new ArrayList<>(); | List<Integer> typeList = new ArrayList<>(); | ||||
| typeList.add(COUPON_DOUYIN.getCode()); | typeList.add(COUPON_DOUYIN.getCode()); | ||||
| // typeList.add(COUPON_CREDIT_DOUYIN.getCode()); | // typeList.add(COUPON_CREDIT_DOUYIN.getCode()); | ||||
| typeList.add(COUPON_DOUYIN_PLAT.getCode()); | |||||
| typeList.add(COUPON_DOUYIN_BRAND.getCode()); | |||||
| return typeList; | return typeList; | ||||
| } | } | ||||
| @@ -101,7 +114,7 @@ public enum EnumCouponType { | |||||
| } | } | ||||
| /** | /** | ||||
| * 有价 并且永不分账的券类型 | |||||
| * 微信 有价 并且永不分账的券类型 | |||||
| */ | */ | ||||
| public static List<Integer> getPlatType(){ | public static List<Integer> getPlatType(){ | ||||
| List<Integer> typeList = new ArrayList<>(); | List<Integer> typeList = new ArrayList<>(); | ||||
| @@ -119,4 +132,13 @@ public enum EnumCouponType { | |||||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "券类型错误,未找到对应平台"); | throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "券类型错误,未找到对应平台"); | ||||
| } | } | ||||
| public static List<Integer> getTypeCode(Integer plat){ | |||||
| if(EnumAppPlat.WX.getCode().equals(plat)){ | |||||
| return getWeiXinType(); | |||||
| }else if(EnumAppPlat.TOUTIAO.getCode().equals(plat)){ | |||||
| return getDouYinType(); | |||||
| } | |||||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "券平台错误,未找到对应类型"); | |||||
| } | |||||
| } | } | ||||
| @@ -24,7 +24,7 @@ public interface WxCouponChannelMapper extends CommonMapper<WxCouponChannel, Str | |||||
| WxCouponChannel findVoStatusDetail(@Param("id")Long id,@Param("tenantId")String tenantId); | WxCouponChannel findVoStatusDetail(@Param("id")Long id,@Param("tenantId")String tenantId); | ||||
| void updateStatusByCouponId(WxCouponChannel wxCouponChannel); | |||||
| int updateStatusByCouponId(WxCouponChannel wxCouponChannel); | |||||
| int updateEndTimeByCouponId(WxCouponChannel wxCouponChannel); | int updateEndTimeByCouponId(WxCouponChannel wxCouponChannel); | ||||
| @@ -70,4 +70,8 @@ public interface WxCouponChannelMapper extends CommonMapper<WxCouponChannel, Str | |||||
| List<TtCouponChannelVo> ttChannelList(TtCouponChannelVo ttChannelVo); | List<TtCouponChannelVo> ttChannelList(TtCouponChannelVo ttChannelVo); | ||||
| Long findCouponIdById(@Param("id")Long id,@Param("tenantId")String tenantId); | Long findCouponIdById(@Param("id")Long id,@Param("tenantId")String tenantId); | ||||
| int updateStatusByTargetAd(WxCouponChannel updCC); | |||||
| int selectCountExclude(WxCouponChannel ccQ); | |||||
| } | } | ||||
| @@ -20,6 +20,7 @@ public interface WxMallMapper extends CommonMapper<WxMall, Long> { | |||||
| String queryMenusByTenantInfo(WxMall wxMall); | String queryMenusByTenantInfo(WxMall wxMall); | ||||
| void updateUnSubMall(@Param(value = "parentTenantId")String parentTenantId); | |||||
| void undateSubmall(@Param(value = "parentTenantId")String parentTenantId, @Param(value = "tenantIds")List<String> tenantIds); | void undateSubmall(@Param(value = "parentTenantId")String parentTenantId, @Param(value = "tenantIds")List<String> tenantIds); | ||||
| List<WxMall> listAsSelectMall(@Param(value = "id")Long id); | List<WxMall> listAsSelectMall(@Param(value = "id")Long id); | ||||
| @@ -27,4 +28,6 @@ public interface WxMallMapper extends CommonMapper<WxMall, Long> { | |||||
| List<TenantEntity> getTenantEntitys(TenantEntity tenantEntity); | List<TenantEntity> getTenantEntitys(TenantEntity tenantEntity); | ||||
| List<WxMall> findListAadmin(WxMall record); | List<WxMall> findListAadmin(WxMall record); | ||||
| } | } | ||||
| @@ -95,6 +95,14 @@ public interface WxMerchantService { | |||||
| */ | */ | ||||
| List<WxMerchant> findList(WxMerchant record); | List<WxMerchant> findList(WxMerchant record); | ||||
| /** | |||||
| * 根据商管商户 | |||||
| * | |||||
| * @param tenantEntity | |||||
| * @return | |||||
| */ | |||||
| List<WxMerchant> findAdminList(TenantEntity tenantEntity); | |||||
| /** | /** | ||||
| * 查询商户列表 | * 查询商户列表 | ||||
| * @param tenantEntity | * @param tenantEntity | ||||
| @@ -127,7 +127,12 @@ public class WxCUserServiceAdapter extends BasicCUserService implements CUserSer | |||||
| updateUser.setId(cuser.getId()); | updateUser.setId(cuser.getId()); | ||||
| updateUser.updateTenantInfo(cuser); | updateUser.updateTenantInfo(cuser); | ||||
| updateUser.setUnionId(userInfo.getUnionId()); | updateUser.setUnionId(userInfo.getUnionId()); | ||||
| updateUser.setNickName(userInfo.getNickName()); | |||||
| if(userInfo.getNickName() == null){ | |||||
| updateUser.setNickName(AppUtils.getAppId());//获取不到微信昵称 | |||||
| }else{ | |||||
| updateUser.setNickName(userInfo.getNickName()); | |||||
| } | |||||
| updateUser.setGender(Integer.parseInt(userInfo.getGender())); | updateUser.setGender(Integer.parseInt(userInfo.getGender())); | ||||
| updateUser.setAvatarUrl(userInfo.getAvatarUrl()); | updateUser.setAvatarUrl(userInfo.getAvatarUrl()); | ||||
| updateUser.setProvince(userInfo.getProvince()); | updateUser.setProvince(userInfo.getProvince()); | ||||
| @@ -379,7 +379,7 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { | |||||
| WxCouponChannel wxCouponChannelQuery = new WxCouponChannel(); | WxCouponChannel wxCouponChannelQuery = new WxCouponChannel(); | ||||
| wxCouponChannelQuery.updateTenantInfo(wxCoupon); | wxCouponChannelQuery.updateTenantInfo(wxCoupon); | ||||
| wxCouponChannelQuery.setCouponId(wxCoupon.getId()); | wxCouponChannelQuery.setCouponId(wxCoupon.getId()); | ||||
| wxCouponChannelQuery.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()); | |||||
| // wxCouponChannelQuery.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()); | |||||
| wxCouponChannelQuery.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); | wxCouponChannelQuery.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); | ||||
| List<WxCouponChannel> wxCouponChannels = wxCouponChannelMapper.findList(wxCouponChannelQuery); | List<WxCouponChannel> wxCouponChannels = wxCouponChannelMapper.findList(wxCouponChannelQuery); | ||||
| if(wxCouponChannels.size() > 0){ | if(wxCouponChannels.size() > 0){ | ||||
| @@ -653,6 +653,9 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { | |||||
| if(oldTakeRate == null || StringUtils.isBlank(oldTakeRate.getDouyinId())){ | if(oldTakeRate == null || StringUtils.isBlank(oldTakeRate.getDouyinId())){ | ||||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR); | throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR); | ||||
| } | } | ||||
| if(!EnumCpsPlanStatus.ING.getCode().equals(oldTakeRate.getStatus())){ | |||||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"该计划已取消或已完成"); | |||||
| } | |||||
| List<String> addDouyinIdList = new ArrayList<>(); | List<String> addDouyinIdList = new ArrayList<>(); | ||||
| addDouyinIdList.addAll(record.getDouyinIdList()); | addDouyinIdList.addAll(record.getDouyinIdList()); | ||||
| @@ -672,6 +675,13 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { | |||||
| } | } | ||||
| if(EnumCpsPlanContentType.VIDEO.getCode().equals(record.getContentType())){ | if(EnumCpsPlanContentType.VIDEO.getCode().equals(record.getContentType())){ | ||||
| //当时间改变时, | |||||
| if(record.getStartTime() != null && record.getStartTime().after(oldTakeRate.getStartTime())){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"开始时间只能向前修改"); | |||||
| } | |||||
| if(record.getEndTime() != null && record.getEndTime().before(oldTakeRate.getEndTime())){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"结束时间只能向后延长"); | |||||
| } | |||||
| //当时间未改变时, | //当时间未改变时, | ||||
| if(record.getStartTime() == null || record.getStartTime().equals(oldTakeRate.getStartTime())){ | if(record.getStartTime() == null || record.getStartTime().equals(oldTakeRate.getStartTime())){ | ||||
| record.setStartTime(null); | record.setStartTime(null); | ||||
| @@ -153,6 +153,16 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { | |||||
| if (list != null && list.size() > 0) { | if (list != null && list.size() > 0) { | ||||
| return new ResultData(ErrorCode.COUPON_CHANNEL_IS_EXISTED); | return new ResultData(ErrorCode.COUPON_CHANNEL_IS_EXISTED); | ||||
| } | } | ||||
| if(EnumCouponType.getDouYinType().contains(orignal.getType())){ | |||||
| TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(wxCoupon.getTenantId(),wxCoupon.getId()); | |||||
| if(ttCouponChannelPoi == null || !EnumSpuSyncStatus.sync_audit_pass.getCode().equals(ttCouponChannelPoi.getLastStatus())){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"该商品未提交审核或审核未通过"); | |||||
| } | |||||
| //上架该券的审核渠道 | |||||
| updateOnlineDouyin(orignal,orignal.getCouponId()); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| Long couponId = null; | Long couponId = null; | ||||
| @@ -169,6 +179,10 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { | |||||
| //浮层下架 | //浮层下架 | ||||
| wxFloatingLayerMapper.updateStatus(orignal.getCouponId()); | wxFloatingLayerMapper.updateStatus(orignal.getCouponId()); | ||||
| if(EnumCouponType.getDouYinType().contains(orignal.getType())){ | |||||
| //下架该券的审核渠道(如所有渠道都已下线) | |||||
| updateTakeOffDouyin(orignal); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| record.setUpdateDate(new Date()); | record.setUpdateDate(new Date()); | ||||
| @@ -190,6 +204,45 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { | |||||
| return new ResultData(); | return new ResultData(); | ||||
| } | } | ||||
| /** | |||||
| * 前置 该券已审核通过 | |||||
| * //上架该券的审核渠道 | |||||
| * @param tenantEntity | |||||
| * @param couponId | |||||
| */ | |||||
| public void updateOnlineDouyin(TenantEntity tenantEntity,Long couponId){ | |||||
| WxCouponChannel updCC = new WxCouponChannel(); | |||||
| updCC.updateTenantInfo(tenantEntity); | |||||
| updCC.setCouponId(couponId); | |||||
| updCC.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN.getCode()); | |||||
| updCC.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); | |||||
| updCC.setUpdateDate(new Date()); | |||||
| wxCouponChannelMapper.updateStatusByTargetAd(updCC); | |||||
| } | |||||
| /** | |||||
| * //下架该券的审核渠道(如所有其他渠道都已下线) | |||||
| * @param couponChannel | |||||
| */ | |||||
| public void updateTakeOffDouyin(WxCouponChannel couponChannel){ | |||||
| WxCouponChannel ccQ = new WxCouponChannel(); | |||||
| ccQ.updateTenantInfo(couponChannel); | |||||
| ccQ.setCouponId(couponChannel.getCouponId()); | |||||
| ccQ.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); | |||||
| //Exclude | |||||
| ccQ.setId(couponChannel.getId()); | |||||
| ccQ.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN.getCode()); | |||||
| if(wxCouponChannelMapper.selectCountExclude(ccQ) == 0){ | |||||
| WxCouponChannel updCC = new WxCouponChannel(); | |||||
| updCC.updateTenantInfo(couponChannel); | |||||
| updCC.setCouponId(couponChannel.getCouponId()); | |||||
| updCC.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN.getCode()); | |||||
| updCC.setStatus(EnumCouponChannelStatus.STATUS_TAKE_OFFF.getCode()); | |||||
| updCC.setUpdateDate(new Date()); | |||||
| wxCouponChannelMapper.updateStatusByTargetAd(updCC); | |||||
| } | |||||
| } | |||||
| @Override | @Override | ||||
| public void spuStatusSyncByCoupon(TenantEntity tenantEntity, Long couponId) { | public void spuStatusSyncByCoupon(TenantEntity tenantEntity, Long couponId) { | ||||
| FmInsideProductPushMsg productPush = new FmInsideProductPushMsg(); | FmInsideProductPushMsg productPush = new FmInsideProductPushMsg(); | ||||
| @@ -646,6 +699,7 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { | |||||
| wxCouponChannel.setBusiness(wxCoupon.getBusiness()); | wxCouponChannel.setBusiness(wxCoupon.getBusiness()); | ||||
| wxCouponChannel.setSubBusiness(wxCoupon.getSubBusiness()); | wxCouponChannel.setSubBusiness(wxCoupon.getSubBusiness()); | ||||
| wxCouponChannel.setTitle(wxCoupon.getTitle()); | wxCouponChannel.setTitle(wxCoupon.getTitle()); | ||||
| wxCouponChannel.setTtSpuId(wxCoupon.getGoodsId()); | |||||
| wxCouponChannel.setChannelPrice(channelPrice); | wxCouponChannel.setChannelPrice(channelPrice); | ||||
| wxCouponChannel.setChannelStock(channelStock); | wxCouponChannel.setChannelStock(channelStock); | ||||
| ResultData resultData = saveOrUpdate(wxCouponChannel); | ResultData resultData = saveOrUpdate(wxCouponChannel); | ||||
| @@ -152,12 +152,7 @@ public class WxCouponServiceImpl implements WxCouponService { | |||||
| public ResultData list(TenantEntity tenantEntity,WxCoupon wxCoupon, Integer pageNum, Integer pageSize) { | public ResultData list(TenantEntity tenantEntity,WxCoupon wxCoupon, Integer pageNum, Integer pageSize) { | ||||
| if (null == wxCoupon) wxCoupon = new WxCoupon(); | if (null == wxCoupon) wxCoupon = new WxCoupon(); | ||||
| wxCoupon.updateTenantInfo(tenantEntity); | wxCoupon.updateTenantInfo(tenantEntity); | ||||
| if(StringUtils.isBlank(wxCoupon.getSortColumns())){ | |||||
| wxCoupon.setSortColumns(BaseEntity.SortField.CCreateDate_DESC, BaseEntity.SortField.CId_DESC); | |||||
| } | |||||
| PageInfo<WxCoupon> page = null; | |||||
| if (wxCoupon.getStatus() != null && wxCoupon.getStatus() == -1) | |||||
| wxCoupon.setStatus(null); | |||||
| handCouponList(wxCoupon); | |||||
| //除了a端列表 其他默认需要过滤 | //除了a端列表 其他默认需要过滤 | ||||
| if(!EnumFilterPut.NO.equals(wxCoupon.getFilterCanPut())) { | if(!EnumFilterPut.NO.equals(wxCoupon.getFilterCanPut())) { | ||||
| @@ -169,8 +164,8 @@ public class WxCouponServiceImpl implements WxCouponService { | |||||
| wxCoupon.setPressModelId(couponModel.getPressModelId()); | wxCoupon.setPressModelId(couponModel.getPressModelId()); | ||||
| } | } | ||||
| } | } | ||||
| page = listAsPage(wxCoupon, pageNum, pageSize); | |||||
| PageInfo<WxCoupon> page = listAsPage(wxCoupon, pageNum, pageSize); | |||||
| List<WxCoupon> wxCouponList = page.getList(); | List<WxCoupon> wxCouponList = page.getList(); | ||||
| @@ -212,6 +207,78 @@ public class WxCouponServiceImpl implements WxCouponService { | |||||
| return new ResultData(page); | return new ResultData(page); | ||||
| } | } | ||||
| private void handCouponList(WxCoupon wxCoupon){ | |||||
| //默认排序 | |||||
| if(StringUtils.isBlank(wxCoupon.getSortColumns())){ | |||||
| wxCoupon.setSortColumns(BaseEntity.SortField.CCreateDate_DESC, BaseEntity.SortField.CId_DESC); | |||||
| } | |||||
| if (wxCoupon.getStatus() != null && wxCoupon.getStatus() == -1){ | |||||
| wxCoupon.setStatus(null); | |||||
| } | |||||
| //门店处理 | |||||
| if(wxCoupon.getMerchantId() != null){ | |||||
| List<Long> merchantIds = new ArrayList<Long>(); | |||||
| merchantIds.add(wxCoupon.getMerchantId()); | |||||
| List<Long> mcids = wxCouponMerchantMapper.findMerchantProductIds(wxCoupon.getTenantId(), merchantIds,0); | |||||
| if(mcids == null || mcids.isEmpty()){ | |||||
| wxCoupon.setId(-999L); | |||||
| return; | |||||
| }else{ | |||||
| wxCoupon.setIds(mcids); | |||||
| } | |||||
| } | |||||
| //券类型处理 | |||||
| if(wxCoupon.getType() != null){ | |||||
| if(wxCoupon.getPlat() == null){ | |||||
| wxCoupon.setPlat(EnumCouponType.getAppPlat(wxCoupon.getType()).getCode()); | |||||
| } | |||||
| }else{ | |||||
| List<Integer> types = wxCoupon.getTypes(); | |||||
| if(wxCoupon.getTargetAd() != null){ | |||||
| if(wxCoupon.getPlat() == null){ | |||||
| wxCoupon.setPlat(EnumCouponChannelType.getAppPlat(wxCoupon.getTargetAd()).getCode()); | |||||
| } | |||||
| if(EnumAppPlat.TOUTIAO.getCode().equals(wxCoupon.getPlat())){ | |||||
| //渠道查询时只查询审核通过的 | |||||
| wxCoupon.setLastStatus(EnumSpuSyncStatus.sync_audit_pass.getCode()); | |||||
| } | |||||
| List<Integer> couponTypes = EnumCouponChannelType.getCouponTypeBy(wxCoupon.getTargetAd()); | |||||
| if(couponTypes.isEmpty()){ | |||||
| wxCoupon.setId(-999L); | |||||
| return; | |||||
| }else{ | |||||
| if(types == null || types.isEmpty()){ | |||||
| types = couponTypes; | |||||
| }else{ | |||||
| types.retainAll(couponTypes); | |||||
| if(types.isEmpty()){ | |||||
| wxCoupon.setId(-999L); | |||||
| return; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| if(wxCoupon.getPlat() == null){ | |||||
| //默认查微信平台 | |||||
| wxCoupon.setPlat(EnumAppPlat.WX.getCode()); | |||||
| } | |||||
| List<Integer> typeCode = EnumCouponType.getTypeCode(wxCoupon.getPlat()); | |||||
| if(types == null || types.isEmpty()){ | |||||
| types = typeCode; | |||||
| }else{ | |||||
| types.retainAll(typeCode); | |||||
| if(types.isEmpty()){ | |||||
| wxCoupon.setId(-999L); | |||||
| return; | |||||
| } | |||||
| } | |||||
| wxCoupon.setTypes(types); | |||||
| } | |||||
| } | |||||
| @Override | @Override | ||||
| public List<WxCoupon> list(WxCoupon wxCoupon){ | public List<WxCoupon> list(WxCoupon wxCoupon){ | ||||
| @@ -238,6 +238,7 @@ public class WxMallServiceImpl implements WxMallService { | |||||
| @Override | @Override | ||||
| public void undateSubmall(String parentTenantId, List<String> tenantIds) { | public void undateSubmall(String parentTenantId, List<String> tenantIds) { | ||||
| wxMallMapper.updateUnSubMall(parentTenantId); | |||||
| wxMallMapper.undateSubmall(parentTenantId, tenantIds); | wxMallMapper.undateSubmall(parentTenantId, tenantIds); | ||||
| TenantEntity tenantEntity = new TenantEntity(); | TenantEntity tenantEntity = new TenantEntity(); | ||||
| tenantEntity.setTenantId(parentTenantId); | tenantEntity.setTenantId(parentTenantId); | ||||
| @@ -275,6 +275,16 @@ public class WxMerchantServiceImpl implements WxMerchantService { | |||||
| return wxMerchantMapper.findList(record); | return wxMerchantMapper.findList(record); | ||||
| } | } | ||||
| @Override | |||||
| public List<WxMerchant> findAdminList(TenantEntity tenantEntity) { | |||||
| WxMerchant wxMerchant = new WxMerchant(); | |||||
| wxMerchant.updateTenantInfo(tenantEntity); | |||||
| wxMerchant.setStatus(EnumMerchantStatus.VALID.getCode()); | |||||
| wxMerchant.setIsAdmin(EnumMerchantAdmin.PUBLIC_ADMIN.getCode()); | |||||
| List<WxMerchant> list = findList(wxMerchant); | |||||
| return list; | |||||
| } | |||||
| @Override | @Override | ||||
| public List<WxMerchantSimpleVo> findList(TenantEntity tenantEntity) { | public List<WxMerchantSimpleVo> findList(TenantEntity tenantEntity) { | ||||
| WxMerchant wxMerchant = new WxMerchant(); | WxMerchant wxMerchant = new WxMerchant(); | ||||
| @@ -1389,6 +1389,18 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| } | } | ||||
| private static Date getCurrentYearRentDate(Date yearEndDate,Date rentDate){ | |||||
| Calendar calendar = Calendar.getInstance(); | |||||
| calendar.setTime(yearEndDate); | |||||
| Calendar rentCalendar = Calendar.getInstance(); | |||||
| rentCalendar.setTime(rentDate); | |||||
| calendar.set(Calendar.DAY_OF_MONTH,rentCalendar.get(Calendar.DAY_OF_MONTH)); | |||||
| calendar.set(Calendar.MONTH, rentCalendar.get(Calendar.MONTH)); | |||||
| return calendar.getTime(); | |||||
| } | |||||
| public Map<String, Object> buildRent(int receivePeriod, long[] priceArrs, List<Date> yearList, int dayType, WxRentContract wxRentContract, Long userId, int billcount, Integer isPreview, String shopInfoStr,boolean saveDb) { | public Map<String, Object> buildRent(int receivePeriod, long[] priceArrs, List<Date> yearList, int dayType, WxRentContract wxRentContract, Long userId, int billcount, Integer isPreview, String shopInfoStr,boolean saveDb) { | ||||
| WxPayAccountBill wxPayAccountBill = wxPayAccountBillService.getByTenantInfo(wxRentContract); | WxPayAccountBill wxPayAccountBill = wxPayAccountBillService.getByTenantInfo(wxRentContract); | ||||
| SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); | SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); | ||||
| @@ -1422,6 +1434,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| long needpay = 0; | long needpay = 0; | ||||
| boolean flag = false; | boolean flag = false; | ||||
| //此处逻辑处理这一年和下一年交接那一期账单。 | |||||
| if(yearList.size() > 1) { | if(yearList.size() > 1) { | ||||
| if (endDate!=null && (sd.format(billTimeVo.getStartDate()).equals(sd.format(endDate)) || billTimeVo.getStartDate().after(endDate) || billTimeVo.getEndDate().after(endDate) )) { | if (endDate!=null && (sd.format(billTimeVo.getStartDate()).equals(sd.format(endDate)) || billTimeVo.getStartDate().after(endDate) || billTimeVo.getEndDate().after(endDate) )) { | ||||
| if(yearList.size() > 1) { | if(yearList.size() > 1) { | ||||
| @@ -1436,18 +1449,26 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| long needpayAfter = 0; | long needpayAfter = 0; | ||||
| //同一天,算一天 | //同一天,算一天 | ||||
| if(sd.format(billTimeVo.getStartDate()).equals(sd.format(billTimeVo.getEndDate()))){ | if(sd.format(billTimeVo.getStartDate()).equals(sd.format(billTimeVo.getEndDate()))){ | ||||
| needpayFront = getNeedPayMoney(wxRentContract,priceArrs[index-1],billTimeVo.getStartDate(),endDate,i,billTimeVoList.size(),saveDb,dayType,receivePeriod,false); | |||||
| needpayFront = getNeedPayMoney(wxRentContract,priceArrs[index-1],billTimeVo.getStartDate(),endDate,i,billTimeVoList.size(),saveDb,dayType,receivePeriod,false,false); | |||||
| }else{ | }else{ | ||||
| if(billTimeVo.getStartDate().before(endDate)){ | if(billTimeVo.getStartDate().before(endDate)){ | ||||
| if (EnumRentContractType.RENT_BY_JOINT.getCode().equals(wxRentContract.getType()) && EnumMissTimeType.PERIOD.getCode().equals(wxRentContract.getBusDiscountTime())) { | if (EnumRentContractType.RENT_BY_JOINT.getCode().equals(wxRentContract.getType()) && EnumMissTimeType.PERIOD.getCode().equals(wxRentContract.getBusDiscountTime())) { | ||||
| //设置跳点率为年周期 price不变 | //设置跳点率为年周期 price不变 | ||||
| needpayFront = priceArrs[index - 1]; | needpayFront = priceArrs[index - 1]; | ||||
| }else { | }else { | ||||
| needpayFront = getNeedPayMoney(wxRentContract, priceArrs[index - 1], billTimeVo.getStartDate(), DateUtils.getDaySet(endDate, Calendar.DATE, -1), i, billTimeVoList.size(), saveDb, dayType, receivePeriod,true); | |||||
| needpayAfter = getNeedPayMoney(wxRentContract, priceArrs[index], endDate, billTimeVo.getEndDate(), i, billTimeVoList.size(), saveDb, dayType, receivePeriod,true); | |||||
| needpayFront = getNeedPayMoney(wxRentContract, priceArrs[index - 1], billTimeVo.getStartDate(), DateUtils.getDaySet(endDate, Calendar.DATE, -1), i, billTimeVoList.size(), saveDb, dayType, receivePeriod,true,false); | |||||
| needpayAfter = getNeedPayMoney(wxRentContract, priceArrs[index], endDate, billTimeVo.getEndDate(), i, billTimeVoList.size(), saveDb, dayType, receivePeriod,true,false); | |||||
| } | } | ||||
| }else{ | }else{ | ||||
| needpayFront = getNeedPayMoney(wxRentContract, priceArrs[index], billTimeVo.getStartDate(), billTimeVo.getEndDate(), i, billTimeVoList.size(), saveDb,dayType,receivePeriod,false); | |||||
| //如果是按自然月,则这一年和下一年交叉部分需要重新计算 | |||||
| if(wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())) { | |||||
| Date currentYearRentDate = getCurrentYearRentDate(endDate,wxRentContract.getRentalStartDate()); | |||||
| needpayFront = getNeedPayMoney(wxRentContract, priceArrs[index - 1], endDate, DateUtils.getDaySet(currentYearRentDate, Calendar.DATE, -1), i, billTimeVoList.size(), saveDb, dayType, receivePeriod,true,true); | |||||
| needpayAfter = getNeedPayMoney(wxRentContract, priceArrs[index], currentYearRentDate, billTimeVo.getEndDate(), i, billTimeVoList.size(), saveDb, dayType, receivePeriod,true,true); | |||||
| }else { | |||||
| //按账单日 | |||||
| needpayFront = getNeedPayMoney(wxRentContract, priceArrs[index], billTimeVo.getStartDate(), billTimeVo.getEndDate(), i, billTimeVoList.size(), saveDb,dayType,receivePeriod,false,false); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| needpay = needpayFront+needpayAfter; | needpay = needpayFront+needpayAfter; | ||||
| @@ -1466,7 +1487,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| //计算金额 | //计算金额 | ||||
| if(!flag){ | if(!flag){ | ||||
| needpay = getNeedPayMoney(wxRentContract, priceArrs[index], billTimeVo.getStartDate(), billTimeVo.getEndDate(), i, billTimeVoList.size(),saveDb,dayType,receivePeriod,false); | |||||
| needpay = getNeedPayMoney(wxRentContract, priceArrs[index], billTimeVo.getStartDate(), billTimeVo.getEndDate(), i, billTimeVoList.size(),saveDb,dayType,receivePeriod,false,false); | |||||
| } | } | ||||
| WxBillRent wxBillRent = new WxBillRent(); | WxBillRent wxBillRent = new WxBillRent(); | ||||
| @@ -1519,13 +1540,16 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| return resultMap; | return resultMap; | ||||
| } | } | ||||
| public long getNeedPayMoney(WxRentContract wxRentContract,long price,Date startDate,Date endDate,int i,int billTimeVoListSize,boolean saveDb,int dayType,int receivePeriod,boolean part){ | |||||
| public long getNeedPayMoney(WxRentContract wxRentContract,long price,Date startDate,Date endDate,int i,int billTimeVoListSize,boolean saveDb,int dayType,int receivePeriod,boolean part,boolean monthCalDay){ | |||||
| long needpay; | long needpay; | ||||
| //按日 | //按日 | ||||
| if (wxRentContract.getPriceUnit().equals(EnumPriceUnit.D.getCode())){ | if (wxRentContract.getPriceUnit().equals(EnumPriceUnit.D.getCode())){ | ||||
| Double priceD = new Double(price); | Double priceD = new Double(price); | ||||
| double needpayD = WxRentContractServiceImpl.getNeedPay(0,priceD,startDate,endDate); | double needpayD = WxRentContractServiceImpl.getNeedPay(0,priceD,startDate,endDate); | ||||
| needpay = new Double(needpayD).longValue(); | |||||
| //取整 | |||||
| //needpay = new Double(needpayD).longValue(); | |||||
| //四舍五入 | |||||
| needpay = new BigDecimal(needpayD).setScale(0, BigDecimal.ROUND_HALF_UP).longValue(); | |||||
| }else{ | }else{ | ||||
| Double priceD = new Double(price); | Double priceD = new Double(price); | ||||
| if (EnumRentContractType.RENT_BY_JOINT.getCode().equals(wxRentContract.getType())) { | if (EnumRentContractType.RENT_BY_JOINT.getCode().equals(wxRentContract.getType())) { | ||||
| @@ -1547,7 +1571,8 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| //生成金额直接计算 | //生成金额直接计算 | ||||
| if(!saveDb){ | if(!saveDb){ | ||||
| needpay = new Double(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,part)).longValue(); | |||||
| //needpay = new Double(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,part)).longValue(); | |||||
| needpay = new BigDecimal(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,part)).setScale(0, BigDecimal.ROUND_HALF_UP).longValue(); | |||||
| return needpay; | return needpay; | ||||
| } | } | ||||
| @@ -1564,7 +1589,8 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| int months = getMonths(sdM.format(startDate)+"-01",sdM.format(DateUtils.getDaySet(endDate,Calendar.DATE,1))+"-01"); | int months = getMonths(sdM.format(startDate)+"-01",sdM.format(DateUtils.getDaySet(endDate,Calendar.DATE,1))+"-01"); | ||||
| needpay = new Double(months * priceD).longValue(); | needpay = new Double(months * priceD).longValue(); | ||||
| }else{ | }else{ | ||||
| needpay = new Double(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,false)).longValue(); | |||||
| //needpay = new Double(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,false)).longValue(); | |||||
| needpay = new BigDecimal(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,false)).setScale(0, BigDecimal.ROUND_HALF_UP).longValue(); | |||||
| } | } | ||||
| }else if(i == 0){//第一期 | }else if(i == 0){//第一期 | ||||
| if(wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())){ | if(wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())){ | ||||
| @@ -1573,7 +1599,8 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| months++; | months++; | ||||
| needpay = new Double(months * priceD).longValue(); | needpay = new Double(months * priceD).longValue(); | ||||
| }else{ | }else{ | ||||
| needpay = new Double(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,false)).longValue(); | |||||
| //needpay = new Double(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,false)).longValue(); | |||||
| needpay = new BigDecimal(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,false)).setScale(0, BigDecimal.ROUND_HALF_UP).longValue(); | |||||
| } | } | ||||
| }else{ | }else{ | ||||
| if(isFirstDay(startDate)){ | if(isFirstDay(startDate)){ | ||||
| @@ -1583,7 +1610,8 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| } | } | ||||
| needpay = new Double(months * priceD).longValue(); | needpay = new Double(months * priceD).longValue(); | ||||
| }else{ | }else{ | ||||
| needpay = new Double(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,false)).longValue(); | |||||
| //needpay = new Double(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,false)).longValue(); | |||||
| needpay = new BigDecimal(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,false)).setScale(0, BigDecimal.ROUND_HALF_UP).longValue(); | |||||
| } | } | ||||
| } | } | ||||
| }else{//中间 | }else{//中间 | ||||
| @@ -1591,12 +1619,18 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| if(isFirstDay(startDate)){ | if(isFirstDay(startDate)){ | ||||
| months++; | months++; | ||||
| } | } | ||||
| needpay = new Double(months * priceD).longValue(); | |||||
| //如果当月费用需要按天计算 | |||||
| if (monthCalDay) { | |||||
| //needpay = new Double(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,false)).longValue(); | |||||
| needpay = new BigDecimal(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,false)).setScale(0, BigDecimal.ROUND_HALF_UP).longValue(); | |||||
| }else { | |||||
| needpay = new Double(months * priceD).longValue(); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| return needpay; | return needpay; | ||||
| } | } | ||||
| public void setExpiredDay(WxBillRent wxBillRent,int dayType, int receivePeriod){ | public void setExpiredDay(WxBillRent wxBillRent,int dayType, int receivePeriod){ | ||||
| //截止收租日在当前时间之前 | //截止收租日在当前时间之前 | ||||
| Date date = new Date(); | Date date = new Date(); | ||||
| @@ -3288,12 +3322,4 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| return count; | return count; | ||||
| } | } | ||||
| public static void main(String[] args) { | |||||
| String s = "{\"siteMoney\":\"2\",\"facilityMoney\":\"3\",\"administratorMoney\":\"4\"}"; | |||||
| JSONObject jsonObject = JSONObject.parseObject(s); | |||||
| String siteMoney = jsonObject.getString("siteMoney"); | |||||
| System.out.println(siteMoney); | |||||
| } | |||||
| } | } | ||||
| @@ -535,4 +535,33 @@ | |||||
| and id = #{id} | and id = #{id} | ||||
| </select> | </select> | ||||
| <update id="updateStatusByTargetAd" parameterType="com.iformall.domain.po.WxCouponChannel"> | |||||
| update wx_coupon_channel | |||||
| set status=#{status}, update_date=#{updateDate} | |||||
| where status != #{status} | |||||
| and coupon_id = #{couponId} | |||||
| and target_ad = #{targetAd} | |||||
| <if test=" null != tenantId and '' != tenantId"> | |||||
| and `tenant_id` = #{tenantId} | |||||
| </if> | |||||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||||
| and `parent_tenant_id` = #{parentTenantId} | |||||
| </if> | |||||
| </update> | |||||
| <select id="selectCountExclude" parameterType="com.iformall.domain.po.WxCouponChannel" resultType="Integer"> | |||||
| select count(1) from wx_coupon_channel | |||||
| where status = #{status} | |||||
| and coupon_id = #{couponId} | |||||
| and id != #{id} | |||||
| and target_ad != #{targetAd} | |||||
| <if test=" null != tenantId and '' != tenantId"> | |||||
| and `tenant_id` = #{tenantId} | |||||
| </if> | |||||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||||
| and `parent_tenant_id` = #{parentTenantId} | |||||
| </if> | |||||
| </select> | |||||
| </mapper> | </mapper> | ||||
| @@ -60,6 +60,12 @@ | |||||
| <result column="product_type" jdbcType="INTEGER" property="productType"/> | <result column="product_type" jdbcType="INTEGER" property="productType"/> | ||||
| <result column="category_id" jdbcType="INTEGER" property="categoryId"/> | <result column="category_id" jdbcType="INTEGER" property="categoryId"/> | ||||
| <result column="goods_id" jdbcType="VARCHAR" property="goodsId"/> | <result column="goods_id" jdbcType="VARCHAR" property="goodsId"/> | ||||
| <result column="spu_id" jdbcType="VARCHAR" property="spuId"/> | |||||
| <result column="poi_status" jdbcType="INTEGER" property="poiStatus"/> | |||||
| <result column="status_desc" jdbcType="VARCHAR" property="statusDesc"/> | |||||
| <result column="last_status" jdbcType="INTEGER" property="lastStatus"/> | |||||
| <result column="last_status_desc" jdbcType="VARCHAR" property="lastStatusDesc"/> | |||||
| </resultMap> | </resultMap> | ||||
| <resultMap id="statisMap" type="com.iformall.domain.vo.WxCouponStatisVo"> | <resultMap id="statisMap" type="com.iformall.domain.vo.WxCouponStatisVo"> | ||||
| <id column="id" jdbcType="BIGINT" property="id"/> | <id column="id" jdbcType="BIGINT" property="id"/> | ||||
| @@ -115,7 +121,7 @@ | |||||
| </resultMap> | </resultMap> | ||||
| <sql id="allColumns"> | <sql id="allColumns"> | ||||
| distinct c.`id`,c.`tenant_id`,c.`parent_tenant_id`,c.`make_merchant_id`,c.`type`,c.`cover_img`,c.`cover_picture`,c.`detail_picture`, | |||||
| c.`id`,c.`tenant_id`,c.`parent_tenant_id`,c.`make_merchant_id`,c.`type`,c.`cover_img`,c.`cover_picture`,c.`detail_picture`, | |||||
| c.`title`,c.`sub_title`,c.`item_group`,c.`sale_price`,c.`freight_price`,c.`use_price`,c.`use_limit_rule`,c.`use_limit_quantity`,c.`send_type`, | c.`title`,c.`sub_title`,c.`item_group`,c.`sale_price`,c.`freight_price`,c.`use_price`,c.`use_limit_rule`,c.`use_limit_quantity`,c.`send_type`, | ||||
| c.`valid_type`,c.`valid_start_date`,c.`valid_end_date`,c.pick_start_date,c.pick_end_date,c.`valid_days`,c.`detail`,c.`price`,c.tail_price,c.orig_price,c.`unit`,c.`remain_inventory`,c.`inventory`, | c.`valid_type`,c.`valid_start_date`,c.`valid_end_date`,c.pick_start_date,c.pick_end_date,c.`valid_days`,c.`detail`,c.`price`,c.tail_price,c.orig_price,c.`unit`,c.`remain_inventory`,c.`inventory`, | ||||
| c.`remark`,c.`status`,c.`create_date`,c.`update_date`,c.`business`,c.`sub_business`,c.`support_transfer`,c.`subsidy_num`,c.`subsidy_type`, | c.`remark`,c.`status`,c.`create_date`,c.`update_date`,c.`business`,c.`sub_business`,c.`support_transfer`,c.`subsidy_num`,c.`subsidy_type`, | ||||
| @@ -476,13 +482,6 @@ | |||||
| <sql id="dynamicWhereConditionsForCoupon"> | <sql id="dynamicWhereConditionsForCoupon"> | ||||
| where c.is_del = 0 | |||||
| <if test=" null != targetAd "> | |||||
| and 0 = (select count(*) from wx_coupon_channel cc | |||||
| where c.`id` = cc.coupon_id | |||||
| and cc.status = 0 | |||||
| and cc.target_ad = #{targetAd}) | |||||
| </if> | |||||
| <if test=" null != id "> | <if test=" null != id "> | ||||
| and c.`id` = #{id} | and c.`id` = #{id} | ||||
| @@ -495,11 +494,6 @@ | |||||
| and c.`parent_tenant_id` = #{parentTenantId} | and c.`parent_tenant_id` = #{parentTenantId} | ||||
| </if> | </if> | ||||
| <if test=" null == type and null == types"> | |||||
| <!-- and ( c.`type` < 7 or c.`type` = 10 ) --> | |||||
| and c.`type` in (1,2,3,4,5,6,10,11,12,66) | |||||
| </if> | |||||
| <if test=" null != type "> | <if test=" null != type "> | ||||
| and c.`type` = #{type} | and c.`type` = #{type} | ||||
| </if> | </if> | ||||
| @@ -647,14 +641,17 @@ | |||||
| and c.`merchant_type` = #{merchantType} | and c.`merchant_type` = #{merchantType} | ||||
| </if> | </if> | ||||
| <if test=" null != merchantId "> | |||||
| and cm.`merchant_id` = #{merchantId} | |||||
| </if> | |||||
| <if test=" null != giftList"> | <if test=" null != giftList"> | ||||
| and JSON_CONTAINS(c.gift_list,json_array(#{giftList})) | and JSON_CONTAINS(c.gift_list,json_array(#{giftList})) | ||||
| </if> | </if> | ||||
| <if test=" null != targetAd "> | |||||
| and 0 = (select count(*) from wx_coupon_channel cc | |||||
| where c.`id` = cc.coupon_id | |||||
| and cc.status = 0 | |||||
| and cc.target_ad = #{targetAd}) | |||||
| </if> | |||||
| <if test=" null != ids "> | <if test=" null != ids "> | ||||
| and c.id in | and c.id in | ||||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | ||||
| @@ -676,15 +673,34 @@ | |||||
| </foreach> | </foreach> | ||||
| </if> | </if> | ||||
| <if test=" null != sortColumns">order by ${sortColumns}</if> | |||||
| </sql> | </sql> | ||||
| <select id="findCouponList" parameterType="com.iformall.domain.po.WxCoupon" resultMap="BaseResultMap"> | <select id="findCouponList" parameterType="com.iformall.domain.po.WxCoupon" resultMap="BaseResultMap"> | ||||
| select | select | ||||
| <include refid="allColumns"/> | <include refid="allColumns"/> | ||||
| <if test="plat != null and plat == 3"> | |||||
| ,poi.spu_id,poi.status poi_status,poi.status_desc,poi.last_status,poi.last_status_desc | |||||
| </if> | |||||
| from wx_coupon c | from wx_coupon c | ||||
| left join wx_coupon_merchant cm on c.id = cm.product_id and cm.status = 0 | |||||
| <if test="plat != null and plat == 3"> | |||||
| left join tt_coupon_channel_poi poi on poi.id = c.id | |||||
| </if> | |||||
| where c.is_del = 0 | |||||
| <if test="plat != null and plat == 3"> | |||||
| <if test=" null != spuId and '' != spuId"> | |||||
| and poi.`spu_id` = #{spuId} | |||||
| </if> | |||||
| <if test=" null != poiStatus"> | |||||
| and poi.`status` = #{poiStatus} | |||||
| </if> | |||||
| <if test=" null != lastStatus"> | |||||
| and poi.`last_status` = #{lastStatus} | |||||
| </if> | |||||
| </if> | |||||
| <include refid="dynamicWhereConditionsForCoupon"/> | <include refid="dynamicWhereConditionsForCoupon"/> | ||||
| <if test=" null != sortColumns">order by ${sortColumns}</if> | |||||
| <if test="null != limitStart and null != limitEnd"> | <if test="null != limitStart and null != limitEnd"> | ||||
| limit #{limitStart},#{limitEnd} | limit #{limitStart},#{limitEnd} | ||||
| @@ -693,9 +709,25 @@ | |||||
| <select id="findCouponListCount" parameterType="com.iformall.domain.po.WxCoupon" resultType="Integer"> | <select id="findCouponListCount" parameterType="com.iformall.domain.po.WxCoupon" resultType="Integer"> | ||||
| select | select | ||||
| count(distinct c.id) | |||||
| count(c.id) | |||||
| from wx_coupon c | from wx_coupon c | ||||
| left join wx_coupon_merchant cm on c.id = cm.product_id and cm.status = 0 | |||||
| <if test="plat != null and plat == 3"> | |||||
| left join tt_coupon_channel_poi poi on poi.id = c.id | |||||
| </if> | |||||
| where c.is_del = 0 | |||||
| <if test="plat != null and plat == 3"> | |||||
| <if test=" null != spuId and '' != spuId"> | |||||
| and poi.`spu_id` = #{spuId} | |||||
| </if> | |||||
| <if test=" null != poiStatus"> | |||||
| and poi.`status` = #{poiStatus} | |||||
| </if> | |||||
| <if test=" null != lastStatus"> | |||||
| and poi.`last_status` = #{lastStatus} | |||||
| </if> | |||||
| </if> | |||||
| <include refid="dynamicWhereConditionsForCoupon"/> | <include refid="dynamicWhereConditionsForCoupon"/> | ||||
| </select> | </select> | ||||
| @@ -207,9 +207,13 @@ | |||||
| and m.`parent_tenant_id` = #{parentTenantId} | and m.`parent_tenant_id` = #{parentTenantId} | ||||
| </if> | </if> | ||||
| </select> | </select> | ||||
| <update id="updateUnSubMall"> | |||||
| update wx_mall set parent_tenant_id = null where parent_tenant_id = #{parentTenantId} | |||||
| </update> | |||||
| <update id="undateSubmall"> | <update id="undateSubmall"> | ||||
| update wx_mall set parent_tenant_id = null where parent_tenant_id = #{parentTenantId} ; | |||||
| <if test="tenantIds != null and tenantIds.size > 0"> | <if test="tenantIds != null and tenantIds.size > 0"> | ||||
| update wx_mall set parent_tenant_id = #{parentTenantId} where tenant_id in | update wx_mall set parent_tenant_id = #{parentTenantId} where tenant_id in | ||||
| <foreach collection="tenantIds" item="item" index="index" open="(" | <foreach collection="tenantIds" item="item" index="index" open="(" | ||||