address.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. 'use strict';
  2. import BaseComponent from '../../prototype/baseComponent'
  3. import AddressModel from '../../models/v1/address'
  4. import formidable from 'formidable'
  5. class Address extends BaseComponent{
  6. constructor(){
  7. super()
  8. this.addAddress = this.addAddress.bind(this);
  9. }
  10. async getAddress(req, res, next){
  11. const user_id = req.params.user_id;
  12. if (!user_id || !Number(user_id)) {
  13. res.send({
  14. type: 'ERROR_USER_ID',
  15. message: 'user_id参数错误',
  16. })
  17. return
  18. }
  19. try{
  20. const addressList = await AddressModel.find({user_id}, '-_id');
  21. res.send(addressList)
  22. }catch(err){
  23. console.log('获取收获地址失败', err);
  24. res.send({
  25. type: 'ERROR_GET_ADDRESS',
  26. message: '获取地址列表失败'
  27. })
  28. }
  29. }
  30. async addAddress(req, res, next){
  31. const form = new formidable.IncomingForm();
  32. form.parse(req, async (err, fields, files) => {
  33. const user_id = req.params.user_id;
  34. const {address, address_detail, geohash, name, phone, phone_bk, poi_type = 0, sex, tag, tag_type} = fields;
  35. try{
  36. if (!user_id || !Number(user_id)) {
  37. throw new Error('用户ID参数错误');
  38. }else if(!address){
  39. throw new Error('地址信息错误');
  40. }else if(!address_detail){
  41. throw new Error('详细地址信息错误');
  42. }else if(!geohash){
  43. throw new Error('geohash参数错误');
  44. }else if(!name){
  45. throw new Error('收货人姓名错误');
  46. }else if(!phone){
  47. throw new Error('收获手机号错误');
  48. }else if(!sex){
  49. throw new Error('性别错误');
  50. }else if(!tag){
  51. throw new Error('标签错误');
  52. }else if(!tag_type){
  53. throw new Error('标签类型错误');
  54. }
  55. }catch(err){
  56. console.log(err.message);
  57. res.send({
  58. status: 0,
  59. type: 'GET_WRONG_PARAM',
  60. message: err.message
  61. })
  62. return
  63. }
  64. try{
  65. const address_id = await this.getId('address_id');
  66. const newAddress = {
  67. id: address_id,
  68. address,
  69. phone,
  70. phone_bk: phone_bk&&phone_bk,
  71. name,
  72. st_geohash: geohash,
  73. address_detail,
  74. sex,
  75. tag,
  76. tag_type,
  77. user_id,
  78. }
  79. await AddressModel.create(newAddress);
  80. res.send({
  81. status: 1,
  82. success: '添加地址成功'
  83. })
  84. }catch(err){
  85. console.log('添加地址失败', err);
  86. res.send({
  87. status: 0,
  88. type: 'ERROR_ADD_ADDRESS',
  89. message: '添加地址失败'
  90. })
  91. }
  92. })
  93. }
  94. async deleteAddress(req, res, next){
  95. const {user_id, address_id} = req.params;
  96. if (!user_id || !Number(user_id) || !address_id || !Number(address_id)) {
  97. res.send({
  98. type: 'ERROR_PARAMS',
  99. message: '参数错误',
  100. })
  101. return
  102. }
  103. try{
  104. await AddressModel.findOneAndRemove({id: address_id});
  105. res.send({
  106. status: 1,
  107. success: '删除地址成功',
  108. })
  109. }catch(err){
  110. console.log('删除收获地址失败', err);
  111. res.send({
  112. type: 'ERROR_DELETE_ADDRESS',
  113. message: '删除收获地址失败'
  114. })
  115. }
  116. }
  117. async getAddAddressById(req, res, next){
  118. const address_id = req.params.address_id;
  119. if (!address_id || !Number(address_id)) {
  120. res.send({
  121. type: 'ERROR_PARAMS',
  122. message: '参数错误',
  123. })
  124. return
  125. }
  126. try{
  127. const address = await AddressModel.findOne({id: address_id});
  128. res.send(address)
  129. }catch(err){
  130. console.log('获取地址信息失败', err);
  131. res.send({
  132. type: 'ERROR_GET_ADDRESS',
  133. message: '获取地址信息失败'
  134. })
  135. }
  136. }
  137. }
  138. export default new Address()