ecshop实现后台订单自动确认开发方法

来源:undefined 2024-12-24 16:02:08 1013

ecshop教程栏目介绍实现后台订单自动确认开发方法

推荐(免费):ecshop教程

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

CREATE TABLE `order_auto_confirm` (

`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,

`order_id` INT(10) UNSIGNED NOT NULL DEFAULT 0,

`order_sn` VARCHAR(20) NOT NULL,

`execute_time` INT(10) UNSIGNED NOT NULL DEFAULT 0,

`order_status` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT 0未确定,1已经确定,

`addtime` INT(10) UNSIGNED NOT NULL DEFAULT 0,

`update_time` INT(10) UNSIGNED NOT NULL DEFAULT 0,

PRIMARY KEY (`id`),

UNIQUE INDEX `order_id` (`order_id`),

INDEX `execute_time` (`execute_time`)

)

COMMENT=订单定期自动确定

COLLATE=utf8_general_ci

ENGINE=MyISAM;

登录后复制

一、

/admin/order.php加入以下代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

elseif($_REQUEST[act] == order_cron)

{

$act1 = empty($_POST@[act1]) ? 0 : $_POST@[act1];

if(empty($act1) || !in_array($act1, array(add, cancel))) make_json_response(, -1, 未知请求act1);    $order_id = intval($_POST@[order_id]);

$order = order_info($order_id);

if(empty($order)) make_json_response(, -2, 没有此订单ID);    if($order[order_status]) make_json_response(, -3, 此订单已经确认,不用自动确认);    if($order[pay_status]) make_json_response(, -4, 此订单支付状态已经变动,无法添加任务);    if($act1 == add){

$order_cron_time = empty($_POST@[order_cron_time]) ? 0 : $_POST@[order_cron_time];        if(empty($order_cron_time)) make_json_response(, -10, 请求的时间错误);        $sql = select order_id from .$ecs->table(order_auto_confirm). where order_id=.$order_id;

$rs  = $db->getRow($sql);

if($rs[order_id] == $order_id){

make_json_response(, -30, 此订单任务已经存在,不能重复添加);

}

$execute_time = local_strtotime($order_cron_time);

$sql    = "insert into ".$ecs->table(order_auto_confirm)."(order_id, order_sn, execute_time, order_status, addtime) values(".$order_id.",".$order[order_sn].",".$execute_time.", 0, ".local_gettime().")";

$result = $db->query($sql);

if($result){

make_json_response(, 0, );

}

make_json_response(, -9, 添加任务计划失败);

}elseif($act1 == cancel){

$sql = delete  from .$ecs->table(order_auto_confirm). where order_id=.$order_id. and order_status=0 ;

$db->query($sql);

make_json_response(, 0, );

}

}

登录后复制

二、

在elseif($_REQUEST[act] == info)里加入:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

//取自动确定订单信息

$sql = select order_status, execute_time, addtime, update_time from .$ecs->table(order_auto_confirm). where order_id=.$order[order_id];

$cron= $db->getRow($sql);

if(!empty($cron)){

if($cron[order_status] == 1)

$cron[update_time] = sprintf($_LANG[order_auto_croned], local_date(Y-m-d H:i:s, $cron[update_time]));

else

$cron[execute_time]= sprintf($_LANG[order_auto_cron], local_date(Y-m-d H:i:s, $cron[execute_time]));

}

$smarty->assign(cron, $cron);

登录后复制

三、

/includes/modules/cron/order_auto_confirm.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

if (!defined(IN_ECS))

{

die(Hacking attempt);

}

require_once(ROOT_PATH . includes/lib_order.php);

$cron_lang = ROOT_PATH . languages/ .$GLOBALS[_CFG][lang]. /cron/order_auto_confirm.php;

if (file_exists($cron_lang))

{

global $_LANG;    include_once($cron_lang);

}/* 模块的基本信息 */

if (isset($set_modules) && $set_modules == TRUE)

{

$i = isset($modules) ? count($modules) : 0;    /* 代码 */

$modules[$i][code]    = basename(__FILE__, .php);    /* 描述对应的语言项 */

$modules[$i][desc]    = order_auto_confirm_desc;    /* 作者 */

$modules[$i][author]  = wjzhhr;    /* 网址 */

$modules[$i][website] = http://www.wodeqingchun.com;    /* 版本号 */

$modules[$i][version] = 1.0.0;    /* 配置信息 */

$modules[$i][config]  = array(

array(name => order_auto_confirm_count, type => select, value => 10),

);    return;

}

$time  = gmtime();

//$time  = local_gettime();

$limit = empty($cron[order_auto_confirm_count]) ? 5 : $cron[order_auto_confirm_count];

$sql   = "SELECT * FROM " . $GLOBALS[ecs]->table(order_auto_confirm) . " WHERE execute_time <= ".$time." and order_status=0 LIMIT $limit";

$autodb= $db->getAll($sql);

$i     = 0;

foreach ($autodb as $key => $val)

{

$order_id = $val[order_id];

$order_sn = $val[order_sn];

/* 标记订单为已确认 */

$update_status = update_order($order_id, array(order_status => OS_CONFIRMED, confirm_time => gmtime()));

update_order_amount($order_id);        /* 记录log */

$action_note = "计划任务:定期自动确定订单,订单号:".$order_sn.",执行状态:".($update_status ? 成功 : 失败);

order_action($order_sn, OS_CONFIRMED, SS_UNSHIPPED, PS_UNPAYED, $action_note, system_cron);        /* 如果原来状态不是“未确认”,且使用库存,且下订单时减库存,则减少库存 */

if ($val[order_status] != OS_UNCONFIRMED && $_CFG[use_storage] == 1 && $_CFG[stock_dec_time] == SDT_PLACE)

{

change_order_goods_storage($order_id, true, SDT_PLACE);

}        if($update_status)

{

$i  += 1;

$sql = "update " . $GLOBALS[ecs]->table(order_auto_confirm) . " set order_status=1, update_time=".$time." where order_id=".$order_id;

$db->query($sql);

}

}$string = 此次共更新:.$i.条数据;

echo $string;file_put_contents(./a.txt,  $time . ---- . date(Y-m-d H:i:s).$string."

", FILE_APPEND);

/**

* 更新订单总金额

* @param   int     $order_id   订单id

* @return  bool

//zuimoban.com

*/

function update_order_amount($order_id)

{

include_once(ROOT_PATH . includes/lib_order.php);

//更新订单总金额

$sql = "UPDATE " . $GLOBALS[ecs]->table(order_info) .

" SET order_amount = " . order_due_field() .

" WHERE order_id = $order_id LIMIT 1";    return $GLOBALS[db]->query($sql);

}

?>

登录后复制

四、

/languages/zh_cn/admin/order.php里加入:

1

2

3

4

5

6

7

8

9

//

$_LANG[order_auto_croned] = 此订单于 %s 已被确认;

$_LANG[order_auto_cron]   = 此订单于 %s 进行定时确认;

$_LANG[order_auto]        = 将此订单加入自动定时确认;

$_LANG[order_auto_time]   = 自动确认时间:;

登录后复制

五、

在此页面的JS里面加入:

1

function order_cron(order_id, act){    var order_cron_time = 0;    if(act == add){        order_cron_time = document.getElementById(order_cron_time).value;        if(!order_cron_time){            alert(无法获取时间);            return false;        }    }    Ajax.call(order.php?act=order_cron, order_id= + order_id + &act1= + act + &order_cron_time= + order_cron_time, order_cron_response, POST, JSON);}function order_cron_response(res){  if (res.error == 0)  {      alert(保存成功);  }  else  {      alert(res.message);  }  return false;}

登录后复制

还有/themes/default/footer.dwt里是否含有:

{insert name=query_info}

这一句,比较重要,前人把这句去掉了,害最模板到处找原因。共涉及5个文件,两个新添加的

以上就是ecshop实现后台订单自动确认开发方法的详细内容,更多请关注php中文网其它相关文章!

最新文章