From e945b85dbb37bd7069db1209c2d5da2ecf2a9b7a Mon Sep 17 00:00:00 2001 From: mactj Date: Sun, 17 Jan 2021 01:45:15 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E8=A3=85=E4=BF=AE/=E6=94=B6?= =?UTF-8?q?=E8=B4=A7=E5=9C=B0=E5=9D=80=E5=A2=9E=E5=88=A0=E6=94=B9/?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=BB=98=E8=AE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AppUserAddressController.java | 106 +++++--- .../ruoyi/winery/domain/AppUserAddress.java | 4 +- mini-app/project.config.json | 9 +- mini-app/src/apis/addressApis.js | 52 ++++ mini-app/src/apis/mailApis.js | 7 +- mini-app/src/apis/orderApis.js | 25 ++ mini-app/src/apis/userApis.js | 4 +- mini-app/src/apis/xiao4rApis.js | 6 +- mini-app/src/app.wpy | 3 + mini-app/src/appManager.js | 36 ++- mini-app/src/baseDefine.js | 16 ++ .../src/components/mall/tab/mall-home.wpy | 80 ++++-- mini-app/src/components/mall/tab/mall-my.wpy | 11 +- .../src/components/mall/tab/mall-shopping.wpy | 24 +- mini-app/src/config.js | 8 - mini-app/src/mixins/defaultMix.js | 1 - mini-app/src/pages/mall/index.wpy | 8 +- .../src/pages/mall/user/user-address-list.wpy | 228 +++++++----------- mini-app/src/pages/mall/user/user-address.wpy | 44 +++- mini-app/src/pages/winery/winery-detail.wpy | 2 +- mini-app/src/store/constant/imageDefine.js | 22 +- mini-app/src/store/constant/nav/home.js | 31 ++- mini-app/src/store/constant/nav/my.js | 51 ++++ mini-app/src/store/constant/navDefine.js | 15 +- mini-app/src/store/constant/wineryDefine.js | 2 +- mini-app/src/store/index.js | 9 +- mini-app/src/vant/button/index.wxss | 8 +- mini-app/src/vant/notice-bar/index.wxss | 82 ++++++- 28 files changed, 616 insertions(+), 278 deletions(-) create mode 100644 mini-app/src/apis/addressApis.js create mode 100644 mini-app/src/apis/orderApis.js create mode 100644 mini-app/src/baseDefine.js delete mode 100644 mini-app/src/config.js create mode 100644 mini-app/src/store/constant/nav/my.js diff --git a/hope-winery/src/main/java/com/ruoyi/winery/controller/AppUserAddressController.java b/hope-winery/src/main/java/com/ruoyi/winery/controller/AppUserAddressController.java index 57739d1bc..d7e633500 100644 --- a/hope-winery/src/main/java/com/ruoyi/winery/controller/AppUserAddressController.java +++ b/hope-winery/src/main/java/com/ruoyi/winery/controller/AppUserAddressController.java @@ -27,15 +27,18 @@ import com.ruoyi.winery.service.IAppUserAddressService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; +import static com.ruoyi.common.utils.SecurityUtils.getDeptId; +import static com.ruoyi.common.utils.SecurityUtils.getLoginUser; + /** * 用户收货地址Controller - * + * * @author ruoyi * @date 2021-01-16 */ @RequiredArgsConstructor(onConstructor_ = @Autowired) @RestController -@RequestMapping("/user/address" ) +@RequestMapping("/user/address") public class AppUserAddressController extends BaseController { private final IAppUserAddressService iAppUserAddressService; @@ -45,31 +48,40 @@ public class AppUserAddressController extends BaseController { */ @PreAuthorize("@ss.hasPermi('user:address:list')") @GetMapping("/list") - public TableDataInfo list(AppUserAddress appUserAddress) - { + public TableDataInfo list(AppUserAddress appUserAddress) { startPage(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(appUserAddress); - if (appUserAddress.getDeptId() != null){ - lqw.eq(AppUserAddress::getDeptId ,appUserAddress.getDeptId()); + if (appUserAddress.getDeptId() != null) { + lqw.eq(AppUserAddress::getDeptId, appUserAddress.getDeptId()); } - if (StringUtils.isNotBlank(appUserAddress.getUserId())){ - lqw.eq(AppUserAddress::getUserId ,appUserAddress.getUserId()); + if (appUserAddress.getUserId() != null) { + lqw.eq(AppUserAddress::getUserId, appUserAddress.getUserId()); } - if (appUserAddress.getIsDefault() != null){ - lqw.eq(AppUserAddress::getIsDefault ,appUserAddress.getIsDefault()); + if (appUserAddress.getIsDefault() != null) { + lqw.eq(AppUserAddress::getIsDefault, appUserAddress.getIsDefault()); } - if (StringUtils.isNotBlank(appUserAddress.getMobile())){ - lqw.eq(AppUserAddress::getMobile ,appUserAddress.getMobile()); + if (StringUtils.isNotBlank(appUserAddress.getMobile())) { + lqw.eq(AppUserAddress::getMobile, appUserAddress.getMobile()); } - if (StringUtils.isNotBlank(appUserAddress.getName())){ - lqw.like(AppUserAddress::getName ,appUserAddress.getName()); + if (StringUtils.isNotBlank(appUserAddress.getName())) { + lqw.like(AppUserAddress::getName, appUserAddress.getName()); } - if (StringUtils.isNotBlank(appUserAddress.getAddress())){ - lqw.eq(AppUserAddress::getAddress ,appUserAddress.getAddress()); + if (StringUtils.isNotBlank(appUserAddress.getAddress())) { + lqw.eq(AppUserAddress::getAddress, appUserAddress.getAddress()); } - if (StringUtils.isNotBlank(appUserAddress.getRegion())){ - lqw.eq(AppUserAddress::getRegion ,appUserAddress.getRegion()); + if (StringUtils.isNotBlank(appUserAddress.getRegion())) { + lqw.eq(AppUserAddress::getRegion, appUserAddress.getRegion()); } + + + // 使小程序用户仅能查询自己的收货地址 + String userName = getLoginUser().getUser().getUserName(); + if (userName.contains("mini-")) { + lqw.eq(AppUserAddress::getUserId, getLoginUser().getUser().getUserId()); + } + + lqw.orderByDesc(AppUserAddress::getIsDefault); + List list = iAppUserAddressService.list(lqw); return getDataTable(list); } @@ -77,51 +89,79 @@ public class AppUserAddressController extends BaseController { /** * 导出用户收货地址列表 */ - @PreAuthorize("@ss.hasPermi('user:address:export')" ) - @Log(title = "用户收货地址" , businessType = BusinessType.EXPORT) - @GetMapping("/export" ) + @PreAuthorize("@ss.hasPermi('user:address:export')") + @Log(title = "用户收货地址", businessType = BusinessType.EXPORT) + @GetMapping("/export") public AjaxResult export(AppUserAddress appUserAddress) { LambdaQueryWrapper lqw = new LambdaQueryWrapper(appUserAddress); List list = iAppUserAddressService.list(lqw); - ExcelUtil util = new ExcelUtil(AppUserAddress. class); - return util.exportExcel(list, "address" ); + ExcelUtil util = new ExcelUtil(AppUserAddress.class); + return util.exportExcel(list, "address"); } /** * 获取用户收货地址详细信息 */ - @PreAuthorize("@ss.hasPermi('user:address:query')" ) - @GetMapping(value = "/{id}" ) - public AjaxResult getInfo(@PathVariable("id" ) String id) { + @PreAuthorize("@ss.hasPermi('user:address:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) { return AjaxResult.success(iAppUserAddressService.getById(id)); } /** * 新增用户收货地址 */ - @PreAuthorize("@ss.hasPermi('user:address:add')" ) - @Log(title = "用户收货地址" , businessType = BusinessType.INSERT) + @PreAuthorize("@ss.hasPermi('user:address:add')") + @Log(title = "用户收货地址", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody AppUserAddress appUserAddress) { + + Long userId = getLoginUser().getUser().getUserId(); + appUserAddress.setUserId(userId); + appUserAddress.setDeptId(getDeptId()); + + // 首发设为默认收货地址 + if (appUserAddress.getIsDefault() == null) { + List list = iAppUserAddressService.list( + new LambdaQueryWrapper().eq(AppUserAddress::getUserId, userId) + ); + appUserAddress.setIsDefault(list.size() > 0 ? 0 : 1); + } + + return toAjax(iAppUserAddressService.save(appUserAddress) ? 1 : 0); } /** * 修改用户收货地址 */ - @PreAuthorize("@ss.hasPermi('user:address:edit')" ) - @Log(title = "用户收货地址" , businessType = BusinessType.UPDATE) + @PreAuthorize("@ss.hasPermi('user:address:edit')") + @Log(title = "用户收货地址", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody AppUserAddress appUserAddress) { + + if (appUserAddress.getIsDefault() == 1) { + + AppUserAddress updateItem = new AppUserAddress(); + updateItem.setIsDefault(0); + + iAppUserAddressService.update(updateItem ,new LambdaQueryWrapper() + .eq(AppUserAddress::getUserId, appUserAddress.getUserId()) + .eq(AppUserAddress::getIsDefault, 1) + ); + + + } + return toAjax(iAppUserAddressService.updateById(appUserAddress) ? 1 : 0); } /** * 删除用户收货地址 */ - @PreAuthorize("@ss.hasPermi('user:address:remove')" ) - @Log(title = "用户收货地址" , businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}" ) + @PreAuthorize("@ss.hasPermi('user:address:remove')") + @Log(title = "用户收货地址", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable String[] ids) { return toAjax(iAppUserAddressService.removeByIds(Arrays.asList(ids)) ? 1 : 0); } diff --git a/hope-winery/src/main/java/com/ruoyi/winery/domain/AppUserAddress.java b/hope-winery/src/main/java/com/ruoyi/winery/domain/AppUserAddress.java index f51dfa338..9c3feedc7 100644 --- a/hope-winery/src/main/java/com/ruoyi/winery/domain/AppUserAddress.java +++ b/hope-winery/src/main/java/com/ruoyi/winery/domain/AppUserAddress.java @@ -33,7 +33,7 @@ private static final long serialVersionUID=1L; /** ID */ - @TableId(value = "id") + @TableId(value = "id", type = IdType.ASSIGN_UUID) private String id; /** 部门ID */ @@ -42,7 +42,7 @@ private static final long serialVersionUID=1L; /** 用户ID */ @Excel(name = "用户ID") - private String userId; + private Long userId; /** 是否默认 */ @Excel(name = "是否默认") diff --git a/mini-app/project.config.json b/mini-app/project.config.json index 9c56d228e..bdc7665b4 100644 --- a/mini-app/project.config.json +++ b/mini-app/project.config.json @@ -116,10 +116,17 @@ }, { "id": 9, - "name": "地址管理", + "name": "新增地址", "pathName": "pages/mall/user/user-address", "query": "", "scene": null + }, + { + "id": -1, + "name": "地址管理", + "pathName": "pages/mall/user/user-address-list", + "query": "", + "scene": null } ] } diff --git a/mini-app/src/apis/addressApis.js b/mini-app/src/apis/addressApis.js new file mode 100644 index 000000000..4c41a206f --- /dev/null +++ b/mini-app/src/apis/addressApis.js @@ -0,0 +1,52 @@ +import request from '../js/request' +import { baseUrl } from '../baseDefine' +import { jsonHeader } from './xiao4rApis' + +/** + * 地址管理相关接口 + */ +class AddressApis { + /** + * 创建地址 + * @param data + * @returns {Promise实例对象} + */ + getAddressList(data) { + return request.get({ + url: baseUrl + 'user/address/list', + data: data + }) + } + + getAddressById(id) { + return request.get({ + url: baseUrl + 'user/address/' + id + }) + + } + + createAddress(data) { + + return request.post({ + url: baseUrl + 'user/address', + + data: data + }) + } + + delAddress(data) { + return request.del({ + url: baseUrl + 'user/address', + data: data + }) + } + + editAddress(data) { + return request.put({ + url: baseUrl + 'user/address', + data: data + }) + } +} + +export default new AddressApis() diff --git a/mini-app/src/apis/mailApis.js b/mini-app/src/apis/mailApis.js index 11243ef85..bb64b1655 100644 --- a/mini-app/src/apis/mailApis.js +++ b/mini-app/src/apis/mailApis.js @@ -1,7 +1,6 @@ import request from '../js/request' -import { baseUrl, formHeader, jsonHeader } from './xiao4rApis' -import { MINI_DEPTID } from '../config' +import { baseUrl } from '../baseDefine' /** * 商城相关接口 @@ -15,13 +14,13 @@ class MallApis { } getGoodsById(id) { return request.get({ - url: baseUrl + 'goods/goods_main/' + id, + url: baseUrl + 'goods/goods_main/' + id }) } getGoodsSpecByIds(ids) { return request.get({ - url: baseUrl + 'goods/goods_spec/listByIds/' + ids, + url: baseUrl + 'goods/goods_spec/listByIds/' + ids }) } } diff --git a/mini-app/src/apis/orderApis.js b/mini-app/src/apis/orderApis.js new file mode 100644 index 000000000..7bd4c76ea --- /dev/null +++ b/mini-app/src/apis/orderApis.js @@ -0,0 +1,25 @@ + +import request from '../js/request' +import { baseUrl } from '../baseDefine' + +/** + * 订单相关接口 + */ +class OrderApis { + + + /** + * 创建订单 + * @param data + * @returns {Promise实例对象} + */ + createOrders(data) { + return request.post({ + url: baseUrl + 'winery/user_orders', + data: data + }) + } + +} + +export default new OrderApis() diff --git a/mini-app/src/apis/userApis.js b/mini-app/src/apis/userApis.js index 42a3157a4..9e94009a2 100644 --- a/mini-app/src/apis/userApis.js +++ b/mini-app/src/apis/userApis.js @@ -1,7 +1,7 @@ import request from '../js/request' -import { baseUrl, formHeader, jsonHeader } from './xiao4rApis' -import { MINI_DEPTID } from '../config' +import { baseUrl, MINI_DEPTID } from '../baseDefine' +import { formHeader, jsonHeader } from './xiao4rApis' /** * 用户相关接口 diff --git a/mini-app/src/apis/xiao4rApis.js b/mini-app/src/apis/xiao4rApis.js index 26c67e60f..f30619c55 100644 --- a/mini-app/src/apis/xiao4rApis.js +++ b/mini-app/src/apis/xiao4rApis.js @@ -1,10 +1,6 @@ import request from '../js/request' - -export const baseUrl = 'http://127.0.0.1:18989/' -// export const baseUrl = 'http://36.1.50.18:18989/winery/' -// export const baseUrl = 'http://62.234.123.172:18989/api/' -// export const baseUrl = 'https://www.xiao4r.com/wine/winery/' +import { baseUrl } from '../baseDefine' export const jsonHeader = { 'Content-Type': 'application/json' diff --git a/mini-app/src/app.wpy b/mini-app/src/app.wpy index 021c08c68..8f647cbe8 100644 --- a/mini-app/src/app.wpy +++ b/mini-app/src/app.wpy @@ -103,6 +103,7 @@ pages: [ 'pages/mall/index', 'pages/mall/goods-detail', 'pages/mall/user/user-address', +'pages/mall/user/user-address-list', 'pages/winery/winery-detail' ], @@ -147,6 +148,8 @@ usingComponents: { "van-dialog": "./vant/dialog/index", "van-image": "./vant/image/index", "van-loading": "./vant/loading/index", +"van-empty": "./vant/empty/index", +"van-notice-bar": "./vant/notice-bar/index", "van-area": "./vant/area/index" } } diff --git a/mini-app/src/appManager.js b/mini-app/src/appManager.js index 5e1360f41..d5c651068 100644 --- a/mini-app/src/appManager.js +++ b/mini-app/src/appManager.js @@ -1,10 +1,8 @@ - import store from '@/store' import eventHub from './common/eventHub' class AppManager { saveOpenid(openid) { - store.dispatch('setOpenidAction', openid) } @@ -12,24 +10,50 @@ class AppManager { return wx.getStorageSync('openid') } - navigateTo(url) { + setCacheInfo() { + const mobile = wx.getStorageSync('mobile') + const openid = wx.getStorageSync('openid') + const userInfo = wx.getStorageSync('userInfo') + + console.log('setCacheInfo:', mobile) + console.log('setCacheInfo:', openid) + console.log('setCacheInfo:', userInfo) + + if (mobile) { + store.dispatch('setMobileAction', mobile) + } + + if (openid) { + store.dispatch('setOpenidAction', openid) + } + + if (userInfo) { + store.dispatch('setUserInfoAction', userInfo) + } + } + + navigateTo(path) { + console.log('path:', path) if (!store.state.user.token) { eventHub.$emit('onShowDialogUserInfo') return } - if (!url) { + console.log('path:', path) + + if (!path) { this.showToast('建设中') return } + console.log('path:', path) wx.navigateTo({ - url: url + url: path }) } showToast(msg) { - wx.showToast({title: msg, icon: 'none'}) + wx.showToast({ title: msg, icon: 'none' }) } } diff --git a/mini-app/src/baseDefine.js b/mini-app/src/baseDefine.js new file mode 100644 index 000000000..7947022f8 --- /dev/null +++ b/mini-app/src/baseDefine.js @@ -0,0 +1,16 @@ +/** + * + * 各种常量 + * + */ + +export const baseUrl = 'http://127.0.0.1:18989/' +// export const baseUrl = 'http://36.1.51.30:18989/' +// export const baseUrl = 'http://36.1.50.18:18989/winery/' +// export const baseUrl = 'http://62.234.123.172:18989/api/' +// export const baseUrl = 'https://www.xiao4r.com/wine/winery/' + +export const imgbaseUrl = 'https://www.xiao4r.com/xiao4rstatic/img/winery/' +export const sysImgBaseUrl = 'https://winery-1257413599.cos.ap-beijing.myqcloud.com/' + +export const MINI_DEPTID = 100 diff --git a/mini-app/src/components/mall/tab/mall-home.wpy b/mini-app/src/components/mall/tab/mall-home.wpy index 3b1e7da19..24c3b86b9 100644 --- a/mini-app/src/components/mall/tab/mall-home.wpy +++ b/mini-app/src/components/mall/tab/mall-home.wpy @@ -12,11 +12,11 @@ .user-banner { margin-top: 180px; - border-top: 1px solid #F2F3F5; + border-top: 1px solid #F5F6F7; border-top-right-radius: 20px; border-top-left-radius: 20px; text-align: left; - background-color: #eeeeee; + background-color: #F5F6F7; height: 20px; width: 100%; z-index: 1; @@ -38,7 +38,7 @@ .grid-body { border: #fff 1px solid; border-radius: 20px; - width: 700rpx; + width: 100%; margin-top: 20px; background-color: white; box-shadow: 4px 4px 10px #eeeeee; @@ -77,33 +77,44 @@