diff --git a/src/main/java/com/budwk/app/zhgh/pointsmall/h5/index/PointsMallH5IndexController.java b/src/main/java/com/budwk/app/zhgh/pointsmall/h5/index/PointsMallH5IndexController.java new file mode 100644 index 00000000..6ece8aa1 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/pointsmall/h5/index/PointsMallH5IndexController.java @@ -0,0 +1,31 @@ +package com.budwk.app.zhgh.pointsmall.h5.index; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.budwk.app.base.result.Result; +import com.budwk.app.zhgh.pointsmall.supplier.service.PointsMallSupplierService; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; + +@IocBean +@Ok("json:full") +@At("/platform/h5/points-mall") +public class PointsMallH5IndexController { + + @Inject + private PointsMallSupplierService pointsMallSupplierService; + + @At("") + @Ok("beetl:/platform/zhghh5/points-mall/index.html") + @SaCheckPermission("h5.points.mall") + public void index() { + } + + @At("/supplierList") + @SaCheckPermission("h5.points.mall") + public Result supplierList(@Param("mallType") Integer mallType) { + return Result.success(pointsMallSupplierService.listByMallType(mallType)); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/pointsmall/h5/loveaid/PointsMallH5LoveAidController.java b/src/main/java/com/budwk/app/zhgh/pointsmall/h5/loveaid/PointsMallH5LoveAidController.java new file mode 100644 index 00000000..3ba88396 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/pointsmall/h5/loveaid/PointsMallH5LoveAidController.java @@ -0,0 +1,18 @@ +package com.budwk.app.zhgh.pointsmall.h5.loveaid; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; + +@IocBean +@Ok("json:full") +@At("/platform/h5/points-mall/loveAid") +public class PointsMallH5LoveAidController { + + @At("") + @Ok("beetl:/platform/zhghh5/points-mall/loveAid/index.html") + @SaCheckPermission("h5.points.mall") + public void index() { + } +} diff --git a/src/main/java/com/budwk/app/zhgh/pointsmall/h5/me/PointsMallH5MeController.java b/src/main/java/com/budwk/app/zhgh/pointsmall/h5/me/PointsMallH5MeController.java new file mode 100644 index 00000000..1143aea0 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/pointsmall/h5/me/PointsMallH5MeController.java @@ -0,0 +1,50 @@ +package com.budwk.app.zhgh.pointsmall.h5.me; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.result.Result; +import com.budwk.app.zhgh.pointsmall.points.service.PointsMallUserPointsService; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; + +@IocBean +@Ok("json:full") +@At("/platform/h5/points-mall/me") +public class PointsMallH5MeController { + + @Inject + private PointsMallUserPointsService pointsMallUserPointsService; + + @At("") + @Ok("beetl:/platform/zhghh5/points-mall/me/index.html") + @SaCheckPermission("h5.points.mall") + public void index() { + } + + @At("/points") + @SaCheckPermission("h5.points.mall") + public Result points(@Param("userId") String userId) { + return Result.success(pointsMallUserPointsService.availablePoints(currentUserId(userId))); + } + + @At("/userInfo") + @SaCheckPermission("h5.points.mall") + public Result userInfo(@Param("userId") String userId) { + return Result.success(pointsMallUserPointsService.userInfo(currentUserId(userId))); + } + + private String currentUserId(String userId) { + if (StrUtil.isNotBlank(userId)) { + return userId; + } + try { + return StpUtil.getLoginIdAsString(); + } catch (Exception e) { + return ""; + } + } +} diff --git a/src/main/java/com/budwk/app/zhgh/pointsmall/h5/movies/PointsMallH5MoviesController.java b/src/main/java/com/budwk/app/zhgh/pointsmall/h5/movies/PointsMallH5MoviesController.java new file mode 100644 index 00000000..488d3b43 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/pointsmall/h5/movies/PointsMallH5MoviesController.java @@ -0,0 +1,18 @@ +package com.budwk.app.zhgh.pointsmall.h5.movies; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; + +@IocBean +@Ok("json:full") +@At("/platform/h5/points-mall/movies") +public class PointsMallH5MoviesController { + + @At("") + @Ok("beetl:/platform/zhghh5/points-mall/movies/index.html") + @SaCheckPermission("h5.points.mall") + public void index() { + } +} diff --git a/src/main/java/com/budwk/app/zhgh/pointsmall/h5/order/PointsMallH5OrderController.java b/src/main/java/com/budwk/app/zhgh/pointsmall/h5/order/PointsMallH5OrderController.java new file mode 100644 index 00000000..b73e3676 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/pointsmall/h5/order/PointsMallH5OrderController.java @@ -0,0 +1,53 @@ +package com.budwk.app.zhgh.pointsmall.h5.order; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.stp.StpUtil; +import com.budwk.app.base.result.Result; +import com.budwk.app.zhgh.pointsmall.order.param.PointsMallMobileOrderPageParam; +import com.budwk.app.zhgh.pointsmall.order.service.PointsMallOrderService; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; + +@IocBean +@Ok("json:full") +@At("/platform/h5/points-mall/order") +public class PointsMallH5OrderController { + + @Inject + private PointsMallOrderService pointsMallOrderService; + + @At("") + @Ok("beetl:/platform/zhghh5/points-mall/order/index.html") + @SaCheckPermission("h5.points.mall") + public void index() { + } + + @At("/stateList") + @SaCheckPermission("h5.points.mall") + public Result stateList() { + return Result.success(pointsMallOrderService.mobileOrderStates()); + } + + @At("/pageData") + @SaCheckPermission("h5.points.mall") + public Result pageData(PointsMallMobileOrderPageParam param) { + return Result.success(pointsMallOrderService.mobileOrderPage(param, currentUserId())); + } + + @At("/supplierOrderUrl") + @SaCheckPermission("h5.points.mall") + public Result supplierOrderUrl(@Param("supplierId") String supplierId, @Param("orderId") String orderId, @Param("orderType") Integer orderType) { + return Result.success(pointsMallOrderService.supplierOrderUrl(supplierId, orderId, orderType)); + } + + private String currentUserId() { + try { + return StpUtil.getLoginIdAsString(); + } catch (Exception e) { + return ""; + } + } +} diff --git a/src/main/java/com/budwk/app/zhgh/pointsmall/order/param/PointsMallMobileOrderPageParam.java b/src/main/java/com/budwk/app/zhgh/pointsmall/order/param/PointsMallMobileOrderPageParam.java new file mode 100644 index 00000000..d77b17b5 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/pointsmall/order/param/PointsMallMobileOrderPageParam.java @@ -0,0 +1,15 @@ +package com.budwk.app.zhgh.pointsmall.order.param; + +import com.budwk.app.base.param.PageForm; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +public class PointsMallMobileOrderPageParam extends PageForm { + + private String supplierId; + private String orderId; + private String userId; + private Integer orderState; +} diff --git a/src/main/java/com/budwk/app/zhgh/pointsmall/order/service/PointsMallOrderService.java b/src/main/java/com/budwk/app/zhgh/pointsmall/order/service/PointsMallOrderService.java index 37b18908..612165e0 100644 --- a/src/main/java/com/budwk/app/zhgh/pointsmall/order/service/PointsMallOrderService.java +++ b/src/main/java/com/budwk/app/zhgh/pointsmall/order/service/PointsMallOrderService.java @@ -3,6 +3,7 @@ package com.budwk.app.zhgh.pointsmall.order.service; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.service.BaseService; import com.budwk.app.zhgh.pointsmall.order.models.PointsMallOrderMain; +import com.budwk.app.zhgh.pointsmall.order.param.PointsMallMobileOrderPageParam; import com.budwk.app.zhgh.pointsmall.supplier.models.PointsMallSupplier; import com.budwk.app.zhgh.pointsmall.order.param.PointsMallOrderPageParam; import org.nutz.dao.entity.Record; @@ -15,6 +16,12 @@ public interface PointsMallOrderService extends BaseService Pagination pageSub(PointsMallOrderPageParam param); + Pagination mobileOrderPage(PointsMallMobileOrderPageParam param, String defaultUserId); + + List mobileOrderStates(); + + Record supplierOrderUrl(String supplierId, String orderId, Integer orderType); + List listExchange(String mainOrderId); List listSubProducts(String orderId); diff --git a/src/main/java/com/budwk/app/zhgh/pointsmall/order/service/impl/PointsMallOrderServiceImpl.java b/src/main/java/com/budwk/app/zhgh/pointsmall/order/service/impl/PointsMallOrderServiceImpl.java index 8b27b678..247ab0e9 100644 --- a/src/main/java/com/budwk/app/zhgh/pointsmall/order/service/impl/PointsMallOrderServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/pointsmall/order/service/impl/PointsMallOrderServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.service.impl.BaseServiceImpl; import com.budwk.app.zhgh.pointsmall.order.models.PointsMallOrderMain; +import com.budwk.app.zhgh.pointsmall.order.param.PointsMallMobileOrderPageParam; import com.budwk.app.zhgh.pointsmall.supplier.models.PointsMallSupplier; import com.budwk.app.zhgh.pointsmall.order.param.PointsMallOrderPageParam; import com.budwk.app.zhgh.pointsmall.order.service.PointsMallOrderService; @@ -14,6 +15,7 @@ import org.nutz.dao.sql.Sql; import org.nutz.dao.Sqls; import org.nutz.ioc.loader.annotation.IocBean; +import java.util.Arrays; import java.util.List; @IocBean(args = {"refer:dao"}) @@ -62,6 +64,58 @@ public class PointsMallOrderServiceImpl extends BaseServiceImpl mobileOrderPage(PointsMallMobileOrderPageParam param, String defaultUserId) { + Cnd cnd = Cnd.where("o.delFlag", "=", false); + String userId = StrUtil.blankToDefault(param.getUserId(), defaultUserId); + if (StrUtil.isNotBlank(userId)) { + cnd.and("o.userId", "=", userId); + } + if (param.getOrderState() != null && param.getOrderState() >= 0) { + cnd.and("o.orderState", "=", param.getOrderState()); + } + if (StrUtil.isNotBlank(param.getSupplierId())) { + cnd.and("o.supplierId", "=", param.getSupplierId()); + } + if (StrUtil.isNotBlank(param.getOrderId())) { + cnd.and("o.orderId", "like", "%" + param.getOrderId() + "%"); + } + cnd.desc("o.orderCreateTime"); + Sql sql = Sqls.create("select o.*, s.supplierName, s.supplierOrderUrl, s.supplierReturnOrderUrl from points_mall_order_sub o left join points_mall_supplier s on o.supplierId = s.supplierId and s.delFlag = 0 $condition"); + sql.setCondition(cnd); + Pagination page = listPageMap(param.getPageNumber(), param.getPageSize(), sql); + for (Record item : page.getList()) { + item.put("productImgList", productImages(item.getString("orderId"))); + } + return page; + } + + @Override + public List mobileOrderStates() { + return Arrays.asList( + state(-1, "全部"), + state(0, "待付款"), + state(1, "已支付"), + state(2, "进行中"), + state(4, "已签收"), + state(5, "已完成"), + state(6, "换货"), + state(7, "退货") + ); + } + + @Override + public Record supplierOrderUrl(String supplierId, String orderId, Integer orderType) { + PointsMallSupplier supplier = dao().fetch(PointsMallSupplier.class, Cnd.where("supplierId", "=", supplierId).and("delFlag", "=", false)); + Record record = new Record(); + record.put("supplierOrderUrl", ""); + if (supplier != null) { + String url = orderType != null && orderType == 2 ? supplier.getSupplierReturnOrderUrl() : supplier.getSupplierOrderUrl(); + record.put("supplierOrderUrl", appendOrderId(url, orderId)); + } + return record; + } + @Override public List listExchange(String mainOrderId) { Cnd cnd = Cnd.where("e.delFlag", "=", false); @@ -95,4 +149,26 @@ public class PointsMallOrderServiceImpl extends BaseServiceImpl listSuppliers() { return dao().query(PointsMallSupplier.class, Cnd.where("delFlag", "=", false).asc("sortCode")); } + + private List productImages(String orderId) { + Sql sql = Sqls.create("select picInfo from points_mall_order_sub_product where orderSubId=@orderId and delFlag=0 and picInfo is not null and picInfo<>'' order by createdAt asc"); + sql.params().set("orderId", orderId); + sql.setCallback(Sqls.callback.strList()); + dao().execute(sql); + return sql.getList(String.class); + } + + private String appendOrderId(String url, String orderId) { + if (StrUtil.isBlank(url) || StrUtil.isBlank(orderId)) { + return url; + } + return url + (url.contains("?") ? "&" : "?") + "orderId=" + orderId; + } + + private Record state(Integer code, String name) { + Record record = new Record(); + record.put("code", code); + record.put("name", name); + return record; + } } diff --git a/src/main/java/com/budwk/app/zhgh/pointsmall/points/service/PointsMallUserPointsService.java b/src/main/java/com/budwk/app/zhgh/pointsmall/points/service/PointsMallUserPointsService.java index 684ae490..a3f49743 100644 --- a/src/main/java/com/budwk/app/zhgh/pointsmall/points/service/PointsMallUserPointsService.java +++ b/src/main/java/com/budwk/app/zhgh/pointsmall/points/service/PointsMallUserPointsService.java @@ -9,6 +9,7 @@ import com.budwk.app.zhgh.pointsmall.points.param.PointsMallUserPointsLogPagePar import com.budwk.app.zhgh.pointsmall.points.param.PointsMallUserPointsPageParam; import org.nutz.dao.entity.Record; +import java.math.BigDecimal; import java.util.List; public interface PointsMallUserPointsService extends BaseService { @@ -19,6 +20,10 @@ public interface PointsMallUserPointsService extends BaseService userIds(PointsMallUserPointsPageParam param); + BigDecimal availablePoints(String userId); + + Record userInfo(String userId); + void grant(PointsMallUserPointsChangeParam param); void deduction(PointsMallUserPointsChangeParam param); diff --git a/src/main/java/com/budwk/app/zhgh/pointsmall/points/service/impl/PointsMallUserPointsServiceImpl.java b/src/main/java/com/budwk/app/zhgh/pointsmall/points/service/impl/PointsMallUserPointsServiceImpl.java index 024ca23d..974989b8 100644 --- a/src/main/java/com/budwk/app/zhgh/pointsmall/points/service/impl/PointsMallUserPointsServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/pointsmall/points/service/impl/PointsMallUserPointsServiceImpl.java @@ -88,6 +88,28 @@ public class PointsMallUserPointsServiceImpl extends BaseServiceImpl listByMallType(Integer mallType); + void deleteByIds(List ids); } diff --git a/src/main/java/com/budwk/app/zhgh/pointsmall/supplier/service/impl/PointsMallSupplierServiceImpl.java b/src/main/java/com/budwk/app/zhgh/pointsmall/supplier/service/impl/PointsMallSupplierServiceImpl.java index 36782930..0060c8f6 100644 --- a/src/main/java/com/budwk/app/zhgh/pointsmall/supplier/service/impl/PointsMallSupplierServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/pointsmall/supplier/service/impl/PointsMallSupplierServiceImpl.java @@ -43,6 +43,16 @@ public class PointsMallSupplierServiceImpl extends BaseServiceImpl 0; } + @Override + public List listByMallType(Integer mallType) { + Cnd cnd = Cnd.where("delFlag", "=", false); + if (mallType != null) { + cnd.and("mallType", "=", mallType); + } + cnd.asc("sortCode"); + return dao().query(PointsMallSupplier.class, cnd); + } + @Override public void deleteByIds(List ids) { if (CollUtil.isEmpty(ids)) { diff --git a/src/main/resources/views/platform/zhghh5/points-mall/index.html b/src/main/resources/views/platform/zhghh5/points-mall/index.html new file mode 100644 index 00000000..4b9c36a2 --- /dev/null +++ b/src/main/resources/views/platform/zhghh5/points-mall/index.html @@ -0,0 +1,160 @@ + +
+ + +
+
+
+
积分商城
+
好物兑换,积分随心用
+
+
+ 可用积分 + {{ userPoints }} +
+
+ +
+
+ +
+ 我的订单 + 查看兑换记录 +
+
+
+ +
+ 我的积分 + 账户积分概览 +
+
+
+ + + +
+
供应商专区
+ + +
+
+ +
+ {{ item.supplierName }} + 品牌专区 +
+ 积分兑换 +
+
+
+ + 精选好物 +
+
+ 查看更多 +
+
+
+
+
+ + + diff --git a/src/main/resources/views/platform/zhghh5/points-mall/loveAid/index.html b/src/main/resources/views/platform/zhghh5/points-mall/loveAid/index.html new file mode 100644 index 00000000..77360179 --- /dev/null +++ b/src/main/resources/views/platform/zhghh5/points-mall/loveAid/index.html @@ -0,0 +1,101 @@ + +
+ +
+
+
互助关爱基金
+
自愿参与,互助共济,专款专用
+
+ +
+
+ 查看基金介绍 + 我的爱心记录 +
+ +
+ + +
+ + +
+
+ + + + + + +
+
我的爱心记录
+ + 关闭 +
+
+
+ + + diff --git a/src/main/resources/views/platform/zhghh5/points-mall/me/index.html b/src/main/resources/views/platform/zhghh5/points-mall/me/index.html new file mode 100644 index 00000000..86cb90bf --- /dev/null +++ b/src/main/resources/views/platform/zhghh5/points-mall/me/index.html @@ -0,0 +1,74 @@ + +
+ +
+
+
{{ avatarText }}
+
+ {{ displayName }} + 工号:{{ userInfo.loginname || userInfo.username || userInfo.userId || "-" }} +
+
+
+
+ 我的积分 + {{ userPoints }} +
+ +
+ + + + + +
+
+ + + diff --git a/src/main/resources/views/platform/zhghh5/points-mall/movies/index.html b/src/main/resources/views/platform/zhghh5/points-mall/movies/index.html new file mode 100644 index 00000000..15efb270 --- /dev/null +++ b/src/main/resources/views/platform/zhghh5/points-mall/movies/index.html @@ -0,0 +1,73 @@ + +
+ +
+
+
+
影票专区
+
精选观影权益,积分兑换更轻松
+
+ +
+
+
影票供应商
+ + +
+
+ +
+ {{ item.supplierName }} + 点击进入兑换 +
+ +
+
+
+
+
+
+ + + diff --git a/src/main/resources/views/platform/zhghh5/points-mall/order/index.html b/src/main/resources/views/platform/zhghh5/points-mall/order/index.html new file mode 100644 index 00000000..d62e5107 --- /dev/null +++ b/src/main/resources/views/platform/zhghh5/points-mall/order/index.html @@ -0,0 +1,137 @@ + +
+ +
+ 剩余积分 + {{ userPoints }} +
+ + + + + + +
+
+ {{ item.supplierName || "积分商城" }} + {{ orderStateName(item.orderState) }} +
+
+ +
+
+
订单号{{ item.orderId }}
+
消费积分{{ item.pointsPrice || 0 }}
+
运费{{ item.freightCost || 0 }}
+
创建时间{{ item.orderCreateTime || "-" }}
+
+
+ 确认收货 + 查看订单 +
+
+ +
+
+ + +