diff --git a/src/main/java/cn/com/tenlion/operator/controller/api/packageorder/PackageOrderController.java b/src/main/java/cn/com/tenlion/operator/controller/api/packageorder/PackageOrderController.java index 2cbc952..7c0cd00 100644 --- a/src/main/java/cn/com/tenlion/operator/controller/api/packageorder/PackageOrderController.java +++ b/src/main/java/cn/com/tenlion/operator/controller/api/packageorder/PackageOrderController.java @@ -5,6 +5,7 @@ import cn.com.tenlion.operator.pojo.vos.packageorder.PackageOrderWriteoffVO; import ink.wgink.annotation.CheckRequestBodyAnnotation; import ink.wgink.common.base.DefaultBaseController; import ink.wgink.common.component.SecurityComponent; +import ink.wgink.exceptions.SaveException; import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.pojo.ListPage; import ink.wgink.pojo.result.ErrorResult; @@ -42,7 +43,7 @@ public class PackageOrderController extends DefaultBaseController { @ApiOperation(value = "购买套餐包-订单", notes = "购买套餐包-订单接口") @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) @PostMapping("buy/{infoId}") - public SuccessResultData save(@PathVariable String infoId) { + public SuccessResultData save(@PathVariable String infoId) throws Exception { try{ PackageOrderAppVO vo = new PackageOrderAppVO(); vo.setUserId(securityComponent.getCurrentUser().getUserId()); diff --git a/src/main/java/cn/com/tenlion/operator/pojo/dtos/packageinfo/PackageInfoAppDTO.java b/src/main/java/cn/com/tenlion/operator/pojo/dtos/packageinfo/PackageInfoAppDTO.java index 084d891..bb33b50 100644 --- a/src/main/java/cn/com/tenlion/operator/pojo/dtos/packageinfo/PackageInfoAppDTO.java +++ b/src/main/java/cn/com/tenlion/operator/pojo/dtos/packageinfo/PackageInfoAppDTO.java @@ -21,6 +21,8 @@ public class PackageInfoAppDTO { private String packageName; @ApiModelProperty(name = "packageType", value = "类型 MATERIAL 写材料 . ALL 全托管") private String packageType; + @ApiModelProperty(name = "packageCatalog", value = "类目") + private String packageCatalog; @ApiModelProperty(name = "packageMode", value = "可购买次数 single(每个用户可购买1次), all(不限)") private String packageMode; @ApiModelProperty(name = "packageOriginalPrice", value = "原价/单位分") @@ -40,6 +42,14 @@ public class PackageInfoAppDTO { @ApiModelProperty(name = "createTime", value = "") private String createTime; + public String getPackageCatalog() { + return packageCatalog == null ? "" : packageCatalog.trim(); + } + + public void setPackageCatalog(String packageCatalog) { + this.packageCatalog = packageCatalog; + } + public String getPackageExpire() { return packageExpire == null ? "" : packageExpire.trim(); } diff --git a/src/main/java/cn/com/tenlion/operator/pojo/dtos/packageinfo/PackageInfoDTO.java b/src/main/java/cn/com/tenlion/operator/pojo/dtos/packageinfo/PackageInfoDTO.java index 9e7b925..8c9dc47 100644 --- a/src/main/java/cn/com/tenlion/operator/pojo/dtos/packageinfo/PackageInfoDTO.java +++ b/src/main/java/cn/com/tenlion/operator/pojo/dtos/packageinfo/PackageInfoDTO.java @@ -29,6 +29,8 @@ public class PackageInfoDTO { private String packageType; @ApiModelProperty(name = "packageMode", value = "可购买次数 single(每个用户可购买1次), infinite(不限)") private String packageMode; + @ApiModelProperty(name = "packageCatalog", value = "类目") + private String packageCatalog; @ApiModelProperty(name = "packageOriginalPrice", value = "原价/单位分") private Integer packageOriginalPrice; @ApiModelProperty(name = "packageMoney", value = "套餐价/单位分") @@ -70,6 +72,14 @@ public class PackageInfoDTO { @ApiModelProperty(name = "userList", value = "") List userList = new ArrayList<>(); + public String getPackageCatalog() { + return packageCatalog == null ? "" : packageCatalog.trim(); + } + + public void setPackageCatalog(String packageCatalog) { + this.packageCatalog = packageCatalog; + } + public String getPackageExpire() { return packageExpire == null ? "" : packageExpire.trim(); } diff --git a/src/main/java/cn/com/tenlion/operator/pojo/vos/packageinfo/PackageInfoVO.java b/src/main/java/cn/com/tenlion/operator/pojo/vos/packageinfo/PackageInfoVO.java index 7241836..91f04dd 100644 --- a/src/main/java/cn/com/tenlion/operator/pojo/vos/packageinfo/PackageInfoVO.java +++ b/src/main/java/cn/com/tenlion/operator/pojo/vos/packageinfo/PackageInfoVO.java @@ -29,6 +29,8 @@ public class PackageInfoVO { @ApiModelProperty(name = "packageType", value = "类型写材料 . 全托管等的枚举名") @CheckEmptyAnnotation(name = "类型") private String packageType; + @ApiModelProperty(name = "packageCatalog", value = "类目") + private String packageCatalog; @ApiModelProperty(name = "packageMode", value = "可购买次数 single(每个用户可购买1次), infinite(不限)") @CheckEmptyAnnotation(name = "限制") private String packageMode; @@ -69,6 +71,14 @@ public class PackageInfoVO { @ApiModelProperty(name = "userList", value = "") List userList = new ArrayList<>(); + public String getPackageCatalog() { + return packageCatalog == null ? "" : packageCatalog.trim(); + } + + public void setPackageCatalog(String packageCatalog) { + this.packageCatalog = packageCatalog; + } + public Integer getPackageExpire() { return packageExpire == null ? 0 : packageExpire; } diff --git a/src/main/java/cn/com/tenlion/operator/service/packageorder/IPackageOrderService.java b/src/main/java/cn/com/tenlion/operator/service/packageorder/IPackageOrderService.java index 3dd2cc0..1e16480 100644 --- a/src/main/java/cn/com/tenlion/operator/service/packageorder/IPackageOrderService.java +++ b/src/main/java/cn/com/tenlion/operator/service/packageorder/IPackageOrderService.java @@ -180,7 +180,7 @@ public interface IPackageOrderService { */ SuccessResultList> listPage(ListPage page); - List listByUserAndInfo(String packageInfoId, String userId); + List listByUserAndInfo(String packageCatalog, String packageInfoId, String userId); /** * 套餐包-订单统计 diff --git a/src/main/java/cn/com/tenlion/operator/service/packageorder/impl/PackageOrderServiceImpl.java b/src/main/java/cn/com/tenlion/operator/service/packageorder/impl/PackageOrderServiceImpl.java index 7d3c7cc..99635b8 100644 --- a/src/main/java/cn/com/tenlion/operator/service/packageorder/impl/PackageOrderServiceImpl.java +++ b/src/main/java/cn/com/tenlion/operator/service/packageorder/impl/PackageOrderServiceImpl.java @@ -182,9 +182,11 @@ public class PackageOrderServiceImpl extends DefaultBaseService implements IPack } @Override - public List listByUserAndInfo(String packageInfoId, String userId) { + public List listByUserAndInfo(String packageCatalog, String packageInfoId, String userId) { Map params = super.getHashMap(2); params.put("packageInfoId", packageInfoId); + if(!StringUtils.isEmpty(packageCatalog)) + params.put("packageCatalog", packageCatalog); params.put("notCheckStatus", "不校验删除状态"); params.put("userId", userId); return packageOrderDao.list(params); @@ -205,19 +207,10 @@ public class PackageOrderServiceImpl extends DefaultBaseService implements IPack return false; } PackageInfoAppDTO infoAppDTO = orderDTO.getPackageInfoAppDTO(); - // 仅限购买1次的 - if(infoAppDTO.getPackageMode().equals("single")) { - List list = listByUserAndInfo(orderDTO.getPackageInfoId(), orderDTO.getCreator()); - Boolean exists = false; - for(PackageOrderDTO dto : list) { - if(dto.getPackagePayStatus().equals("1")) { - exists = true; - } - } - if (exists) { - return false; - } - } + + // 校验是否可以购买 + checkPay(infoAppDTO, orderDTO); + /** * 1. 更改到账时间 , 状态 */ @@ -241,19 +234,10 @@ public class PackageOrderServiceImpl extends DefaultBaseService implements IPack throw new SaveException("该套餐订单已购买"); } PackageInfoAppDTO infoAppDTO = orderDTO.getPackageInfoAppDTO(); - // 仅限购买1次的 - if(infoAppDTO.getPackageMode().equals("single")) { - List list = listByUserAndInfo(orderDTO.getPackageInfoId(), orderDTO.getCreator()); - Boolean exists = false; - for(PackageOrderDTO dto : list) { - if(dto.getPackagePayStatus().equals("1")) { - exists = true; - } - } - if (exists) { - throw new SaveException("该套餐只允许购买一次"); - } - } + + // 校验是否可以购买 + checkPay(infoAppDTO, orderDTO); + /** * 1. 更改到账时间 , 状态 */ @@ -366,6 +350,36 @@ public class PackageOrderServiceImpl extends DefaultBaseService implements IPack } return accessToken; } + + private void checkPay(PackageInfoAppDTO infoAppDTO, PackageOrderDTO orderDTO) { + // 仅限购买1次的 + if(infoAppDTO.getPackageMode().equals("single")) { + List list = listByUserAndInfo("", orderDTO.getPackageInfoId(), orderDTO.getCreator()); + + Boolean exists = false; + for(PackageOrderDTO dto : list) { + if(dto.getPackagePayStatus().equals("1")) { + exists = true; + } + } + if (exists) { + throw new SaveException("该套餐只允许购买一次"); + } + } + // 仅限同類目购买1次的 + if(infoAppDTO.getPackageMode().equals("catalog_single")) { + List list = listByUserAndInfo(infoAppDTO.getPackageCatalog(), orderDTO.getPackageInfoId(), orderDTO.getCreator()); + Boolean exists = false; + for(PackageOrderDTO dto : list) { + if(dto.getPackagePayStatus().equals("1")) { + exists = true; + } + } + if (exists) { + throw new SaveException("该类套餐只允许购买一次"); + } + } + } @Autowired private SystemApiPathProperties apiPathProperties; @Override @@ -383,19 +397,9 @@ public class PackageOrderServiceImpl extends DefaultBaseService implements IPack throw new SaveException("该套餐订单已购买"); } PackageInfoAppDTO infoAppDTO = orderDTO.getPackageInfoAppDTO(); - // 仅限购买1次的 - if(infoAppDTO.getPackageMode().equals("single")) { - List list = listByUserAndInfo(orderDTO.getPackageInfoId(), orderDTO.getCreator()); - Boolean exists = false; - for(PackageOrderDTO dto : list) { - if(dto.getPackagePayStatus().equals("1")) { - exists = true; - } - } - if (exists) { - throw new SaveException("该套餐只允许购买一次"); - } - } + + // 校验是否可以购买 + checkPay(infoAppDTO, orderDTO); /** * 扣钱 diff --git a/src/main/resources/mybatis/mapper-operator/accountrecharge/account-recharge-mapper.xml b/src/main/resources/mybatis/mapper-operator/accountrecharge/account-recharge-mapper.xml index 92c6d09..5775362 100644 --- a/src/main/resources/mybatis/mapper-operator/accountrecharge/account-recharge-mapper.xml +++ b/src/main/resources/mybatis/mapper-operator/accountrecharge/account-recharge-mapper.xml @@ -529,6 +529,14 @@ t1.recharge_remark FROM operator_account_recharge t1 + LEFT JOIN + sys_user t2 + ON + t1.account_id = t2.user_id + LEFT JOIN + user_info t3 + ON + t2.user_id = t3.user_id WHERE t1.is_delete = 0 @@ -552,6 +560,12 @@ AND ( + t2.user_name LIKE CONCAT('%', #{keywords}, '%') + OR + t2.user_username LIKE CONCAT('%', #{keywords}, '%') + OR + t3.user_info_name LIKE CONCAT('%', #{keywords}, '%') + OR t1.recharge_check_remark LIKE CONCAT('%', #{keywords}, '%') ) @@ -589,6 +603,14 @@ SUM(recharge_money) FROM operator_account_recharge t1 + LEFT JOIN + sys_user t2 + ON + t1.account_id = t2.user_id + LEFT JOIN + user_info t3 + ON + t2.user_id = t3.user_id WHERE t1.is_delete = 0 @@ -611,8 +633,14 @@ AND ( - - t1.recharge_check_remark LIKE CONCAT('%', #{keywords}, '%') + + t2.user_name LIKE CONCAT('%', #{keywords}, '%') + OR + t2.user_username LIKE CONCAT('%', #{keywords}, '%') + OR + t3.user_info_name LIKE CONCAT('%', #{keywords}, '%') + OR + t1.recharge_check_remark LIKE CONCAT('%', #{keywords}, '%') ) diff --git a/src/main/resources/mybatis/mapper-operator/userinfo/userinfo-mapper.xml b/src/main/resources/mybatis/mapper-operator/userinfo/userinfo-mapper.xml index 50bb77e..7c65e0f 100644 --- a/src/main/resources/mybatis/mapper-operator/userinfo/userinfo-mapper.xml +++ b/src/main/resources/mybatis/mapper-operator/userinfo/userinfo-mapper.xml @@ -34,10 +34,10 @@ t3.account_money FROM sys_user t2 - LEFT JOIN + LEFT JOIN operator_account t3 - ON - t2.user_id = t3.user_id + ON + t2.user_id = t3.user_id WHERE t2.is_delete = 0 AND t2.user_id = #{userId} diff --git a/src/main/resources/mybatis/mapper/packageinfo/package-info-mapper.xml b/src/main/resources/mybatis/mapper/packageinfo/package-info-mapper.xml index a291698..773c210 100644 --- a/src/main/resources/mybatis/mapper/packageinfo/package-info-mapper.xml +++ b/src/main/resources/mybatis/mapper/packageinfo/package-info-mapper.xml @@ -7,6 +7,7 @@ + @@ -23,6 +24,7 @@ + @@ -104,6 +106,7 @@ package_name, package_expire, package_type, + package_catalog, package_mode, package_original_price, package_money, @@ -129,6 +132,7 @@ #{packageName}, #{packageExpire}, #{packageType}, + #{packageCatalog}, #{packageMode}, #{packageOriginalPrice}, #{packageMoney}, @@ -246,6 +250,7 @@ package_order = #{packageOrder}, + package_catalog = #{packageCatalog}, package_description = #{packageDescription}, gmt_modified = #{gmtModified}, modifier = #{modifier}, @@ -261,6 +266,7 @@ t1.package_expire, t1.package_type, t1.package_mode, + t1.package_catalog, t1.package_original_price, t1.package_money, t1.package_count, @@ -366,6 +372,7 @@ t1.package_expire, t1.package_name, t1.package_type, + t1.package_catalog, t1.package_mode, t1.package_original_price, t1.package_money, @@ -401,12 +408,20 @@ ) OR ( - t1.package_mode = 'single' AND t1.package_limit_users != '' AND t1.package_limit_users LIKE CONCAT('%', #{userId} ,'%') AND 1 > (SELECT COUNT(1) FROM operator_package_order t2 WHERE t1.package_info_id = t2.package_info_id AND t2.package_pay_status = '1' AND t2.creator = #{userId}) + t1.package_mode = 'single' AND t1.package_limit_users != '' AND t1.package_limit_users LIKE CONCAT('%', #{userId} ,'%') AND 1 > (SELECT COUNT(1) FROM operator_package_order t2 WHERE t1.package_info_id = t2.package_info_id AND t2.package_pay_status = '1' AND t2.creator = #{userId}) ) OR ( - t1.package_mode = 'single' AND t1.package_limit_users = '' AND 1 > (SELECT COUNT(1) FROM operator_package_order t2 WHERE t1.package_info_id = t2.package_info_id AND t2.package_pay_status = '1' AND t2.creator = #{userId}) - ) + t1.package_mode = 'single' AND t1.package_limit_users = '' AND 1 > (SELECT COUNT(1) FROM operator_package_order t2 WHERE t1.package_info_id = t2.package_info_id AND t2.package_pay_status = '1' AND t2.creator = #{userId}) + ) + OR + ( + t1.package_mode = 'catalog_single' AND t1.package_limit_users != '' AND t1.package_limit_users LIKE CONCAT('%', #{userId} ,'%') AND 1 > (SELECT COUNT(1) FROM operator_package_order t2 LEFT JOIN operator_package_info t3 ON t2.package_info_id = t3.package_info_id WHERE t3.package_catalog = t1.package_catalog AND t2.package_pay_status = '1' AND t2.creator = #{userId}) + ) + OR + ( + t1.package_mode = 'catalog_single' AND t1.package_limit_users = '' AND 1 > (SELECT COUNT(1) FROM operator_package_order t2 LEFT JOIN operator_package_info t3 ON t2.package_info_id = t3.package_info_id WHERE t1.package_catalog = t3.package_catalog AND t2.package_pay_status = '1' AND t2.creator = #{userId}) + ) ) ORDER BY t1.package_order , t1.package_onlien_time DESC @@ -417,6 +432,7 @@ t1.package_expire, t1.package_name, t1.package_type, + t1.package_catalog, t1.package_mode, t1.package_original_price, t1.package_money, @@ -496,7 +512,7 @@ #{packageInfoIds[${index}]} - ORDER BY t1.package_order , t1.create_time DESC + ORDER BY t1.package_status DESC, t1.package_order , t1.create_time DESC diff --git a/src/main/resources/mybatis/mapper/packageorder/package-order-mapper.xml b/src/main/resources/mybatis/mapper/packageorder/package-order-mapper.xml index c6c2986..2e1ed10 100644 --- a/src/main/resources/mybatis/mapper/packageorder/package-order-mapper.xml +++ b/src/main/resources/mybatis/mapper/packageorder/package-order-mapper.xml @@ -345,7 +345,13 @@ AND t1.package_pay_status = #{packagePayStatus} - AND t1.package_info_id = #{packageInfoId} + AND + ( + t1.package_info_id = #{packageInfoId} + + OR t4.package_catalog = #{packageCatalog} + + ) AND t4.package_type = #{packageType} diff --git a/src/main/resources/templates/accountrecharge/recharge-list.html b/src/main/resources/templates/accountrecharge/recharge-list.html index 63cfd5b..9b6264f 100644 --- a/src/main/resources/templates/accountrecharge/recharge-list.html +++ b/src/main/resources/templates/accountrecharge/recharge-list.html @@ -21,6 +21,9 @@
+
+ +
@@ -204,6 +207,7 @@ // 修复:使用正确的选择器获取单选按钮的值 var orderMode = $('input[name="orderMode"]:checked').val(); var data = { + keywords: $('#keywords').val(), startTime: $('#startTime').val(), orderMode: orderMode, endTime: $('#endTime').val(), diff --git a/src/main/resources/templates/packageinfo/list.html b/src/main/resources/templates/packageinfo/list.html index f68d3e6..dc3520c 100644 --- a/src/main/resources/templates/packageinfo/list.html +++ b/src/main/resources/templates/packageinfo/list.html @@ -126,12 +126,15 @@ return rowData; } }, - {field: 'packageMode', width: 180, title: '限制', align:'center', + {field: 'packageMode', width: 200, title: '限制', align:'center', templet: function(row) { var rowData = row[this.field]; if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { return '-'; } + if(rowData == 'catalog_single') { + return '同类目每个用户可购买1次'; + } if(rowData == 'single') { return '每个用户可购买1次'; } diff --git a/src/main/resources/templates/packageinfo/save.html b/src/main/resources/templates/packageinfo/save.html index 98641bd..cf250e1 100644 --- a/src/main/resources/templates/packageinfo/save.html +++ b/src/main/resources/templates/packageinfo/save.html @@ -56,8 +56,9 @@
- +
+
@@ -98,7 +99,7 @@
--> -
+
@@ -106,6 +107,20 @@
+
+
+ +
+ +
+
@@ -167,6 +182,23 @@ var wangEditorObj = {}; var viewerObj = {}; + function initPackageTypSelect(value) { + top.restAjax.get(top.restAjax.path('app/data/listbyparentidrelease/74533f1f-96c9-48c2-9e79-73c5194224c7', []), {}, null, function(code, data, args) { + console.log(data); + laytpl(document.getElementById('packageCatalogSelectTemplate').innerHTML).render(data, function(html) { + document.getElementById('packageCatalogSelectTemplateBox').innerHTML = html; + }); + form.render('select', 'packageCatalogSelectTemplateBox'); + + var selectObj = {}; + selectObj['packageCatalog'] = value; + form.val('dataForm', selectObj); + }, function(code, data) { + top.dialog.msg(data.msg); + }); + } + initPackageTypSelect(""); + var selectedUsers = []; var selectedUserIds = ""; $(document).on("click", ".selectUserAPI", function(data) { @@ -174,7 +206,7 @@ top.dialog.dialogData.selectedUsers = selectedUsers; top.layer.open({ type: 2, - title: "选择优惠券发放用户", + title: "选择套餐包定向用户", closeBtn: 1, area: ['90%', '90%'], shadeClose: false, diff --git a/src/main/resources/templates/packageinfo/update.html b/src/main/resources/templates/packageinfo/update.html index ff7f9b1..3d0c36d 100644 --- a/src/main/resources/templates/packageinfo/update.html +++ b/src/main/resources/templates/packageinfo/update.html @@ -55,8 +55,9 @@
- +
+
@@ -97,7 +98,7 @@
--> -
+
@@ -105,6 +106,20 @@
+
+
+ +
+ +
+
@@ -167,6 +182,23 @@ var viewerObj = {}; var packageInfoId = top.restAjax.params(window.location.href).packageInfoId; + + function initPackageTypSelect(value) { + top.restAjax.get(top.restAjax.path('app/data/listbyparentidrelease/74533f1f-96c9-48c2-9e79-73c5194224c7', []), {}, null, function(code, data, args) { + console.log(data); + laytpl(document.getElementById('packageCatalogSelectTemplate').innerHTML).render(data, function(html) { + document.getElementById('packageCatalogSelectTemplateBox').innerHTML = html; + }); + form.render('select', 'packageCatalogSelectTemplateBox'); + + var selectObj = {}; + selectObj['packageCatalog'] = value; + form.val('dataForm', selectObj); + }, function(code, data) { + top.dialog.msg(data.msg); + }); + } + var selectedUsers = []; var selectedUserIds = ""; $(document).on("click", ".selectUserAPI", function(data) { @@ -174,7 +206,7 @@ top.dialog.dialogData.selectedUsers = selectedUsers; top.layer.open({ type: 2, - title: "选择优惠券发放用户", + title: "选择套餐包定向用户", closeBtn: 1, area: ['90%', '90%'], shadeClose: false, @@ -217,7 +249,7 @@ for(var i in data) { dataFormData[i] = data[i] +''; } - + initPackageTypSelect(data.packageCatalog); selectedUsers = data.userList; var phones = ""; $("#phone").val(phones);